Coverage Report

Created: 2025-10-10 06:33

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/cpython/Parser/parser.c
Line
Count
Source
1
// @generated by pegen from python.gram
2
#include "pegen.h"
3
4
#if defined(Py_DEBUG) && defined(Py_BUILD_CORE)
5
#  define D(x) if (p->debug) { x; }
6
#else
7
#  define D(x)
8
#endif
9
10
#ifdef __wasi__
11
#  ifdef Py_DEBUG
12
#    define MAXSTACK 1000
13
#  else
14
#    define MAXSTACK 4000
15
#  endif
16
#else
17
172M
#  define MAXSTACK 6000
18
#endif
19
static const int n_keyword_lists = 9;
20
static KeywordToken *reserved_keywords[] = {
21
    (KeywordToken[]) {{NULL, -1}},
22
    (KeywordToken[]) {{NULL, -1}},
23
    (KeywordToken[]) {
24
        {"if", 691},
25
        {"as", 689},
26
        {"in", 704},
27
        {"or", 589},
28
        {"is", 597},
29
        {NULL, -1},
30
    },
31
    (KeywordToken[]) {
32
        {"del", 630},
33
        {"def", 708},
34
        {"for", 703},
35
        {"try", 665},
36
        {"and", 590},
37
        {"not", 712},
38
        {NULL, -1},
39
    },
40
    (KeywordToken[]) {
41
        {"from", 642},
42
        {"pass", 527},
43
        {"with", 656},
44
        {"elif", 696},
45
        {"else", 695},
46
        {"None", 624},
47
        {"True", 623},
48
        {NULL, -1},
49
    },
50
    (KeywordToken[]) {
51
        {"raise", 628},
52
        {"yield", 588},
53
        {"break", 528},
54
        {"async", 707},
55
        {"class", 710},
56
        {"while", 698},
57
        {"False", 625},
58
        {"await", 598},
59
        {NULL, -1},
60
    },
61
    (KeywordToken[]) {
62
        {"return", 522},
63
        {"import", 643},
64
        {"assert", 634},
65
        {"global", 530},
66
        {"except", 686},
67
        {"lambda", 622},
68
        {NULL, -1},
69
    },
70
    (KeywordToken[]) {
71
        {"finally", 682},
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
426k
#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
71.0k
#define dotted_name_type 1032  // Left-recursive
120
141k
#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
307k
#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
155k
#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
53.7k
#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
22.7k
#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.42M
#define expression_type 1109
197
#define yield_expr_type 1110
198
#define star_expressions_type 1111
199
1.41M
#define star_expression_type 1112
200
#define star_named_expressions_type 1113
201
#define star_named_expression_type 1114
202
#define assignment_expression_type 1115
203
#define named_expression_type 1116
204
2.71M
#define disjunction_type 1117
205
2.04M
#define conjunction_type 1118
206
2.09M
#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.87M
#define bitwise_or_type 1132  // Left-recursive
220
3.56M
#define bitwise_xor_type 1133  // Left-recursive
221
3.57M
#define bitwise_and_type 1134  // Left-recursive
222
4.79M
#define shift_expr_type 1135  // Left-recursive
223
5.13M
#define sum_type 1136  // Left-recursive
224
8.77M
#define term_type 1137  // Left-recursive
225
2.42M
#define factor_type 1138
226
#define power_type 1139
227
2.36M
#define await_primary_type 1140
228
7.46M
#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
157k
#define tstring_type 1168
256
#define string_type 1169
257
268k
#define strings_type 1170
258
#define list_type 1171
259
#define tuple_type 1172
260
#define set_type 1173
261
#define dict_type 1174
262
#define double_starred_kvpairs_type 1175
263
#define double_starred_kvpair_type 1176
264
#define kvpair_type 1177
265
#define for_if_clauses_type 1178
266
#define for_if_clause_type 1179
267
#define listcomp_type 1180
268
#define setcomp_type 1181
269
#define genexp_type 1182
270
#define dictcomp_type 1183
271
110k
#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
763k
#define star_target_type 1193
281
517k
#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.74M
#define t_primary_type 1198  // Left-recursive
286
#define t_lookahead_type 1199
287
#define del_targets_type 1200
288
20.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
347k
#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_assert_stmt_type 1216
304
#define invalid_block_type 1217
305
#define invalid_comprehension_type 1218
306
#define invalid_dict_comprehension_type 1219
307
#define invalid_parameters_type 1220
308
#define invalid_default_type 1221
309
#define invalid_star_etc_type 1222
310
#define invalid_kwds_type 1223
311
#define invalid_parameters_helper_type 1224
312
#define invalid_lambda_parameters_type 1225
313
#define invalid_lambda_parameters_helper_type 1226
314
#define invalid_lambda_star_etc_type 1227
315
#define invalid_lambda_kwds_type 1228
316
#define invalid_double_type_comments_type 1229
317
#define invalid_with_item_type 1230
318
#define invalid_for_if_clause_type 1231
319
#define invalid_for_target_type 1232
320
#define invalid_group_type 1233
321
#define invalid_import_type 1234
322
#define invalid_dotted_as_name_type 1235
323
#define invalid_import_from_as_name_type 1236
324
#define invalid_import_from_targets_type 1237
325
#define invalid_with_stmt_type 1238
326
#define invalid_with_stmt_indent_type 1239
327
#define invalid_try_stmt_type 1240
328
#define invalid_except_stmt_type 1241
329
#define invalid_except_star_stmt_type 1242
330
#define invalid_finally_stmt_type 1243
331
#define invalid_except_stmt_indent_type 1244
332
#define invalid_except_star_stmt_indent_type 1245
333
#define invalid_match_stmt_type 1246
334
#define invalid_case_block_type 1247
335
#define invalid_as_pattern_type 1248
336
#define invalid_class_pattern_type 1249
337
#define invalid_class_argument_pattern_type 1250
338
#define invalid_if_stmt_type 1251
339
#define invalid_elif_stmt_type 1252
340
#define invalid_else_stmt_type 1253
341
#define invalid_while_stmt_type 1254
342
#define invalid_for_stmt_type 1255
343
#define invalid_def_raw_type 1256
344
#define invalid_class_def_raw_type 1257
345
#define invalid_double_starred_kvpairs_type 1258
346
#define invalid_kvpair_type 1259
347
#define invalid_starred_expression_unpacking_type 1260
348
#define invalid_starred_expression_type 1261
349
#define invalid_fstring_replacement_field_type 1262
350
#define invalid_fstring_conversion_character_type 1263
351
#define invalid_tstring_replacement_field_type 1264
352
#define invalid_tstring_conversion_character_type 1265
353
#define invalid_string_tstring_concat_type 1266
354
#define invalid_arithmetic_type 1267
355
#define invalid_factor_type 1268
356
#define invalid_type_params_type 1269
357
#define _loop0_1_type 1270
358
#define _loop1_2_type 1271
359
#define _loop0_3_type 1272
360
#define _gather_4_type 1273
361
#define _tmp_5_type 1274
362
#define _tmp_6_type 1275
363
#define _tmp_7_type 1276
364
#define _tmp_8_type 1277
365
#define _tmp_9_type 1278
366
#define _tmp_10_type 1279
367
#define _tmp_11_type 1280
368
#define _loop1_12_type 1281
369
#define _loop0_13_type 1282
370
#define _gather_14_type 1283
371
#define _tmp_15_type 1284
372
#define _tmp_16_type 1285
373
#define _loop0_17_type 1286
374
#define _loop1_18_type 1287
375
#define _loop0_19_type 1288
376
#define _gather_20_type 1289
377
#define _tmp_21_type 1290
378
#define _loop0_22_type 1291
379
#define _gather_23_type 1292
380
#define _loop1_24_type 1293
381
#define _tmp_25_type 1294
382
#define _tmp_26_type 1295
383
#define _loop0_27_type 1296
384
#define _loop0_28_type 1297
385
#define _loop1_29_type 1298
386
#define _loop1_30_type 1299
387
#define _loop0_31_type 1300
388
#define _loop1_32_type 1301
389
#define _loop0_33_type 1302
390
#define _gather_34_type 1303
391
#define _tmp_35_type 1304
392
#define _loop1_36_type 1305
393
#define _loop1_37_type 1306
394
#define _loop1_38_type 1307
395
#define _loop0_39_type 1308
396
#define _gather_40_type 1309
397
#define _tmp_41_type 1310
398
#define _tmp_42_type 1311
399
#define _tmp_43_type 1312
400
#define _loop0_44_type 1313
401
#define _gather_45_type 1314
402
#define _loop0_46_type 1315
403
#define _gather_47_type 1316
404
#define _tmp_48_type 1317
405
#define _loop0_49_type 1318
406
#define _gather_50_type 1319
407
#define _loop0_51_type 1320
408
#define _gather_52_type 1321
409
#define _loop0_53_type 1322
410
#define _gather_54_type 1323
411
#define _loop1_55_type 1324
412
#define _loop1_56_type 1325
413
#define _loop0_57_type 1326
414
#define _gather_58_type 1327
415
#define _loop1_59_type 1328
416
#define _loop1_60_type 1329
417
#define _loop1_61_type 1330
418
#define _tmp_62_type 1331
419
#define _loop0_63_type 1332
420
#define _gather_64_type 1333
421
#define _tmp_65_type 1334
422
#define _tmp_66_type 1335
423
#define _tmp_67_type 1336
424
#define _tmp_68_type 1337
425
#define _tmp_69_type 1338
426
#define _loop0_70_type 1339
427
#define _loop0_71_type 1340
428
#define _loop1_72_type 1341
429
#define _loop1_73_type 1342
430
#define _loop0_74_type 1343
431
#define _loop1_75_type 1344
432
#define _loop0_76_type 1345
433
#define _loop0_77_type 1346
434
#define _loop0_78_type 1347
435
#define _loop0_79_type 1348
436
#define _loop1_80_type 1349
437
#define _loop1_81_type 1350
438
#define _tmp_82_type 1351
439
#define _loop0_83_type 1352
440
#define _gather_84_type 1353
441
#define _loop1_85_type 1354
442
#define _loop0_86_type 1355
443
#define _tmp_87_type 1356
444
#define _loop0_88_type 1357
445
#define _gather_89_type 1358
446
#define _tmp_90_type 1359
447
#define _loop0_91_type 1360
448
#define _gather_92_type 1361
449
#define _loop0_93_type 1362
450
#define _gather_94_type 1363
451
#define _loop0_95_type 1364
452
#define _loop0_96_type 1365
453
#define _gather_97_type 1366
454
#define _loop1_98_type 1367
455
#define _tmp_99_type 1368
456
#define _loop0_100_type 1369
457
#define _gather_101_type 1370
458
#define _loop0_102_type 1371
459
#define _gather_103_type 1372
460
#define _tmp_104_type 1373
461
#define _tmp_105_type 1374
462
#define _loop0_106_type 1375
463
#define _gather_107_type 1376
464
#define _tmp_108_type 1377
465
#define _tmp_109_type 1378
466
#define _tmp_110_type 1379
467
#define _tmp_111_type 1380
468
#define _tmp_112_type 1381
469
#define _loop1_113_type 1382
470
#define _tmp_114_type 1383
471
#define _tmp_115_type 1384
472
#define _tmp_116_type 1385
473
#define _tmp_117_type 1386
474
#define _tmp_118_type 1387
475
#define _loop0_119_type 1388
476
#define _loop0_120_type 1389
477
#define _tmp_121_type 1390
478
#define _tmp_122_type 1391
479
#define _tmp_123_type 1392
480
#define _tmp_124_type 1393
481
#define _tmp_125_type 1394
482
#define _tmp_126_type 1395
483
#define _tmp_127_type 1396
484
#define _tmp_128_type 1397
485
#define _tmp_129_type 1398
486
#define _loop0_130_type 1399
487
#define _gather_131_type 1400
488
#define _tmp_132_type 1401
489
#define _tmp_133_type 1402
490
#define _tmp_134_type 1403
491
#define _tmp_135_type 1404
492
#define _loop0_136_type 1405
493
#define _gather_137_type 1406
494
#define _tmp_138_type 1407
495
#define _loop0_139_type 1408
496
#define _gather_140_type 1409
497
#define _loop0_141_type 1410
498
#define _gather_142_type 1411
499
#define _tmp_143_type 1412
500
#define _loop0_144_type 1413
501
#define _tmp_145_type 1414
502
#define _tmp_146_type 1415
503
#define _tmp_147_type 1416
504
#define _tmp_148_type 1417
505
#define _tmp_149_type 1418
506
#define _tmp_150_type 1419
507
#define _tmp_151_type 1420
508
#define _tmp_152_type 1421
509
#define _tmp_153_type 1422
510
#define _tmp_154_type 1423
511
#define _tmp_155_type 1424
512
#define _tmp_156_type 1425
513
#define _tmp_157_type 1426
514
#define _tmp_158_type 1427
515
#define _tmp_159_type 1428
516
#define _tmp_160_type 1429
517
#define _tmp_161_type 1430
518
#define _tmp_162_type 1431
519
#define _tmp_163_type 1432
520
#define _tmp_164_type 1433
521
#define _tmp_165_type 1434
522
#define _tmp_166_type 1435
523
#define _tmp_167_type 1436
524
#define _tmp_168_type 1437
525
#define _tmp_169_type 1438
526
#define _tmp_170_type 1439
527
#define _loop0_171_type 1440
528
#define _tmp_172_type 1441
529
#define _tmp_173_type 1442
530
#define _tmp_174_type 1443
531
#define _tmp_175_type 1444
532
#define _tmp_176_type 1445
533
534
static mod_ty file_rule(Parser *p);
535
static mod_ty interactive_rule(Parser *p);
536
static mod_ty eval_rule(Parser *p);
537
static mod_ty func_type_rule(Parser *p);
538
static asdl_stmt_seq* statements_rule(Parser *p);
539
static asdl_stmt_seq* statement_rule(Parser *p);
540
static asdl_stmt_seq* single_compound_stmt_rule(Parser *p);
541
static asdl_stmt_seq* statement_newline_rule(Parser *p);
542
static asdl_stmt_seq* simple_stmts_rule(Parser *p);
543
static stmt_ty simple_stmt_rule(Parser *p);
544
static stmt_ty compound_stmt_rule(Parser *p);
545
static stmt_ty assignment_rule(Parser *p);
546
static expr_ty annotated_rhs_rule(Parser *p);
547
static AugOperator* augassign_rule(Parser *p);
548
static stmt_ty return_stmt_rule(Parser *p);
549
static stmt_ty raise_stmt_rule(Parser *p);
550
static stmt_ty pass_stmt_rule(Parser *p);
551
static stmt_ty break_stmt_rule(Parser *p);
552
static stmt_ty continue_stmt_rule(Parser *p);
553
static stmt_ty global_stmt_rule(Parser *p);
554
static stmt_ty nonlocal_stmt_rule(Parser *p);
555
static stmt_ty del_stmt_rule(Parser *p);
556
static stmt_ty yield_stmt_rule(Parser *p);
557
static stmt_ty assert_stmt_rule(Parser *p);
558
static stmt_ty import_stmt_rule(Parser *p);
559
static stmt_ty import_name_rule(Parser *p);
560
static stmt_ty import_from_rule(Parser *p);
561
static asdl_alias_seq* import_from_targets_rule(Parser *p);
562
static asdl_alias_seq* import_from_as_names_rule(Parser *p);
563
static alias_ty import_from_as_name_rule(Parser *p);
564
static asdl_alias_seq* dotted_as_names_rule(Parser *p);
565
static alias_ty dotted_as_name_rule(Parser *p);
566
static expr_ty dotted_name_rule(Parser *p);
567
static asdl_stmt_seq* block_rule(Parser *p);
568
static asdl_expr_seq* decorators_rule(Parser *p);
569
static stmt_ty class_def_rule(Parser *p);
570
static stmt_ty class_def_raw_rule(Parser *p);
571
static stmt_ty function_def_rule(Parser *p);
572
static stmt_ty function_def_raw_rule(Parser *p);
573
static arguments_ty params_rule(Parser *p);
574
static arguments_ty parameters_rule(Parser *p);
575
static asdl_arg_seq* slash_no_default_rule(Parser *p);
576
static SlashWithDefault* slash_with_default_rule(Parser *p);
577
static StarEtc* star_etc_rule(Parser *p);
578
static arg_ty kwds_rule(Parser *p);
579
static arg_ty param_no_default_rule(Parser *p);
580
static arg_ty param_no_default_star_annotation_rule(Parser *p);
581
static NameDefaultPair* param_with_default_rule(Parser *p);
582
static NameDefaultPair* param_maybe_default_rule(Parser *p);
583
static arg_ty param_rule(Parser *p);
584
static arg_ty param_star_annotation_rule(Parser *p);
585
static expr_ty annotation_rule(Parser *p);
586
static expr_ty star_annotation_rule(Parser *p);
587
static expr_ty default_rule(Parser *p);
588
static stmt_ty if_stmt_rule(Parser *p);
589
static stmt_ty elif_stmt_rule(Parser *p);
590
static asdl_stmt_seq* else_block_rule(Parser *p);
591
static stmt_ty while_stmt_rule(Parser *p);
592
static stmt_ty for_stmt_rule(Parser *p);
593
static stmt_ty with_stmt_rule(Parser *p);
594
static withitem_ty with_item_rule(Parser *p);
595
static stmt_ty try_stmt_rule(Parser *p);
596
static excepthandler_ty except_block_rule(Parser *p);
597
static excepthandler_ty except_star_block_rule(Parser *p);
598
static asdl_stmt_seq* finally_block_rule(Parser *p);
599
static stmt_ty match_stmt_rule(Parser *p);
600
static expr_ty subject_expr_rule(Parser *p);
601
static match_case_ty case_block_rule(Parser *p);
602
static expr_ty guard_rule(Parser *p);
603
static pattern_ty patterns_rule(Parser *p);
604
static pattern_ty pattern_rule(Parser *p);
605
static pattern_ty as_pattern_rule(Parser *p);
606
static pattern_ty or_pattern_rule(Parser *p);
607
static pattern_ty closed_pattern_rule(Parser *p);
608
static pattern_ty literal_pattern_rule(Parser *p);
609
static expr_ty literal_expr_rule(Parser *p);
610
static expr_ty complex_number_rule(Parser *p);
611
static expr_ty signed_number_rule(Parser *p);
612
static expr_ty signed_real_number_rule(Parser *p);
613
static expr_ty real_number_rule(Parser *p);
614
static expr_ty imaginary_number_rule(Parser *p);
615
static pattern_ty capture_pattern_rule(Parser *p);
616
static expr_ty pattern_capture_target_rule(Parser *p);
617
static pattern_ty wildcard_pattern_rule(Parser *p);
618
static pattern_ty value_pattern_rule(Parser *p);
619
static expr_ty attr_rule(Parser *p);
620
static expr_ty name_or_attr_rule(Parser *p);
621
static pattern_ty group_pattern_rule(Parser *p);
622
static pattern_ty sequence_pattern_rule(Parser *p);
623
static asdl_seq* open_sequence_pattern_rule(Parser *p);
624
static asdl_seq* maybe_sequence_pattern_rule(Parser *p);
625
static pattern_ty maybe_star_pattern_rule(Parser *p);
626
static pattern_ty star_pattern_rule(Parser *p);
627
static pattern_ty mapping_pattern_rule(Parser *p);
628
static asdl_seq* items_pattern_rule(Parser *p);
629
static KeyPatternPair* key_value_pattern_rule(Parser *p);
630
static expr_ty double_star_pattern_rule(Parser *p);
631
static pattern_ty class_pattern_rule(Parser *p);
632
static asdl_pattern_seq* positional_patterns_rule(Parser *p);
633
static asdl_seq* keyword_patterns_rule(Parser *p);
634
static KeyPatternPair* keyword_pattern_rule(Parser *p);
635
static stmt_ty type_alias_rule(Parser *p);
636
static asdl_type_param_seq* type_params_rule(Parser *p);
637
static asdl_type_param_seq* type_param_seq_rule(Parser *p);
638
static type_param_ty type_param_rule(Parser *p);
639
static expr_ty type_param_bound_rule(Parser *p);
640
static expr_ty type_param_default_rule(Parser *p);
641
static expr_ty type_param_starred_default_rule(Parser *p);
642
static expr_ty expressions_rule(Parser *p);
643
static expr_ty expression_rule(Parser *p);
644
static expr_ty yield_expr_rule(Parser *p);
645
static expr_ty star_expressions_rule(Parser *p);
646
static expr_ty star_expression_rule(Parser *p);
647
static asdl_expr_seq* star_named_expressions_rule(Parser *p);
648
static expr_ty star_named_expression_rule(Parser *p);
649
static expr_ty assignment_expression_rule(Parser *p);
650
static expr_ty named_expression_rule(Parser *p);
651
static expr_ty disjunction_rule(Parser *p);
652
static expr_ty conjunction_rule(Parser *p);
653
static expr_ty inversion_rule(Parser *p);
654
static expr_ty comparison_rule(Parser *p);
655
static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
656
static CmpopExprPair* eq_bitwise_or_rule(Parser *p);
657
static CmpopExprPair* noteq_bitwise_or_rule(Parser *p);
658
static CmpopExprPair* lte_bitwise_or_rule(Parser *p);
659
static CmpopExprPair* lt_bitwise_or_rule(Parser *p);
660
static CmpopExprPair* gte_bitwise_or_rule(Parser *p);
661
static CmpopExprPair* gt_bitwise_or_rule(Parser *p);
662
static CmpopExprPair* notin_bitwise_or_rule(Parser *p);
663
static CmpopExprPair* in_bitwise_or_rule(Parser *p);
664
static CmpopExprPair* isnot_bitwise_or_rule(Parser *p);
665
static CmpopExprPair* is_bitwise_or_rule(Parser *p);
666
static expr_ty bitwise_or_rule(Parser *p);
667
static expr_ty bitwise_xor_rule(Parser *p);
668
static expr_ty bitwise_and_rule(Parser *p);
669
static expr_ty shift_expr_rule(Parser *p);
670
static expr_ty sum_rule(Parser *p);
671
static expr_ty term_rule(Parser *p);
672
static expr_ty factor_rule(Parser *p);
673
static expr_ty power_rule(Parser *p);
674
static expr_ty await_primary_rule(Parser *p);
675
static expr_ty primary_rule(Parser *p);
676
static expr_ty slices_rule(Parser *p);
677
static expr_ty slice_rule(Parser *p);
678
static expr_ty atom_rule(Parser *p);
679
static expr_ty group_rule(Parser *p);
680
static expr_ty lambdef_rule(Parser *p);
681
static arguments_ty lambda_params_rule(Parser *p);
682
static arguments_ty lambda_parameters_rule(Parser *p);
683
static asdl_arg_seq* lambda_slash_no_default_rule(Parser *p);
684
static SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
685
static StarEtc* lambda_star_etc_rule(Parser *p);
686
static arg_ty lambda_kwds_rule(Parser *p);
687
static arg_ty lambda_param_no_default_rule(Parser *p);
688
static NameDefaultPair* lambda_param_with_default_rule(Parser *p);
689
static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
690
static arg_ty lambda_param_rule(Parser *p);
691
static expr_ty fstring_middle_rule(Parser *p);
692
static expr_ty fstring_replacement_field_rule(Parser *p);
693
static ResultTokenWithMetadata* fstring_conversion_rule(Parser *p);
694
static ResultTokenWithMetadata* fstring_full_format_spec_rule(Parser *p);
695
static expr_ty fstring_format_spec_rule(Parser *p);
696
static expr_ty fstring_rule(Parser *p);
697
static expr_ty tstring_format_spec_replacement_field_rule(Parser *p);
698
static expr_ty tstring_format_spec_rule(Parser *p);
699
static ResultTokenWithMetadata* tstring_full_format_spec_rule(Parser *p);
700
static expr_ty tstring_replacement_field_rule(Parser *p);
701
static expr_ty tstring_middle_rule(Parser *p);
702
static expr_ty tstring_rule(Parser *p);
703
static expr_ty string_rule(Parser *p);
704
static expr_ty strings_rule(Parser *p);
705
static expr_ty list_rule(Parser *p);
706
static expr_ty tuple_rule(Parser *p);
707
static expr_ty set_rule(Parser *p);
708
static expr_ty dict_rule(Parser *p);
709
static asdl_seq* double_starred_kvpairs_rule(Parser *p);
710
static KeyValuePair* double_starred_kvpair_rule(Parser *p);
711
static KeyValuePair* kvpair_rule(Parser *p);
712
static asdl_comprehension_seq* for_if_clauses_rule(Parser *p);
713
static comprehension_ty for_if_clause_rule(Parser *p);
714
static expr_ty listcomp_rule(Parser *p);
715
static expr_ty setcomp_rule(Parser *p);
716
static expr_ty genexp_rule(Parser *p);
717
static expr_ty dictcomp_rule(Parser *p);
718
static expr_ty arguments_rule(Parser *p);
719
static expr_ty args_rule(Parser *p);
720
static asdl_seq* kwargs_rule(Parser *p);
721
static expr_ty starred_expression_rule(Parser *p);
722
static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
723
static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
724
static expr_ty star_targets_rule(Parser *p);
725
static asdl_expr_seq* star_targets_list_seq_rule(Parser *p);
726
static asdl_expr_seq* star_targets_tuple_seq_rule(Parser *p);
727
static expr_ty star_target_rule(Parser *p);
728
static expr_ty target_with_star_atom_rule(Parser *p);
729
static expr_ty star_atom_rule(Parser *p);
730
static expr_ty single_target_rule(Parser *p);
731
static expr_ty single_subscript_attribute_target_rule(Parser *p);
732
static expr_ty t_primary_rule(Parser *p);
733
static void *t_lookahead_rule(Parser *p);
734
static asdl_expr_seq* del_targets_rule(Parser *p);
735
static expr_ty del_target_rule(Parser *p);
736
static expr_ty del_t_atom_rule(Parser *p);
737
static asdl_expr_seq* type_expressions_rule(Parser *p);
738
static Token* func_type_comment_rule(Parser *p);
739
static void *invalid_arguments_rule(Parser *p);
740
static void *invalid_kwarg_rule(Parser *p);
741
static expr_ty expression_without_invalid_rule(Parser *p);
742
static void *invalid_legacy_expression_rule(Parser *p);
743
static void *invalid_type_param_rule(Parser *p);
744
static void *invalid_expression_rule(Parser *p);
745
static void *invalid_named_expression_rule(Parser *p);
746
static void *invalid_assignment_rule(Parser *p);
747
static expr_ty invalid_ann_assign_target_rule(Parser *p);
748
static void *invalid_raise_stmt_rule(Parser *p);
749
static void *invalid_del_stmt_rule(Parser *p);
750
static void *invalid_assert_stmt_rule(Parser *p);
751
static void *invalid_block_rule(Parser *p);
752
static void *invalid_comprehension_rule(Parser *p);
753
static void *invalid_dict_comprehension_rule(Parser *p);
754
static void *invalid_parameters_rule(Parser *p);
755
static void *invalid_default_rule(Parser *p);
756
static void *invalid_star_etc_rule(Parser *p);
757
static void *invalid_kwds_rule(Parser *p);
758
static void *invalid_parameters_helper_rule(Parser *p);
759
static void *invalid_lambda_parameters_rule(Parser *p);
760
static void *invalid_lambda_parameters_helper_rule(Parser *p);
761
static void *invalid_lambda_star_etc_rule(Parser *p);
762
static void *invalid_lambda_kwds_rule(Parser *p);
763
static void *invalid_double_type_comments_rule(Parser *p);
764
static void *invalid_with_item_rule(Parser *p);
765
static void *invalid_for_if_clause_rule(Parser *p);
766
static void *invalid_for_target_rule(Parser *p);
767
static void *invalid_group_rule(Parser *p);
768
static void *invalid_import_rule(Parser *p);
769
static void *invalid_dotted_as_name_rule(Parser *p);
770
static void *invalid_import_from_as_name_rule(Parser *p);
771
static void *invalid_import_from_targets_rule(Parser *p);
772
static void *invalid_with_stmt_rule(Parser *p);
773
static void *invalid_with_stmt_indent_rule(Parser *p);
774
static void *invalid_try_stmt_rule(Parser *p);
775
static void *invalid_except_stmt_rule(Parser *p);
776
static void *invalid_except_star_stmt_rule(Parser *p);
777
static void *invalid_finally_stmt_rule(Parser *p);
778
static void *invalid_except_stmt_indent_rule(Parser *p);
779
static void *invalid_except_star_stmt_indent_rule(Parser *p);
780
static void *invalid_match_stmt_rule(Parser *p);
781
static void *invalid_case_block_rule(Parser *p);
782
static void *invalid_as_pattern_rule(Parser *p);
783
static void *invalid_class_pattern_rule(Parser *p);
784
static asdl_pattern_seq* invalid_class_argument_pattern_rule(Parser *p);
785
static void *invalid_if_stmt_rule(Parser *p);
786
static void *invalid_elif_stmt_rule(Parser *p);
787
static void *invalid_else_stmt_rule(Parser *p);
788
static void *invalid_while_stmt_rule(Parser *p);
789
static void *invalid_for_stmt_rule(Parser *p);
790
static void *invalid_def_raw_rule(Parser *p);
791
static void *invalid_class_def_raw_rule(Parser *p);
792
static void *invalid_double_starred_kvpairs_rule(Parser *p);
793
static void *invalid_kvpair_rule(Parser *p);
794
static void *invalid_starred_expression_unpacking_rule(Parser *p);
795
static void *invalid_starred_expression_rule(Parser *p);
796
static void *invalid_fstring_replacement_field_rule(Parser *p);
797
static void *invalid_fstring_conversion_character_rule(Parser *p);
798
static void *invalid_tstring_replacement_field_rule(Parser *p);
799
static void *invalid_tstring_conversion_character_rule(Parser *p);
800
static void *invalid_string_tstring_concat_rule(Parser *p);
801
static void *invalid_arithmetic_rule(Parser *p);
802
static void *invalid_factor_rule(Parser *p);
803
static void *invalid_type_params_rule(Parser *p);
804
static asdl_seq *_loop0_1_rule(Parser *p);
805
static asdl_seq *_loop1_2_rule(Parser *p);
806
static asdl_seq *_loop0_3_rule(Parser *p);
807
static asdl_seq *_gather_4_rule(Parser *p);
808
static void *_tmp_5_rule(Parser *p);
809
static void *_tmp_6_rule(Parser *p);
810
static void *_tmp_7_rule(Parser *p);
811
static void *_tmp_8_rule(Parser *p);
812
static void *_tmp_9_rule(Parser *p);
813
static void *_tmp_10_rule(Parser *p);
814
static void *_tmp_11_rule(Parser *p);
815
static asdl_seq *_loop1_12_rule(Parser *p);
816
static asdl_seq *_loop0_13_rule(Parser *p);
817
static asdl_seq *_gather_14_rule(Parser *p);
818
static void *_tmp_15_rule(Parser *p);
819
static void *_tmp_16_rule(Parser *p);
820
static asdl_seq *_loop0_17_rule(Parser *p);
821
static asdl_seq *_loop1_18_rule(Parser *p);
822
static asdl_seq *_loop0_19_rule(Parser *p);
823
static asdl_seq *_gather_20_rule(Parser *p);
824
static void *_tmp_21_rule(Parser *p);
825
static asdl_seq *_loop0_22_rule(Parser *p);
826
static asdl_seq *_gather_23_rule(Parser *p);
827
static asdl_seq *_loop1_24_rule(Parser *p);
828
static void *_tmp_25_rule(Parser *p);
829
static void *_tmp_26_rule(Parser *p);
830
static asdl_seq *_loop0_27_rule(Parser *p);
831
static asdl_seq *_loop0_28_rule(Parser *p);
832
static asdl_seq *_loop1_29_rule(Parser *p);
833
static asdl_seq *_loop1_30_rule(Parser *p);
834
static asdl_seq *_loop0_31_rule(Parser *p);
835
static asdl_seq *_loop1_32_rule(Parser *p);
836
static asdl_seq *_loop0_33_rule(Parser *p);
837
static asdl_seq *_gather_34_rule(Parser *p);
838
static void *_tmp_35_rule(Parser *p);
839
static asdl_seq *_loop1_36_rule(Parser *p);
840
static asdl_seq *_loop1_37_rule(Parser *p);
841
static asdl_seq *_loop1_38_rule(Parser *p);
842
static asdl_seq *_loop0_39_rule(Parser *p);
843
static asdl_seq *_gather_40_rule(Parser *p);
844
static void *_tmp_41_rule(Parser *p);
845
static void *_tmp_42_rule(Parser *p);
846
static void *_tmp_43_rule(Parser *p);
847
static asdl_seq *_loop0_44_rule(Parser *p);
848
static asdl_seq *_gather_45_rule(Parser *p);
849
static asdl_seq *_loop0_46_rule(Parser *p);
850
static asdl_seq *_gather_47_rule(Parser *p);
851
static void *_tmp_48_rule(Parser *p);
852
static asdl_seq *_loop0_49_rule(Parser *p);
853
static asdl_seq *_gather_50_rule(Parser *p);
854
static asdl_seq *_loop0_51_rule(Parser *p);
855
static asdl_seq *_gather_52_rule(Parser *p);
856
static asdl_seq *_loop0_53_rule(Parser *p);
857
static asdl_seq *_gather_54_rule(Parser *p);
858
static asdl_seq *_loop1_55_rule(Parser *p);
859
static asdl_seq *_loop1_56_rule(Parser *p);
860
static asdl_seq *_loop0_57_rule(Parser *p);
861
static asdl_seq *_gather_58_rule(Parser *p);
862
static asdl_seq *_loop1_59_rule(Parser *p);
863
static asdl_seq *_loop1_60_rule(Parser *p);
864
static asdl_seq *_loop1_61_rule(Parser *p);
865
static void *_tmp_62_rule(Parser *p);
866
static asdl_seq *_loop0_63_rule(Parser *p);
867
static asdl_seq *_gather_64_rule(Parser *p);
868
static void *_tmp_65_rule(Parser *p);
869
static void *_tmp_66_rule(Parser *p);
870
static void *_tmp_67_rule(Parser *p);
871
static void *_tmp_68_rule(Parser *p);
872
static void *_tmp_69_rule(Parser *p);
873
static asdl_seq *_loop0_70_rule(Parser *p);
874
static asdl_seq *_loop0_71_rule(Parser *p);
875
static asdl_seq *_loop1_72_rule(Parser *p);
876
static asdl_seq *_loop1_73_rule(Parser *p);
877
static asdl_seq *_loop0_74_rule(Parser *p);
878
static asdl_seq *_loop1_75_rule(Parser *p);
879
static asdl_seq *_loop0_76_rule(Parser *p);
880
static asdl_seq *_loop0_77_rule(Parser *p);
881
static asdl_seq *_loop0_78_rule(Parser *p);
882
static asdl_seq *_loop0_79_rule(Parser *p);
883
static asdl_seq *_loop1_80_rule(Parser *p);
884
static asdl_seq *_loop1_81_rule(Parser *p);
885
static void *_tmp_82_rule(Parser *p);
886
static asdl_seq *_loop0_83_rule(Parser *p);
887
static asdl_seq *_gather_84_rule(Parser *p);
888
static asdl_seq *_loop1_85_rule(Parser *p);
889
static asdl_seq *_loop0_86_rule(Parser *p);
890
static void *_tmp_87_rule(Parser *p);
891
static asdl_seq *_loop0_88_rule(Parser *p);
892
static asdl_seq *_gather_89_rule(Parser *p);
893
static void *_tmp_90_rule(Parser *p);
894
static asdl_seq *_loop0_91_rule(Parser *p);
895
static asdl_seq *_gather_92_rule(Parser *p);
896
static asdl_seq *_loop0_93_rule(Parser *p);
897
static asdl_seq *_gather_94_rule(Parser *p);
898
static asdl_seq *_loop0_95_rule(Parser *p);
899
static asdl_seq *_loop0_96_rule(Parser *p);
900
static asdl_seq *_gather_97_rule(Parser *p);
901
static asdl_seq *_loop1_98_rule(Parser *p);
902
static void *_tmp_99_rule(Parser *p);
903
static asdl_seq *_loop0_100_rule(Parser *p);
904
static asdl_seq *_gather_101_rule(Parser *p);
905
static asdl_seq *_loop0_102_rule(Parser *p);
906
static asdl_seq *_gather_103_rule(Parser *p);
907
static void *_tmp_104_rule(Parser *p);
908
static void *_tmp_105_rule(Parser *p);
909
static asdl_seq *_loop0_106_rule(Parser *p);
910
static asdl_seq *_gather_107_rule(Parser *p);
911
static void *_tmp_108_rule(Parser *p);
912
static void *_tmp_109_rule(Parser *p);
913
static void *_tmp_110_rule(Parser *p);
914
static void *_tmp_111_rule(Parser *p);
915
static void *_tmp_112_rule(Parser *p);
916
static asdl_seq *_loop1_113_rule(Parser *p);
917
static void *_tmp_114_rule(Parser *p);
918
static void *_tmp_115_rule(Parser *p);
919
static void *_tmp_116_rule(Parser *p);
920
static void *_tmp_117_rule(Parser *p);
921
static void *_tmp_118_rule(Parser *p);
922
static asdl_seq *_loop0_119_rule(Parser *p);
923
static asdl_seq *_loop0_120_rule(Parser *p);
924
static void *_tmp_121_rule(Parser *p);
925
static void *_tmp_122_rule(Parser *p);
926
static void *_tmp_123_rule(Parser *p);
927
static void *_tmp_124_rule(Parser *p);
928
static void *_tmp_125_rule(Parser *p);
929
static void *_tmp_126_rule(Parser *p);
930
static void *_tmp_127_rule(Parser *p);
931
static void *_tmp_128_rule(Parser *p);
932
static void *_tmp_129_rule(Parser *p);
933
static asdl_seq *_loop0_130_rule(Parser *p);
934
static asdl_seq *_gather_131_rule(Parser *p);
935
static void *_tmp_132_rule(Parser *p);
936
static void *_tmp_133_rule(Parser *p);
937
static void *_tmp_134_rule(Parser *p);
938
static void *_tmp_135_rule(Parser *p);
939
static asdl_seq *_loop0_136_rule(Parser *p);
940
static asdl_seq *_gather_137_rule(Parser *p);
941
static void *_tmp_138_rule(Parser *p);
942
static asdl_seq *_loop0_139_rule(Parser *p);
943
static asdl_seq *_gather_140_rule(Parser *p);
944
static asdl_seq *_loop0_141_rule(Parser *p);
945
static asdl_seq *_gather_142_rule(Parser *p);
946
static void *_tmp_143_rule(Parser *p);
947
static asdl_seq *_loop0_144_rule(Parser *p);
948
static void *_tmp_145_rule(Parser *p);
949
static void *_tmp_146_rule(Parser *p);
950
static void *_tmp_147_rule(Parser *p);
951
static void *_tmp_148_rule(Parser *p);
952
static void *_tmp_149_rule(Parser *p);
953
static void *_tmp_150_rule(Parser *p);
954
static void *_tmp_151_rule(Parser *p);
955
static void *_tmp_152_rule(Parser *p);
956
static void *_tmp_153_rule(Parser *p);
957
static void *_tmp_154_rule(Parser *p);
958
static void *_tmp_155_rule(Parser *p);
959
static void *_tmp_156_rule(Parser *p);
960
static void *_tmp_157_rule(Parser *p);
961
static void *_tmp_158_rule(Parser *p);
962
static void *_tmp_159_rule(Parser *p);
963
static void *_tmp_160_rule(Parser *p);
964
static void *_tmp_161_rule(Parser *p);
965
static void *_tmp_162_rule(Parser *p);
966
static void *_tmp_163_rule(Parser *p);
967
static void *_tmp_164_rule(Parser *p);
968
static void *_tmp_165_rule(Parser *p);
969
static void *_tmp_166_rule(Parser *p);
970
static void *_tmp_167_rule(Parser *p);
971
static void *_tmp_168_rule(Parser *p);
972
static void *_tmp_169_rule(Parser *p);
973
static void *_tmp_170_rule(Parser *p);
974
static asdl_seq *_loop0_171_rule(Parser *p);
975
static void *_tmp_172_rule(Parser *p);
976
static void *_tmp_173_rule(Parser *p);
977
static void *_tmp_174_rule(Parser *p);
978
static void *_tmp_175_rule(Parser *p);
979
static void *_tmp_176_rule(Parser *p);
980
981
982
// file: statements? $
983
static mod_ty
984
file_rule(Parser *p)
985
33.6k
{
986
33.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
987
0
        _Pypegen_stack_overflow(p);
988
0
    }
989
33.6k
    if (p->error_indicator) {
990
3.68k
        p->level--;
991
3.68k
        return NULL;
992
3.68k
    }
993
29.9k
    mod_ty _res = NULL;
994
29.9k
    int _mark = p->mark;
995
29.9k
    { // statements? $
996
29.9k
        if (p->error_indicator) {
997
0
            p->level--;
998
0
            return NULL;
999
0
        }
1000
29.9k
        D(fprintf(stderr, "%*c> file[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statements? $"));
1001
29.9k
        void *a;
1002
29.9k
        Token * endmarker_var;
1003
29.9k
        if (
1004
29.9k
            (a = statements_rule(p), !p->error_indicator)  // statements?
1005
23.4k
            &&
1006
23.4k
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1007
29.9k
        )
1008
7.05k
        {
1009
7.05k
            D(fprintf(stderr, "%*c+ file[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statements? $"));
1010
7.05k
            _res = _PyPegen_make_module ( p , a );
1011
7.05k
            if (_res == NULL && PyErr_Occurred()) {
1012
0
                p->error_indicator = 1;
1013
0
                p->level--;
1014
0
                return NULL;
1015
0
            }
1016
7.05k
            goto done;
1017
7.05k
        }
1018
22.9k
        p->mark = _mark;
1019
22.9k
        D(fprintf(stderr, "%*c%s file[%d-%d]: %s failed!\n", p->level, ' ',
1020
22.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statements? $"));
1021
22.9k
    }
1022
22.9k
    _res = NULL;
1023
29.9k
  done:
1024
29.9k
    p->level--;
1025
29.9k
    return _res;
1026
22.9k
}
1027
1028
// interactive: statement_newline
1029
static mod_ty
1030
interactive_rule(Parser *p)
1031
0
{
1032
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1033
0
        _Pypegen_stack_overflow(p);
1034
0
    }
1035
0
    if (p->error_indicator) {
1036
0
        p->level--;
1037
0
        return NULL;
1038
0
    }
1039
0
    mod_ty _res = NULL;
1040
0
    int _mark = p->mark;
1041
0
    { // statement_newline
1042
0
        if (p->error_indicator) {
1043
0
            p->level--;
1044
0
            return NULL;
1045
0
        }
1046
0
        D(fprintf(stderr, "%*c> interactive[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement_newline"));
1047
0
        asdl_stmt_seq* a;
1048
0
        if (
1049
0
            (a = statement_newline_rule(p))  // statement_newline
1050
0
        )
1051
0
        {
1052
0
            D(fprintf(stderr, "%*c+ interactive[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement_newline"));
1053
0
            _res = _PyAST_Interactive ( a , p -> arena );
1054
0
            if (_res == NULL && PyErr_Occurred()) {
1055
0
                p->error_indicator = 1;
1056
0
                p->level--;
1057
0
                return NULL;
1058
0
            }
1059
0
            goto done;
1060
0
        }
1061
0
        p->mark = _mark;
1062
0
        D(fprintf(stderr, "%*c%s interactive[%d-%d]: %s failed!\n", p->level, ' ',
1063
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement_newline"));
1064
0
    }
1065
0
    _res = NULL;
1066
0
  done:
1067
0
    p->level--;
1068
0
    return _res;
1069
0
}
1070
1071
// eval: expressions NEWLINE* $
1072
static mod_ty
1073
eval_rule(Parser *p)
1074
66
{
1075
66
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1076
0
        _Pypegen_stack_overflow(p);
1077
0
    }
1078
66
    if (p->error_indicator) {
1079
0
        p->level--;
1080
0
        return NULL;
1081
0
    }
1082
66
    mod_ty _res = NULL;
1083
66
    int _mark = p->mark;
1084
66
    { // expressions NEWLINE* $
1085
66
        if (p->error_indicator) {
1086
0
            p->level--;
1087
0
            return NULL;
1088
0
        }
1089
66
        D(fprintf(stderr, "%*c> eval[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1090
66
        asdl_seq * _loop0_1_var;
1091
66
        expr_ty a;
1092
66
        Token * endmarker_var;
1093
66
        if (
1094
66
            (a = expressions_rule(p))  // expressions
1095
66
            &&
1096
66
            (_loop0_1_var = _loop0_1_rule(p))  // NEWLINE*
1097
66
            &&
1098
66
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1099
66
        )
1100
66
        {
1101
66
            D(fprintf(stderr, "%*c+ eval[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1102
66
            _res = _PyAST_Expression ( a , p -> arena );
1103
66
            if (_res == NULL && PyErr_Occurred()) {
1104
0
                p->error_indicator = 1;
1105
0
                p->level--;
1106
0
                return NULL;
1107
0
            }
1108
66
            goto done;
1109
66
        }
1110
0
        p->mark = _mark;
1111
0
        D(fprintf(stderr, "%*c%s eval[%d-%d]: %s failed!\n", p->level, ' ',
1112
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions NEWLINE* $"));
1113
0
    }
1114
0
    _res = NULL;
1115
66
  done:
1116
66
    p->level--;
1117
66
    return _res;
1118
0
}
1119
1120
// func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
1121
static mod_ty
1122
func_type_rule(Parser *p)
1123
0
{
1124
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1125
0
        _Pypegen_stack_overflow(p);
1126
0
    }
1127
0
    if (p->error_indicator) {
1128
0
        p->level--;
1129
0
        return NULL;
1130
0
    }
1131
0
    mod_ty _res = NULL;
1132
0
    int _mark = p->mark;
1133
0
    { // '(' type_expressions? ')' '->' expression NEWLINE* $
1134
0
        if (p->error_indicator) {
1135
0
            p->level--;
1136
0
            return NULL;
1137
0
        }
1138
0
        D(fprintf(stderr, "%*c> func_type[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1139
0
        Token * _literal;
1140
0
        Token * _literal_1;
1141
0
        Token * _literal_2;
1142
0
        asdl_seq * _loop0_1_var;
1143
0
        void *a;
1144
0
        expr_ty b;
1145
0
        Token * endmarker_var;
1146
0
        if (
1147
0
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
1148
0
            &&
1149
0
            (a = type_expressions_rule(p), !p->error_indicator)  // type_expressions?
1150
0
            &&
1151
0
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
1152
0
            &&
1153
0
            (_literal_2 = _PyPegen_expect_token(p, 51))  // token='->'
1154
0
            &&
1155
0
            (b = expression_rule(p))  // expression
1156
0
            &&
1157
0
            (_loop0_1_var = _loop0_1_rule(p))  // NEWLINE*
1158
0
            &&
1159
0
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1160
0
        )
1161
0
        {
1162
0
            D(fprintf(stderr, "%*c+ func_type[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1163
0
            _res = _PyAST_FunctionType ( a , b , p -> arena );
1164
0
            if (_res == NULL && PyErr_Occurred()) {
1165
0
                p->error_indicator = 1;
1166
0
                p->level--;
1167
0
                return NULL;
1168
0
            }
1169
0
            goto done;
1170
0
        }
1171
0
        p->mark = _mark;
1172
0
        D(fprintf(stderr, "%*c%s func_type[%d-%d]: %s failed!\n", p->level, ' ',
1173
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1174
0
    }
1175
0
    _res = NULL;
1176
0
  done:
1177
0
    p->level--;
1178
0
    return _res;
1179
0
}
1180
1181
// statements: statement+
1182
static asdl_stmt_seq*
1183
statements_rule(Parser *p)
1184
52.4k
{
1185
52.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1186
0
        _Pypegen_stack_overflow(p);
1187
0
    }
1188
52.4k
    if (p->error_indicator) {
1189
0
        p->level--;
1190
0
        return NULL;
1191
0
    }
1192
52.4k
    asdl_stmt_seq* _res = NULL;
1193
52.4k
    int _mark = p->mark;
1194
52.4k
    { // statement+
1195
52.4k
        if (p->error_indicator) {
1196
0
            p->level--;
1197
0
            return NULL;
1198
0
        }
1199
52.4k
        D(fprintf(stderr, "%*c> statements[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement+"));
1200
52.4k
        asdl_seq * a;
1201
52.4k
        if (
1202
52.4k
            (a = _loop1_2_rule(p))  // statement+
1203
52.4k
        )
1204
30.3k
        {
1205
30.3k
            D(fprintf(stderr, "%*c+ statements[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement+"));
1206
30.3k
            _res = ( asdl_stmt_seq* ) _PyPegen_seq_flatten ( p , a );
1207
30.3k
            if (_res == NULL && PyErr_Occurred()) {
1208
0
                p->error_indicator = 1;
1209
0
                p->level--;
1210
0
                return NULL;
1211
0
            }
1212
30.3k
            goto done;
1213
30.3k
        }
1214
22.1k
        p->mark = _mark;
1215
22.1k
        D(fprintf(stderr, "%*c%s statements[%d-%d]: %s failed!\n", p->level, ' ',
1216
22.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement+"));
1217
22.1k
    }
1218
22.1k
    _res = NULL;
1219
52.4k
  done:
1220
52.4k
    p->level--;
1221
52.4k
    return _res;
1222
22.1k
}
1223
1224
// statement: compound_stmt | simple_stmts
1225
static asdl_stmt_seq*
1226
statement_rule(Parser *p)
1227
174k
{
1228
174k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1229
0
        _Pypegen_stack_overflow(p);
1230
0
    }
1231
174k
    if (p->error_indicator) {
1232
0
        p->level--;
1233
0
        return NULL;
1234
0
    }
1235
174k
    asdl_stmt_seq* _res = NULL;
1236
174k
    int _mark = p->mark;
1237
174k
    { // compound_stmt
1238
174k
        if (p->error_indicator) {
1239
0
            p->level--;
1240
0
            return NULL;
1241
0
        }
1242
174k
        D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1243
174k
        stmt_ty a;
1244
174k
        if (
1245
174k
            (a = compound_stmt_rule(p))  // compound_stmt
1246
174k
        )
1247
38.7k
        {
1248
38.7k
            D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1249
38.7k
            _res = _PyPegen_register_stmts ( p , ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a ) );
1250
38.7k
            if (_res == NULL && PyErr_Occurred()) {
1251
0
                p->error_indicator = 1;
1252
0
                p->level--;
1253
0
                return NULL;
1254
0
            }
1255
38.7k
            goto done;
1256
38.7k
        }
1257
135k
        p->mark = _mark;
1258
135k
        D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1259
135k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt"));
1260
135k
    }
1261
0
    { // simple_stmts
1262
135k
        if (p->error_indicator) {
1263
2.41k
            p->level--;
1264
2.41k
            return NULL;
1265
2.41k
        }
1266
132k
        D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1267
132k
        asdl_stmt_seq* a;
1268
132k
        if (
1269
132k
            (a = (asdl_stmt_seq*)simple_stmts_rule(p))  // simple_stmts
1270
132k
        )
1271
82.7k
        {
1272
82.7k
            D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1273
82.7k
            _res = a;
1274
82.7k
            if (_res == NULL && PyErr_Occurred()) {
1275
0
                p->error_indicator = 1;
1276
0
                p->level--;
1277
0
                return NULL;
1278
0
            }
1279
82.7k
            goto done;
1280
82.7k
        }
1281
50.0k
        p->mark = _mark;
1282
50.0k
        D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1283
50.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1284
50.0k
    }
1285
50.0k
    _res = NULL;
1286
171k
  done:
1287
171k
    p->level--;
1288
171k
    return _res;
1289
50.0k
}
1290
1291
// single_compound_stmt: compound_stmt
1292
static asdl_stmt_seq*
1293
single_compound_stmt_rule(Parser *p)
1294
0
{
1295
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1296
0
        _Pypegen_stack_overflow(p);
1297
0
    }
1298
0
    if (p->error_indicator) {
1299
0
        p->level--;
1300
0
        return NULL;
1301
0
    }
1302
0
    asdl_stmt_seq* _res = NULL;
1303
0
    int _mark = p->mark;
1304
0
    { // compound_stmt
1305
0
        if (p->error_indicator) {
1306
0
            p->level--;
1307
0
            return NULL;
1308
0
        }
1309
0
        D(fprintf(stderr, "%*c> single_compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1310
0
        stmt_ty a;
1311
0
        if (
1312
0
            (a = compound_stmt_rule(p))  // compound_stmt
1313
0
        )
1314
0
        {
1315
0
            D(fprintf(stderr, "%*c+ single_compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1316
0
            _res = _PyPegen_register_stmts ( p , ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a ) );
1317
0
            if (_res == NULL && PyErr_Occurred()) {
1318
0
                p->error_indicator = 1;
1319
0
                p->level--;
1320
0
                return NULL;
1321
0
            }
1322
0
            goto done;
1323
0
        }
1324
0
        p->mark = _mark;
1325
0
        D(fprintf(stderr, "%*c%s single_compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1326
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt"));
1327
0
    }
1328
0
    _res = NULL;
1329
0
  done:
1330
0
    p->level--;
1331
0
    return _res;
1332
0
}
1333
1334
// statement_newline: single_compound_stmt NEWLINE | simple_stmts | NEWLINE | $
1335
static asdl_stmt_seq*
1336
statement_newline_rule(Parser *p)
1337
0
{
1338
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1339
0
        _Pypegen_stack_overflow(p);
1340
0
    }
1341
0
    if (p->error_indicator) {
1342
0
        p->level--;
1343
0
        return NULL;
1344
0
    }
1345
0
    asdl_stmt_seq* _res = NULL;
1346
0
    int _mark = p->mark;
1347
0
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1348
0
        p->error_indicator = 1;
1349
0
        p->level--;
1350
0
        return NULL;
1351
0
    }
1352
0
    int _start_lineno = p->tokens[_mark]->lineno;
1353
0
    UNUSED(_start_lineno); // Only used by EXTRA macro
1354
0
    int _start_col_offset = p->tokens[_mark]->col_offset;
1355
0
    UNUSED(_start_col_offset); // Only used by EXTRA macro
1356
0
    { // single_compound_stmt NEWLINE
1357
0
        if (p->error_indicator) {
1358
0
            p->level--;
1359
0
            return NULL;
1360
0
        }
1361
0
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_compound_stmt NEWLINE"));
1362
0
        asdl_stmt_seq* a;
1363
0
        Token * newline_var;
1364
0
        if (
1365
0
            (a = single_compound_stmt_rule(p))  // single_compound_stmt
1366
0
            &&
1367
0
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1368
0
        )
1369
0
        {
1370
0
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_compound_stmt NEWLINE"));
1371
0
            _res = a;
1372
0
            if (_res == NULL && PyErr_Occurred()) {
1373
0
                p->error_indicator = 1;
1374
0
                p->level--;
1375
0
                return NULL;
1376
0
            }
1377
0
            goto done;
1378
0
        }
1379
0
        p->mark = _mark;
1380
0
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1381
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_compound_stmt NEWLINE"));
1382
0
    }
1383
0
    { // simple_stmts
1384
0
        if (p->error_indicator) {
1385
0
            p->level--;
1386
0
            return NULL;
1387
0
        }
1388
0
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1389
0
        asdl_stmt_seq* simple_stmts_var;
1390
0
        if (
1391
0
            (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
1392
0
        )
1393
0
        {
1394
0
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1395
0
            _res = simple_stmts_var;
1396
0
            goto done;
1397
0
        }
1398
0
        p->mark = _mark;
1399
0
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1400
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1401
0
    }
1402
0
    { // NEWLINE
1403
0
        if (p->error_indicator) {
1404
0
            p->level--;
1405
0
            return NULL;
1406
0
        }
1407
0
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
1408
0
        Token * newline_var;
1409
0
        if (
1410
0
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1411
0
        )
1412
0
        {
1413
0
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
1414
0
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1415
0
            if (_token == NULL) {
1416
0
                p->level--;
1417
0
                return NULL;
1418
0
            }
1419
0
            int _end_lineno = _token->end_lineno;
1420
0
            UNUSED(_end_lineno); // Only used by EXTRA macro
1421
0
            int _end_col_offset = _token->end_col_offset;
1422
0
            UNUSED(_end_col_offset); // Only used by EXTRA macro
1423
0
            _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , CHECK ( stmt_ty , _PyAST_Pass ( EXTRA ) ) );
1424
0
            if (_res == NULL && PyErr_Occurred()) {
1425
0
                p->error_indicator = 1;
1426
0
                p->level--;
1427
0
                return NULL;
1428
0
            }
1429
0
            goto done;
1430
0
        }
1431
0
        p->mark = _mark;
1432
0
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1433
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
1434
0
    }
1435
0
    { // $
1436
0
        if (p->error_indicator) {
1437
0
            p->level--;
1438
0
            return NULL;
1439
0
        }
1440
0
        D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "$"));
1441
0
        Token * endmarker_var;
1442
0
        if (
1443
0
            (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1444
0
        )
1445
0
        {
1446
0
            D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "$"));
1447
0
            _res = _PyPegen_interactive_exit ( p );
1448
0
            if (_res == NULL && PyErr_Occurred()) {
1449
0
                p->error_indicator = 1;
1450
0
                p->level--;
1451
0
                return NULL;
1452
0
            }
1453
0
            goto done;
1454
0
        }
1455
0
        p->mark = _mark;
1456
0
        D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1457
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "$"));
1458
0
    }
1459
0
    _res = NULL;
1460
0
  done:
1461
0
    p->level--;
1462
0
    return _res;
1463
0
}
1464
1465
// simple_stmts: simple_stmt !';' NEWLINE | ';'.simple_stmt+ ';'? NEWLINE
1466
static asdl_stmt_seq*
1467
simple_stmts_rule(Parser *p)
1468
168k
{
1469
168k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1470
0
        _Pypegen_stack_overflow(p);
1471
0
    }
1472
168k
    if (p->error_indicator) {
1473
0
        p->level--;
1474
0
        return NULL;
1475
0
    }
1476
168k
    asdl_stmt_seq* _res = NULL;
1477
168k
    int _mark = p->mark;
1478
168k
    { // simple_stmt !';' NEWLINE
1479
168k
        if (p->error_indicator) {
1480
0
            p->level--;
1481
0
            return NULL;
1482
0
        }
1483
168k
        D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1484
168k
        stmt_ty a;
1485
168k
        Token * newline_var;
1486
168k
        if (
1487
168k
            (a = simple_stmt_rule(p))  // simple_stmt
1488
125k
            &&
1489
125k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13)  // token=';'
1490
122k
            &&
1491
122k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1492
168k
        )
1493
113k
        {
1494
113k
            D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1495
113k
            _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a );
1496
113k
            if (_res == NULL && PyErr_Occurred()) {
1497
0
                p->error_indicator = 1;
1498
0
                p->level--;
1499
0
                return NULL;
1500
0
            }
1501
113k
            goto done;
1502
113k
        }
1503
55.3k
        p->mark = _mark;
1504
55.3k
        D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1505
55.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt !';' NEWLINE"));
1506
55.3k
    }
1507
0
    { // ';'.simple_stmt+ ';'? NEWLINE
1508
55.3k
        if (p->error_indicator) {
1509
4.30k
            p->level--;
1510
4.30k
            return NULL;
1511
4.30k
        }
1512
51.0k
        D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1513
51.0k
        void *_opt_var;
1514
51.0k
        UNUSED(_opt_var); // Silence compiler warnings
1515
51.0k
        asdl_stmt_seq* a;
1516
51.0k
        Token * newline_var;
1517
51.0k
        if (
1518
51.0k
            (a = (asdl_stmt_seq*)_gather_4_rule(p))  // ';'.simple_stmt+
1519
12.6k
            &&
1520
12.6k
            (_opt_var = _PyPegen_expect_token(p, 13), !p->error_indicator)  // ';'?
1521
12.6k
            &&
1522
12.6k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1523
51.0k
        )
1524
2.42k
        {
1525
2.42k
            D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1526
2.42k
            _res = a;
1527
2.42k
            if (_res == NULL && PyErr_Occurred()) {
1528
0
                p->error_indicator = 1;
1529
0
                p->level--;
1530
0
                return NULL;
1531
0
            }
1532
2.42k
            goto done;
1533
2.42k
        }
1534
48.5k
        p->mark = _mark;
1535
48.5k
        D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1536
48.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1537
48.5k
    }
1538
48.5k
    _res = NULL;
1539
164k
  done:
1540
164k
    p->level--;
1541
164k
    return _res;
1542
48.5k
}
1543
1544
// simple_stmt:
1545
//     | assignment
1546
//     | &"type" type_alias
1547
//     | star_expressions
1548
//     | &'return' return_stmt
1549
//     | &('import' | 'from') import_stmt
1550
//     | &'raise' raise_stmt
1551
//     | &'pass' pass_stmt
1552
//     | &'del' del_stmt
1553
//     | &'yield' yield_stmt
1554
//     | &'assert' assert_stmt
1555
//     | &'break' break_stmt
1556
//     | &'continue' continue_stmt
1557
//     | &'global' global_stmt
1558
//     | &'nonlocal' nonlocal_stmt
1559
static stmt_ty
1560
simple_stmt_rule(Parser *p)
1561
241k
{
1562
241k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1563
0
        _Pypegen_stack_overflow(p);
1564
0
    }
1565
241k
    if (p->error_indicator) {
1566
0
        p->level--;
1567
0
        return NULL;
1568
0
    }
1569
241k
    stmt_ty _res = NULL;
1570
241k
    if (_PyPegen_is_memoized(p, simple_stmt_type, &_res)) {
1571
51.0k
        p->level--;
1572
51.0k
        return _res;
1573
51.0k
    }
1574
190k
    int _mark = p->mark;
1575
190k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1576
0
        p->error_indicator = 1;
1577
0
        p->level--;
1578
0
        return NULL;
1579
0
    }
1580
190k
    int _start_lineno = p->tokens[_mark]->lineno;
1581
190k
    UNUSED(_start_lineno); // Only used by EXTRA macro
1582
190k
    int _start_col_offset = p->tokens[_mark]->col_offset;
1583
190k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
1584
190k
    { // assignment
1585
190k
        if (p->error_indicator) {
1586
0
            p->level--;
1587
0
            return NULL;
1588
0
        }
1589
190k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment"));
1590
190k
        stmt_ty assignment_var;
1591
190k
        if (
1592
190k
            (assignment_var = assignment_rule(p))  // assignment
1593
190k
        )
1594
21.6k
        {
1595
21.6k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment"));
1596
21.6k
            _res = assignment_var;
1597
21.6k
            goto done;
1598
21.6k
        }
1599
168k
        p->mark = _mark;
1600
168k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1601
168k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment"));
1602
168k
    }
1603
0
    { // &"type" type_alias
1604
168k
        if (p->error_indicator) {
1605
4.78k
            p->level--;
1606
4.78k
            return NULL;
1607
4.78k
        }
1608
164k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&\"type\" type_alias"));
1609
164k
        stmt_ty type_alias_var;
1610
164k
        if (
1611
164k
            _PyPegen_lookahead_with_string(1, _PyPegen_expect_soft_keyword, p, "type")
1612
473
            &&
1613
473
            (type_alias_var = type_alias_rule(p))  // type_alias
1614
164k
        )
1615
260
        {
1616
260
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&\"type\" type_alias"));
1617
260
            _res = type_alias_var;
1618
260
            goto done;
1619
260
        }
1620
163k
        p->mark = _mark;
1621
163k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1622
163k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&\"type\" type_alias"));
1623
163k
    }
1624
0
    { // star_expressions
1625
163k
        if (p->error_indicator) {
1626
2
            p->level--;
1627
2
            return NULL;
1628
2
        }
1629
163k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1630
163k
        expr_ty e;
1631
163k
        if (
1632
163k
            (e = star_expressions_rule(p))  // star_expressions
1633
163k
        )
1634
95.9k
        {
1635
95.9k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1636
95.9k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1637
95.9k
            if (_token == NULL) {
1638
0
                p->level--;
1639
0
                return NULL;
1640
0
            }
1641
95.9k
            int _end_lineno = _token->end_lineno;
1642
95.9k
            UNUSED(_end_lineno); // Only used by EXTRA macro
1643
95.9k
            int _end_col_offset = _token->end_col_offset;
1644
95.9k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
1645
95.9k
            _res = _PyAST_Expr ( e , EXTRA );
1646
95.9k
            if (_res == NULL && PyErr_Occurred()) {
1647
0
                p->error_indicator = 1;
1648
0
                p->level--;
1649
0
                return NULL;
1650
0
            }
1651
95.9k
            goto done;
1652
95.9k
        }
1653
67.8k
        p->mark = _mark;
1654
67.8k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1655
67.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
1656
67.8k
    }
1657
0
    { // &'return' return_stmt
1658
67.8k
        if (p->error_indicator) {
1659
385
            p->level--;
1660
385
            return NULL;
1661
385
        }
1662
67.4k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1663
67.4k
        stmt_ty return_stmt_var;
1664
67.4k
        if (
1665
67.4k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 522)  // token='return'
1666
8.36k
            &&
1667
8.36k
            (return_stmt_var = return_stmt_rule(p))  // return_stmt
1668
67.4k
        )
1669
8.29k
        {
1670
8.29k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1671
8.29k
            _res = return_stmt_var;
1672
8.29k
            goto done;
1673
8.29k
        }
1674
59.1k
        p->mark = _mark;
1675
59.1k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1676
59.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'return' return_stmt"));
1677
59.1k
    }
1678
0
    { // &('import' | 'from') import_stmt
1679
59.1k
        if (p->error_indicator) {
1680
67
            p->level--;
1681
67
            return NULL;
1682
67
        }
1683
59.0k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1684
59.0k
        stmt_ty import_stmt_var;
1685
59.0k
        if (
1686
59.0k
            _PyPegen_lookahead(1, _tmp_5_rule, p)
1687
6.06k
            &&
1688
6.06k
            (import_stmt_var = import_stmt_rule(p))  // import_stmt
1689
59.0k
        )
1690
5.83k
        {
1691
5.83k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1692
5.83k
            _res = import_stmt_var;
1693
5.83k
            goto done;
1694
5.83k
        }
1695
53.2k
        p->mark = _mark;
1696
53.2k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1697
53.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('import' | 'from') import_stmt"));
1698
53.2k
    }
1699
0
    { // &'raise' raise_stmt
1700
53.2k
        if (p->error_indicator) {
1701
75
            p->level--;
1702
75
            return NULL;
1703
75
        }
1704
53.1k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1705
53.1k
        stmt_ty raise_stmt_var;
1706
53.1k
        if (
1707
53.1k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 628)  // token='raise'
1708
3.60k
            &&
1709
3.60k
            (raise_stmt_var = raise_stmt_rule(p))  // raise_stmt
1710
53.1k
        )
1711
3.55k
        {
1712
3.55k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1713
3.55k
            _res = raise_stmt_var;
1714
3.55k
            goto done;
1715
3.55k
        }
1716
49.6k
        p->mark = _mark;
1717
49.6k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1718
49.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'raise' raise_stmt"));
1719
49.6k
    }
1720
0
    { // &'pass' pass_stmt
1721
49.6k
        if (p->error_indicator) {
1722
41
            p->level--;
1723
41
            return NULL;
1724
41
        }
1725
49.5k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'pass' pass_stmt"));
1726
49.5k
        stmt_ty pass_stmt_var;
1727
49.5k
        if (
1728
49.5k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 527)  // token='pass'
1729
1.31k
            &&
1730
1.31k
            (pass_stmt_var = pass_stmt_rule(p))  // pass_stmt
1731
49.5k
        )
1732
1.31k
        {
1733
1.31k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'pass' pass_stmt"));
1734
1.31k
            _res = pass_stmt_var;
1735
1.31k
            goto done;
1736
1.31k
        }
1737
48.2k
        p->mark = _mark;
1738
48.2k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1739
48.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'pass' pass_stmt"));
1740
48.2k
    }
1741
0
    { // &'del' del_stmt
1742
48.2k
        if (p->error_indicator) {
1743
0
            p->level--;
1744
0
            return NULL;
1745
0
        }
1746
48.2k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1747
48.2k
        stmt_ty del_stmt_var;
1748
48.2k
        if (
1749
48.2k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 630)  // token='del'
1750
1.63k
            &&
1751
1.63k
            (del_stmt_var = del_stmt_rule(p))  // del_stmt
1752
48.2k
        )
1753
1.09k
        {
1754
1.09k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1755
1.09k
            _res = del_stmt_var;
1756
1.09k
            goto done;
1757
1.09k
        }
1758
47.1k
        p->mark = _mark;
1759
47.1k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1760
47.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'del' del_stmt"));
1761
47.1k
    }
1762
0
    { // &'yield' yield_stmt
1763
47.1k
        if (p->error_indicator) {
1764
210
            p->level--;
1765
210
            return NULL;
1766
210
        }
1767
46.9k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1768
46.9k
        stmt_ty yield_stmt_var;
1769
46.9k
        if (
1770
46.9k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 588)  // token='yield'
1771
1.99k
            &&
1772
1.99k
            (yield_stmt_var = yield_stmt_rule(p))  // yield_stmt
1773
46.9k
        )
1774
1.99k
        {
1775
1.99k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1776
1.99k
            _res = yield_stmt_var;
1777
1.99k
            goto done;
1778
1.99k
        }
1779
44.9k
        p->mark = _mark;
1780
44.9k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1781
44.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'yield' yield_stmt"));
1782
44.9k
    }
1783
0
    { // &'assert' assert_stmt
1784
44.9k
        if (p->error_indicator) {
1785
4
            p->level--;
1786
4
            return NULL;
1787
4
        }
1788
44.9k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1789
44.9k
        stmt_ty assert_stmt_var;
1790
44.9k
        if (
1791
44.9k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 634)  // token='assert'
1792
1.24k
            &&
1793
1.24k
            (assert_stmt_var = assert_stmt_rule(p))  // assert_stmt
1794
44.9k
        )
1795
1.15k
        {
1796
1.15k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1797
1.15k
            _res = assert_stmt_var;
1798
1.15k
            goto done;
1799
1.15k
        }
1800
43.7k
        p->mark = _mark;
1801
43.7k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1802
43.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'assert' assert_stmt"));
1803
43.7k
    }
1804
0
    { // &'break' break_stmt
1805
43.7k
        if (p->error_indicator) {
1806
74
            p->level--;
1807
74
            return NULL;
1808
74
        }
1809
43.7k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'break' break_stmt"));
1810
43.7k
        stmt_ty break_stmt_var;
1811
43.7k
        if (
1812
43.7k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 528)  // token='break'
1813
1.68k
            &&
1814
1.68k
            (break_stmt_var = break_stmt_rule(p))  // break_stmt
1815
43.7k
        )
1816
1.68k
        {
1817
1.68k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'break' break_stmt"));
1818
1.68k
            _res = break_stmt_var;
1819
1.68k
            goto done;
1820
1.68k
        }
1821
42.0k
        p->mark = _mark;
1822
42.0k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1823
42.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'break' break_stmt"));
1824
42.0k
    }
1825
0
    { // &'continue' continue_stmt
1826
42.0k
        if (p->error_indicator) {
1827
0
            p->level--;
1828
0
            return NULL;
1829
0
        }
1830
42.0k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'continue' continue_stmt"));
1831
42.0k
        stmt_ty continue_stmt_var;
1832
42.0k
        if (
1833
42.0k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 529)  // token='continue'
1834
1.10k
            &&
1835
1.10k
            (continue_stmt_var = continue_stmt_rule(p))  // continue_stmt
1836
42.0k
        )
1837
1.10k
        {
1838
1.10k
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'continue' continue_stmt"));
1839
1.10k
            _res = continue_stmt_var;
1840
1.10k
            goto done;
1841
1.10k
        }
1842
40.9k
        p->mark = _mark;
1843
40.9k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1844
40.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'continue' continue_stmt"));
1845
40.9k
    }
1846
0
    { // &'global' global_stmt
1847
40.9k
        if (p->error_indicator) {
1848
0
            p->level--;
1849
0
            return NULL;
1850
0
        }
1851
40.9k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
1852
40.9k
        stmt_ty global_stmt_var;
1853
40.9k
        if (
1854
40.9k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 530)  // token='global'
1855
693
            &&
1856
693
            (global_stmt_var = global_stmt_rule(p))  // global_stmt
1857
40.9k
        )
1858
688
        {
1859
688
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
1860
688
            _res = global_stmt_var;
1861
688
            goto done;
1862
688
        }
1863
40.2k
        p->mark = _mark;
1864
40.2k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1865
40.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'global' global_stmt"));
1866
40.2k
    }
1867
0
    { // &'nonlocal' nonlocal_stmt
1868
40.2k
        if (p->error_indicator) {
1869
1
            p->level--;
1870
1
            return NULL;
1871
1
        }
1872
40.2k
        D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1873
40.2k
        stmt_ty nonlocal_stmt_var;
1874
40.2k
        if (
1875
40.2k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 531)  // token='nonlocal'
1876
582
            &&
1877
582
            (nonlocal_stmt_var = nonlocal_stmt_rule(p))  // nonlocal_stmt
1878
40.2k
        )
1879
579
        {
1880
579
            D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1881
579
            _res = nonlocal_stmt_var;
1882
579
            goto done;
1883
579
        }
1884
39.6k
        p->mark = _mark;
1885
39.6k
        D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1886
39.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1887
39.6k
    }
1888
39.6k
    _res = NULL;
1889
184k
  done:
1890
184k
    _PyPegen_insert_memo(p, _mark, simple_stmt_type, _res);
1891
184k
    p->level--;
1892
184k
    return _res;
1893
39.6k
}
1894
1895
// compound_stmt:
1896
//     | &('def' | '@' | 'async') function_def
1897
//     | &'if' if_stmt
1898
//     | &('class' | '@') class_def
1899
//     | &('with' | 'async') with_stmt
1900
//     | &('for' | 'async') for_stmt
1901
//     | &'try' try_stmt
1902
//     | &'while' while_stmt
1903
//     | match_stmt
1904
static stmt_ty
1905
compound_stmt_rule(Parser *p)
1906
174k
{
1907
174k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
1908
0
        _Pypegen_stack_overflow(p);
1909
0
    }
1910
174k
    if (p->error_indicator) {
1911
0
        p->level--;
1912
0
        return NULL;
1913
0
    }
1914
174k
    stmt_ty _res = NULL;
1915
174k
    int _mark = p->mark;
1916
174k
    { // &('def' | '@' | 'async') function_def
1917
174k
        if (p->error_indicator) {
1918
0
            p->level--;
1919
0
            return NULL;
1920
0
        }
1921
174k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | 'async') function_def"));
1922
174k
        stmt_ty function_def_var;
1923
174k
        if (
1924
174k
            _PyPegen_lookahead(1, _tmp_6_rule, p)
1925
15.0k
            &&
1926
15.0k
            (function_def_var = function_def_rule(p))  // function_def
1927
174k
        )
1928
11.4k
        {
1929
11.4k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | 'async') function_def"));
1930
11.4k
            _res = function_def_var;
1931
11.4k
            goto done;
1932
11.4k
        }
1933
162k
        p->mark = _mark;
1934
162k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1935
162k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('def' | '@' | 'async') function_def"));
1936
162k
    }
1937
0
    { // &'if' if_stmt
1938
162k
        if (p->error_indicator) {
1939
1.57k
            p->level--;
1940
1.57k
            return NULL;
1941
1.57k
        }
1942
160k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
1943
160k
        stmt_ty if_stmt_var;
1944
160k
        if (
1945
160k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 691)  // token='if'
1946
8.98k
            &&
1947
8.98k
            (if_stmt_var = if_stmt_rule(p))  // if_stmt
1948
160k
        )
1949
8.84k
        {
1950
8.84k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
1951
8.84k
            _res = if_stmt_var;
1952
8.84k
            goto done;
1953
8.84k
        }
1954
152k
        p->mark = _mark;
1955
152k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1956
152k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'if' if_stmt"));
1957
152k
    }
1958
0
    { // &('class' | '@') class_def
1959
152k
        if (p->error_indicator) {
1960
53
            p->level--;
1961
53
            return NULL;
1962
53
        }
1963
152k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
1964
152k
        stmt_ty class_def_var;
1965
152k
        if (
1966
152k
            _PyPegen_lookahead(1, _tmp_7_rule, p)
1967
4.28k
            &&
1968
4.28k
            (class_def_var = class_def_rule(p))  // class_def
1969
152k
        )
1970
3.85k
        {
1971
3.85k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
1972
3.85k
            _res = class_def_var;
1973
3.85k
            goto done;
1974
3.85k
        }
1975
148k
        p->mark = _mark;
1976
148k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1977
148k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('class' | '@') class_def"));
1978
148k
    }
1979
0
    { // &('with' | 'async') with_stmt
1980
148k
        if (p->error_indicator) {
1981
38
            p->level--;
1982
38
            return NULL;
1983
38
        }
1984
148k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('with' | 'async') with_stmt"));
1985
148k
        stmt_ty with_stmt_var;
1986
148k
        if (
1987
148k
            _PyPegen_lookahead(1, _tmp_8_rule, p)
1988
5.92k
            &&
1989
5.92k
            (with_stmt_var = with_stmt_rule(p))  // with_stmt
1990
148k
        )
1991
4.65k
        {
1992
4.65k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('with' | 'async') with_stmt"));
1993
4.65k
            _res = with_stmt_var;
1994
4.65k
            goto done;
1995
4.65k
        }
1996
143k
        p->mark = _mark;
1997
143k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1998
143k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('with' | 'async') with_stmt"));
1999
143k
    }
2000
0
    { // &('for' | 'async') for_stmt
2001
143k
        if (p->error_indicator) {
2002
142
            p->level--;
2003
142
            return NULL;
2004
142
        }
2005
143k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('for' | 'async') for_stmt"));
2006
143k
        stmt_ty for_stmt_var;
2007
143k
        if (
2008
143k
            _PyPegen_lookahead(1, _tmp_9_rule, p)
2009
2.78k
            &&
2010
2.78k
            (for_stmt_var = for_stmt_rule(p))  // for_stmt
2011
143k
        )
2012
2.49k
        {
2013
2.49k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('for' | 'async') for_stmt"));
2014
2.49k
            _res = for_stmt_var;
2015
2.49k
            goto done;
2016
2.49k
        }
2017
140k
        p->mark = _mark;
2018
140k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2019
140k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('for' | 'async') for_stmt"));
2020
140k
    }
2021
0
    { // &'try' try_stmt
2022
140k
        if (p->error_indicator) {
2023
43
            p->level--;
2024
43
            return NULL;
2025
43
        }
2026
140k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
2027
140k
        stmt_ty try_stmt_var;
2028
140k
        if (
2029
140k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 665)  // token='try'
2030
6.12k
            &&
2031
6.12k
            (try_stmt_var = try_stmt_rule(p))  // try_stmt
2032
140k
        )
2033
5.56k
        {
2034
5.56k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
2035
5.56k
            _res = try_stmt_var;
2036
5.56k
            goto done;
2037
5.56k
        }
2038
135k
        p->mark = _mark;
2039
135k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2040
135k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'try' try_stmt"));
2041
135k
    }
2042
0
    { // &'while' while_stmt
2043
135k
        if (p->error_indicator) {
2044
190
            p->level--;
2045
190
            return NULL;
2046
190
        }
2047
135k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
2048
135k
        stmt_ty while_stmt_var;
2049
135k
        if (
2050
135k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 698)  // token='while'
2051
1.36k
            &&
2052
1.36k
            (while_stmt_var = while_stmt_rule(p))  // while_stmt
2053
135k
        )
2054
1.29k
        {
2055
1.29k
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
2056
1.29k
            _res = while_stmt_var;
2057
1.29k
            goto done;
2058
1.29k
        }
2059
133k
        p->mark = _mark;
2060
133k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2061
133k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'while' while_stmt"));
2062
133k
    }
2063
0
    { // match_stmt
2064
133k
        if (p->error_indicator) {
2065
20
            p->level--;
2066
20
            return NULL;
2067
20
        }
2068
133k
        D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2069
133k
        stmt_ty match_stmt_var;
2070
133k
        if (
2071
133k
            (match_stmt_var = match_stmt_rule(p))  // match_stmt
2072
133k
        )
2073
584
        {
2074
584
            D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2075
584
            _res = match_stmt_var;
2076
584
            goto done;
2077
584
        }
2078
133k
        p->mark = _mark;
2079
133k
        D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2080
133k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "match_stmt"));
2081
133k
    }
2082
133k
    _res = NULL;
2083
171k
  done:
2084
171k
    p->level--;
2085
171k
    return _res;
2086
133k
}
2087
2088
// assignment:
2089
//     | NAME ':' expression ['=' annotated_rhs]
2090
//     | ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
2091
//     | ((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?
2092
//     | single_target augassign ~ annotated_rhs
2093
//     | invalid_assignment
2094
static stmt_ty
2095
assignment_rule(Parser *p)
2096
190k
{
2097
190k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2098
0
        _Pypegen_stack_overflow(p);
2099
0
    }
2100
190k
    if (p->error_indicator) {
2101
0
        p->level--;
2102
0
        return NULL;
2103
0
    }
2104
190k
    stmt_ty _res = NULL;
2105
190k
    int _mark = p->mark;
2106
190k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2107
0
        p->error_indicator = 1;
2108
0
        p->level--;
2109
0
        return NULL;
2110
0
    }
2111
190k
    int _start_lineno = p->tokens[_mark]->lineno;
2112
190k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2113
190k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2114
190k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2115
190k
    { // NAME ':' expression ['=' annotated_rhs]
2116
190k
        if (p->error_indicator) {
2117
0
            p->level--;
2118
0
            return NULL;
2119
0
        }
2120
190k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2121
190k
        Token * _literal;
2122
190k
        expr_ty a;
2123
190k
        expr_ty b;
2124
190k
        void *c;
2125
190k
        if (
2126
190k
            (a = _PyPegen_name_token(p))  // NAME
2127
86.3k
            &&
2128
86.3k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2129
2.43k
            &&
2130
2.43k
            (b = expression_rule(p))  // expression
2131
2.32k
            &&
2132
2.32k
            (c = _tmp_10_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2133
190k
        )
2134
2.32k
        {
2135
2.32k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2136
2.32k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2137
2.32k
            if (_token == NULL) {
2138
0
                p->level--;
2139
0
                return NULL;
2140
0
            }
2141
2.32k
            int _end_lineno = _token->end_lineno;
2142
2.32k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2143
2.32k
            int _end_col_offset = _token->end_col_offset;
2144
2.32k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2145
2.32k
            _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 ) );
2146
2.32k
            if (_res == NULL && PyErr_Occurred()) {
2147
0
                p->error_indicator = 1;
2148
0
                p->level--;
2149
0
                return NULL;
2150
0
            }
2151
2.32k
            goto done;
2152
2.32k
        }
2153
188k
        p->mark = _mark;
2154
188k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2155
188k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2156
188k
    }
2157
0
    { // ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
2158
188k
        if (p->error_indicator) {
2159
169
            p->level--;
2160
169
            return NULL;
2161
169
        }
2162
187k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2163
187k
        Token * _literal;
2164
187k
        void *a;
2165
187k
        expr_ty b;
2166
187k
        void *c;
2167
187k
        if (
2168
187k
            (a = _tmp_11_rule(p))  // '(' single_target ')' | single_subscript_attribute_target
2169
5.65k
            &&
2170
5.65k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2171
1.04k
            &&
2172
1.04k
            (b = expression_rule(p))  // expression
2173
938
            &&
2174
938
            (c = _tmp_10_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2175
187k
        )
2176
928
        {
2177
928
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2178
928
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2179
928
            if (_token == NULL) {
2180
0
                p->level--;
2181
0
                return NULL;
2182
0
            }
2183
928
            int _end_lineno = _token->end_lineno;
2184
928
            UNUSED(_end_lineno); // Only used by EXTRA macro
2185
928
            int _end_col_offset = _token->end_col_offset;
2186
928
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2187
928
            _res = CHECK_VERSION ( stmt_ty , 6 , "Variable annotations syntax is" , _PyAST_AnnAssign ( a , b , c , 0 , EXTRA ) );
2188
928
            if (_res == NULL && PyErr_Occurred()) {
2189
0
                p->error_indicator = 1;
2190
0
                p->level--;
2191
0
                return NULL;
2192
0
            }
2193
928
            goto done;
2194
928
        }
2195
187k
        p->mark = _mark;
2196
187k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2197
187k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2198
187k
    }
2199
0
    { // ((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?
2200
187k
        if (p->error_indicator) {
2201
2.92k
            p->level--;
2202
2.92k
            return NULL;
2203
2.92k
        }
2204
184k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2205
184k
        asdl_expr_seq* a;
2206
184k
        expr_ty b;
2207
184k
        void *tc;
2208
184k
        if (
2209
184k
            (a = (asdl_expr_seq*)_loop1_12_rule(p))  // ((star_targets '='))+
2210
15.8k
            &&
2211
15.8k
            (b = annotated_rhs_rule(p))  // annotated_rhs
2212
15.5k
            &&
2213
15.5k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
2214
15.5k
            &&
2215
15.5k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
2216
184k
        )
2217
15.5k
        {
2218
15.5k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2219
15.5k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2220
15.5k
            if (_token == NULL) {
2221
0
                p->level--;
2222
0
                return NULL;
2223
0
            }
2224
15.5k
            int _end_lineno = _token->end_lineno;
2225
15.5k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2226
15.5k
            int _end_col_offset = _token->end_col_offset;
2227
15.5k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2228
15.5k
            _res = _PyAST_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
2229
15.5k
            if (_res == NULL && PyErr_Occurred()) {
2230
0
                p->error_indicator = 1;
2231
0
                p->level--;
2232
0
                return NULL;
2233
0
            }
2234
15.5k
            goto done;
2235
15.5k
        }
2236
168k
        p->mark = _mark;
2237
168k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2238
168k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))+ annotated_rhs !'=' TYPE_COMMENT?"));
2239
168k
    }
2240
0
    { // single_target augassign ~ annotated_rhs
2241
168k
        if (p->error_indicator) {
2242
290
            p->level--;
2243
290
            return NULL;
2244
290
        }
2245
168k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2246
168k
        int _cut_var = 0;
2247
168k
        expr_ty a;
2248
168k
        AugOperator* b;
2249
168k
        expr_ty c;
2250
168k
        if (
2251
168k
            (a = single_target_rule(p))  // single_target
2252
68.1k
            &&
2253
68.1k
            (b = augassign_rule(p))  // augassign
2254
2.92k
            &&
2255
2.92k
            (_cut_var = 1)
2256
2.92k
            &&
2257
2.92k
            (c = annotated_rhs_rule(p))  // annotated_rhs
2258
168k
        )
2259
2.78k
        {
2260
2.78k
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2261
2.78k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2262
2.78k
            if (_token == NULL) {
2263
0
                p->level--;
2264
0
                return NULL;
2265
0
            }
2266
2.78k
            int _end_lineno = _token->end_lineno;
2267
2.78k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2268
2.78k
            int _end_col_offset = _token->end_col_offset;
2269
2.78k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2270
2.78k
            _res = _PyAST_AugAssign ( a , b -> kind , c , EXTRA );
2271
2.78k
            if (_res == NULL && PyErr_Occurred()) {
2272
0
                p->error_indicator = 1;
2273
0
                p->level--;
2274
0
                return NULL;
2275
0
            }
2276
2.78k
            goto done;
2277
2.78k
        }
2278
165k
        p->mark = _mark;
2279
165k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2280
165k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_target augassign ~ annotated_rhs"));
2281
165k
        if (_cut_var) {
2282
145
            p->level--;
2283
145
            return NULL;
2284
145
        }
2285
165k
    }
2286
165k
    if (p->call_invalid_rules) { // invalid_assignment
2287
39.3k
        if (p->error_indicator) {
2288
0
            p->level--;
2289
0
            return NULL;
2290
0
        }
2291
39.3k
        D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2292
39.3k
        void *invalid_assignment_var;
2293
39.3k
        if (
2294
39.3k
            (invalid_assignment_var = invalid_assignment_rule(p))  // invalid_assignment
2295
39.3k
        )
2296
0
        {
2297
0
            D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2298
0
            _res = invalid_assignment_var;
2299
0
            goto done;
2300
0
        }
2301
39.3k
        p->mark = _mark;
2302
39.3k
        D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2303
39.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_assignment"));
2304
39.3k
    }
2305
165k
    _res = NULL;
2306
186k
  done:
2307
186k
    p->level--;
2308
186k
    return _res;
2309
165k
}
2310
2311
// annotated_rhs: yield_expr | star_expressions
2312
static expr_ty
2313
annotated_rhs_rule(Parser *p)
2314
54.8k
{
2315
54.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2316
1
        _Pypegen_stack_overflow(p);
2317
1
    }
2318
54.8k
    if (p->error_indicator) {
2319
1
        p->level--;
2320
1
        return NULL;
2321
1
    }
2322
54.8k
    expr_ty _res = NULL;
2323
54.8k
    int _mark = p->mark;
2324
54.8k
    { // yield_expr
2325
54.8k
        if (p->error_indicator) {
2326
0
            p->level--;
2327
0
            return NULL;
2328
0
        }
2329
54.8k
        D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
2330
54.8k
        expr_ty yield_expr_var;
2331
54.8k
        if (
2332
54.8k
            (yield_expr_var = yield_expr_rule(p))  // yield_expr
2333
54.8k
        )
2334
255
        {
2335
255
            D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
2336
255
            _res = yield_expr_var;
2337
255
            goto done;
2338
255
        }
2339
54.6k
        p->mark = _mark;
2340
54.6k
        D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
2341
54.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
2342
54.6k
    }
2343
0
    { // star_expressions
2344
54.6k
        if (p->error_indicator) {
2345
124
            p->level--;
2346
124
            return NULL;
2347
124
        }
2348
54.4k
        D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
2349
54.4k
        expr_ty star_expressions_var;
2350
54.4k
        if (
2351
54.4k
            (star_expressions_var = star_expressions_rule(p))  // star_expressions
2352
54.4k
        )
2353
49.4k
        {
2354
49.4k
            D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
2355
49.4k
            _res = star_expressions_var;
2356
49.4k
            goto done;
2357
49.4k
        }
2358
5.05k
        p->mark = _mark;
2359
5.05k
        D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
2360
5.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
2361
5.05k
    }
2362
5.05k
    _res = NULL;
2363
54.7k
  done:
2364
54.7k
    p->level--;
2365
54.7k
    return _res;
2366
5.05k
}
2367
2368
// augassign:
2369
//     | '+='
2370
//     | '-='
2371
//     | '*='
2372
//     | '@='
2373
//     | '/='
2374
//     | '%='
2375
//     | '&='
2376
//     | '|='
2377
//     | '^='
2378
//     | '<<='
2379
//     | '>>='
2380
//     | '**='
2381
//     | '//='
2382
static AugOperator*
2383
augassign_rule(Parser *p)
2384
94.9k
{
2385
94.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2386
0
        _Pypegen_stack_overflow(p);
2387
0
    }
2388
94.9k
    if (p->error_indicator) {
2389
0
        p->level--;
2390
0
        return NULL;
2391
0
    }
2392
94.9k
    AugOperator* _res = NULL;
2393
94.9k
    int _mark = p->mark;
2394
94.9k
    { // '+='
2395
94.9k
        if (p->error_indicator) {
2396
0
            p->level--;
2397
0
            return NULL;
2398
0
        }
2399
94.9k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+='"));
2400
94.9k
        Token * _literal;
2401
94.9k
        if (
2402
94.9k
            (_literal = _PyPegen_expect_token(p, 36))  // token='+='
2403
94.9k
        )
2404
598
        {
2405
598
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+='"));
2406
598
            _res = _PyPegen_augoperator ( p , Add );
2407
598
            if (_res == NULL && PyErr_Occurred()) {
2408
0
                p->error_indicator = 1;
2409
0
                p->level--;
2410
0
                return NULL;
2411
0
            }
2412
598
            goto done;
2413
598
        }
2414
94.3k
        p->mark = _mark;
2415
94.3k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2416
94.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+='"));
2417
94.3k
    }
2418
0
    { // '-='
2419
94.3k
        if (p->error_indicator) {
2420
0
            p->level--;
2421
0
            return NULL;
2422
0
        }
2423
94.3k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-='"));
2424
94.3k
        Token * _literal;
2425
94.3k
        if (
2426
94.3k
            (_literal = _PyPegen_expect_token(p, 37))  // token='-='
2427
94.3k
        )
2428
265
        {
2429
265
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-='"));
2430
265
            _res = _PyPegen_augoperator ( p , Sub );
2431
265
            if (_res == NULL && PyErr_Occurred()) {
2432
0
                p->error_indicator = 1;
2433
0
                p->level--;
2434
0
                return NULL;
2435
0
            }
2436
265
            goto done;
2437
265
        }
2438
94.0k
        p->mark = _mark;
2439
94.0k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2440
94.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-='"));
2441
94.0k
    }
2442
0
    { // '*='
2443
94.0k
        if (p->error_indicator) {
2444
0
            p->level--;
2445
0
            return NULL;
2446
0
        }
2447
94.0k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*='"));
2448
94.0k
        Token * _literal;
2449
94.0k
        if (
2450
94.0k
            (_literal = _PyPegen_expect_token(p, 38))  // token='*='
2451
94.0k
        )
2452
264
        {
2453
264
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*='"));
2454
264
            _res = _PyPegen_augoperator ( p , Mult );
2455
264
            if (_res == NULL && PyErr_Occurred()) {
2456
0
                p->error_indicator = 1;
2457
0
                p->level--;
2458
0
                return NULL;
2459
0
            }
2460
264
            goto done;
2461
264
        }
2462
93.7k
        p->mark = _mark;
2463
93.7k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2464
93.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*='"));
2465
93.7k
    }
2466
0
    { // '@='
2467
93.7k
        if (p->error_indicator) {
2468
0
            p->level--;
2469
0
            return NULL;
2470
0
        }
2471
93.7k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@='"));
2472
93.7k
        Token * _literal;
2473
93.7k
        if (
2474
93.7k
            (_literal = _PyPegen_expect_token(p, 50))  // token='@='
2475
93.7k
        )
2476
76
        {
2477
76
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@='"));
2478
76
            _res = CHECK_VERSION ( AugOperator* , 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
2479
76
            if (_res == NULL && PyErr_Occurred()) {
2480
0
                p->error_indicator = 1;
2481
0
                p->level--;
2482
0
                return NULL;
2483
0
            }
2484
76
            goto done;
2485
76
        }
2486
93.7k
        p->mark = _mark;
2487
93.7k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2488
93.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@='"));
2489
93.7k
    }
2490
0
    { // '/='
2491
93.7k
        if (p->error_indicator) {
2492
0
            p->level--;
2493
0
            return NULL;
2494
0
        }
2495
93.7k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/='"));
2496
93.7k
        Token * _literal;
2497
93.7k
        if (
2498
93.7k
            (_literal = _PyPegen_expect_token(p, 39))  // token='/='
2499
93.7k
        )
2500
387
        {
2501
387
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/='"));
2502
387
            _res = _PyPegen_augoperator ( p , Div );
2503
387
            if (_res == NULL && PyErr_Occurred()) {
2504
0
                p->error_indicator = 1;
2505
0
                p->level--;
2506
0
                return NULL;
2507
0
            }
2508
387
            goto done;
2509
387
        }
2510
93.3k
        p->mark = _mark;
2511
93.3k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2512
93.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/='"));
2513
93.3k
    }
2514
0
    { // '%='
2515
93.3k
        if (p->error_indicator) {
2516
0
            p->level--;
2517
0
            return NULL;
2518
0
        }
2519
93.3k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'%='"));
2520
93.3k
        Token * _literal;
2521
93.3k
        if (
2522
93.3k
            (_literal = _PyPegen_expect_token(p, 40))  // token='%='
2523
93.3k
        )
2524
324
        {
2525
324
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'%='"));
2526
324
            _res = _PyPegen_augoperator ( p , Mod );
2527
324
            if (_res == NULL && PyErr_Occurred()) {
2528
0
                p->error_indicator = 1;
2529
0
                p->level--;
2530
0
                return NULL;
2531
0
            }
2532
324
            goto done;
2533
324
        }
2534
92.9k
        p->mark = _mark;
2535
92.9k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2536
92.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'%='"));
2537
92.9k
    }
2538
0
    { // '&='
2539
92.9k
        if (p->error_indicator) {
2540
0
            p->level--;
2541
0
            return NULL;
2542
0
        }
2543
92.9k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'&='"));
2544
92.9k
        Token * _literal;
2545
92.9k
        if (
2546
92.9k
            (_literal = _PyPegen_expect_token(p, 41))  // token='&='
2547
92.9k
        )
2548
225
        {
2549
225
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'&='"));
2550
225
            _res = _PyPegen_augoperator ( p , BitAnd );
2551
225
            if (_res == NULL && PyErr_Occurred()) {
2552
0
                p->error_indicator = 1;
2553
0
                p->level--;
2554
0
                return NULL;
2555
0
            }
2556
225
            goto done;
2557
225
        }
2558
92.7k
        p->mark = _mark;
2559
92.7k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2560
92.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'&='"));
2561
92.7k
    }
2562
0
    { // '|='
2563
92.7k
        if (p->error_indicator) {
2564
0
            p->level--;
2565
0
            return NULL;
2566
0
        }
2567
92.7k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|='"));
2568
92.7k
        Token * _literal;
2569
92.7k
        if (
2570
92.7k
            (_literal = _PyPegen_expect_token(p, 42))  // token='|='
2571
92.7k
        )
2572
280
        {
2573
280
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|='"));
2574
280
            _res = _PyPegen_augoperator ( p , BitOr );
2575
280
            if (_res == NULL && PyErr_Occurred()) {
2576
0
                p->error_indicator = 1;
2577
0
                p->level--;
2578
0
                return NULL;
2579
0
            }
2580
280
            goto done;
2581
280
        }
2582
92.4k
        p->mark = _mark;
2583
92.4k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2584
92.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|='"));
2585
92.4k
    }
2586
0
    { // '^='
2587
92.4k
        if (p->error_indicator) {
2588
0
            p->level--;
2589
0
            return NULL;
2590
0
        }
2591
92.4k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'^='"));
2592
92.4k
        Token * _literal;
2593
92.4k
        if (
2594
92.4k
            (_literal = _PyPegen_expect_token(p, 43))  // token='^='
2595
92.4k
        )
2596
107
        {
2597
107
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'^='"));
2598
107
            _res = _PyPegen_augoperator ( p , BitXor );
2599
107
            if (_res == NULL && PyErr_Occurred()) {
2600
0
                p->error_indicator = 1;
2601
0
                p->level--;
2602
0
                return NULL;
2603
0
            }
2604
107
            goto done;
2605
107
        }
2606
92.3k
        p->mark = _mark;
2607
92.3k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2608
92.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'^='"));
2609
92.3k
    }
2610
0
    { // '<<='
2611
92.3k
        if (p->error_indicator) {
2612
0
            p->level--;
2613
0
            return NULL;
2614
0
        }
2615
92.3k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<<='"));
2616
92.3k
        Token * _literal;
2617
92.3k
        if (
2618
92.3k
            (_literal = _PyPegen_expect_token(p, 44))  // token='<<='
2619
92.3k
        )
2620
216
        {
2621
216
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<<='"));
2622
216
            _res = _PyPegen_augoperator ( p , LShift );
2623
216
            if (_res == NULL && PyErr_Occurred()) {
2624
0
                p->error_indicator = 1;
2625
0
                p->level--;
2626
0
                return NULL;
2627
0
            }
2628
216
            goto done;
2629
216
        }
2630
92.1k
        p->mark = _mark;
2631
92.1k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2632
92.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<<='"));
2633
92.1k
    }
2634
0
    { // '>>='
2635
92.1k
        if (p->error_indicator) {
2636
0
            p->level--;
2637
0
            return NULL;
2638
0
        }
2639
92.1k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>>='"));
2640
92.1k
        Token * _literal;
2641
92.1k
        if (
2642
92.1k
            (_literal = _PyPegen_expect_token(p, 45))  // token='>>='
2643
92.1k
        )
2644
81
        {
2645
81
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>>='"));
2646
81
            _res = _PyPegen_augoperator ( p , RShift );
2647
81
            if (_res == NULL && PyErr_Occurred()) {
2648
0
                p->error_indicator = 1;
2649
0
                p->level--;
2650
0
                return NULL;
2651
0
            }
2652
81
            goto done;
2653
81
        }
2654
92.0k
        p->mark = _mark;
2655
92.0k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2656
92.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>>='"));
2657
92.0k
    }
2658
0
    { // '**='
2659
92.0k
        if (p->error_indicator) {
2660
0
            p->level--;
2661
0
            return NULL;
2662
0
        }
2663
92.0k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**='"));
2664
92.0k
        Token * _literal;
2665
92.0k
        if (
2666
92.0k
            (_literal = _PyPegen_expect_token(p, 46))  // token='**='
2667
92.0k
        )
2668
80
        {
2669
80
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**='"));
2670
80
            _res = _PyPegen_augoperator ( p , Pow );
2671
80
            if (_res == NULL && PyErr_Occurred()) {
2672
0
                p->error_indicator = 1;
2673
0
                p->level--;
2674
0
                return NULL;
2675
0
            }
2676
80
            goto done;
2677
80
        }
2678
92.0k
        p->mark = _mark;
2679
92.0k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2680
92.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**='"));
2681
92.0k
    }
2682
0
    { // '//='
2683
92.0k
        if (p->error_indicator) {
2684
0
            p->level--;
2685
0
            return NULL;
2686
0
        }
2687
92.0k
        D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'//='"));
2688
92.0k
        Token * _literal;
2689
92.0k
        if (
2690
92.0k
            (_literal = _PyPegen_expect_token(p, 48))  // token='//='
2691
92.0k
        )
2692
203
        {
2693
203
            D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'//='"));
2694
203
            _res = _PyPegen_augoperator ( p , FloorDiv );
2695
203
            if (_res == NULL && PyErr_Occurred()) {
2696
0
                p->error_indicator = 1;
2697
0
                p->level--;
2698
0
                return NULL;
2699
0
            }
2700
203
            goto done;
2701
203
        }
2702
91.8k
        p->mark = _mark;
2703
91.8k
        D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2704
91.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'//='"));
2705
91.8k
    }
2706
91.8k
    _res = NULL;
2707
94.9k
  done:
2708
94.9k
    p->level--;
2709
94.9k
    return _res;
2710
91.8k
}
2711
2712
// return_stmt: 'return' star_expressions?
2713
static stmt_ty
2714
return_stmt_rule(Parser *p)
2715
8.36k
{
2716
8.36k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2717
0
        _Pypegen_stack_overflow(p);
2718
0
    }
2719
8.36k
    if (p->error_indicator) {
2720
0
        p->level--;
2721
0
        return NULL;
2722
0
    }
2723
8.36k
    stmt_ty _res = NULL;
2724
8.36k
    int _mark = p->mark;
2725
8.36k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2726
0
        p->error_indicator = 1;
2727
0
        p->level--;
2728
0
        return NULL;
2729
0
    }
2730
8.36k
    int _start_lineno = p->tokens[_mark]->lineno;
2731
8.36k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2732
8.36k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2733
8.36k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2734
8.36k
    { // 'return' star_expressions?
2735
8.36k
        if (p->error_indicator) {
2736
0
            p->level--;
2737
0
            return NULL;
2738
0
        }
2739
8.36k
        D(fprintf(stderr, "%*c> return_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
2740
8.36k
        Token * _keyword;
2741
8.36k
        void *a;
2742
8.36k
        if (
2743
8.36k
            (_keyword = _PyPegen_expect_token(p, 522))  // token='return'
2744
8.36k
            &&
2745
8.36k
            (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
2746
8.36k
        )
2747
8.29k
        {
2748
8.29k
            D(fprintf(stderr, "%*c+ return_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
2749
8.29k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2750
8.29k
            if (_token == NULL) {
2751
0
                p->level--;
2752
0
                return NULL;
2753
0
            }
2754
8.29k
            int _end_lineno = _token->end_lineno;
2755
8.29k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2756
8.29k
            int _end_col_offset = _token->end_col_offset;
2757
8.29k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2758
8.29k
            _res = _PyAST_Return ( a , EXTRA );
2759
8.29k
            if (_res == NULL && PyErr_Occurred()) {
2760
0
                p->error_indicator = 1;
2761
0
                p->level--;
2762
0
                return NULL;
2763
0
            }
2764
8.29k
            goto done;
2765
8.29k
        }
2766
67
        p->mark = _mark;
2767
67
        D(fprintf(stderr, "%*c%s return_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2768
67
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'return' star_expressions?"));
2769
67
    }
2770
67
    _res = NULL;
2771
8.36k
  done:
2772
8.36k
    p->level--;
2773
8.36k
    return _res;
2774
67
}
2775
2776
// raise_stmt:
2777
//     | 'raise' expression 'from' expression
2778
//     | invalid_raise_stmt
2779
//     | 'raise' expression
2780
//     | 'raise'
2781
static stmt_ty
2782
raise_stmt_rule(Parser *p)
2783
3.60k
{
2784
3.60k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2785
0
        _Pypegen_stack_overflow(p);
2786
0
    }
2787
3.60k
    if (p->error_indicator) {
2788
0
        p->level--;
2789
0
        return NULL;
2790
0
    }
2791
3.60k
    stmt_ty _res = NULL;
2792
3.60k
    int _mark = p->mark;
2793
3.60k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2794
0
        p->error_indicator = 1;
2795
0
        p->level--;
2796
0
        return NULL;
2797
0
    }
2798
3.60k
    int _start_lineno = p->tokens[_mark]->lineno;
2799
3.60k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2800
3.60k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2801
3.60k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2802
3.60k
    { // 'raise' expression 'from' expression
2803
3.60k
        if (p->error_indicator) {
2804
0
            p->level--;
2805
0
            return NULL;
2806
0
        }
2807
3.60k
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from' expression"));
2808
3.60k
        Token * _keyword;
2809
3.60k
        Token * _keyword_1;
2810
3.60k
        expr_ty a;
2811
3.60k
        expr_ty b;
2812
3.60k
        if (
2813
3.60k
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
2814
3.60k
            &&
2815
3.60k
            (a = expression_rule(p))  // expression
2816
2.77k
            &&
2817
2.77k
            (_keyword_1 = _PyPegen_expect_token(p, 642))  // token='from'
2818
651
            &&
2819
651
            (b = expression_rule(p))  // expression
2820
3.60k
        )
2821
645
        {
2822
645
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from' expression"));
2823
645
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2824
645
            if (_token == NULL) {
2825
0
                p->level--;
2826
0
                return NULL;
2827
0
            }
2828
645
            int _end_lineno = _token->end_lineno;
2829
645
            UNUSED(_end_lineno); // Only used by EXTRA macro
2830
645
            int _end_col_offset = _token->end_col_offset;
2831
645
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2832
645
            _res = _PyAST_Raise ( a , b , EXTRA );
2833
645
            if (_res == NULL && PyErr_Occurred()) {
2834
0
                p->error_indicator = 1;
2835
0
                p->level--;
2836
0
                return NULL;
2837
0
            }
2838
645
            goto done;
2839
645
        }
2840
2.95k
        p->mark = _mark;
2841
2.95k
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2842
2.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression 'from' expression"));
2843
2.95k
    }
2844
2.95k
    if (p->call_invalid_rules) { // invalid_raise_stmt
2845
449
        if (p->error_indicator) {
2846
36
            p->level--;
2847
36
            return NULL;
2848
36
        }
2849
413
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_raise_stmt"));
2850
413
        void *invalid_raise_stmt_var;
2851
413
        if (
2852
413
            (invalid_raise_stmt_var = invalid_raise_stmt_rule(p))  // invalid_raise_stmt
2853
413
        )
2854
0
        {
2855
0
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_raise_stmt"));
2856
0
            _res = invalid_raise_stmt_var;
2857
0
            goto done;
2858
0
        }
2859
413
        p->mark = _mark;
2860
413
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2861
413
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_raise_stmt"));
2862
413
    }
2863
2.91k
    { // 'raise' expression
2864
2.91k
        if (p->error_indicator) {
2865
5
            p->level--;
2866
5
            return NULL;
2867
5
        }
2868
2.91k
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression"));
2869
2.91k
        Token * _keyword;
2870
2.91k
        expr_ty a;
2871
2.91k
        if (
2872
2.91k
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
2873
2.91k
            &&
2874
2.91k
            (a = expression_rule(p))  // expression
2875
2.91k
        )
2876
2.12k
        {
2877
2.12k
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression"));
2878
2.12k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2879
2.12k
            if (_token == NULL) {
2880
0
                p->level--;
2881
0
                return NULL;
2882
0
            }
2883
2.12k
            int _end_lineno = _token->end_lineno;
2884
2.12k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2885
2.12k
            int _end_col_offset = _token->end_col_offset;
2886
2.12k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2887
2.12k
            _res = _PyAST_Raise ( a , NULL , EXTRA );
2888
2.12k
            if (_res == NULL && PyErr_Occurred()) {
2889
0
                p->error_indicator = 1;
2890
0
                p->level--;
2891
0
                return NULL;
2892
0
            }
2893
2.12k
            goto done;
2894
2.12k
        }
2895
787
        p->mark = _mark;
2896
787
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2897
787
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression"));
2898
787
    }
2899
0
    { // 'raise'
2900
787
        if (p->error_indicator) {
2901
0
            p->level--;
2902
0
            return NULL;
2903
0
        }
2904
787
        D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise'"));
2905
787
        Token * _keyword;
2906
787
        if (
2907
787
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
2908
787
        )
2909
787
        {
2910
787
            D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise'"));
2911
787
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2912
787
            if (_token == NULL) {
2913
0
                p->level--;
2914
0
                return NULL;
2915
0
            }
2916
787
            int _end_lineno = _token->end_lineno;
2917
787
            UNUSED(_end_lineno); // Only used by EXTRA macro
2918
787
            int _end_col_offset = _token->end_col_offset;
2919
787
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2920
787
            _res = _PyAST_Raise ( NULL , NULL , EXTRA );
2921
787
            if (_res == NULL && PyErr_Occurred()) {
2922
0
                p->error_indicator = 1;
2923
0
                p->level--;
2924
0
                return NULL;
2925
0
            }
2926
787
            goto done;
2927
787
        }
2928
0
        p->mark = _mark;
2929
0
        D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2930
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise'"));
2931
0
    }
2932
0
    _res = NULL;
2933
3.55k
  done:
2934
3.55k
    p->level--;
2935
3.55k
    return _res;
2936
0
}
2937
2938
// pass_stmt: 'pass'
2939
static stmt_ty
2940
pass_stmt_rule(Parser *p)
2941
193k
{
2942
193k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
2943
0
        _Pypegen_stack_overflow(p);
2944
0
    }
2945
193k
    if (p->error_indicator) {
2946
0
        p->level--;
2947
0
        return NULL;
2948
0
    }
2949
193k
    stmt_ty _res = NULL;
2950
193k
    int _mark = p->mark;
2951
193k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2952
0
        p->error_indicator = 1;
2953
0
        p->level--;
2954
0
        return NULL;
2955
0
    }
2956
193k
    int _start_lineno = p->tokens[_mark]->lineno;
2957
193k
    UNUSED(_start_lineno); // Only used by EXTRA macro
2958
193k
    int _start_col_offset = p->tokens[_mark]->col_offset;
2959
193k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
2960
193k
    { // 'pass'
2961
193k
        if (p->error_indicator) {
2962
0
            p->level--;
2963
0
            return NULL;
2964
0
        }
2965
193k
        D(fprintf(stderr, "%*c> pass_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'pass'"));
2966
193k
        Token * _keyword;
2967
193k
        if (
2968
193k
            (_keyword = _PyPegen_expect_token(p, 527))  // token='pass'
2969
193k
        )
2970
1.88k
        {
2971
1.88k
            D(fprintf(stderr, "%*c+ pass_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'pass'"));
2972
1.88k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2973
1.88k
            if (_token == NULL) {
2974
0
                p->level--;
2975
0
                return NULL;
2976
0
            }
2977
1.88k
            int _end_lineno = _token->end_lineno;
2978
1.88k
            UNUSED(_end_lineno); // Only used by EXTRA macro
2979
1.88k
            int _end_col_offset = _token->end_col_offset;
2980
1.88k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
2981
1.88k
            _res = _PyAST_Pass ( EXTRA );
2982
1.88k
            if (_res == NULL && PyErr_Occurred()) {
2983
0
                p->error_indicator = 1;
2984
0
                p->level--;
2985
0
                return NULL;
2986
0
            }
2987
1.88k
            goto done;
2988
1.88k
        }
2989
191k
        p->mark = _mark;
2990
191k
        D(fprintf(stderr, "%*c%s pass_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2991
191k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'pass'"));
2992
191k
    }
2993
191k
    _res = NULL;
2994
193k
  done:
2995
193k
    p->level--;
2996
193k
    return _res;
2997
191k
}
2998
2999
// break_stmt: 'break'
3000
static stmt_ty
3001
break_stmt_rule(Parser *p)
3002
193k
{
3003
193k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3004
0
        _Pypegen_stack_overflow(p);
3005
0
    }
3006
193k
    if (p->error_indicator) {
3007
0
        p->level--;
3008
0
        return NULL;
3009
0
    }
3010
193k
    stmt_ty _res = NULL;
3011
193k
    int _mark = p->mark;
3012
193k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3013
0
        p->error_indicator = 1;
3014
0
        p->level--;
3015
0
        return NULL;
3016
0
    }
3017
193k
    int _start_lineno = p->tokens[_mark]->lineno;
3018
193k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3019
193k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3020
193k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3021
193k
    { // 'break'
3022
193k
        if (p->error_indicator) {
3023
0
            p->level--;
3024
0
            return NULL;
3025
0
        }
3026
193k
        D(fprintf(stderr, "%*c> break_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'break'"));
3027
193k
        Token * _keyword;
3028
193k
        if (
3029
193k
            (_keyword = _PyPegen_expect_token(p, 528))  // token='break'
3030
193k
        )
3031
2.18k
        {
3032
2.18k
            D(fprintf(stderr, "%*c+ break_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'break'"));
3033
2.18k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3034
2.18k
            if (_token == NULL) {
3035
0
                p->level--;
3036
0
                return NULL;
3037
0
            }
3038
2.18k
            int _end_lineno = _token->end_lineno;
3039
2.18k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3040
2.18k
            int _end_col_offset = _token->end_col_offset;
3041
2.18k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3042
2.18k
            _res = _PyAST_Break ( EXTRA );
3043
2.18k
            if (_res == NULL && PyErr_Occurred()) {
3044
0
                p->error_indicator = 1;
3045
0
                p->level--;
3046
0
                return NULL;
3047
0
            }
3048
2.18k
            goto done;
3049
2.18k
        }
3050
191k
        p->mark = _mark;
3051
191k
        D(fprintf(stderr, "%*c%s break_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3052
191k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'break'"));
3053
191k
    }
3054
191k
    _res = NULL;
3055
193k
  done:
3056
193k
    p->level--;
3057
193k
    return _res;
3058
191k
}
3059
3060
// continue_stmt: 'continue'
3061
static stmt_ty
3062
continue_stmt_rule(Parser *p)
3063
192k
{
3064
192k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3065
0
        _Pypegen_stack_overflow(p);
3066
0
    }
3067
192k
    if (p->error_indicator) {
3068
0
        p->level--;
3069
0
        return NULL;
3070
0
    }
3071
192k
    stmt_ty _res = NULL;
3072
192k
    int _mark = p->mark;
3073
192k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3074
0
        p->error_indicator = 1;
3075
0
        p->level--;
3076
0
        return NULL;
3077
0
    }
3078
192k
    int _start_lineno = p->tokens[_mark]->lineno;
3079
192k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3080
192k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3081
192k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3082
192k
    { // 'continue'
3083
192k
        if (p->error_indicator) {
3084
0
            p->level--;
3085
0
            return NULL;
3086
0
        }
3087
192k
        D(fprintf(stderr, "%*c> continue_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'continue'"));
3088
192k
        Token * _keyword;
3089
192k
        if (
3090
192k
            (_keyword = _PyPegen_expect_token(p, 529))  // token='continue'
3091
192k
        )
3092
2.93k
        {
3093
2.93k
            D(fprintf(stderr, "%*c+ continue_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'continue'"));
3094
2.93k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3095
2.93k
            if (_token == NULL) {
3096
0
                p->level--;
3097
0
                return NULL;
3098
0
            }
3099
2.93k
            int _end_lineno = _token->end_lineno;
3100
2.93k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3101
2.93k
            int _end_col_offset = _token->end_col_offset;
3102
2.93k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3103
2.93k
            _res = _PyAST_Continue ( EXTRA );
3104
2.93k
            if (_res == NULL && PyErr_Occurred()) {
3105
0
                p->error_indicator = 1;
3106
0
                p->level--;
3107
0
                return NULL;
3108
0
            }
3109
2.93k
            goto done;
3110
2.93k
        }
3111
189k
        p->mark = _mark;
3112
189k
        D(fprintf(stderr, "%*c%s continue_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3113
189k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'continue'"));
3114
189k
    }
3115
189k
    _res = NULL;
3116
192k
  done:
3117
192k
    p->level--;
3118
192k
    return _res;
3119
189k
}
3120
3121
// global_stmt: 'global' ','.NAME+
3122
static stmt_ty
3123
global_stmt_rule(Parser *p)
3124
693
{
3125
693
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3126
0
        _Pypegen_stack_overflow(p);
3127
0
    }
3128
693
    if (p->error_indicator) {
3129
0
        p->level--;
3130
0
        return NULL;
3131
0
    }
3132
693
    stmt_ty _res = NULL;
3133
693
    int _mark = p->mark;
3134
693
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3135
0
        p->error_indicator = 1;
3136
0
        p->level--;
3137
0
        return NULL;
3138
0
    }
3139
693
    int _start_lineno = p->tokens[_mark]->lineno;
3140
693
    UNUSED(_start_lineno); // Only used by EXTRA macro
3141
693
    int _start_col_offset = p->tokens[_mark]->col_offset;
3142
693
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3143
693
    { // 'global' ','.NAME+
3144
693
        if (p->error_indicator) {
3145
0
            p->level--;
3146
0
            return NULL;
3147
0
        }
3148
693
        D(fprintf(stderr, "%*c> global_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
3149
693
        Token * _keyword;
3150
693
        asdl_expr_seq* a;
3151
693
        if (
3152
693
            (_keyword = _PyPegen_expect_token(p, 530))  // token='global'
3153
693
            &&
3154
693
            (a = (asdl_expr_seq*)_gather_14_rule(p))  // ','.NAME+
3155
693
        )
3156
688
        {
3157
688
            D(fprintf(stderr, "%*c+ global_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
3158
688
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3159
688
            if (_token == NULL) {
3160
0
                p->level--;
3161
0
                return NULL;
3162
0
            }
3163
688
            int _end_lineno = _token->end_lineno;
3164
688
            UNUSED(_end_lineno); // Only used by EXTRA macro
3165
688
            int _end_col_offset = _token->end_col_offset;
3166
688
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3167
688
            _res = _PyAST_Global ( CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
3168
688
            if (_res == NULL && PyErr_Occurred()) {
3169
0
                p->error_indicator = 1;
3170
0
                p->level--;
3171
0
                return NULL;
3172
0
            }
3173
688
            goto done;
3174
688
        }
3175
5
        p->mark = _mark;
3176
5
        D(fprintf(stderr, "%*c%s global_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3177
5
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'global' ','.NAME+"));
3178
5
    }
3179
5
    _res = NULL;
3180
693
  done:
3181
693
    p->level--;
3182
693
    return _res;
3183
5
}
3184
3185
// nonlocal_stmt: 'nonlocal' ','.NAME+
3186
static stmt_ty
3187
nonlocal_stmt_rule(Parser *p)
3188
582
{
3189
582
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3190
0
        _Pypegen_stack_overflow(p);
3191
0
    }
3192
582
    if (p->error_indicator) {
3193
0
        p->level--;
3194
0
        return NULL;
3195
0
    }
3196
582
    stmt_ty _res = NULL;
3197
582
    int _mark = p->mark;
3198
582
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3199
0
        p->error_indicator = 1;
3200
0
        p->level--;
3201
0
        return NULL;
3202
0
    }
3203
582
    int _start_lineno = p->tokens[_mark]->lineno;
3204
582
    UNUSED(_start_lineno); // Only used by EXTRA macro
3205
582
    int _start_col_offset = p->tokens[_mark]->col_offset;
3206
582
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3207
582
    { // 'nonlocal' ','.NAME+
3208
582
        if (p->error_indicator) {
3209
0
            p->level--;
3210
0
            return NULL;
3211
0
        }
3212
582
        D(fprintf(stderr, "%*c> nonlocal_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
3213
582
        Token * _keyword;
3214
582
        asdl_expr_seq* a;
3215
582
        if (
3216
582
            (_keyword = _PyPegen_expect_token(p, 531))  // token='nonlocal'
3217
582
            &&
3218
582
            (a = (asdl_expr_seq*)_gather_14_rule(p))  // ','.NAME+
3219
582
        )
3220
579
        {
3221
579
            D(fprintf(stderr, "%*c+ nonlocal_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
3222
579
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3223
579
            if (_token == NULL) {
3224
0
                p->level--;
3225
0
                return NULL;
3226
0
            }
3227
579
            int _end_lineno = _token->end_lineno;
3228
579
            UNUSED(_end_lineno); // Only used by EXTRA macro
3229
579
            int _end_col_offset = _token->end_col_offset;
3230
579
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3231
579
            _res = _PyAST_Nonlocal ( CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
3232
579
            if (_res == NULL && PyErr_Occurred()) {
3233
0
                p->error_indicator = 1;
3234
0
                p->level--;
3235
0
                return NULL;
3236
0
            }
3237
579
            goto done;
3238
579
        }
3239
3
        p->mark = _mark;
3240
3
        D(fprintf(stderr, "%*c%s nonlocal_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3241
3
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'nonlocal' ','.NAME+"));
3242
3
    }
3243
3
    _res = NULL;
3244
582
  done:
3245
582
    p->level--;
3246
582
    return _res;
3247
3
}
3248
3249
// del_stmt: 'del' del_targets &(';' | NEWLINE) | invalid_del_stmt
3250
static stmt_ty
3251
del_stmt_rule(Parser *p)
3252
1.63k
{
3253
1.63k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3254
0
        _Pypegen_stack_overflow(p);
3255
0
    }
3256
1.63k
    if (p->error_indicator) {
3257
0
        p->level--;
3258
0
        return NULL;
3259
0
    }
3260
1.63k
    stmt_ty _res = NULL;
3261
1.63k
    int _mark = p->mark;
3262
1.63k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3263
0
        p->error_indicator = 1;
3264
0
        p->level--;
3265
0
        return NULL;
3266
0
    }
3267
1.63k
    int _start_lineno = p->tokens[_mark]->lineno;
3268
1.63k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3269
1.63k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3270
1.63k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3271
1.63k
    { // 'del' del_targets &(';' | NEWLINE)
3272
1.63k
        if (p->error_indicator) {
3273
0
            p->level--;
3274
0
            return NULL;
3275
0
        }
3276
1.63k
        D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3277
1.63k
        Token * _keyword;
3278
1.63k
        asdl_expr_seq* a;
3279
1.63k
        if (
3280
1.63k
            (_keyword = _PyPegen_expect_token(p, 630))  // token='del'
3281
1.63k
            &&
3282
1.63k
            (a = del_targets_rule(p))  // del_targets
3283
1.39k
            &&
3284
1.39k
            _PyPegen_lookahead(1, _tmp_15_rule, p)
3285
1.63k
        )
3286
1.09k
        {
3287
1.09k
            D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3288
1.09k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3289
1.09k
            if (_token == NULL) {
3290
0
                p->level--;
3291
0
                return NULL;
3292
0
            }
3293
1.09k
            int _end_lineno = _token->end_lineno;
3294
1.09k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3295
1.09k
            int _end_col_offset = _token->end_col_offset;
3296
1.09k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3297
1.09k
            _res = _PyAST_Delete ( a , EXTRA );
3298
1.09k
            if (_res == NULL && PyErr_Occurred()) {
3299
0
                p->error_indicator = 1;
3300
0
                p->level--;
3301
0
                return NULL;
3302
0
            }
3303
1.09k
            goto done;
3304
1.09k
        }
3305
547
        p->mark = _mark;
3306
547
        D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3307
547
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3308
547
    }
3309
547
    if (p->call_invalid_rules) { // invalid_del_stmt
3310
407
        if (p->error_indicator) {
3311
101
            p->level--;
3312
101
            return NULL;
3313
101
        }
3314
306
        D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3315
306
        void *invalid_del_stmt_var;
3316
306
        if (
3317
306
            (invalid_del_stmt_var = invalid_del_stmt_rule(p))  // invalid_del_stmt
3318
306
        )
3319
0
        {
3320
0
            D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3321
0
            _res = invalid_del_stmt_var;
3322
0
            goto done;
3323
0
        }
3324
306
        p->mark = _mark;
3325
306
        D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3326
306
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_del_stmt"));
3327
306
    }
3328
446
    _res = NULL;
3329
1.53k
  done:
3330
1.53k
    p->level--;
3331
1.53k
    return _res;
3332
446
}
3333
3334
// yield_stmt: yield_expr
3335
static stmt_ty
3336
yield_stmt_rule(Parser *p)
3337
1.99k
{
3338
1.99k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3339
0
        _Pypegen_stack_overflow(p);
3340
0
    }
3341
1.99k
    if (p->error_indicator) {
3342
0
        p->level--;
3343
0
        return NULL;
3344
0
    }
3345
1.99k
    stmt_ty _res = NULL;
3346
1.99k
    int _mark = p->mark;
3347
1.99k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3348
0
        p->error_indicator = 1;
3349
0
        p->level--;
3350
0
        return NULL;
3351
0
    }
3352
1.99k
    int _start_lineno = p->tokens[_mark]->lineno;
3353
1.99k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3354
1.99k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3355
1.99k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3356
1.99k
    { // yield_expr
3357
1.99k
        if (p->error_indicator) {
3358
0
            p->level--;
3359
0
            return NULL;
3360
0
        }
3361
1.99k
        D(fprintf(stderr, "%*c> yield_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3362
1.99k
        expr_ty y;
3363
1.99k
        if (
3364
1.99k
            (y = yield_expr_rule(p))  // yield_expr
3365
1.99k
        )
3366
1.99k
        {
3367
1.99k
            D(fprintf(stderr, "%*c+ yield_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3368
1.99k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3369
1.99k
            if (_token == NULL) {
3370
0
                p->level--;
3371
0
                return NULL;
3372
0
            }
3373
1.99k
            int _end_lineno = _token->end_lineno;
3374
1.99k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3375
1.99k
            int _end_col_offset = _token->end_col_offset;
3376
1.99k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3377
1.99k
            _res = _PyAST_Expr ( y , EXTRA );
3378
1.99k
            if (_res == NULL && PyErr_Occurred()) {
3379
0
                p->error_indicator = 1;
3380
0
                p->level--;
3381
0
                return NULL;
3382
0
            }
3383
1.99k
            goto done;
3384
1.99k
        }
3385
4
        p->mark = _mark;
3386
4
        D(fprintf(stderr, "%*c%s yield_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3387
4
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
3388
4
    }
3389
4
    _res = NULL;
3390
1.99k
  done:
3391
1.99k
    p->level--;
3392
1.99k
    return _res;
3393
4
}
3394
3395
// assert_stmt: invalid_assert_stmt | 'assert' expression [',' expression]
3396
static stmt_ty
3397
assert_stmt_rule(Parser *p)
3398
1.24k
{
3399
1.24k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3400
0
        _Pypegen_stack_overflow(p);
3401
0
    }
3402
1.24k
    if (p->error_indicator) {
3403
0
        p->level--;
3404
0
        return NULL;
3405
0
    }
3406
1.24k
    stmt_ty _res = NULL;
3407
1.24k
    int _mark = p->mark;
3408
1.24k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3409
0
        p->error_indicator = 1;
3410
0
        p->level--;
3411
0
        return NULL;
3412
0
    }
3413
1.24k
    int _start_lineno = p->tokens[_mark]->lineno;
3414
1.24k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3415
1.24k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3416
1.24k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3417
1.24k
    if (p->call_invalid_rules) { // invalid_assert_stmt
3418
455
        if (p->error_indicator) {
3419
0
            p->level--;
3420
0
            return NULL;
3421
0
        }
3422
455
        D(fprintf(stderr, "%*c> assert_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_assert_stmt"));
3423
455
        void *invalid_assert_stmt_var;
3424
455
        if (
3425
455
            (invalid_assert_stmt_var = invalid_assert_stmt_rule(p))  // invalid_assert_stmt
3426
455
        )
3427
0
        {
3428
0
            D(fprintf(stderr, "%*c+ assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_assert_stmt"));
3429
0
            _res = invalid_assert_stmt_var;
3430
0
            goto done;
3431
0
        }
3432
455
        p->mark = _mark;
3433
455
        D(fprintf(stderr, "%*c%s assert_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3434
455
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_assert_stmt"));
3435
455
    }
3436
1.24k
    { // 'assert' expression [',' expression]
3437
1.24k
        if (p->error_indicator) {
3438
72
            p->level--;
3439
72
            return NULL;
3440
72
        }
3441
1.17k
        D(fprintf(stderr, "%*c> assert_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3442
1.17k
        Token * _keyword;
3443
1.17k
        expr_ty a;
3444
1.17k
        void *b;
3445
1.17k
        if (
3446
1.17k
            (_keyword = _PyPegen_expect_token(p, 634))  // token='assert'
3447
1.17k
            &&
3448
1.17k
            (a = expression_rule(p))  // expression
3449
1.15k
            &&
3450
1.15k
            (b = _tmp_16_rule(p), !p->error_indicator)  // [',' expression]
3451
1.17k
        )
3452
1.15k
        {
3453
1.15k
            D(fprintf(stderr, "%*c+ assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3454
1.15k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3455
1.15k
            if (_token == NULL) {
3456
0
                p->level--;
3457
0
                return NULL;
3458
0
            }
3459
1.15k
            int _end_lineno = _token->end_lineno;
3460
1.15k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3461
1.15k
            int _end_col_offset = _token->end_col_offset;
3462
1.15k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3463
1.15k
            _res = _PyAST_Assert ( a , b , EXTRA );
3464
1.15k
            if (_res == NULL && PyErr_Occurred()) {
3465
0
                p->error_indicator = 1;
3466
0
                p->level--;
3467
0
                return NULL;
3468
0
            }
3469
1.15k
            goto done;
3470
1.15k
        }
3471
20
        p->mark = _mark;
3472
20
        D(fprintf(stderr, "%*c%s assert_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3473
20
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'assert' expression [',' expression]"));
3474
20
    }
3475
20
    _res = NULL;
3476
1.17k
  done:
3477
1.17k
    p->level--;
3478
1.17k
    return _res;
3479
20
}
3480
3481
// import_stmt: invalid_import | import_name | import_from
3482
static stmt_ty
3483
import_stmt_rule(Parser *p)
3484
6.06k
{
3485
6.06k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3486
0
        _Pypegen_stack_overflow(p);
3487
0
    }
3488
6.06k
    if (p->error_indicator) {
3489
0
        p->level--;
3490
0
        return NULL;
3491
0
    }
3492
6.06k
    stmt_ty _res = NULL;
3493
6.06k
    int _mark = p->mark;
3494
6.06k
    if (p->call_invalid_rules) { // invalid_import
3495
1.66k
        if (p->error_indicator) {
3496
0
            p->level--;
3497
0
            return NULL;
3498
0
        }
3499
1.66k
        D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import"));
3500
1.66k
        void *invalid_import_var;
3501
1.66k
        if (
3502
1.66k
            (invalid_import_var = invalid_import_rule(p))  // invalid_import
3503
1.66k
        )
3504
0
        {
3505
0
            D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import"));
3506
0
            _res = invalid_import_var;
3507
0
            goto done;
3508
0
        }
3509
1.66k
        p->mark = _mark;
3510
1.66k
        D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3511
1.66k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import"));
3512
1.66k
    }
3513
6.06k
    { // import_name
3514
6.06k
        if (p->error_indicator) {
3515
5
            p->level--;
3516
5
            return NULL;
3517
5
        }
3518
6.06k
        D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_name"));
3519
6.06k
        stmt_ty import_name_var;
3520
6.06k
        if (
3521
6.06k
            (import_name_var = import_name_rule(p))  // import_name
3522
6.06k
        )
3523
2.82k
        {
3524
2.82k
            D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_name"));
3525
2.82k
            _res = import_name_var;
3526
2.82k
            goto done;
3527
2.82k
        }
3528
3.23k
        p->mark = _mark;
3529
3.23k
        D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3530
3.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_name"));
3531
3.23k
    }
3532
0
    { // import_from
3533
3.23k
        if (p->error_indicator) {
3534
26
            p->level--;
3535
26
            return NULL;
3536
26
        }
3537
3.21k
        D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from"));
3538
3.21k
        stmt_ty import_from_var;
3539
3.21k
        if (
3540
3.21k
            (import_from_var = import_from_rule(p))  // import_from
3541
3.21k
        )
3542
3.00k
        {
3543
3.00k
            D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from"));
3544
3.00k
            _res = import_from_var;
3545
3.00k
            goto done;
3546
3.00k
        }
3547
204
        p->mark = _mark;
3548
204
        D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3549
204
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from"));
3550
204
    }
3551
204
    _res = NULL;
3552
6.03k
  done:
3553
6.03k
    p->level--;
3554
6.03k
    return _res;
3555
204
}
3556
3557
// import_name: 'import' dotted_as_names
3558
static stmt_ty
3559
import_name_rule(Parser *p)
3560
6.06k
{
3561
6.06k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3562
0
        _Pypegen_stack_overflow(p);
3563
0
    }
3564
6.06k
    if (p->error_indicator) {
3565
0
        p->level--;
3566
0
        return NULL;
3567
0
    }
3568
6.06k
    stmt_ty _res = NULL;
3569
6.06k
    int _mark = p->mark;
3570
6.06k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3571
0
        p->error_indicator = 1;
3572
0
        p->level--;
3573
0
        return NULL;
3574
0
    }
3575
6.06k
    int _start_lineno = p->tokens[_mark]->lineno;
3576
6.06k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3577
6.06k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3578
6.06k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3579
6.06k
    { // 'import' dotted_as_names
3580
6.06k
        if (p->error_indicator) {
3581
0
            p->level--;
3582
0
            return NULL;
3583
0
        }
3584
6.06k
        D(fprintf(stderr, "%*c> import_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3585
6.06k
        Token * _keyword;
3586
6.06k
        asdl_alias_seq* a;
3587
6.06k
        if (
3588
6.06k
            (_keyword = _PyPegen_expect_token(p, 643))  // token='import'
3589
2.86k
            &&
3590
2.86k
            (a = dotted_as_names_rule(p))  // dotted_as_names
3591
6.06k
        )
3592
2.82k
        {
3593
2.82k
            D(fprintf(stderr, "%*c+ import_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3594
2.82k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3595
2.82k
            if (_token == NULL) {
3596
0
                p->level--;
3597
0
                return NULL;
3598
0
            }
3599
2.82k
            int _end_lineno = _token->end_lineno;
3600
2.82k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3601
2.82k
            int _end_col_offset = _token->end_col_offset;
3602
2.82k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3603
2.82k
            _res = _PyAST_Import ( a , EXTRA );
3604
2.82k
            if (_res == NULL && PyErr_Occurred()) {
3605
0
                p->error_indicator = 1;
3606
0
                p->level--;
3607
0
                return NULL;
3608
0
            }
3609
2.82k
            goto done;
3610
2.82k
        }
3611
3.23k
        p->mark = _mark;
3612
3.23k
        D(fprintf(stderr, "%*c%s import_name[%d-%d]: %s failed!\n", p->level, ' ',
3613
3.23k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' dotted_as_names"));
3614
3.23k
    }
3615
3.23k
    _res = NULL;
3616
6.06k
  done:
3617
6.06k
    p->level--;
3618
6.06k
    return _res;
3619
3.23k
}
3620
3621
// import_from:
3622
//     | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3623
//     | 'from' (('.' | '...'))+ 'import' import_from_targets
3624
static stmt_ty
3625
import_from_rule(Parser *p)
3626
3.21k
{
3627
3.21k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3628
0
        _Pypegen_stack_overflow(p);
3629
0
    }
3630
3.21k
    if (p->error_indicator) {
3631
0
        p->level--;
3632
0
        return NULL;
3633
0
    }
3634
3.21k
    stmt_ty _res = NULL;
3635
3.21k
    int _mark = p->mark;
3636
3.21k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3637
0
        p->error_indicator = 1;
3638
0
        p->level--;
3639
0
        return NULL;
3640
0
    }
3641
3.21k
    int _start_lineno = p->tokens[_mark]->lineno;
3642
3.21k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3643
3.21k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3644
3.21k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3645
3.21k
    { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3646
3.21k
        if (p->error_indicator) {
3647
0
            p->level--;
3648
0
            return NULL;
3649
0
        }
3650
3.21k
        D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3651
3.21k
        Token * _keyword;
3652
3.21k
        Token * _keyword_1;
3653
3.21k
        asdl_seq * a;
3654
3.21k
        expr_ty b;
3655
3.21k
        asdl_alias_seq* c;
3656
3.21k
        if (
3657
3.21k
            (_keyword = _PyPegen_expect_token(p, 642))  // token='from'
3658
3.20k
            &&
3659
3.20k
            (a = _loop0_17_rule(p))  // (('.' | '...'))*
3660
3.20k
            &&
3661
3.20k
            (b = dotted_name_rule(p))  // dotted_name
3662
2.00k
            &&
3663
2.00k
            (_keyword_1 = _PyPegen_expect_token(p, 643))  // token='import'
3664
1.95k
            &&
3665
1.95k
            (c = import_from_targets_rule(p))  // import_from_targets
3666
3.21k
        )
3667
1.92k
        {
3668
1.92k
            D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3669
1.92k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3670
1.92k
            if (_token == NULL) {
3671
0
                p->level--;
3672
0
                return NULL;
3673
0
            }
3674
1.92k
            int _end_lineno = _token->end_lineno;
3675
1.92k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3676
1.92k
            int _end_col_offset = _token->end_col_offset;
3677
1.92k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3678
1.92k
            _res = _PyPegen_checked_future_import ( p , b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
3679
1.92k
            if (_res == NULL && PyErr_Occurred()) {
3680
0
                p->error_indicator = 1;
3681
0
                p->level--;
3682
0
                return NULL;
3683
0
            }
3684
1.92k
            goto done;
3685
1.92k
        }
3686
1.28k
        p->mark = _mark;
3687
1.28k
        D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3688
1.28k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3689
1.28k
    }
3690
0
    { // 'from' (('.' | '...'))+ 'import' import_from_targets
3691
1.28k
        if (p->error_indicator) {
3692
28
            p->level--;
3693
28
            return NULL;
3694
28
        }
3695
1.26k
        D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3696
1.26k
        Token * _keyword;
3697
1.26k
        Token * _keyword_1;
3698
1.26k
        asdl_seq * a;
3699
1.26k
        asdl_alias_seq* b;
3700
1.26k
        if (
3701
1.26k
            (_keyword = _PyPegen_expect_token(p, 642))  // token='from'
3702
1.25k
            &&
3703
1.25k
            (a = _loop1_18_rule(p))  // (('.' | '...'))+
3704
1.19k
            &&
3705
1.19k
            (_keyword_1 = _PyPegen_expect_token(p, 643))  // token='import'
3706
1.12k
            &&
3707
1.12k
            (b = import_from_targets_rule(p))  // import_from_targets
3708
1.26k
        )
3709
1.08k
        {
3710
1.08k
            D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3711
1.08k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3712
1.08k
            if (_token == NULL) {
3713
0
                p->level--;
3714
0
                return NULL;
3715
0
            }
3716
1.08k
            int _end_lineno = _token->end_lineno;
3717
1.08k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3718
1.08k
            int _end_col_offset = _token->end_col_offset;
3719
1.08k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3720
1.08k
            _res = _PyAST_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
3721
1.08k
            if (_res == NULL && PyErr_Occurred()) {
3722
0
                p->error_indicator = 1;
3723
0
                p->level--;
3724
0
                return NULL;
3725
0
            }
3726
1.08k
            goto done;
3727
1.08k
        }
3728
176
        p->mark = _mark;
3729
176
        D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3730
176
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3731
176
    }
3732
176
    _res = NULL;
3733
3.18k
  done:
3734
3.18k
    p->level--;
3735
3.18k
    return _res;
3736
176
}
3737
3738
// import_from_targets:
3739
//     | '(' import_from_as_names ','? ')'
3740
//     | import_from_as_names !','
3741
//     | '*'
3742
//     | invalid_import_from_targets
3743
static asdl_alias_seq*
3744
import_from_targets_rule(Parser *p)
3745
3.08k
{
3746
3.08k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3747
0
        _Pypegen_stack_overflow(p);
3748
0
    }
3749
3.08k
    if (p->error_indicator) {
3750
0
        p->level--;
3751
0
        return NULL;
3752
0
    }
3753
3.08k
    asdl_alias_seq* _res = NULL;
3754
3.08k
    int _mark = p->mark;
3755
3.08k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3756
3
        p->error_indicator = 1;
3757
3
        p->level--;
3758
3
        return NULL;
3759
3
    }
3760
3.07k
    int _start_lineno = p->tokens[_mark]->lineno;
3761
3.07k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3762
3.07k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3763
3.07k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3764
3.07k
    { // '(' import_from_as_names ','? ')'
3765
3.07k
        if (p->error_indicator) {
3766
0
            p->level--;
3767
0
            return NULL;
3768
0
        }
3769
3.07k
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3770
3.07k
        Token * _literal;
3771
3.07k
        Token * _literal_1;
3772
3.07k
        void *_opt_var;
3773
3.07k
        UNUSED(_opt_var); // Silence compiler warnings
3774
3.07k
        asdl_alias_seq* a;
3775
3.07k
        if (
3776
3.07k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
3777
73
            &&
3778
73
            (a = import_from_as_names_rule(p))  // import_from_as_names
3779
66
            &&
3780
66
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
3781
65
            &&
3782
65
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
3783
3.07k
        )
3784
58
        {
3785
58
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3786
58
            _res = a;
3787
58
            if (_res == NULL && PyErr_Occurred()) {
3788
0
                p->error_indicator = 1;
3789
0
                p->level--;
3790
0
                return NULL;
3791
0
            }
3792
58
            goto done;
3793
58
        }
3794
3.02k
        p->mark = _mark;
3795
3.02k
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3796
3.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3797
3.02k
    }
3798
0
    { // import_from_as_names !','
3799
3.02k
        if (p->error_indicator) {
3800
4
            p->level--;
3801
4
            return NULL;
3802
4
        }
3803
3.01k
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3804
3.01k
        asdl_alias_seq* import_from_as_names_var;
3805
3.01k
        if (
3806
3.01k
            (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
3807
2.39k
            &&
3808
2.39k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
3809
3.01k
        )
3810
2.35k
        {
3811
2.35k
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3812
2.35k
            _res = import_from_as_names_var;
3813
2.35k
            goto done;
3814
2.35k
        }
3815
664
        p->mark = _mark;
3816
664
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3817
664
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names !','"));
3818
664
    }
3819
0
    { // '*'
3820
664
        if (p->error_indicator) {
3821
3
            p->level--;
3822
3
            return NULL;
3823
3
        }
3824
661
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
3825
661
        Token * _literal;
3826
661
        if (
3827
661
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
3828
661
        )
3829
596
        {
3830
596
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
3831
596
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3832
596
            if (_token == NULL) {
3833
0
                p->level--;
3834
0
                return NULL;
3835
0
            }
3836
596
            int _end_lineno = _token->end_lineno;
3837
596
            UNUSED(_end_lineno); // Only used by EXTRA macro
3838
596
            int _end_col_offset = _token->end_col_offset;
3839
596
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3840
596
            _res = ( asdl_alias_seq* ) _PyPegen_singleton_seq ( p , CHECK ( alias_ty , _PyPegen_alias_for_star ( p , EXTRA ) ) );
3841
596
            if (_res == NULL && PyErr_Occurred()) {
3842
0
                p->error_indicator = 1;
3843
0
                p->level--;
3844
0
                return NULL;
3845
0
            }
3846
596
            goto done;
3847
596
        }
3848
65
        p->mark = _mark;
3849
65
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3850
65
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
3851
65
    }
3852
65
    if (p->call_invalid_rules) { // invalid_import_from_targets
3853
32
        if (p->error_indicator) {
3854
0
            p->level--;
3855
0
            return NULL;
3856
0
        }
3857
32
        D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3858
32
        void *invalid_import_from_targets_var;
3859
32
        if (
3860
32
            (invalid_import_from_targets_var = invalid_import_from_targets_rule(p))  // invalid_import_from_targets
3861
32
        )
3862
0
        {
3863
0
            D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3864
0
            _res = invalid_import_from_targets_var;
3865
0
            goto done;
3866
0
        }
3867
32
        p->mark = _mark;
3868
32
        D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3869
32
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_targets"));
3870
32
    }
3871
65
    _res = NULL;
3872
3.07k
  done:
3873
3.07k
    p->level--;
3874
3.07k
    return _res;
3875
65
}
3876
3877
// import_from_as_names: ','.import_from_as_name+
3878
static asdl_alias_seq*
3879
import_from_as_names_rule(Parser *p)
3880
3.12k
{
3881
3.12k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3882
0
        _Pypegen_stack_overflow(p);
3883
0
    }
3884
3.12k
    if (p->error_indicator) {
3885
0
        p->level--;
3886
0
        return NULL;
3887
0
    }
3888
3.12k
    asdl_alias_seq* _res = NULL;
3889
3.12k
    int _mark = p->mark;
3890
3.12k
    { // ','.import_from_as_name+
3891
3.12k
        if (p->error_indicator) {
3892
0
            p->level--;
3893
0
            return NULL;
3894
0
        }
3895
3.12k
        D(fprintf(stderr, "%*c> import_from_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3896
3.12k
        asdl_alias_seq* a;
3897
3.12k
        if (
3898
3.12k
            (a = (asdl_alias_seq*)_gather_20_rule(p))  // ','.import_from_as_name+
3899
3.12k
        )
3900
2.48k
        {
3901
2.48k
            D(fprintf(stderr, "%*c+ import_from_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3902
2.48k
            _res = a;
3903
2.48k
            if (_res == NULL && PyErr_Occurred()) {
3904
0
                p->error_indicator = 1;
3905
0
                p->level--;
3906
0
                return NULL;
3907
0
            }
3908
2.48k
            goto done;
3909
2.48k
        }
3910
641
        p->mark = _mark;
3911
641
        D(fprintf(stderr, "%*c%s import_from_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3912
641
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.import_from_as_name+"));
3913
641
    }
3914
641
    _res = NULL;
3915
3.12k
  done:
3916
3.12k
    p->level--;
3917
3.12k
    return _res;
3918
641
}
3919
3920
// import_from_as_name: invalid_import_from_as_name | NAME ['as' NAME]
3921
static alias_ty
3922
import_from_as_name_rule(Parser *p)
3923
6.34k
{
3924
6.34k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
3925
0
        _Pypegen_stack_overflow(p);
3926
0
    }
3927
6.34k
    if (p->error_indicator) {
3928
0
        p->level--;
3929
0
        return NULL;
3930
0
    }
3931
6.34k
    alias_ty _res = NULL;
3932
6.34k
    int _mark = p->mark;
3933
6.34k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3934
4
        p->error_indicator = 1;
3935
4
        p->level--;
3936
4
        return NULL;
3937
4
    }
3938
6.33k
    int _start_lineno = p->tokens[_mark]->lineno;
3939
6.33k
    UNUSED(_start_lineno); // Only used by EXTRA macro
3940
6.33k
    int _start_col_offset = p->tokens[_mark]->col_offset;
3941
6.33k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
3942
6.33k
    if (p->call_invalid_rules) { // invalid_import_from_as_name
3943
2.26k
        if (p->error_indicator) {
3944
0
            p->level--;
3945
0
            return NULL;
3946
0
        }
3947
2.26k
        D(fprintf(stderr, "%*c> import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from_as_name"));
3948
2.26k
        void *invalid_import_from_as_name_var;
3949
2.26k
        if (
3950
2.26k
            (invalid_import_from_as_name_var = invalid_import_from_as_name_rule(p))  // invalid_import_from_as_name
3951
2.26k
        )
3952
0
        {
3953
0
            D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import_from_as_name"));
3954
0
            _res = invalid_import_from_as_name_var;
3955
0
            goto done;
3956
0
        }
3957
2.26k
        p->mark = _mark;
3958
2.26k
        D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3959
2.26k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_as_name"));
3960
2.26k
    }
3961
6.33k
    { // NAME ['as' NAME]
3962
6.33k
        if (p->error_indicator) {
3963
2
            p->level--;
3964
2
            return NULL;
3965
2
        }
3966
6.33k
        D(fprintf(stderr, "%*c> import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3967
6.33k
        expr_ty a;
3968
6.33k
        void *b;
3969
6.33k
        if (
3970
6.33k
            (a = _PyPegen_name_token(p))  // NAME
3971
5.63k
            &&
3972
5.63k
            (b = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
3973
6.33k
        )
3974
5.63k
        {
3975
5.63k
            D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3976
5.63k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3977
5.63k
            if (_token == NULL) {
3978
0
                p->level--;
3979
0
                return NULL;
3980
0
            }
3981
5.63k
            int _end_lineno = _token->end_lineno;
3982
5.63k
            UNUSED(_end_lineno); // Only used by EXTRA macro
3983
5.63k
            int _end_col_offset = _token->end_col_offset;
3984
5.63k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
3985
5.63k
            _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
3986
5.63k
            if (_res == NULL && PyErr_Occurred()) {
3987
0
                p->error_indicator = 1;
3988
0
                p->level--;
3989
0
                return NULL;
3990
0
            }
3991
5.63k
            goto done;
3992
5.63k
        }
3993
705
        p->mark = _mark;
3994
705
        D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3995
705
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ['as' NAME]"));
3996
705
    }
3997
705
    _res = NULL;
3998
6.33k
  done:
3999
6.33k
    p->level--;
4000
6.33k
    return _res;
4001
705
}
4002
4003
// dotted_as_names: ','.dotted_as_name+
4004
static asdl_alias_seq*
4005
dotted_as_names_rule(Parser *p)
4006
2.86k
{
4007
2.86k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4008
0
        _Pypegen_stack_overflow(p);
4009
0
    }
4010
2.86k
    if (p->error_indicator) {
4011
0
        p->level--;
4012
0
        return NULL;
4013
0
    }
4014
2.86k
    asdl_alias_seq* _res = NULL;
4015
2.86k
    int _mark = p->mark;
4016
2.86k
    { // ','.dotted_as_name+
4017
2.86k
        if (p->error_indicator) {
4018
0
            p->level--;
4019
0
            return NULL;
4020
0
        }
4021
2.86k
        D(fprintf(stderr, "%*c> dotted_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
4022
2.86k
        asdl_alias_seq* a;
4023
2.86k
        if (
4024
2.86k
            (a = (asdl_alias_seq*)_gather_23_rule(p))  // ','.dotted_as_name+
4025
2.86k
        )
4026
2.82k
        {
4027
2.82k
            D(fprintf(stderr, "%*c+ dotted_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
4028
2.82k
            _res = a;
4029
2.82k
            if (_res == NULL && PyErr_Occurred()) {
4030
0
                p->error_indicator = 1;
4031
0
                p->level--;
4032
0
                return NULL;
4033
0
            }
4034
2.82k
            goto done;
4035
2.82k
        }
4036
36
        p->mark = _mark;
4037
36
        D(fprintf(stderr, "%*c%s dotted_as_names[%d-%d]: %s failed!\n", p->level, ' ',
4038
36
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.dotted_as_name+"));
4039
36
    }
4040
36
    _res = NULL;
4041
2.86k
  done:
4042
2.86k
    p->level--;
4043
2.86k
    return _res;
4044
36
}
4045
4046
// dotted_as_name: invalid_dotted_as_name | dotted_name ['as' NAME]
4047
static alias_ty
4048
dotted_as_name_rule(Parser *p)
4049
9.56k
{
4050
9.56k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4051
0
        _Pypegen_stack_overflow(p);
4052
0
    }
4053
9.56k
    if (p->error_indicator) {
4054
0
        p->level--;
4055
0
        return NULL;
4056
0
    }
4057
9.56k
    alias_ty _res = NULL;
4058
9.56k
    int _mark = p->mark;
4059
9.56k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4060
1
        p->error_indicator = 1;
4061
1
        p->level--;
4062
1
        return NULL;
4063
1
    }
4064
9.56k
    int _start_lineno = p->tokens[_mark]->lineno;
4065
9.56k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4066
9.56k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4067
9.56k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4068
9.56k
    if (p->call_invalid_rules) { // invalid_dotted_as_name
4069
2.89k
        if (p->error_indicator) {
4070
0
            p->level--;
4071
0
            return NULL;
4072
0
        }
4073
2.89k
        D(fprintf(stderr, "%*c> dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_dotted_as_name"));
4074
2.89k
        void *invalid_dotted_as_name_var;
4075
2.89k
        if (
4076
2.89k
            (invalid_dotted_as_name_var = invalid_dotted_as_name_rule(p))  // invalid_dotted_as_name
4077
2.89k
        )
4078
0
        {
4079
0
            D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_dotted_as_name"));
4080
0
            _res = invalid_dotted_as_name_var;
4081
0
            goto done;
4082
0
        }
4083
2.89k
        p->mark = _mark;
4084
2.89k
        D(fprintf(stderr, "%*c%s dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
4085
2.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_dotted_as_name"));
4086
2.89k
    }
4087
9.56k
    { // dotted_name ['as' NAME]
4088
9.56k
        if (p->error_indicator) {
4089
27
            p->level--;
4090
27
            return NULL;
4091
27
        }
4092
9.54k
        D(fprintf(stderr, "%*c> dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
4093
9.54k
        expr_ty a;
4094
9.54k
        void *b;
4095
9.54k
        if (
4096
9.54k
            (a = dotted_name_rule(p))  // dotted_name
4097
9.47k
            &&
4098
9.47k
            (b = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
4099
9.54k
        )
4100
9.46k
        {
4101
9.46k
            D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
4102
9.46k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4103
9.46k
            if (_token == NULL) {
4104
0
                p->level--;
4105
0
                return NULL;
4106
0
            }
4107
9.46k
            int _end_lineno = _token->end_lineno;
4108
9.46k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4109
9.46k
            int _end_col_offset = _token->end_col_offset;
4110
9.46k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4111
9.46k
            _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
4112
9.46k
            if (_res == NULL && PyErr_Occurred()) {
4113
0
                p->error_indicator = 1;
4114
0
                p->level--;
4115
0
                return NULL;
4116
0
            }
4117
9.46k
            goto done;
4118
9.46k
        }
4119
72
        p->mark = _mark;
4120
72
        D(fprintf(stderr, "%*c%s dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
4121
72
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name ['as' NAME]"));
4122
72
    }
4123
72
    _res = NULL;
4124
9.54k
  done:
4125
9.54k
    p->level--;
4126
9.54k
    return _res;
4127
72
}
4128
4129
// Left-recursive
4130
// dotted_name: dotted_name '.' NAME | NAME
4131
static expr_ty dotted_name_raw(Parser *);
4132
static expr_ty
4133
dotted_name_rule(Parser *p)
4134
44.6k
{
4135
44.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4136
0
        _Pypegen_stack_overflow(p);
4137
0
    }
4138
44.6k
    expr_ty _res = NULL;
4139
44.6k
    if (_PyPegen_is_memoized(p, dotted_name_type, &_res)) {
4140
31.8k
        p->level--;
4141
31.8k
        return _res;
4142
31.8k
    }
4143
12.7k
    int _mark = p->mark;
4144
12.7k
    int _resmark = p->mark;
4145
26.3k
    while (1) {
4146
26.3k
        int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
4147
26.3k
        if (tmpvar_0) {
4148
0
            p->level--;
4149
0
            return _res;
4150
0
        }
4151
26.3k
        p->mark = _mark;
4152
26.3k
        void *_raw = dotted_name_raw(p);
4153
26.3k
        if (p->error_indicator) {
4154
15
            p->level--;
4155
15
            return NULL;
4156
15
        }
4157
26.3k
        if (_raw == NULL || p->mark <= _resmark)
4158
12.7k
            break;
4159
13.5k
        _resmark = p->mark;
4160
13.5k
        _res = _raw;
4161
13.5k
    }
4162
12.7k
    p->mark = _resmark;
4163
12.7k
    p->level--;
4164
12.7k
    return _res;
4165
12.7k
}
4166
static expr_ty
4167
dotted_name_raw(Parser *p)
4168
26.3k
{
4169
26.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4170
0
        _Pypegen_stack_overflow(p);
4171
0
    }
4172
26.3k
    if (p->error_indicator) {
4173
10
        p->level--;
4174
10
        return NULL;
4175
10
    }
4176
26.3k
    expr_ty _res = NULL;
4177
26.3k
    int _mark = p->mark;
4178
26.3k
    { // dotted_name '.' NAME
4179
26.3k
        if (p->error_indicator) {
4180
0
            p->level--;
4181
0
            return NULL;
4182
0
        }
4183
26.3k
        D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
4184
26.3k
        Token * _literal;
4185
26.3k
        expr_ty a;
4186
26.3k
        expr_ty b;
4187
26.3k
        if (
4188
26.3k
            (a = dotted_name_rule(p))  // dotted_name
4189
13.5k
            &&
4190
13.5k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
4191
2.11k
            &&
4192
2.11k
            (b = _PyPegen_name_token(p))  // NAME
4193
26.3k
        )
4194
2.09k
        {
4195
2.09k
            D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
4196
2.09k
            _res = _PyPegen_join_names_with_dot ( p , a , b );
4197
2.09k
            if (_res == NULL && PyErr_Occurred()) {
4198
0
                p->error_indicator = 1;
4199
0
                p->level--;
4200
0
                return NULL;
4201
0
            }
4202
2.09k
            goto done;
4203
2.09k
        }
4204
24.2k
        p->mark = _mark;
4205
24.2k
        D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
4206
24.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name '.' NAME"));
4207
24.2k
    }
4208
0
    { // NAME
4209
24.2k
        if (p->error_indicator) {
4210
5
            p->level--;
4211
5
            return NULL;
4212
5
        }
4213
24.2k
        D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
4214
24.2k
        expr_ty name_var;
4215
24.2k
        if (
4216
24.2k
            (name_var = _PyPegen_name_token(p))  // NAME
4217
24.2k
        )
4218
23.0k
        {
4219
23.0k
            D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
4220
23.0k
            _res = name_var;
4221
23.0k
            goto done;
4222
23.0k
        }
4223
1.25k
        p->mark = _mark;
4224
1.25k
        D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
4225
1.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
4226
1.25k
    }
4227
1.25k
    _res = NULL;
4228
26.3k
  done:
4229
26.3k
    p->level--;
4230
26.3k
    return _res;
4231
1.25k
}
4232
4233
// block: NEWLINE INDENT statements DEDENT | simple_stmts | invalid_block
4234
static asdl_stmt_seq*
4235
block_rule(Parser *p)
4236
84.0k
{
4237
84.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4238
0
        _Pypegen_stack_overflow(p);
4239
0
    }
4240
84.0k
    if (p->error_indicator) {
4241
0
        p->level--;
4242
0
        return NULL;
4243
0
    }
4244
84.0k
    asdl_stmt_seq* _res = NULL;
4245
84.0k
    if (_PyPegen_is_memoized(p, block_type, &_res)) {
4246
26.1k
        p->level--;
4247
26.1k
        return _res;
4248
26.1k
    }
4249
57.8k
    int _mark = p->mark;
4250
57.8k
    { // NEWLINE INDENT statements DEDENT
4251
57.8k
        if (p->error_indicator) {
4252
0
            p->level--;
4253
0
            return NULL;
4254
0
        }
4255
57.8k
        D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4256
57.8k
        asdl_stmt_seq* a;
4257
57.8k
        Token * dedent_var;
4258
57.8k
        Token * indent_var;
4259
57.8k
        Token * newline_var;
4260
57.8k
        if (
4261
57.8k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
4262
22.5k
            &&
4263
22.5k
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
4264
22.4k
            &&
4265
22.4k
            (a = statements_rule(p))  // statements
4266
21.9k
            &&
4267
21.9k
            (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
4268
57.8k
        )
4269
21.9k
        {
4270
21.9k
            D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4271
21.9k
            _res = a;
4272
21.9k
            if (_res == NULL && PyErr_Occurred()) {
4273
0
                p->error_indicator = 1;
4274
0
                p->level--;
4275
0
                return NULL;
4276
0
            }
4277
21.9k
            goto done;
4278
21.9k
        }
4279
35.9k
        p->mark = _mark;
4280
35.9k
        D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4281
35.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4282
35.9k
    }
4283
0
    { // simple_stmts
4284
35.9k
        if (p->error_indicator) {
4285
154
            p->level--;
4286
154
            return NULL;
4287
154
        }
4288
35.7k
        D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
4289
35.7k
        asdl_stmt_seq* simple_stmts_var;
4290
35.7k
        if (
4291
35.7k
            (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
4292
35.7k
        )
4293
32.9k
        {
4294
32.9k
            D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
4295
32.9k
            _res = simple_stmts_var;
4296
32.9k
            goto done;
4297
32.9k
        }
4298
2.83k
        p->mark = _mark;
4299
2.83k
        D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4300
2.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
4301
2.83k
    }
4302
2.83k
    if (p->call_invalid_rules) { // invalid_block
4303
2.27k
        if (p->error_indicator) {
4304
24
            p->level--;
4305
24
            return NULL;
4306
24
        }
4307
2.25k
        D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_block"));
4308
2.25k
        void *invalid_block_var;
4309
2.25k
        if (
4310
2.25k
            (invalid_block_var = invalid_block_rule(p))  // invalid_block
4311
2.25k
        )
4312
0
        {
4313
0
            D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_block"));
4314
0
            _res = invalid_block_var;
4315
0
            goto done;
4316
0
        }
4317
2.25k
        p->mark = _mark;
4318
2.25k
        D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4319
2.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_block"));
4320
2.25k
    }
4321
2.81k
    _res = NULL;
4322
57.6k
  done:
4323
57.6k
    _PyPegen_insert_memo(p, _mark, block_type, _res);
4324
57.6k
    p->level--;
4325
57.6k
    return _res;
4326
2.81k
}
4327
4328
// decorators: (('@' named_expression NEWLINE))+
4329
static asdl_expr_seq*
4330
decorators_rule(Parser *p)
4331
19.3k
{
4332
19.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4333
0
        _Pypegen_stack_overflow(p);
4334
0
    }
4335
19.3k
    if (p->error_indicator) {
4336
0
        p->level--;
4337
0
        return NULL;
4338
0
    }
4339
19.3k
    asdl_expr_seq* _res = NULL;
4340
19.3k
    int _mark = p->mark;
4341
19.3k
    { // (('@' named_expression NEWLINE))+
4342
19.3k
        if (p->error_indicator) {
4343
0
            p->level--;
4344
0
            return NULL;
4345
0
        }
4346
19.3k
        D(fprintf(stderr, "%*c> decorators[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4347
19.3k
        asdl_expr_seq* a;
4348
19.3k
        if (
4349
19.3k
            (a = (asdl_expr_seq*)_loop1_24_rule(p))  // (('@' named_expression NEWLINE))+
4350
19.3k
        )
4351
2.18k
        {
4352
2.18k
            D(fprintf(stderr, "%*c+ decorators[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4353
2.18k
            _res = a;
4354
2.18k
            if (_res == NULL && PyErr_Occurred()) {
4355
0
                p->error_indicator = 1;
4356
0
                p->level--;
4357
0
                return NULL;
4358
0
            }
4359
2.18k
            goto done;
4360
2.18k
        }
4361
17.1k
        p->mark = _mark;
4362
17.1k
        D(fprintf(stderr, "%*c%s decorators[%d-%d]: %s failed!\n", p->level, ' ',
4363
17.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4364
17.1k
    }
4365
17.1k
    _res = NULL;
4366
19.3k
  done:
4367
19.3k
    p->level--;
4368
19.3k
    return _res;
4369
17.1k
}
4370
4371
// class_def: decorators class_def_raw | class_def_raw
4372
static stmt_ty
4373
class_def_rule(Parser *p)
4374
4.28k
{
4375
4.28k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4376
0
        _Pypegen_stack_overflow(p);
4377
0
    }
4378
4.28k
    if (p->error_indicator) {
4379
0
        p->level--;
4380
0
        return NULL;
4381
0
    }
4382
4.28k
    stmt_ty _res = NULL;
4383
4.28k
    int _mark = p->mark;
4384
4.28k
    { // decorators class_def_raw
4385
4.28k
        if (p->error_indicator) {
4386
0
            p->level--;
4387
0
            return NULL;
4388
0
        }
4389
4.28k
        D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
4390
4.28k
        asdl_expr_seq* a;
4391
4.28k
        stmt_ty b;
4392
4.28k
        if (
4393
4.28k
            (a = decorators_rule(p))  // decorators
4394
562
            &&
4395
562
            (b = class_def_raw_rule(p))  // class_def_raw
4396
4.28k
        )
4397
383
        {
4398
383
            D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
4399
383
            _res = _PyPegen_class_def_decorators ( p , a , b );
4400
383
            if (_res == NULL && PyErr_Occurred()) {
4401
0
                p->error_indicator = 1;
4402
0
                p->level--;
4403
0
                return NULL;
4404
0
            }
4405
383
            goto done;
4406
383
        }
4407
3.90k
        p->mark = _mark;
4408
3.90k
        D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
4409
3.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators class_def_raw"));
4410
3.90k
    }
4411
0
    { // class_def_raw
4412
3.90k
        if (p->error_indicator) {
4413
3
            p->level--;
4414
3
            return NULL;
4415
3
        }
4416
3.90k
        D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
4417
3.90k
        stmt_ty class_def_raw_var;
4418
3.90k
        if (
4419
3.90k
            (class_def_raw_var = class_def_raw_rule(p))  // class_def_raw
4420
3.90k
        )
4421
3.47k
        {
4422
3.47k
            D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
4423
3.47k
            _res = class_def_raw_var;
4424
3.47k
            goto done;
4425
3.47k
        }
4426
427
        p->mark = _mark;
4427
427
        D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
4428
427
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_def_raw"));
4429
427
    }
4430
427
    _res = NULL;
4431
4.28k
  done:
4432
4.28k
    p->level--;
4433
4.28k
    return _res;
4434
427
}
4435
4436
// class_def_raw:
4437
//     | invalid_class_def_raw
4438
//     | 'class' NAME type_params? ['(' arguments? ')'] ':' block
4439
static stmt_ty
4440
class_def_raw_rule(Parser *p)
4441
4.46k
{
4442
4.46k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4443
0
        _Pypegen_stack_overflow(p);
4444
0
    }
4445
4.46k
    if (p->error_indicator) {
4446
0
        p->level--;
4447
0
        return NULL;
4448
0
    }
4449
4.46k
    stmt_ty _res = NULL;
4450
4.46k
    int _mark = p->mark;
4451
4.46k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4452
0
        p->error_indicator = 1;
4453
0
        p->level--;
4454
0
        return NULL;
4455
0
    }
4456
4.46k
    int _start_lineno = p->tokens[_mark]->lineno;
4457
4.46k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4458
4.46k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4459
4.46k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4460
4.46k
    if (p->call_invalid_rules) { // invalid_class_def_raw
4461
1.21k
        if (p->error_indicator) {
4462
0
            p->level--;
4463
0
            return NULL;
4464
0
        }
4465
1.21k
        D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
4466
1.21k
        void *invalid_class_def_raw_var;
4467
1.21k
        if (
4468
1.21k
            (invalid_class_def_raw_var = invalid_class_def_raw_rule(p))  // invalid_class_def_raw
4469
1.21k
        )
4470
0
        {
4471
0
            D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
4472
0
            _res = invalid_class_def_raw_var;
4473
0
            goto done;
4474
0
        }
4475
1.21k
        p->mark = _mark;
4476
1.21k
        D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4477
1.21k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_def_raw"));
4478
1.21k
    }
4479
4.46k
    { // 'class' NAME type_params? ['(' arguments? ')'] ':' block
4480
4.46k
        if (p->error_indicator) {
4481
17
            p->level--;
4482
17
            return NULL;
4483
17
        }
4484
4.44k
        D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' block"));
4485
4.44k
        Token * _keyword;
4486
4.44k
        Token * _literal;
4487
4.44k
        expr_ty a;
4488
4.44k
        void *b;
4489
4.44k
        asdl_stmt_seq* c;
4490
4.44k
        void *t;
4491
4.44k
        if (
4492
4.44k
            (_keyword = _PyPegen_expect_token(p, 710))  // token='class'
4493
4.01k
            &&
4494
4.01k
            (a = _PyPegen_name_token(p))  // NAME
4495
3.99k
            &&
4496
3.99k
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
4497
3.99k
            &&
4498
3.99k
            (b = _tmp_25_rule(p), !p->error_indicator)  // ['(' arguments? ')']
4499
3.99k
            &&
4500
3.99k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
4501
3.93k
            &&
4502
3.93k
            (c = block_rule(p))  // block
4503
4.44k
        )
4504
3.85k
        {
4505
3.85k
            D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' block"));
4506
3.85k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4507
3.85k
            if (_token == NULL) {
4508
0
                p->level--;
4509
0
                return NULL;
4510
0
            }
4511
3.85k
            int _end_lineno = _token->end_lineno;
4512
3.85k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4513
3.85k
            int _end_col_offset = _token->end_col_offset;
4514
3.85k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4515
3.85k
            _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 );
4516
3.85k
            if (_res == NULL && PyErr_Occurred()) {
4517
0
                p->error_indicator = 1;
4518
0
                p->level--;
4519
0
                return NULL;
4520
0
            }
4521
3.85k
            goto done;
4522
3.85k
        }
4523
589
        p->mark = _mark;
4524
589
        D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4525
589
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' block"));
4526
589
    }
4527
589
    _res = NULL;
4528
4.44k
  done:
4529
4.44k
    p->level--;
4530
4.44k
    return _res;
4531
589
}
4532
4533
// function_def: decorators function_def_raw | function_def_raw
4534
static stmt_ty
4535
function_def_rule(Parser *p)
4536
15.0k
{
4537
15.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4538
0
        _Pypegen_stack_overflow(p);
4539
0
    }
4540
15.0k
    if (p->error_indicator) {
4541
0
        p->level--;
4542
0
        return NULL;
4543
0
    }
4544
15.0k
    stmt_ty _res = NULL;
4545
15.0k
    int _mark = p->mark;
4546
15.0k
    { // decorators function_def_raw
4547
15.0k
        if (p->error_indicator) {
4548
0
            p->level--;
4549
0
            return NULL;
4550
0
        }
4551
15.0k
        D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
4552
15.0k
        asdl_expr_seq* d;
4553
15.0k
        stmt_ty f;
4554
15.0k
        if (
4555
15.0k
            (d = decorators_rule(p))  // decorators
4556
1.62k
            &&
4557
1.62k
            (f = function_def_raw_rule(p))  // function_def_raw
4558
15.0k
        )
4559
1.04k
        {
4560
1.04k
            D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
4561
1.04k
            _res = _PyPegen_function_def_decorators ( p , d , f );
4562
1.04k
            if (_res == NULL && PyErr_Occurred()) {
4563
0
                p->error_indicator = 1;
4564
0
                p->level--;
4565
0
                return NULL;
4566
0
            }
4567
1.04k
            goto done;
4568
1.04k
        }
4569
13.9k
        p->mark = _mark;
4570
13.9k
        D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4571
13.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators function_def_raw"));
4572
13.9k
    }
4573
0
    { // function_def_raw
4574
13.9k
        if (p->error_indicator) {
4575
35
            p->level--;
4576
35
            return NULL;
4577
35
        }
4578
13.9k
        D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
4579
13.9k
        stmt_ty function_def_raw_var;
4580
13.9k
        if (
4581
13.9k
            (function_def_raw_var = function_def_raw_rule(p))  // function_def_raw
4582
13.9k
        )
4583
10.4k
        {
4584
10.4k
            D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
4585
10.4k
            _res = function_def_raw_var;
4586
10.4k
            goto done;
4587
10.4k
        }
4588
3.52k
        p->mark = _mark;
4589
3.52k
        D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4590
3.52k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "function_def_raw"));
4591
3.52k
    }
4592
3.52k
    _res = NULL;
4593
15.0k
  done:
4594
15.0k
    p->level--;
4595
15.0k
    return _res;
4596
3.52k
}
4597
4598
// function_def_raw:
4599
//     | invalid_def_raw
4600
//     | 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4601
//     | 'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4602
static stmt_ty
4603
function_def_raw_rule(Parser *p)
4604
15.5k
{
4605
15.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4606
0
        _Pypegen_stack_overflow(p);
4607
0
    }
4608
15.5k
    if (p->error_indicator) {
4609
0
        p->level--;
4610
0
        return NULL;
4611
0
    }
4612
15.5k
    stmt_ty _res = NULL;
4613
15.5k
    int _mark = p->mark;
4614
15.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4615
0
        p->error_indicator = 1;
4616
0
        p->level--;
4617
0
        return NULL;
4618
0
    }
4619
15.5k
    int _start_lineno = p->tokens[_mark]->lineno;
4620
15.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
4621
15.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
4622
15.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
4623
15.5k
    if (p->call_invalid_rules) { // invalid_def_raw
4624
3.91k
        if (p->error_indicator) {
4625
0
            p->level--;
4626
0
            return NULL;
4627
0
        }
4628
3.91k
        D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
4629
3.91k
        void *invalid_def_raw_var;
4630
3.91k
        if (
4631
3.91k
            (invalid_def_raw_var = invalid_def_raw_rule(p))  // invalid_def_raw
4632
3.91k
        )
4633
2.12k
        {
4634
2.12k
            D(fprintf(stderr, "%*c+ function_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
4635
2.12k
            _res = invalid_def_raw_var;
4636
2.12k
            goto done;
4637
2.12k
        }
4638
1.79k
        p->mark = _mark;
4639
1.79k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4640
1.79k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_def_raw"));
4641
1.79k
    }
4642
13.4k
    { // 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4643
13.4k
        if (p->error_indicator) {
4644
226
            p->level--;
4645
226
            return NULL;
4646
226
        }
4647
13.2k
        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"));
4648
13.2k
        Token * _keyword;
4649
13.2k
        Token * _literal;
4650
13.2k
        Token * _literal_1;
4651
13.2k
        Token * _literal_2;
4652
13.2k
        void *a;
4653
13.2k
        asdl_stmt_seq* b;
4654
13.2k
        expr_ty n;
4655
13.2k
        void *params;
4656
13.2k
        void *t;
4657
13.2k
        void *tc;
4658
13.2k
        if (
4659
13.2k
            (_keyword = _PyPegen_expect_token(p, 708))  // token='def'
4660
9.45k
            &&
4661
9.45k
            (n = _PyPegen_name_token(p))  // NAME
4662
9.43k
            &&
4663
9.43k
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
4664
9.41k
            &&
4665
9.41k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
4666
9.34k
            &&
4667
9.34k
            (params = params_rule(p), !p->error_indicator)  // params?
4668
9.31k
            &&
4669
9.31k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4670
8.99k
            &&
4671
8.99k
            (a = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
4672
8.98k
            &&
4673
8.98k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
4674
8.92k
            &&
4675
8.92k
            (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
4676
8.92k
            &&
4677
8.92k
            (b = block_rule(p))  // block
4678
13.2k
        )
4679
8.75k
        {
4680
8.75k
            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"));
4681
8.75k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4682
8.75k
            if (_token == NULL) {
4683
0
                p->level--;
4684
0
                return NULL;
4685
0
            }
4686
8.75k
            int _end_lineno = _token->end_lineno;
4687
8.75k
            UNUSED(_end_lineno); // Only used by EXTRA macro
4688
8.75k
            int _end_col_offset = _token->end_col_offset;
4689
8.75k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4690
8.75k
            _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 );
4691
8.75k
            if (_res == NULL && PyErr_Occurred()) {
4692
0
                p->error_indicator = 1;
4693
0
                p->level--;
4694
0
                return NULL;
4695
0
            }
4696
8.75k
            goto done;
4697
8.75k
        }
4698
4.47k
        p->mark = _mark;
4699
4.47k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4700
4.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block"));
4701
4.47k
    }
4702
0
    { // 'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block
4703
4.47k
        if (p->error_indicator) {
4704
83
            p->level--;
4705
83
            return NULL;
4706
83
        }
4707
4.38k
        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"));
4708
4.38k
        Token * _keyword;
4709
4.38k
        Token * _keyword_1;
4710
4.38k
        Token * _literal;
4711
4.38k
        Token * _literal_1;
4712
4.38k
        Token * _literal_2;
4713
4.38k
        void *a;
4714
4.38k
        asdl_stmt_seq* b;
4715
4.38k
        expr_ty n;
4716
4.38k
        void *params;
4717
4.38k
        void *t;
4718
4.38k
        void *tc;
4719
4.38k
        if (
4720
4.38k
            (_keyword = _PyPegen_expect_token(p, 707))  // token='async'
4721
2.57k
            &&
4722
2.57k
            (_keyword_1 = _PyPegen_expect_token(p, 708))  // token='def'
4723
633
            &&
4724
633
            (n = _PyPegen_name_token(p))  // NAME
4725
628
            &&
4726
628
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
4727
627
            &&
4728
627
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
4729
626
            &&
4730
626
            (params = params_rule(p), !p->error_indicator)  // params?
4731
625
            &&
4732
625
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4733
622
            &&
4734
622
            (a = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
4735
621
            &&
4736
621
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
4737
620
            &&
4738
620
            (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
4739
619
            &&
4740
619
            (b = block_rule(p))  // block
4741
4.38k
        )
4742
598
        {
4743
598
            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"));
4744
598
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4745
598
            if (_token == NULL) {
4746
0
                p->level--;
4747
0
                return NULL;
4748
0
            }
4749
598
            int _end_lineno = _token->end_lineno;
4750
598
            UNUSED(_end_lineno); // Only used by EXTRA macro
4751
598
            int _end_col_offset = _token->end_col_offset;
4752
598
            UNUSED(_end_col_offset); // Only used by EXTRA macro
4753
598
            _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 ) );
4754
598
            if (_res == NULL && PyErr_Occurred()) {
4755
0
                p->error_indicator = 1;
4756
0
                p->level--;
4757
0
                return NULL;
4758
0
            }
4759
598
            goto done;
4760
598
        }
4761
3.79k
        p->mark = _mark;
4762
3.79k
        D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4763
3.79k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'def' NAME type_params? '(' params? ')' ['->' expression] ':' func_type_comment? block"));
4764
3.79k
    }
4765
3.79k
    _res = NULL;
4766
15.2k
  done:
4767
15.2k
    p->level--;
4768
15.2k
    return _res;
4769
3.79k
}
4770
4771
// params: invalid_parameters | parameters
4772
static arguments_ty
4773
params_rule(Parser *p)
4774
14.8k
{
4775
14.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4776
0
        _Pypegen_stack_overflow(p);
4777
0
    }
4778
14.8k
    if (p->error_indicator) {
4779
0
        p->level--;
4780
0
        return NULL;
4781
0
    }
4782
14.8k
    arguments_ty _res = NULL;
4783
14.8k
    int _mark = p->mark;
4784
14.8k
    if (p->call_invalid_rules) { // invalid_parameters
4785
5.09k
        if (p->error_indicator) {
4786
0
            p->level--;
4787
0
            return NULL;
4788
0
        }
4789
5.09k
        D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
4790
5.09k
        void *invalid_parameters_var;
4791
5.09k
        if (
4792
5.09k
            (invalid_parameters_var = invalid_parameters_rule(p))  // invalid_parameters
4793
5.09k
        )
4794
0
        {
4795
0
            D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
4796
0
            _res = invalid_parameters_var;
4797
0
            goto done;
4798
0
        }
4799
5.09k
        p->mark = _mark;
4800
5.09k
        D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
4801
5.09k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_parameters"));
4802
5.09k
    }
4803
14.8k
    { // parameters
4804
14.8k
        if (p->error_indicator) {
4805
28
            p->level--;
4806
28
            return NULL;
4807
28
        }
4808
14.8k
        D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "parameters"));
4809
14.8k
        arguments_ty parameters_var;
4810
14.8k
        if (
4811
14.8k
            (parameters_var = parameters_rule(p))  // parameters
4812
14.8k
        )
4813
11.9k
        {
4814
11.9k
            D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "parameters"));
4815
11.9k
            _res = parameters_var;
4816
11.9k
            goto done;
4817
11.9k
        }
4818
2.84k
        p->mark = _mark;
4819
2.84k
        D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
4820
2.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "parameters"));
4821
2.84k
    }
4822
2.84k
    _res = NULL;
4823
14.8k
  done:
4824
14.8k
    p->level--;
4825
14.8k
    return _res;
4826
2.84k
}
4827
4828
// parameters:
4829
//     | slash_no_default param_no_default* param_with_default* star_etc?
4830
//     | slash_with_default param_with_default* star_etc?
4831
//     | param_no_default+ param_with_default* star_etc?
4832
//     | param_with_default+ star_etc?
4833
//     | star_etc
4834
static arguments_ty
4835
parameters_rule(Parser *p)
4836
14.8k
{
4837
14.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
4838
0
        _Pypegen_stack_overflow(p);
4839
0
    }
4840
14.8k
    if (p->error_indicator) {
4841
0
        p->level--;
4842
0
        return NULL;
4843
0
    }
4844
14.8k
    arguments_ty _res = NULL;
4845
14.8k
    int _mark = p->mark;
4846
14.8k
    { // slash_no_default param_no_default* param_with_default* star_etc?
4847
14.8k
        if (p->error_indicator) {
4848
0
            p->level--;
4849
0
            return NULL;
4850
0
        }
4851
14.8k
        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?"));
4852
14.8k
        asdl_arg_seq* a;
4853
14.8k
        asdl_arg_seq* b;
4854
14.8k
        asdl_seq * c;
4855
14.8k
        void *d;
4856
14.8k
        if (
4857
14.8k
            (a = slash_no_default_rule(p))  // slash_no_default
4858
913
            &&
4859
913
            (b = (asdl_arg_seq*)_loop0_27_rule(p))  // param_no_default*
4860
913
            &&
4861
913
            (c = _loop0_28_rule(p))  // param_with_default*
4862
911
            &&
4863
911
            (d = star_etc_rule(p), !p->error_indicator)  // star_etc?
4864
14.8k
        )
4865
909
        {
4866
909
            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?"));
4867
909
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , a , NULL , b , c , d ) );
4868
909
            if (_res == NULL && PyErr_Occurred()) {
4869
0
                p->error_indicator = 1;
4870
0
                p->level--;
4871
0
                return NULL;
4872
0
            }
4873
909
            goto done;
4874
909
        }
4875
13.9k
        p->mark = _mark;
4876
13.9k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4877
13.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default param_no_default* param_with_default* star_etc?"));
4878
13.9k
    }
4879
0
    { // slash_with_default param_with_default* star_etc?
4880
13.9k
        if (p->error_indicator) {
4881
15
            p->level--;
4882
15
            return NULL;
4883
15
        }
4884
13.9k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4885
13.9k
        SlashWithDefault* a;
4886
13.9k
        asdl_seq * b;
4887
13.9k
        void *c;
4888
13.9k
        if (
4889
13.9k
            (a = slash_with_default_rule(p))  // slash_with_default
4890
820
            &&
4891
820
            (b = _loop0_28_rule(p))  // param_with_default*
4892
820
            &&
4893
820
            (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
4894
13.9k
        )
4895
818
        {
4896
818
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4897
818
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , NULL , a , NULL , b , c ) );
4898
818
            if (_res == NULL && PyErr_Occurred()) {
4899
0
                p->error_indicator = 1;
4900
0
                p->level--;
4901
0
                return NULL;
4902
0
            }
4903
818
            goto done;
4904
818
        }
4905
13.0k
        p->mark = _mark;
4906
13.0k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4907
13.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4908
13.0k
    }
4909
0
    { // param_no_default+ param_with_default* star_etc?
4910
13.0k
        if (p->error_indicator) {
4911
8
            p->level--;
4912
8
            return NULL;
4913
8
        }
4914
13.0k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4915
13.0k
        asdl_arg_seq* a;
4916
13.0k
        asdl_seq * b;
4917
13.0k
        void *c;
4918
13.0k
        if (
4919
13.0k
            (a = (asdl_arg_seq*)_loop1_29_rule(p))  // param_no_default+
4920
6.46k
            &&
4921
6.46k
            (b = _loop0_28_rule(p))  // param_with_default*
4922
6.46k
            &&
4923
6.46k
            (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
4924
13.0k
        )
4925
6.46k
        {
4926
6.46k
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4927
6.46k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
4928
6.46k
            if (_res == NULL && PyErr_Occurred()) {
4929
0
                p->error_indicator = 1;
4930
0
                p->level--;
4931
0
                return NULL;
4932
0
            }
4933
6.46k
            goto done;
4934
6.46k
        }
4935
6.61k
        p->mark = _mark;
4936
6.61k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4937
6.61k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4938
6.61k
    }
4939
0
    { // param_with_default+ star_etc?
4940
6.61k
        if (p->error_indicator) {
4941
2
            p->level--;
4942
2
            return NULL;
4943
2
        }
4944
6.61k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
4945
6.61k
        asdl_seq * a;
4946
6.61k
        void *b;
4947
6.61k
        if (
4948
6.61k
            (a = _loop1_30_rule(p))  // param_with_default+
4949
1.07k
            &&
4950
1.07k
            (b = star_etc_rule(p), !p->error_indicator)  // star_etc?
4951
6.61k
        )
4952
1.06k
        {
4953
1.06k
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
4954
1.06k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
4955
1.06k
            if (_res == NULL && PyErr_Occurred()) {
4956
0
                p->error_indicator = 1;
4957
0
                p->level--;
4958
0
                return NULL;
4959
0
            }
4960
1.06k
            goto done;
4961
1.06k
        }
4962
5.54k
        p->mark = _mark;
4963
5.54k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4964
5.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+ star_etc?"));
4965
5.54k
    }
4966
0
    { // star_etc
4967
5.54k
        if (p->error_indicator) {
4968
1
            p->level--;
4969
1
            return NULL;
4970
1
        }
4971
5.54k
        D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_etc"));
4972
5.54k
        StarEtc* a;
4973
5.54k
        if (
4974
5.54k
            (a = star_etc_rule(p))  // star_etc
4975
5.54k
        )
4976
2.73k
        {
4977
2.73k
            D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_etc"));
4978
2.73k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
4979
2.73k
            if (_res == NULL && PyErr_Occurred()) {
4980
0
                p->error_indicator = 1;
4981
0
                p->level--;
4982
0
                return NULL;
4983
0
            }
4984
2.73k
            goto done;
4985
2.73k
        }
4986
2.81k
        p->mark = _mark;
4987
2.81k
        D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4988
2.81k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_etc"));
4989
2.81k
    }
4990
2.81k
    _res = NULL;
4991
14.8k
  done:
4992
14.8k
    p->level--;
4993
14.8k
    return _res;
4994
2.81k
}
4995
4996
// slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
4997
static asdl_arg_seq*
4998
slash_no_default_rule(Parser *p)
4999
30.0k
{
5000
30.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5001
0
        _Pypegen_stack_overflow(p);
5002
0
    }
5003
30.0k
    if (p->error_indicator) {
5004
0
        p->level--;
5005
0
        return NULL;
5006
0
    }
5007
30.0k
    asdl_arg_seq* _res = NULL;
5008
30.0k
    int _mark = p->mark;
5009
30.0k
    { // param_no_default+ '/' ','
5010
30.0k
        if (p->error_indicator) {
5011
0
            p->level--;
5012
0
            return NULL;
5013
0
        }
5014
30.0k
        D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
5015
30.0k
        Token * _literal;
5016
30.0k
        Token * _literal_1;
5017
30.0k
        asdl_arg_seq* a;
5018
30.0k
        if (
5019
30.0k
            (a = (asdl_arg_seq*)_loop1_29_rule(p))  // param_no_default+
5020
11.4k
            &&
5021
11.4k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5022
2.45k
            &&
5023
2.45k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
5024
30.0k
        )
5025
538
        {
5026
538
            D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
5027
538
            _res = a;
5028
538
            if (_res == NULL && PyErr_Occurred()) {
5029
0
                p->error_indicator = 1;
5030
0
                p->level--;
5031
0
                return NULL;
5032
0
            }
5033
538
            goto done;
5034
538
        }
5035
29.5k
        p->mark = _mark;
5036
29.5k
        D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5037
29.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' ','"));
5038
29.5k
    }
5039
0
    { // param_no_default+ '/' &')'
5040
29.5k
        if (p->error_indicator) {
5041
12
            p->level--;
5042
12
            return NULL;
5043
12
        }
5044
29.5k
        D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
5045
29.5k
        Token * _literal;
5046
29.5k
        asdl_arg_seq* a;
5047
29.5k
        if (
5048
29.5k
            (a = (asdl_arg_seq*)_loop1_29_rule(p))  // param_no_default+
5049
10.9k
            &&
5050
10.9k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5051
1.91k
            &&
5052
1.91k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5053
29.5k
        )
5054
1.89k
        {
5055
1.89k
            D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
5056
1.89k
            _res = a;
5057
1.89k
            if (_res == NULL && PyErr_Occurred()) {
5058
0
                p->error_indicator = 1;
5059
0
                p->level--;
5060
0
                return NULL;
5061
0
            }
5062
1.89k
            goto done;
5063
1.89k
        }
5064
27.6k
        p->mark = _mark;
5065
27.6k
        D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5066
27.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' &')'"));
5067
27.6k
    }
5068
27.6k
    _res = NULL;
5069
30.0k
  done:
5070
30.0k
    p->level--;
5071
30.0k
    return _res;
5072
27.6k
}
5073
5074
// slash_with_default:
5075
//     | param_no_default* param_with_default+ '/' ','
5076
//     | param_no_default* param_with_default+ '/' &')'
5077
static SlashWithDefault*
5078
slash_with_default_rule(Parser *p)
5079
28.1k
{
5080
28.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5081
0
        _Pypegen_stack_overflow(p);
5082
0
    }
5083
28.1k
    if (p->error_indicator) {
5084
0
        p->level--;
5085
0
        return NULL;
5086
0
    }
5087
28.1k
    SlashWithDefault* _res = NULL;
5088
28.1k
    int _mark = p->mark;
5089
28.1k
    { // param_no_default* param_with_default+ '/' ','
5090
28.1k
        if (p->error_indicator) {
5091
0
            p->level--;
5092
0
            return NULL;
5093
0
        }
5094
28.1k
        D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
5095
28.1k
        Token * _literal;
5096
28.1k
        Token * _literal_1;
5097
28.1k
        asdl_seq * a;
5098
28.1k
        asdl_seq * b;
5099
28.1k
        if (
5100
28.1k
            (a = _loop0_27_rule(p))  // param_no_default*
5101
28.1k
            &&
5102
28.1k
            (b = _loop1_30_rule(p))  // param_with_default+
5103
5.97k
            &&
5104
5.97k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5105
2.14k
            &&
5106
2.14k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
5107
28.1k
        )
5108
205
        {
5109
205
            D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
5110
205
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
5111
205
            if (_res == NULL && PyErr_Occurred()) {
5112
0
                p->error_indicator = 1;
5113
0
                p->level--;
5114
0
                return NULL;
5115
0
            }
5116
205
            goto done;
5117
205
        }
5118
27.9k
        p->mark = _mark;
5119
27.9k
        D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5120
27.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
5121
27.9k
    }
5122
0
    { // param_no_default* param_with_default+ '/' &')'
5123
27.9k
        if (p->error_indicator) {
5124
9
            p->level--;
5125
9
            return NULL;
5126
9
        }
5127
27.9k
        D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
5128
27.9k
        Token * _literal;
5129
27.9k
        asdl_seq * a;
5130
27.9k
        asdl_seq * b;
5131
27.9k
        if (
5132
27.9k
            (a = _loop0_27_rule(p))  // param_no_default*
5133
27.9k
            &&
5134
27.9k
            (b = _loop1_30_rule(p))  // param_with_default+
5135
5.77k
            &&
5136
5.77k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
5137
1.93k
            &&
5138
1.93k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5139
27.9k
        )
5140
1.90k
        {
5141
1.90k
            D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
5142
1.90k
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
5143
1.90k
            if (_res == NULL && PyErr_Occurred()) {
5144
0
                p->error_indicator = 1;
5145
0
                p->level--;
5146
0
                return NULL;
5147
0
            }
5148
1.90k
            goto done;
5149
1.90k
        }
5150
26.0k
        p->mark = _mark;
5151
26.0k
        D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5152
26.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
5153
26.0k
    }
5154
26.0k
    _res = NULL;
5155
28.1k
  done:
5156
28.1k
    p->level--;
5157
28.1k
    return _res;
5158
26.0k
}
5159
5160
// star_etc:
5161
//     | invalid_star_etc
5162
//     | '*' param_no_default param_maybe_default* kwds?
5163
//     | '*' param_no_default_star_annotation param_maybe_default* kwds?
5164
//     | '*' ',' param_maybe_default+ kwds?
5165
//     | kwds
5166
static StarEtc*
5167
star_etc_rule(Parser *p)
5168
14.8k
{
5169
14.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5170
0
        _Pypegen_stack_overflow(p);
5171
0
    }
5172
14.8k
    if (p->error_indicator) {
5173
2
        p->level--;
5174
2
        return NULL;
5175
2
    }
5176
14.8k
    StarEtc* _res = NULL;
5177
14.8k
    int _mark = p->mark;
5178
14.8k
    if (p->call_invalid_rules) { // invalid_star_etc
5179
5.06k
        if (p->error_indicator) {
5180
0
            p->level--;
5181
0
            return NULL;
5182
0
        }
5183
5.06k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
5184
5.06k
        void *invalid_star_etc_var;
5185
5.06k
        if (
5186
5.06k
            (invalid_star_etc_var = invalid_star_etc_rule(p))  // invalid_star_etc
5187
5.06k
        )
5188
0
        {
5189
0
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
5190
0
            _res = invalid_star_etc_var;
5191
0
            goto done;
5192
0
        }
5193
5.06k
        p->mark = _mark;
5194
5.06k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5195
5.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_star_etc"));
5196
5.06k
    }
5197
14.8k
    { // '*' param_no_default param_maybe_default* kwds?
5198
14.8k
        if (p->error_indicator) {
5199
9
            p->level--;
5200
9
            return NULL;
5201
9
        }
5202
14.8k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5203
14.8k
        Token * _literal;
5204
14.8k
        arg_ty a;
5205
14.8k
        asdl_seq * b;
5206
14.8k
        void *c;
5207
14.8k
        if (
5208
14.8k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5209
2.83k
            &&
5210
2.83k
            (a = param_no_default_rule(p))  // param_no_default
5211
859
            &&
5212
859
            (b = _loop0_31_rule(p))  // param_maybe_default*
5213
859
            &&
5214
859
            (c = kwds_rule(p), !p->error_indicator)  // kwds?
5215
14.8k
        )
5216
858
        {
5217
858
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5218
858
            _res = _PyPegen_star_etc ( p , a , b , c );
5219
858
            if (_res == NULL && PyErr_Occurred()) {
5220
0
                p->error_indicator = 1;
5221
0
                p->level--;
5222
0
                return NULL;
5223
0
            }
5224
858
            goto done;
5225
858
        }
5226
13.9k
        p->mark = _mark;
5227
13.9k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5228
13.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5229
13.9k
    }
5230
0
    { // '*' param_no_default_star_annotation param_maybe_default* kwds?
5231
13.9k
        if (p->error_indicator) {
5232
6
            p->level--;
5233
6
            return NULL;
5234
6
        }
5235
13.9k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param_no_default_star_annotation param_maybe_default* kwds?"));
5236
13.9k
        Token * _literal;
5237
13.9k
        arg_ty a;
5238
13.9k
        asdl_seq * b;
5239
13.9k
        void *c;
5240
13.9k
        if (
5241
13.9k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5242
1.96k
            &&
5243
1.96k
            (a = param_no_default_star_annotation_rule(p))  // param_no_default_star_annotation
5244
857
            &&
5245
857
            (b = _loop0_31_rule(p))  // param_maybe_default*
5246
857
            &&
5247
857
            (c = kwds_rule(p), !p->error_indicator)  // kwds?
5248
13.9k
        )
5249
855
        {
5250
855
            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?"));
5251
855
            _res = _PyPegen_star_etc ( p , a , b , c );
5252
855
            if (_res == NULL && PyErr_Occurred()) {
5253
0
                p->error_indicator = 1;
5254
0
                p->level--;
5255
0
                return NULL;
5256
0
            }
5257
855
            goto done;
5258
855
        }
5259
13.0k
        p->mark = _mark;
5260
13.0k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5261
13.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default_star_annotation param_maybe_default* kwds?"));
5262
13.0k
    }
5263
0
    { // '*' ',' param_maybe_default+ kwds?
5264
13.0k
        if (p->error_indicator) {
5265
5
            p->level--;
5266
5
            return NULL;
5267
5
        }
5268
13.0k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5269
13.0k
        Token * _literal;
5270
13.0k
        Token * _literal_1;
5271
13.0k
        asdl_seq * b;
5272
13.0k
        void *c;
5273
13.0k
        if (
5274
13.0k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5275
1.10k
            &&
5276
1.10k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
5277
1.04k
            &&
5278
1.04k
            (b = _loop1_32_rule(p))  // param_maybe_default+
5279
998
            &&
5280
998
            (c = kwds_rule(p), !p->error_indicator)  // kwds?
5281
13.0k
        )
5282
997
        {
5283
997
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5284
997
            _res = _PyPegen_star_etc ( p , NULL , b , c );
5285
997
            if (_res == NULL && PyErr_Occurred()) {
5286
0
                p->error_indicator = 1;
5287
0
                p->level--;
5288
0
                return NULL;
5289
0
            }
5290
997
            goto done;
5291
997
        }
5292
12.0k
        p->mark = _mark;
5293
12.0k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5294
12.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5295
12.0k
    }
5296
0
    { // kwds
5297
12.0k
        if (p->error_indicator) {
5298
4
            p->level--;
5299
4
            return NULL;
5300
4
        }
5301
12.0k
        D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwds"));
5302
12.0k
        arg_ty a;
5303
12.0k
        if (
5304
12.0k
            (a = kwds_rule(p))  // kwds
5305
12.0k
        )
5306
601
        {
5307
601
            D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwds"));
5308
601
            _res = _PyPegen_star_etc ( p , NULL , NULL , a );
5309
601
            if (_res == NULL && PyErr_Occurred()) {
5310
0
                p->error_indicator = 1;
5311
0
                p->level--;
5312
0
                return NULL;
5313
0
            }
5314
601
            goto done;
5315
601
        }
5316
11.4k
        p->mark = _mark;
5317
11.4k
        D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5318
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwds"));
5319
11.4k
    }
5320
11.4k
    _res = NULL;
5321
14.7k
  done:
5322
14.7k
    p->level--;
5323
14.7k
    return _res;
5324
11.4k
}
5325
5326
// kwds: invalid_kwds | '**' param_no_default
5327
static arg_ty
5328
kwds_rule(Parser *p)
5329
14.7k
{
5330
14.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5331
0
        _Pypegen_stack_overflow(p);
5332
0
    }
5333
14.7k
    if (p->error_indicator) {
5334
3
        p->level--;
5335
3
        return NULL;
5336
3
    }
5337
14.7k
    arg_ty _res = NULL;
5338
14.7k
    int _mark = p->mark;
5339
14.7k
    if (p->call_invalid_rules) { // invalid_kwds
5340
5.05k
        if (p->error_indicator) {
5341
0
            p->level--;
5342
0
            return NULL;
5343
0
        }
5344
5.05k
        D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwds"));
5345
5.05k
        void *invalid_kwds_var;
5346
5.05k
        if (
5347
5.05k
            (invalid_kwds_var = invalid_kwds_rule(p))  // invalid_kwds
5348
5.05k
        )
5349
0
        {
5350
0
            D(fprintf(stderr, "%*c+ kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwds"));
5351
0
            _res = invalid_kwds_var;
5352
0
            goto done;
5353
0
        }
5354
5.05k
        p->mark = _mark;
5355
5.05k
        D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
5356
5.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwds"));
5357
5.05k
    }
5358
14.7k
    { // '**' param_no_default
5359
14.7k
        if (p->error_indicator) {
5360
6
            p->level--;
5361
6
            return NULL;
5362
6
        }
5363
14.7k
        D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
5364
14.7k
        Token * _literal;
5365
14.7k
        arg_ty a;
5366
14.7k
        if (
5367
14.7k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
5368
754
            &&
5369
754
            (a = param_no_default_rule(p))  // param_no_default
5370
14.7k
        )
5371
734
        {
5372
734
            D(fprintf(stderr, "%*c+ kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
5373
734
            _res = a;
5374
734
            if (_res == NULL && PyErr_Occurred()) {
5375
0
                p->error_indicator = 1;
5376
0
                p->level--;
5377
0
                return NULL;
5378
0
            }
5379
734
            goto done;
5380
734
        }
5381
14.0k
        p->mark = _mark;
5382
14.0k
        D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
5383
14.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param_no_default"));
5384
14.0k
    }
5385
14.0k
    _res = NULL;
5386
14.7k
  done:
5387
14.7k
    p->level--;
5388
14.7k
    return _res;
5389
14.0k
}
5390
5391
// param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
5392
static arg_ty
5393
param_no_default_rule(Parser *p)
5394
224k
{
5395
224k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5396
0
        _Pypegen_stack_overflow(p);
5397
0
    }
5398
224k
    if (p->error_indicator) {
5399
0
        p->level--;
5400
0
        return NULL;
5401
0
    }
5402
224k
    arg_ty _res = NULL;
5403
224k
    int _mark = p->mark;
5404
224k
    { // param ',' TYPE_COMMENT?
5405
224k
        if (p->error_indicator) {
5406
0
            p->level--;
5407
0
            return NULL;
5408
0
        }
5409
224k
        D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
5410
224k
        Token * _literal;
5411
224k
        arg_ty a;
5412
224k
        void *tc;
5413
224k
        if (
5414
224k
            (a = param_rule(p))  // param
5415
111k
            &&
5416
111k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5417
46.9k
            &&
5418
46.9k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5419
224k
        )
5420
46.9k
        {
5421
46.9k
            D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
5422
46.9k
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5423
46.9k
            if (_res == NULL && PyErr_Occurred()) {
5424
0
                p->error_indicator = 1;
5425
0
                p->level--;
5426
0
                return NULL;
5427
0
            }
5428
46.9k
            goto done;
5429
46.9k
        }
5430
177k
        p->mark = _mark;
5431
177k
        D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5432
177k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param ',' TYPE_COMMENT?"));
5433
177k
    }
5434
0
    { // param TYPE_COMMENT? &')'
5435
177k
        if (p->error_indicator) {
5436
27
            p->level--;
5437
27
            return NULL;
5438
27
        }
5439
177k
        D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
5440
177k
        arg_ty a;
5441
177k
        void *tc;
5442
177k
        if (
5443
177k
            (a = param_rule(p))  // param
5444
65.0k
            &&
5445
65.0k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5446
65.0k
            &&
5447
65.0k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5448
177k
        )
5449
32.8k
        {
5450
32.8k
            D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
5451
32.8k
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5452
32.8k
            if (_res == NULL && PyErr_Occurred()) {
5453
0
                p->error_indicator = 1;
5454
0
                p->level--;
5455
0
                return NULL;
5456
0
            }
5457
32.8k
            goto done;
5458
32.8k
        }
5459
144k
        p->mark = _mark;
5460
144k
        D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5461
144k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param TYPE_COMMENT? &')'"));
5462
144k
    }
5463
144k
    _res = NULL;
5464
224k
  done:
5465
224k
    p->level--;
5466
224k
    return _res;
5467
144k
}
5468
5469
// param_no_default_star_annotation:
5470
//     | param_star_annotation ',' TYPE_COMMENT?
5471
//     | param_star_annotation TYPE_COMMENT? &')'
5472
static arg_ty
5473
param_no_default_star_annotation_rule(Parser *p)
5474
1.96k
{
5475
1.96k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5476
0
        _Pypegen_stack_overflow(p);
5477
0
    }
5478
1.96k
    if (p->error_indicator) {
5479
0
        p->level--;
5480
0
        return NULL;
5481
0
    }
5482
1.96k
    arg_ty _res = NULL;
5483
1.96k
    int _mark = p->mark;
5484
1.96k
    { // param_star_annotation ',' TYPE_COMMENT?
5485
1.96k
        if (p->error_indicator) {
5486
0
            p->level--;
5487
0
            return NULL;
5488
0
        }
5489
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?"));
5490
1.96k
        Token * _literal;
5491
1.96k
        arg_ty a;
5492
1.96k
        void *tc;
5493
1.96k
        if (
5494
1.96k
            (a = param_star_annotation_rule(p))  // param_star_annotation
5495
883
            &&
5496
883
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5497
130
            &&
5498
130
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5499
1.96k
        )
5500
129
        {
5501
129
            D(fprintf(stderr, "%*c+ param_no_default_star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_star_annotation ',' TYPE_COMMENT?"));
5502
129
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5503
129
            if (_res == NULL && PyErr_Occurred()) {
5504
0
                p->error_indicator = 1;
5505
0
                p->level--;
5506
0
                return NULL;
5507
0
            }
5508
129
            goto done;
5509
129
        }
5510
1.83k
        p->mark = _mark;
5511
1.83k
        D(fprintf(stderr, "%*c%s param_no_default_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5512
1.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_star_annotation ',' TYPE_COMMENT?"));
5513
1.83k
    }
5514
0
    { // param_star_annotation TYPE_COMMENT? &')'
5515
1.83k
        if (p->error_indicator) {
5516
3
            p->level--;
5517
3
            return NULL;
5518
3
        }
5519
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? &')'"));
5520
1.83k
        arg_ty a;
5521
1.83k
        void *tc;
5522
1.83k
        if (
5523
1.83k
            (a = param_star_annotation_rule(p))  // param_star_annotation
5524
753
            &&
5525
753
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5526
753
            &&
5527
753
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5528
1.83k
        )
5529
728
        {
5530
728
            D(fprintf(stderr, "%*c+ param_no_default_star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_star_annotation TYPE_COMMENT? &')'"));
5531
728
            _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5532
728
            if (_res == NULL && PyErr_Occurred()) {
5533
0
                p->error_indicator = 1;
5534
0
                p->level--;
5535
0
                return NULL;
5536
0
            }
5537
728
            goto done;
5538
728
        }
5539
1.10k
        p->mark = _mark;
5540
1.10k
        D(fprintf(stderr, "%*c%s param_no_default_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5541
1.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_star_annotation TYPE_COMMENT? &')'"));
5542
1.10k
    }
5543
1.10k
    _res = NULL;
5544
1.96k
  done:
5545
1.96k
    p->level--;
5546
1.96k
    return _res;
5547
1.10k
}
5548
5549
// param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
5550
static NameDefaultPair*
5551
param_with_default_rule(Parser *p)
5552
100k
{
5553
100k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5554
0
        _Pypegen_stack_overflow(p);
5555
0
    }
5556
100k
    if (p->error_indicator) {
5557
0
        p->level--;
5558
0
        return NULL;
5559
0
    }
5560
100k
    NameDefaultPair* _res = NULL;
5561
100k
    int _mark = p->mark;
5562
100k
    { // param default ',' TYPE_COMMENT?
5563
100k
        if (p->error_indicator) {
5564
0
            p->level--;
5565
0
            return NULL;
5566
0
        }
5567
100k
        D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5568
100k
        Token * _literal;
5569
100k
        arg_ty a;
5570
100k
        expr_ty c;
5571
100k
        void *tc;
5572
100k
        if (
5573
100k
            (a = param_rule(p))  // param
5574
26.0k
            &&
5575
26.0k
            (c = default_rule(p))  // default
5576
24.9k
            &&
5577
24.9k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5578
16.1k
            &&
5579
16.1k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5580
100k
        )
5581
16.1k
        {
5582
16.1k
            D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5583
16.1k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5584
16.1k
            if (_res == NULL && PyErr_Occurred()) {
5585
0
                p->error_indicator = 1;
5586
0
                p->level--;
5587
0
                return NULL;
5588
0
            }
5589
16.1k
            goto done;
5590
16.1k
        }
5591
84.1k
        p->mark = _mark;
5592
84.1k
        D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5593
84.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5594
84.1k
    }
5595
0
    { // param default TYPE_COMMENT? &')'
5596
84.1k
        if (p->error_indicator) {
5597
10
            p->level--;
5598
10
            return NULL;
5599
10
        }
5600
84.1k
        D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5601
84.1k
        arg_ty a;
5602
84.1k
        expr_ty c;
5603
84.1k
        void *tc;
5604
84.1k
        if (
5605
84.1k
            (a = param_rule(p))  // param
5606
9.88k
            &&
5607
9.88k
            (c = default_rule(p))  // default
5608
8.71k
            &&
5609
8.71k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5610
8.71k
            &&
5611
8.71k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5612
84.1k
        )
5613
8.56k
        {
5614
8.56k
            D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5615
8.56k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5616
8.56k
            if (_res == NULL && PyErr_Occurred()) {
5617
0
                p->error_indicator = 1;
5618
0
                p->level--;
5619
0
                return NULL;
5620
0
            }
5621
8.56k
            goto done;
5622
8.56k
        }
5623
75.5k
        p->mark = _mark;
5624
75.5k
        D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5625
75.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5626
75.5k
    }
5627
75.5k
    _res = NULL;
5628
100k
  done:
5629
100k
    p->level--;
5630
100k
    return _res;
5631
75.5k
}
5632
5633
// param_maybe_default:
5634
//     | param default? ',' TYPE_COMMENT?
5635
//     | param default? TYPE_COMMENT? &')'
5636
static NameDefaultPair*
5637
param_maybe_default_rule(Parser *p)
5638
27.1k
{
5639
27.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5640
0
        _Pypegen_stack_overflow(p);
5641
0
    }
5642
27.1k
    if (p->error_indicator) {
5643
0
        p->level--;
5644
0
        return NULL;
5645
0
    }
5646
27.1k
    NameDefaultPair* _res = NULL;
5647
27.1k
    int _mark = p->mark;
5648
27.1k
    { // param default? ',' TYPE_COMMENT?
5649
27.1k
        if (p->error_indicator) {
5650
0
            p->level--;
5651
0
            return NULL;
5652
0
        }
5653
27.1k
        D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5654
27.1k
        Token * _literal;
5655
27.1k
        arg_ty a;
5656
27.1k
        void *c;
5657
27.1k
        void *tc;
5658
27.1k
        if (
5659
27.1k
            (a = param_rule(p))  // param
5660
11.6k
            &&
5661
11.6k
            (c = default_rule(p), !p->error_indicator)  // default?
5662
11.6k
            &&
5663
11.6k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
5664
7.03k
            &&
5665
7.03k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5666
27.1k
        )
5667
7.03k
        {
5668
7.03k
            D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5669
7.03k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5670
7.03k
            if (_res == NULL && PyErr_Occurred()) {
5671
0
                p->error_indicator = 1;
5672
0
                p->level--;
5673
0
                return NULL;
5674
0
            }
5675
7.03k
            goto done;
5676
7.03k
        }
5677
20.0k
        p->mark = _mark;
5678
20.0k
        D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5679
20.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5680
20.0k
    }
5681
0
    { // param default? TYPE_COMMENT? &')'
5682
20.0k
        if (p->error_indicator) {
5683
9
            p->level--;
5684
9
            return NULL;
5685
9
        }
5686
20.0k
        D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5687
20.0k
        arg_ty a;
5688
20.0k
        void *c;
5689
20.0k
        void *tc;
5690
20.0k
        if (
5691
20.0k
            (a = param_rule(p))  // param
5692
4.57k
            &&
5693
4.57k
            (c = default_rule(p), !p->error_indicator)  // default?
5694
4.57k
            &&
5695
4.57k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5696
4.57k
            &&
5697
4.57k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5698
20.0k
        )
5699
4.25k
        {
5700
4.25k
            D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5701
4.25k
            _res = _PyPegen_name_default_pair ( p , a , c , tc );
5702
4.25k
            if (_res == NULL && PyErr_Occurred()) {
5703
0
                p->error_indicator = 1;
5704
0
                p->level--;
5705
0
                return NULL;
5706
0
            }
5707
4.25k
            goto done;
5708
4.25k
        }
5709
15.8k
        p->mark = _mark;
5710
15.8k
        D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5711
15.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5712
15.8k
    }
5713
15.8k
    _res = NULL;
5714
27.1k
  done:
5715
27.1k
    p->level--;
5716
27.1k
    return _res;
5717
15.8k
}
5718
5719
// param: NAME annotation?
5720
static arg_ty
5721
param_rule(Parser *p)
5722
635k
{
5723
635k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5724
0
        _Pypegen_stack_overflow(p);
5725
0
    }
5726
635k
    if (p->error_indicator) {
5727
0
        p->level--;
5728
0
        return NULL;
5729
0
    }
5730
635k
    arg_ty _res = NULL;
5731
635k
    int _mark = p->mark;
5732
635k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5733
18
        p->error_indicator = 1;
5734
18
        p->level--;
5735
18
        return NULL;
5736
18
    }
5737
635k
    int _start_lineno = p->tokens[_mark]->lineno;
5738
635k
    UNUSED(_start_lineno); // Only used by EXTRA macro
5739
635k
    int _start_col_offset = p->tokens[_mark]->col_offset;
5740
635k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
5741
635k
    { // NAME annotation?
5742
635k
        if (p->error_indicator) {
5743
0
            p->level--;
5744
0
            return NULL;
5745
0
        }
5746
635k
        D(fprintf(stderr, "%*c> param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
5747
635k
        expr_ty a;
5748
635k
        void *b;
5749
635k
        if (
5750
635k
            (a = _PyPegen_name_token(p))  // NAME
5751
230k
            &&
5752
230k
            (b = annotation_rule(p), !p->error_indicator)  // annotation?
5753
635k
        )
5754
230k
        {
5755
230k
            D(fprintf(stderr, "%*c+ param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
5756
230k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5757
230k
            if (_token == NULL) {
5758
0
                p->level--;
5759
0
                return NULL;
5760
0
            }
5761
230k
            int _end_lineno = _token->end_lineno;
5762
230k
            UNUSED(_end_lineno); // Only used by EXTRA macro
5763
230k
            int _end_col_offset = _token->end_col_offset;
5764
230k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
5765
230k
            _res = _PyAST_arg ( a -> v . Name . id , b , NULL , EXTRA );
5766
230k
            if (_res == NULL && PyErr_Occurred()) {
5767
0
                p->error_indicator = 1;
5768
0
                p->level--;
5769
0
                return NULL;
5770
0
            }
5771
230k
            goto done;
5772
230k
        }
5773
404k
        p->mark = _mark;
5774
404k
        D(fprintf(stderr, "%*c%s param[%d-%d]: %s failed!\n", p->level, ' ',
5775
404k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME annotation?"));
5776
404k
    }
5777
404k
    _res = NULL;
5778
635k
  done:
5779
635k
    p->level--;
5780
635k
    return _res;
5781
404k
}
5782
5783
// param_star_annotation: NAME star_annotation
5784
static arg_ty
5785
param_star_annotation_rule(Parser *p)
5786
3.80k
{
5787
3.80k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5788
0
        _Pypegen_stack_overflow(p);
5789
0
    }
5790
3.80k
    if (p->error_indicator) {
5791
0
        p->level--;
5792
0
        return NULL;
5793
0
    }
5794
3.80k
    arg_ty _res = NULL;
5795
3.80k
    int _mark = p->mark;
5796
3.80k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5797
0
        p->error_indicator = 1;
5798
0
        p->level--;
5799
0
        return NULL;
5800
0
    }
5801
3.80k
    int _start_lineno = p->tokens[_mark]->lineno;
5802
3.80k
    UNUSED(_start_lineno); // Only used by EXTRA macro
5803
3.80k
    int _start_col_offset = p->tokens[_mark]->col_offset;
5804
3.80k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
5805
3.80k
    { // NAME star_annotation
5806
3.80k
        if (p->error_indicator) {
5807
0
            p->level--;
5808
0
            return NULL;
5809
0
        }
5810
3.80k
        D(fprintf(stderr, "%*c> param_star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME star_annotation"));
5811
3.80k
        expr_ty a;
5812
3.80k
        expr_ty b;
5813
3.80k
        if (
5814
3.80k
            (a = _PyPegen_name_token(p))  // NAME
5815
1.67k
            &&
5816
1.67k
            (b = star_annotation_rule(p))  // star_annotation
5817
3.80k
        )
5818
1.63k
        {
5819
1.63k
            D(fprintf(stderr, "%*c+ param_star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME star_annotation"));
5820
1.63k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5821
1.63k
            if (_token == NULL) {
5822
0
                p->level--;
5823
0
                return NULL;
5824
0
            }
5825
1.63k
            int _end_lineno = _token->end_lineno;
5826
1.63k
            UNUSED(_end_lineno); // Only used by EXTRA macro
5827
1.63k
            int _end_col_offset = _token->end_col_offset;
5828
1.63k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
5829
1.63k
            _res = _PyAST_arg ( a -> v . Name . id , b , NULL , EXTRA );
5830
1.63k
            if (_res == NULL && PyErr_Occurred()) {
5831
0
                p->error_indicator = 1;
5832
0
                p->level--;
5833
0
                return NULL;
5834
0
            }
5835
1.63k
            goto done;
5836
1.63k
        }
5837
2.16k
        p->mark = _mark;
5838
2.16k
        D(fprintf(stderr, "%*c%s param_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5839
2.16k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME star_annotation"));
5840
2.16k
    }
5841
2.16k
    _res = NULL;
5842
3.80k
  done:
5843
3.80k
    p->level--;
5844
3.80k
    return _res;
5845
2.16k
}
5846
5847
// annotation: ':' expression
5848
static expr_ty
5849
annotation_rule(Parser *p)
5850
230k
{
5851
230k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5852
0
        _Pypegen_stack_overflow(p);
5853
0
    }
5854
230k
    if (p->error_indicator) {
5855
0
        p->level--;
5856
0
        return NULL;
5857
0
    }
5858
230k
    expr_ty _res = NULL;
5859
230k
    int _mark = p->mark;
5860
230k
    { // ':' expression
5861
230k
        if (p->error_indicator) {
5862
0
            p->level--;
5863
0
            return NULL;
5864
0
        }
5865
230k
        D(fprintf(stderr, "%*c> annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
5866
230k
        Token * _literal;
5867
230k
        expr_ty a;
5868
230k
        if (
5869
230k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5870
8.14k
            &&
5871
8.14k
            (a = expression_rule(p))  // expression
5872
230k
        )
5873
3.37k
        {
5874
3.37k
            D(fprintf(stderr, "%*c+ annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
5875
3.37k
            _res = a;
5876
3.37k
            if (_res == NULL && PyErr_Occurred()) {
5877
0
                p->error_indicator = 1;
5878
0
                p->level--;
5879
0
                return NULL;
5880
0
            }
5881
3.37k
            goto done;
5882
3.37k
        }
5883
227k
        p->mark = _mark;
5884
227k
        D(fprintf(stderr, "%*c%s annotation[%d-%d]: %s failed!\n", p->level, ' ',
5885
227k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
5886
227k
    }
5887
227k
    _res = NULL;
5888
230k
  done:
5889
230k
    p->level--;
5890
230k
    return _res;
5891
227k
}
5892
5893
// star_annotation: ':' star_expression
5894
static expr_ty
5895
star_annotation_rule(Parser *p)
5896
1.67k
{
5897
1.67k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5898
0
        _Pypegen_stack_overflow(p);
5899
0
    }
5900
1.67k
    if (p->error_indicator) {
5901
0
        p->level--;
5902
0
        return NULL;
5903
0
    }
5904
1.67k
    expr_ty _res = NULL;
5905
1.67k
    int _mark = p->mark;
5906
1.67k
    { // ':' star_expression
5907
1.67k
        if (p->error_indicator) {
5908
0
            p->level--;
5909
0
            return NULL;
5910
0
        }
5911
1.67k
        D(fprintf(stderr, "%*c> star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' star_expression"));
5912
1.67k
        Token * _literal;
5913
1.67k
        expr_ty a;
5914
1.67k
        if (
5915
1.67k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5916
1.65k
            &&
5917
1.65k
            (a = star_expression_rule(p))  // star_expression
5918
1.67k
        )
5919
1.63k
        {
5920
1.63k
            D(fprintf(stderr, "%*c+ star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' star_expression"));
5921
1.63k
            _res = a;
5922
1.63k
            if (_res == NULL && PyErr_Occurred()) {
5923
0
                p->error_indicator = 1;
5924
0
                p->level--;
5925
0
                return NULL;
5926
0
            }
5927
1.63k
            goto done;
5928
1.63k
        }
5929
42
        p->mark = _mark;
5930
42
        D(fprintf(stderr, "%*c%s star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5931
42
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' star_expression"));
5932
42
    }
5933
42
    _res = NULL;
5934
1.67k
  done:
5935
1.67k
    p->level--;
5936
1.67k
    return _res;
5937
42
}
5938
5939
// default: '=' expression | invalid_default
5940
static expr_ty
5941
default_rule(Parser *p)
5942
160k
{
5943
160k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
5944
0
        _Pypegen_stack_overflow(p);
5945
0
    }
5946
160k
    if (p->error_indicator) {
5947
0
        p->level--;
5948
0
        return NULL;
5949
0
    }
5950
160k
    expr_ty _res = NULL;
5951
160k
    int _mark = p->mark;
5952
160k
    { // '=' expression
5953
160k
        if (p->error_indicator) {
5954
0
            p->level--;
5955
0
            return NULL;
5956
0
        }
5957
160k
        D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
5958
160k
        Token * _literal;
5959
160k
        expr_ty a;
5960
160k
        if (
5961
160k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
5962
118k
            &&
5963
118k
            (a = expression_rule(p))  // expression
5964
160k
        )
5965
85.9k
        {
5966
85.9k
            D(fprintf(stderr, "%*c+ default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
5967
85.9k
            _res = a;
5968
85.9k
            if (_res == NULL && PyErr_Occurred()) {
5969
0
                p->error_indicator = 1;
5970
0
                p->level--;
5971
0
                return NULL;
5972
0
            }
5973
85.9k
            goto done;
5974
85.9k
        }
5975
74.2k
        p->mark = _mark;
5976
74.2k
        D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
5977
74.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
5978
74.2k
    }
5979
74.2k
    if (p->call_invalid_rules) { // invalid_default
5980
64.2k
        if (p->error_indicator) {
5981
645
            p->level--;
5982
645
            return NULL;
5983
645
        }
5984
63.5k
        D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_default"));
5985
63.5k
        void *invalid_default_var;
5986
63.5k
        if (
5987
63.5k
            (invalid_default_var = invalid_default_rule(p))  // invalid_default
5988
63.5k
        )
5989
0
        {
5990
0
            D(fprintf(stderr, "%*c+ default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_default"));
5991
0
            _res = invalid_default_var;
5992
0
            goto done;
5993
0
        }
5994
63.5k
        p->mark = _mark;
5995
63.5k
        D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
5996
63.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_default"));
5997
63.5k
    }
5998
73.5k
    _res = NULL;
5999
159k
  done:
6000
159k
    p->level--;
6001
159k
    return _res;
6002
73.5k
}
6003
6004
// if_stmt:
6005
//     | invalid_if_stmt
6006
//     | 'if' named_expression ':' block elif_stmt
6007
//     | 'if' named_expression ':' block else_block?
6008
static stmt_ty
6009
if_stmt_rule(Parser *p)
6010
8.98k
{
6011
8.98k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6012
0
        _Pypegen_stack_overflow(p);
6013
0
    }
6014
8.98k
    if (p->error_indicator) {
6015
0
        p->level--;
6016
0
        return NULL;
6017
0
    }
6018
8.98k
    stmt_ty _res = NULL;
6019
8.98k
    int _mark = p->mark;
6020
8.98k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6021
0
        p->error_indicator = 1;
6022
0
        p->level--;
6023
0
        return NULL;
6024
0
    }
6025
8.98k
    int _start_lineno = p->tokens[_mark]->lineno;
6026
8.98k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6027
8.98k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6028
8.98k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6029
8.98k
    if (p->call_invalid_rules) { // invalid_if_stmt
6030
742
        if (p->error_indicator) {
6031
0
            p->level--;
6032
0
            return NULL;
6033
0
        }
6034
742
        D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_if_stmt"));
6035
742
        void *invalid_if_stmt_var;
6036
742
        if (
6037
742
            (invalid_if_stmt_var = invalid_if_stmt_rule(p))  // invalid_if_stmt
6038
742
        )
6039
0
        {
6040
0
            D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_if_stmt"));
6041
0
            _res = invalid_if_stmt_var;
6042
0
            goto done;
6043
0
        }
6044
742
        p->mark = _mark;
6045
742
        D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6046
742
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_if_stmt"));
6047
742
    }
6048
8.98k
    { // 'if' named_expression ':' block elif_stmt
6049
8.98k
        if (p->error_indicator) {
6050
8
            p->level--;
6051
8
            return NULL;
6052
8
        }
6053
8.97k
        D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6054
8.97k
        Token * _keyword;
6055
8.97k
        Token * _literal;
6056
8.97k
        expr_ty a;
6057
8.97k
        asdl_stmt_seq* b;
6058
8.97k
        stmt_ty c;
6059
8.97k
        if (
6060
8.97k
            (_keyword = _PyPegen_expect_token(p, 691))  // token='if'
6061
8.97k
            &&
6062
8.97k
            (a = named_expression_rule(p))  // named_expression
6063
8.95k
            &&
6064
8.95k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6065
8.94k
            &&
6066
8.94k
            (b = block_rule(p))  // block
6067
8.87k
            &&
6068
8.87k
            (c = elif_stmt_rule(p))  // elif_stmt
6069
8.97k
        )
6070
681
        {
6071
681
            D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6072
681
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6073
681
            if (_token == NULL) {
6074
0
                p->level--;
6075
0
                return NULL;
6076
0
            }
6077
681
            int _end_lineno = _token->end_lineno;
6078
681
            UNUSED(_end_lineno); // Only used by EXTRA macro
6079
681
            int _end_col_offset = _token->end_col_offset;
6080
681
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6081
681
            _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq* , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
6082
681
            if (_res == NULL && PyErr_Occurred()) {
6083
0
                p->error_indicator = 1;
6084
0
                p->level--;
6085
0
                return NULL;
6086
0
            }
6087
681
            goto done;
6088
681
        }
6089
8.29k
        p->mark = _mark;
6090
8.29k
        D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6091
8.29k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
6092
8.29k
    }
6093
0
    { // 'if' named_expression ':' block else_block?
6094
8.29k
        if (p->error_indicator) {
6095
38
            p->level--;
6096
38
            return NULL;
6097
38
        }
6098
8.25k
        D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
6099
8.25k
        Token * _keyword;
6100
8.25k
        Token * _literal;
6101
8.25k
        expr_ty a;
6102
8.25k
        asdl_stmt_seq* b;
6103
8.25k
        void *c;
6104
8.25k
        if (
6105
8.25k
            (_keyword = _PyPegen_expect_token(p, 691))  // token='if'
6106
8.25k
            &&
6107
8.25k
            (a = named_expression_rule(p))  // named_expression
6108
8.24k
            &&
6109
8.24k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6110
8.23k
            &&
6111
8.23k
            (b = block_rule(p))  // block
6112
8.17k
            &&
6113
8.17k
            (c = else_block_rule(p), !p->error_indicator)  // else_block?
6114
8.25k
        )
6115
8.16k
        {
6116
8.16k
            D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
6117
8.16k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6118
8.16k
            if (_token == NULL) {
6119
0
                p->level--;
6120
0
                return NULL;
6121
0
            }
6122
8.16k
            int _end_lineno = _token->end_lineno;
6123
8.16k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6124
8.16k
            int _end_col_offset = _token->end_col_offset;
6125
8.16k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6126
8.16k
            _res = _PyAST_If ( a , b , c , EXTRA );
6127
8.16k
            if (_res == NULL && PyErr_Occurred()) {
6128
0
                p->error_indicator = 1;
6129
0
                p->level--;
6130
0
                return NULL;
6131
0
            }
6132
8.16k
            goto done;
6133
8.16k
        }
6134
94
        p->mark = _mark;
6135
94
        D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6136
94
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block else_block?"));
6137
94
    }
6138
94
    _res = NULL;
6139
8.94k
  done:
6140
8.94k
    p->level--;
6141
8.94k
    return _res;
6142
94
}
6143
6144
// elif_stmt:
6145
//     | invalid_elif_stmt
6146
//     | 'elif' named_expression ':' block elif_stmt
6147
//     | 'elif' named_expression ':' block else_block?
6148
static stmt_ty
6149
elif_stmt_rule(Parser *p)
6150
10.5k
{
6151
10.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6152
0
        _Pypegen_stack_overflow(p);
6153
0
    }
6154
10.5k
    if (p->error_indicator) {
6155
0
        p->level--;
6156
0
        return NULL;
6157
0
    }
6158
10.5k
    stmt_ty _res = NULL;
6159
10.5k
    int _mark = p->mark;
6160
10.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6161
3
        p->error_indicator = 1;
6162
3
        p->level--;
6163
3
        return NULL;
6164
3
    }
6165
10.5k
    int _start_lineno = p->tokens[_mark]->lineno;
6166
10.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6167
10.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6168
10.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6169
10.5k
    if (p->call_invalid_rules) { // invalid_elif_stmt
6170
878
        if (p->error_indicator) {
6171
0
            p->level--;
6172
0
            return NULL;
6173
0
        }
6174
878
        D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_elif_stmt"));
6175
878
        void *invalid_elif_stmt_var;
6176
878
        if (
6177
878
            (invalid_elif_stmt_var = invalid_elif_stmt_rule(p))  // invalid_elif_stmt
6178
878
        )
6179
0
        {
6180
0
            D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_elif_stmt"));
6181
0
            _res = invalid_elif_stmt_var;
6182
0
            goto done;
6183
0
        }
6184
878
        p->mark = _mark;
6185
878
        D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6186
878
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_elif_stmt"));
6187
878
    }
6188
10.5k
    { // 'elif' named_expression ':' block elif_stmt
6189
10.5k
        if (p->error_indicator) {
6190
8
            p->level--;
6191
8
            return NULL;
6192
8
        }
6193
10.5k
        D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6194
10.5k
        Token * _keyword;
6195
10.5k
        Token * _literal;
6196
10.5k
        expr_ty a;
6197
10.5k
        asdl_stmt_seq* b;
6198
10.5k
        stmt_ty c;
6199
10.5k
        if (
6200
10.5k
            (_keyword = _PyPegen_expect_token(p, 696))  // token='elif'
6201
1.71k
            &&
6202
1.71k
            (a = named_expression_rule(p))  // named_expression
6203
1.70k
            &&
6204
1.70k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6205
1.70k
            &&
6206
1.70k
            (b = block_rule(p))  // block
6207
1.67k
            &&
6208
1.67k
            (c = elif_stmt_rule(p))  // elif_stmt
6209
10.5k
        )
6210
919
        {
6211
919
            D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6212
919
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6213
919
            if (_token == NULL) {
6214
0
                p->level--;
6215
0
                return NULL;
6216
0
            }
6217
919
            int _end_lineno = _token->end_lineno;
6218
919
            UNUSED(_end_lineno); // Only used by EXTRA macro
6219
919
            int _end_col_offset = _token->end_col_offset;
6220
919
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6221
919
            _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq* , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
6222
919
            if (_res == NULL && PyErr_Occurred()) {
6223
0
                p->error_indicator = 1;
6224
0
                p->level--;
6225
0
                return NULL;
6226
0
            }
6227
919
            goto done;
6228
919
        }
6229
9.61k
        p->mark = _mark;
6230
9.61k
        D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6231
9.61k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6232
9.61k
    }
6233
0
    { // 'elif' named_expression ':' block else_block?
6234
9.61k
        if (p->error_indicator) {
6235
75
            p->level--;
6236
75
            return NULL;
6237
75
        }
6238
9.53k
        D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6239
9.53k
        Token * _keyword;
6240
9.53k
        Token * _literal;
6241
9.53k
        expr_ty a;
6242
9.53k
        asdl_stmt_seq* b;
6243
9.53k
        void *c;
6244
9.53k
        if (
6245
9.53k
            (_keyword = _PyPegen_expect_token(p, 696))  // token='elif'
6246
718
            &&
6247
718
            (a = named_expression_rule(p))  // named_expression
6248
715
            &&
6249
715
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6250
712
            &&
6251
712
            (b = block_rule(p))  // block
6252
682
            &&
6253
682
            (c = else_block_rule(p), !p->error_indicator)  // else_block?
6254
9.53k
        )
6255
681
        {
6256
681
            D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6257
681
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6258
681
            if (_token == NULL) {
6259
0
                p->level--;
6260
0
                return NULL;
6261
0
            }
6262
681
            int _end_lineno = _token->end_lineno;
6263
681
            UNUSED(_end_lineno); // Only used by EXTRA macro
6264
681
            int _end_col_offset = _token->end_col_offset;
6265
681
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6266
681
            _res = _PyAST_If ( a , b , c , EXTRA );
6267
681
            if (_res == NULL && PyErr_Occurred()) {
6268
0
                p->error_indicator = 1;
6269
0
                p->level--;
6270
0
                return NULL;
6271
0
            }
6272
681
            goto done;
6273
681
        }
6274
8.85k
        p->mark = _mark;
6275
8.85k
        D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6276
8.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6277
8.85k
    }
6278
8.85k
    _res = NULL;
6279
10.4k
  done:
6280
10.4k
    p->level--;
6281
10.4k
    return _res;
6282
8.85k
}
6283
6284
// else_block: invalid_else_stmt | 'else' &&':' block
6285
static asdl_stmt_seq*
6286
else_block_rule(Parser *p)
6287
16.9k
{
6288
16.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6289
0
        _Pypegen_stack_overflow(p);
6290
0
    }
6291
16.9k
    if (p->error_indicator) {
6292
0
        p->level--;
6293
0
        return NULL;
6294
0
    }
6295
16.9k
    asdl_stmt_seq* _res = NULL;
6296
16.9k
    int _mark = p->mark;
6297
16.9k
    if (p->call_invalid_rules) { // invalid_else_stmt
6298
2.84k
        if (p->error_indicator) {
6299
0
            p->level--;
6300
0
            return NULL;
6301
0
        }
6302
2.84k
        D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
6303
2.84k
        void *invalid_else_stmt_var;
6304
2.84k
        if (
6305
2.84k
            (invalid_else_stmt_var = invalid_else_stmt_rule(p))  // invalid_else_stmt
6306
2.84k
        )
6307
0
        {
6308
0
            D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
6309
0
            _res = invalid_else_stmt_var;
6310
0
            goto done;
6311
0
        }
6312
2.84k
        p->mark = _mark;
6313
2.84k
        D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
6314
2.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_else_stmt"));
6315
2.84k
    }
6316
16.9k
    { // 'else' &&':' block
6317
16.9k
        if (p->error_indicator) {
6318
6
            p->level--;
6319
6
            return NULL;
6320
6
        }
6321
16.9k
        D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
6322
16.9k
        Token * _keyword;
6323
16.9k
        Token * _literal;
6324
16.9k
        asdl_stmt_seq* b;
6325
16.9k
        if (
6326
16.9k
            (_keyword = _PyPegen_expect_token(p, 695))  // token='else'
6327
1.98k
            &&
6328
1.98k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
6329
1.98k
            &&
6330
1.98k
            (b = block_rule(p))  // block
6331
16.9k
        )
6332
1.96k
        {
6333
1.96k
            D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
6334
1.96k
            _res = b;
6335
1.96k
            if (_res == NULL && PyErr_Occurred()) {
6336
0
                p->error_indicator = 1;
6337
0
                p->level--;
6338
0
                return NULL;
6339
0
            }
6340
1.96k
            goto done;
6341
1.96k
        }
6342
15.0k
        p->mark = _mark;
6343
15.0k
        D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
6344
15.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' &&':' block"));
6345
15.0k
    }
6346
15.0k
    _res = NULL;
6347
16.9k
  done:
6348
16.9k
    p->level--;
6349
16.9k
    return _res;
6350
15.0k
}
6351
6352
// while_stmt: invalid_while_stmt | 'while' named_expression ':' block else_block?
6353
static stmt_ty
6354
while_stmt_rule(Parser *p)
6355
1.36k
{
6356
1.36k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6357
0
        _Pypegen_stack_overflow(p);
6358
0
    }
6359
1.36k
    if (p->error_indicator) {
6360
0
        p->level--;
6361
0
        return NULL;
6362
0
    }
6363
1.36k
    stmt_ty _res = NULL;
6364
1.36k
    int _mark = p->mark;
6365
1.36k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6366
0
        p->error_indicator = 1;
6367
0
        p->level--;
6368
0
        return NULL;
6369
0
    }
6370
1.36k
    int _start_lineno = p->tokens[_mark]->lineno;
6371
1.36k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6372
1.36k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6373
1.36k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6374
1.36k
    if (p->call_invalid_rules) { // invalid_while_stmt
6375
376
        if (p->error_indicator) {
6376
0
            p->level--;
6377
0
            return NULL;
6378
0
        }
6379
376
        D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_while_stmt"));
6380
376
        void *invalid_while_stmt_var;
6381
376
        if (
6382
376
            (invalid_while_stmt_var = invalid_while_stmt_rule(p))  // invalid_while_stmt
6383
376
        )
6384
0
        {
6385
0
            D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_while_stmt"));
6386
0
            _res = invalid_while_stmt_var;
6387
0
            goto done;
6388
0
        }
6389
376
        p->mark = _mark;
6390
376
        D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6391
376
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_while_stmt"));
6392
376
    }
6393
1.36k
    { // 'while' named_expression ':' block else_block?
6394
1.36k
        if (p->error_indicator) {
6395
7
            p->level--;
6396
7
            return NULL;
6397
7
        }
6398
1.35k
        D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
6399
1.35k
        Token * _keyword;
6400
1.35k
        Token * _literal;
6401
1.35k
        expr_ty a;
6402
1.35k
        asdl_stmt_seq* b;
6403
1.35k
        void *c;
6404
1.35k
        if (
6405
1.35k
            (_keyword = _PyPegen_expect_token(p, 698))  // token='while'
6406
1.35k
            &&
6407
1.35k
            (a = named_expression_rule(p))  // named_expression
6408
1.34k
            &&
6409
1.34k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6410
1.33k
            &&
6411
1.33k
            (b = block_rule(p))  // block
6412
1.29k
            &&
6413
1.29k
            (c = else_block_rule(p), !p->error_indicator)  // else_block?
6414
1.35k
        )
6415
1.29k
        {
6416
1.29k
            D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
6417
1.29k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6418
1.29k
            if (_token == NULL) {
6419
0
                p->level--;
6420
0
                return NULL;
6421
0
            }
6422
1.29k
            int _end_lineno = _token->end_lineno;
6423
1.29k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6424
1.29k
            int _end_col_offset = _token->end_col_offset;
6425
1.29k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6426
1.29k
            _res = _PyAST_While ( a , b , c , EXTRA );
6427
1.29k
            if (_res == NULL && PyErr_Occurred()) {
6428
0
                p->error_indicator = 1;
6429
0
                p->level--;
6430
0
                return NULL;
6431
0
            }
6432
1.29k
            goto done;
6433
1.29k
        }
6434
63
        p->mark = _mark;
6435
63
        D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6436
63
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' block else_block?"));
6437
63
    }
6438
63
    _res = NULL;
6439
1.35k
  done:
6440
1.35k
    p->level--;
6441
1.35k
    return _res;
6442
63
}
6443
6444
// for_stmt:
6445
//     | invalid_for_stmt
6446
//     | 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6447
//     | 'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6448
//     | invalid_for_target
6449
static stmt_ty
6450
for_stmt_rule(Parser *p)
6451
2.78k
{
6452
2.78k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6453
0
        _Pypegen_stack_overflow(p);
6454
0
    }
6455
2.78k
    if (p->error_indicator) {
6456
0
        p->level--;
6457
0
        return NULL;
6458
0
    }
6459
2.78k
    stmt_ty _res = NULL;
6460
2.78k
    int _mark = p->mark;
6461
2.78k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6462
0
        p->error_indicator = 1;
6463
0
        p->level--;
6464
0
        return NULL;
6465
0
    }
6466
2.78k
    int _start_lineno = p->tokens[_mark]->lineno;
6467
2.78k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6468
2.78k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6469
2.78k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6470
2.78k
    if (p->call_invalid_rules) { // invalid_for_stmt
6471
650
        if (p->error_indicator) {
6472
0
            p->level--;
6473
0
            return NULL;
6474
0
        }
6475
650
        D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
6476
650
        void *invalid_for_stmt_var;
6477
650
        if (
6478
650
            (invalid_for_stmt_var = invalid_for_stmt_rule(p))  // invalid_for_stmt
6479
650
        )
6480
0
        {
6481
0
            D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
6482
0
            _res = invalid_for_stmt_var;
6483
0
            goto done;
6484
0
        }
6485
650
        p->mark = _mark;
6486
650
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6487
650
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_stmt"));
6488
650
    }
6489
2.78k
    { // 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6490
2.78k
        if (p->error_indicator) {
6491
12
            p->level--;
6492
12
            return NULL;
6493
12
        }
6494
2.77k
        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?"));
6495
2.77k
        int _cut_var = 0;
6496
2.77k
        Token * _keyword;
6497
2.77k
        Token * _keyword_1;
6498
2.77k
        Token * _literal;
6499
2.77k
        asdl_stmt_seq* b;
6500
2.77k
        void *el;
6501
2.77k
        expr_ty ex;
6502
2.77k
        expr_ty t;
6503
2.77k
        void *tc;
6504
2.77k
        if (
6505
2.77k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='for'
6506
1.98k
            &&
6507
1.98k
            (t = star_targets_rule(p))  // star_targets
6508
1.94k
            &&
6509
1.94k
            (_keyword_1 = _PyPegen_expect_token(p, 704))  // token='in'
6510
1.92k
            &&
6511
1.92k
            (_cut_var = 1)
6512
1.92k
            &&
6513
1.92k
            (ex = star_expressions_rule(p))  // star_expressions
6514
1.91k
            &&
6515
1.91k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6516
1.91k
            &&
6517
1.91k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6518
1.91k
            &&
6519
1.91k
            (b = block_rule(p))  // block
6520
1.85k
            &&
6521
1.85k
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
6522
2.77k
        )
6523
1.85k
        {
6524
1.85k
            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?"));
6525
1.85k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6526
1.85k
            if (_token == NULL) {
6527
0
                p->level--;
6528
0
                return NULL;
6529
0
            }
6530
1.85k
            int _end_lineno = _token->end_lineno;
6531
1.85k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6532
1.85k
            int _end_col_offset = _token->end_col_offset;
6533
1.85k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6534
1.85k
            _res = _PyAST_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6535
1.85k
            if (_res == NULL && PyErr_Occurred()) {
6536
0
                p->error_indicator = 1;
6537
0
                p->level--;
6538
0
                return NULL;
6539
0
            }
6540
1.85k
            goto done;
6541
1.85k
        }
6542
919
        p->mark = _mark;
6543
919
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6544
919
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?"));
6545
919
        if (_cut_var) {
6546
66
            p->level--;
6547
66
            return NULL;
6548
66
        }
6549
919
    }
6550
853
    { // 'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6551
853
        if (p->error_indicator) {
6552
7
            p->level--;
6553
7
            return NULL;
6554
7
        }
6555
846
        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?"));
6556
846
        int _cut_var = 0;
6557
846
        Token * _keyword;
6558
846
        Token * _keyword_1;
6559
846
        Token * _keyword_2;
6560
846
        Token * _literal;
6561
846
        asdl_stmt_seq* b;
6562
846
        void *el;
6563
846
        expr_ty ex;
6564
846
        expr_ty t;
6565
846
        void *tc;
6566
846
        if (
6567
846
            (_keyword = _PyPegen_expect_token(p, 707))  // token='async'
6568
790
            &&
6569
790
            (_keyword_1 = _PyPegen_expect_token(p, 703))  // token='for'
6570
670
            &&
6571
670
            (t = star_targets_rule(p))  // star_targets
6572
667
            &&
6573
667
            (_keyword_2 = _PyPegen_expect_token(p, 704))  // token='in'
6574
660
            &&
6575
660
            (_cut_var = 1)
6576
660
            &&
6577
660
            (ex = star_expressions_rule(p))  // star_expressions
6578
655
            &&
6579
655
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6580
652
            &&
6581
652
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6582
651
            &&
6583
651
            (b = block_rule(p))  // block
6584
635
            &&
6585
635
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
6586
846
        )
6587
634
        {
6588
634
            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?"));
6589
634
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6590
634
            if (_token == NULL) {
6591
0
                p->level--;
6592
0
                return NULL;
6593
0
            }
6594
634
            int _end_lineno = _token->end_lineno;
6595
634
            UNUSED(_end_lineno); // Only used by EXTRA macro
6596
634
            int _end_col_offset = _token->end_col_offset;
6597
634
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6598
634
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async for loops are" , _PyAST_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
6599
634
            if (_res == NULL && PyErr_Occurred()) {
6600
0
                p->error_indicator = 1;
6601
0
                p->level--;
6602
0
                return NULL;
6603
0
            }
6604
634
            goto done;
6605
634
        }
6606
212
        p->mark = _mark;
6607
212
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6608
212
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?"));
6609
212
        if (_cut_var) {
6610
26
            p->level--;
6611
26
            return NULL;
6612
26
        }
6613
212
    }
6614
186
    if (p->call_invalid_rules) { // invalid_for_target
6615
78
        if (p->error_indicator) {
6616
0
            p->level--;
6617
0
            return NULL;
6618
0
        }
6619
78
        D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
6620
78
        void *invalid_for_target_var;
6621
78
        if (
6622
78
            (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
6623
78
        )
6624
0
        {
6625
0
            D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
6626
0
            _res = invalid_for_target_var;
6627
0
            goto done;
6628
0
        }
6629
78
        p->mark = _mark;
6630
78
        D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6631
78
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
6632
78
    }
6633
186
    _res = NULL;
6634
2.67k
  done:
6635
2.67k
    p->level--;
6636
2.67k
    return _res;
6637
186
}
6638
6639
// with_stmt:
6640
//     | invalid_with_stmt_indent
6641
//     | 'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block
6642
//     | 'with' ','.with_item+ ':' TYPE_COMMENT? block
6643
//     | 'async' 'with' '(' ','.with_item+ ','? ')' ':' block
6644
//     | 'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block
6645
//     | invalid_with_stmt
6646
static stmt_ty
6647
with_stmt_rule(Parser *p)
6648
5.92k
{
6649
5.92k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6650
0
        _Pypegen_stack_overflow(p);
6651
0
    }
6652
5.92k
    if (p->error_indicator) {
6653
0
        p->level--;
6654
0
        return NULL;
6655
0
    }
6656
5.92k
    stmt_ty _res = NULL;
6657
5.92k
    int _mark = p->mark;
6658
5.92k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6659
0
        p->error_indicator = 1;
6660
0
        p->level--;
6661
0
        return NULL;
6662
0
    }
6663
5.92k
    int _start_lineno = p->tokens[_mark]->lineno;
6664
5.92k
    UNUSED(_start_lineno); // Only used by EXTRA macro
6665
5.92k
    int _start_col_offset = p->tokens[_mark]->col_offset;
6666
5.92k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
6667
5.92k
    if (p->call_invalid_rules) { // invalid_with_stmt_indent
6668
2.61k
        if (p->error_indicator) {
6669
0
            p->level--;
6670
0
            return NULL;
6671
0
        }
6672
2.61k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
6673
2.61k
        void *invalid_with_stmt_indent_var;
6674
2.61k
        if (
6675
2.61k
            (invalid_with_stmt_indent_var = invalid_with_stmt_indent_rule(p))  // invalid_with_stmt_indent
6676
2.61k
        )
6677
0
        {
6678
0
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
6679
0
            _res = invalid_with_stmt_indent_var;
6680
0
            goto done;
6681
0
        }
6682
2.61k
        p->mark = _mark;
6683
2.61k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6684
2.61k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt_indent"));
6685
2.61k
    }
6686
5.92k
    { // 'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block
6687
5.92k
        if (p->error_indicator) {
6688
44
            p->level--;
6689
44
            return NULL;
6690
44
        }
6691
5.88k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6692
5.88k
        Token * _keyword;
6693
5.88k
        Token * _literal;
6694
5.88k
        Token * _literal_1;
6695
5.88k
        Token * _literal_2;
6696
5.88k
        void *_opt_var;
6697
5.88k
        UNUSED(_opt_var); // Silence compiler warnings
6698
5.88k
        asdl_withitem_seq* a;
6699
5.88k
        asdl_stmt_seq* b;
6700
5.88k
        void *tc;
6701
5.88k
        if (
6702
5.88k
            (_keyword = _PyPegen_expect_token(p, 656))  // token='with'
6703
3.92k
            &&
6704
3.92k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
6705
2.87k
            &&
6706
2.87k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6707
2.16k
            &&
6708
2.16k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
6709
2.15k
            &&
6710
2.15k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
6711
1.90k
            &&
6712
1.90k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
6713
1.16k
            &&
6714
1.16k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6715
1.16k
            &&
6716
1.16k
            (b = block_rule(p))  // block
6717
5.88k
        )
6718
1.13k
        {
6719
1.13k
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6720
1.13k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6721
1.13k
            if (_token == NULL) {
6722
0
                p->level--;
6723
0
                return NULL;
6724
0
            }
6725
1.13k
            int _end_lineno = _token->end_lineno;
6726
1.13k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6727
1.13k
            int _end_col_offset = _token->end_col_offset;
6728
1.13k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6729
1.13k
            _res = _PyAST_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6730
1.13k
            if (_res == NULL && PyErr_Occurred()) {
6731
0
                p->error_indicator = 1;
6732
0
                p->level--;
6733
0
                return NULL;
6734
0
            }
6735
1.13k
            goto done;
6736
1.13k
        }
6737
4.74k
        p->mark = _mark;
6738
4.74k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6739
4.74k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' TYPE_COMMENT? block"));
6740
4.74k
    }
6741
0
    { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
6742
4.74k
        if (p->error_indicator) {
6743
18
            p->level--;
6744
18
            return NULL;
6745
18
        }
6746
4.73k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6747
4.73k
        Token * _keyword;
6748
4.73k
        Token * _literal;
6749
4.73k
        asdl_withitem_seq* a;
6750
4.73k
        asdl_stmt_seq* b;
6751
4.73k
        void *tc;
6752
4.73k
        if (
6753
4.73k
            (_keyword = _PyPegen_expect_token(p, 656))  // token='with'
6754
2.77k
            &&
6755
2.77k
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6756
2.58k
            &&
6757
2.58k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6758
2.45k
            &&
6759
2.45k
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6760
2.45k
            &&
6761
2.45k
            (b = block_rule(p))  // block
6762
4.73k
        )
6763
2.36k
        {
6764
2.36k
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6765
2.36k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6766
2.36k
            if (_token == NULL) {
6767
0
                p->level--;
6768
0
                return NULL;
6769
0
            }
6770
2.36k
            int _end_lineno = _token->end_lineno;
6771
2.36k
            UNUSED(_end_lineno); // Only used by EXTRA macro
6772
2.36k
            int _end_col_offset = _token->end_col_offset;
6773
2.36k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6774
2.36k
            _res = _PyAST_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6775
2.36k
            if (_res == NULL && PyErr_Occurred()) {
6776
0
                p->error_indicator = 1;
6777
0
                p->level--;
6778
0
                return NULL;
6779
0
            }
6780
2.36k
            goto done;
6781
2.36k
        }
6782
2.36k
        p->mark = _mark;
6783
2.36k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6784
2.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6785
2.36k
    }
6786
0
    { // 'async' 'with' '(' ','.with_item+ ','? ')' ':' block
6787
2.36k
        if (p->error_indicator) {
6788
19
            p->level--;
6789
19
            return NULL;
6790
19
        }
6791
2.34k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6792
2.34k
        Token * _keyword;
6793
2.34k
        Token * _keyword_1;
6794
2.34k
        Token * _literal;
6795
2.34k
        Token * _literal_1;
6796
2.34k
        Token * _literal_2;
6797
2.34k
        void *_opt_var;
6798
2.34k
        UNUSED(_opt_var); // Silence compiler warnings
6799
2.34k
        asdl_withitem_seq* a;
6800
2.34k
        asdl_stmt_seq* b;
6801
2.34k
        if (
6802
2.34k
            (_keyword = _PyPegen_expect_token(p, 707))  // token='async'
6803
1.96k
            &&
6804
1.96k
            (_keyword_1 = _PyPegen_expect_token(p, 656))  // token='with'
6805
1.22k
            &&
6806
1.22k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
6807
884
            &&
6808
884
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6809
799
            &&
6810
799
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
6811
798
            &&
6812
798
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
6813
548
            &&
6814
548
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
6815
482
            &&
6816
482
            (b = block_rule(p))  // block
6817
2.34k
        )
6818
471
        {
6819
471
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6820
471
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6821
471
            if (_token == NULL) {
6822
0
                p->level--;
6823
0
                return NULL;
6824
0
            }
6825
471
            int _end_lineno = _token->end_lineno;
6826
471
            UNUSED(_end_lineno); // Only used by EXTRA macro
6827
471
            int _end_col_offset = _token->end_col_offset;
6828
471
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6829
471
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NULL , EXTRA ) );
6830
471
            if (_res == NULL && PyErr_Occurred()) {
6831
0
                p->error_indicator = 1;
6832
0
                p->level--;
6833
0
                return NULL;
6834
0
            }
6835
471
            goto done;
6836
471
        }
6837
1.87k
        p->mark = _mark;
6838
1.87k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6839
1.87k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'with' '(' ','.with_item+ ','? ')' ':' block"));
6840
1.87k
    }
6841
0
    { // 'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block
6842
1.87k
        if (p->error_indicator) {
6843
6
            p->level--;
6844
6
            return NULL;
6845
6
        }
6846
1.86k
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6847
1.86k
        Token * _keyword;
6848
1.86k
        Token * _keyword_1;
6849
1.86k
        Token * _literal;
6850
1.86k
        asdl_withitem_seq* a;
6851
1.86k
        asdl_stmt_seq* b;
6852
1.86k
        void *tc;
6853
1.86k
        if (
6854
1.86k
            (_keyword = _PyPegen_expect_token(p, 707))  // token='async'
6855
1.48k
            &&
6856
1.48k
            (_keyword_1 = _PyPegen_expect_token(p, 656))  // token='with'
6857
752
            &&
6858
752
            (a = (asdl_withitem_seq*)_gather_34_rule(p))  // ','.with_item+
6859
732
            &&
6860
732
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6861
711
            &&
6862
711
            (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6863
710
            &&
6864
710
            (b = block_rule(p))  // block
6865
1.86k
        )
6866
681
        {
6867
681
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6868
681
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6869
681
            if (_token == NULL) {
6870
0
                p->level--;
6871
0
                return NULL;
6872
0
            }
6873
681
            int _end_lineno = _token->end_lineno;
6874
681
            UNUSED(_end_lineno); // Only used by EXTRA macro
6875
681
            int _end_col_offset = _token->end_col_offset;
6876
681
            UNUSED(_end_col_offset); // Only used by EXTRA macro
6877
681
            _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
6878
681
            if (_res == NULL && PyErr_Occurred()) {
6879
0
                p->error_indicator = 1;
6880
0
                p->level--;
6881
0
                return NULL;
6882
0
            }
6883
681
            goto done;
6884
681
        }
6885
1.18k
        p->mark = _mark;
6886
1.18k
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6887
1.18k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6888
1.18k
    }
6889
1.18k
    if (p->call_invalid_rules) { // invalid_with_stmt
6890
521
        if (p->error_indicator) {
6891
4
            p->level--;
6892
4
            return NULL;
6893
4
        }
6894
517
        D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt"));
6895
517
        void *invalid_with_stmt_var;
6896
517
        if (
6897
517
            (invalid_with_stmt_var = invalid_with_stmt_rule(p))  // invalid_with_stmt
6898
517
        )
6899
0
        {
6900
0
            D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt"));
6901
0
            _res = invalid_with_stmt_var;
6902
0
            goto done;
6903
0
        }
6904
517
        p->mark = _mark;
6905
517
        D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6906
517
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt"));
6907
517
    }
6908
1.18k
    _res = NULL;
6909
5.83k
  done:
6910
5.83k
    p->level--;
6911
5.83k
    return _res;
6912
1.18k
}
6913
6914
// with_item:
6915
//     | expression 'as' star_target &(',' | ')' | ':')
6916
//     | invalid_with_item
6917
//     | expression
6918
static withitem_ty
6919
with_item_rule(Parser *p)
6920
14.7k
{
6921
14.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
6922
0
        _Pypegen_stack_overflow(p);
6923
0
    }
6924
14.7k
    if (p->error_indicator) {
6925
0
        p->level--;
6926
0
        return NULL;
6927
0
    }
6928
14.7k
    withitem_ty _res = NULL;
6929
14.7k
    int _mark = p->mark;
6930
14.7k
    { // expression 'as' star_target &(',' | ')' | ':')
6931
14.7k
        if (p->error_indicator) {
6932
0
            p->level--;
6933
0
            return NULL;
6934
0
        }
6935
14.7k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6936
14.7k
        Token * _keyword;
6937
14.7k
        expr_ty e;
6938
14.7k
        expr_ty t;
6939
14.7k
        if (
6940
14.7k
            (e = expression_rule(p))  // expression
6941
12.7k
            &&
6942
12.7k
            (_keyword = _PyPegen_expect_token(p, 689))  // token='as'
6943
2.32k
            &&
6944
2.32k
            (t = star_target_rule(p))  // star_target
6945
2.30k
            &&
6946
2.30k
            _PyPegen_lookahead(1, _tmp_35_rule, p)
6947
14.7k
        )
6948
2.28k
        {
6949
2.28k
            D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6950
2.28k
            _res = _PyAST_withitem ( e , t , p -> arena );
6951
2.28k
            if (_res == NULL && PyErr_Occurred()) {
6952
0
                p->error_indicator = 1;
6953
0
                p->level--;
6954
0
                return NULL;
6955
0
            }
6956
2.28k
            goto done;
6957
2.28k
        }
6958
12.4k
        p->mark = _mark;
6959
12.4k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6960
12.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6961
12.4k
    }
6962
12.4k
    if (p->call_invalid_rules) { // invalid_with_item
6963
5.39k
        if (p->error_indicator) {
6964
0
            p->level--;
6965
0
            return NULL;
6966
0
        }
6967
5.39k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
6968
5.39k
        void *invalid_with_item_var;
6969
5.39k
        if (
6970
5.39k
            (invalid_with_item_var = invalid_with_item_rule(p))  // invalid_with_item
6971
5.39k
        )
6972
0
        {
6973
0
            D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
6974
0
            _res = invalid_with_item_var;
6975
0
            goto done;
6976
0
        }
6977
5.39k
        p->mark = _mark;
6978
5.39k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6979
5.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_item"));
6980
5.39k
    }
6981
12.4k
    { // expression
6982
12.4k
        if (p->error_indicator) {
6983
22
            p->level--;
6984
22
            return NULL;
6985
22
        }
6986
12.4k
        D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
6987
12.4k
        expr_ty e;
6988
12.4k
        if (
6989
12.4k
            (e = expression_rule(p))  // expression
6990
12.4k
        )
6991
10.4k
        {
6992
10.4k
            D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
6993
10.4k
            _res = _PyAST_withitem ( e , NULL , p -> arena );
6994
10.4k
            if (_res == NULL && PyErr_Occurred()) {
6995
0
                p->error_indicator = 1;
6996
0
                p->level--;
6997
0
                return NULL;
6998
0
            }
6999
10.4k
            goto done;
7000
10.4k
        }
7001
1.93k
        p->mark = _mark;
7002
1.93k
        D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
7003
1.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
7004
1.93k
    }
7005
1.93k
    _res = NULL;
7006
14.6k
  done:
7007
14.6k
    p->level--;
7008
14.6k
    return _res;
7009
1.93k
}
7010
7011
// try_stmt:
7012
//     | invalid_try_stmt
7013
//     | 'try' &&':' block finally_block
7014
//     | 'try' &&':' block except_block+ else_block? finally_block?
7015
//     | 'try' &&':' block except_star_block+ else_block? finally_block?
7016
static stmt_ty
7017
try_stmt_rule(Parser *p)
7018
6.12k
{
7019
6.12k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7020
0
        _Pypegen_stack_overflow(p);
7021
0
    }
7022
6.12k
    if (p->error_indicator) {
7023
0
        p->level--;
7024
0
        return NULL;
7025
0
    }
7026
6.12k
    stmt_ty _res = NULL;
7027
6.12k
    int _mark = p->mark;
7028
6.12k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7029
0
        p->error_indicator = 1;
7030
0
        p->level--;
7031
0
        return NULL;
7032
0
    }
7033
6.12k
    int _start_lineno = p->tokens[_mark]->lineno;
7034
6.12k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7035
6.12k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7036
6.12k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7037
6.12k
    if (p->call_invalid_rules) { // invalid_try_stmt
7038
2.01k
        if (p->error_indicator) {
7039
0
            p->level--;
7040
0
            return NULL;
7041
0
        }
7042
2.01k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
7043
2.01k
        void *invalid_try_stmt_var;
7044
2.01k
        if (
7045
2.01k
            (invalid_try_stmt_var = invalid_try_stmt_rule(p))  // invalid_try_stmt
7046
2.01k
        )
7047
0
        {
7048
0
            D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
7049
0
            _res = invalid_try_stmt_var;
7050
0
            goto done;
7051
0
        }
7052
2.01k
        p->mark = _mark;
7053
2.01k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7054
2.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_try_stmt"));
7055
2.01k
    }
7056
6.12k
    { // 'try' &&':' block finally_block
7057
6.12k
        if (p->error_indicator) {
7058
142
            p->level--;
7059
142
            return NULL;
7060
142
        }
7061
5.98k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
7062
5.98k
        Token * _keyword;
7063
5.98k
        Token * _literal;
7064
5.98k
        asdl_stmt_seq* b;
7065
5.98k
        asdl_stmt_seq* f;
7066
5.98k
        if (
7067
5.98k
            (_keyword = _PyPegen_expect_token(p, 665))  // token='try'
7068
5.98k
            &&
7069
5.98k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7070
5.97k
            &&
7071
5.97k
            (b = block_rule(p))  // block
7072
5.78k
            &&
7073
5.78k
            (f = finally_block_rule(p))  // finally_block
7074
5.98k
        )
7075
1.23k
        {
7076
1.23k
            D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
7077
1.23k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7078
1.23k
            if (_token == NULL) {
7079
0
                p->level--;
7080
0
                return NULL;
7081
0
            }
7082
1.23k
            int _end_lineno = _token->end_lineno;
7083
1.23k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7084
1.23k
            int _end_col_offset = _token->end_col_offset;
7085
1.23k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7086
1.23k
            _res = _PyAST_Try ( b , NULL , NULL , f , EXTRA );
7087
1.23k
            if (_res == NULL && PyErr_Occurred()) {
7088
0
                p->error_indicator = 1;
7089
0
                p->level--;
7090
0
                return NULL;
7091
0
            }
7092
1.23k
            goto done;
7093
1.23k
        }
7094
4.74k
        p->mark = _mark;
7095
4.74k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7096
4.74k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block finally_block"));
7097
4.74k
    }
7098
0
    { // 'try' &&':' block except_block+ else_block? finally_block?
7099
4.74k
        if (p->error_indicator) {
7100
31
            p->level--;
7101
31
            return NULL;
7102
31
        }
7103
4.71k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
7104
4.71k
        Token * _keyword;
7105
4.71k
        Token * _literal;
7106
4.71k
        asdl_stmt_seq* b;
7107
4.71k
        void *el;
7108
4.71k
        asdl_excepthandler_seq* ex;
7109
4.71k
        void *f;
7110
4.71k
        if (
7111
4.71k
            (_keyword = _PyPegen_expect_token(p, 665))  // token='try'
7112
4.71k
            &&
7113
4.71k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7114
4.71k
            &&
7115
4.71k
            (b = block_rule(p))  // block
7116
4.54k
            &&
7117
4.54k
            (ex = (asdl_excepthandler_seq*)_loop1_36_rule(p))  // except_block+
7118
2.76k
            &&
7119
2.76k
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
7120
2.76k
            &&
7121
2.76k
            (f = finally_block_rule(p), !p->error_indicator)  // finally_block?
7122
4.71k
        )
7123
2.75k
        {
7124
2.75k
            D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
7125
2.75k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7126
2.75k
            if (_token == NULL) {
7127
0
                p->level--;
7128
0
                return NULL;
7129
0
            }
7130
2.75k
            int _end_lineno = _token->end_lineno;
7131
2.75k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7132
2.75k
            int _end_col_offset = _token->end_col_offset;
7133
2.75k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7134
2.75k
            _res = _PyAST_Try ( b , ex , el , f , EXTRA );
7135
2.75k
            if (_res == NULL && PyErr_Occurred()) {
7136
0
                p->error_indicator = 1;
7137
0
                p->level--;
7138
0
                return NULL;
7139
0
            }
7140
2.75k
            goto done;
7141
2.75k
        }
7142
1.95k
        p->mark = _mark;
7143
1.95k
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7144
1.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
7145
1.95k
    }
7146
0
    { // 'try' &&':' block except_star_block+ else_block? finally_block?
7147
1.95k
        if (p->error_indicator) {
7148
13
            p->level--;
7149
13
            return NULL;
7150
13
        }
7151
1.94k
        D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_star_block+ else_block? finally_block?"));
7152
1.94k
        Token * _keyword;
7153
1.94k
        Token * _literal;
7154
1.94k
        asdl_stmt_seq* b;
7155
1.94k
        void *el;
7156
1.94k
        asdl_excepthandler_seq* ex;
7157
1.94k
        void *f;
7158
1.94k
        if (
7159
1.94k
            (_keyword = _PyPegen_expect_token(p, 665))  // token='try'
7160
1.94k
            &&
7161
1.94k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7162
1.94k
            &&
7163
1.94k
            (b = block_rule(p))  // block
7164
1.77k
            &&
7165
1.77k
            (ex = (asdl_excepthandler_seq*)_loop1_37_rule(p))  // except_star_block+
7166
1.57k
            &&
7167
1.57k
            (el = else_block_rule(p), !p->error_indicator)  // else_block?
7168
1.57k
            &&
7169
1.57k
            (f = finally_block_rule(p), !p->error_indicator)  // finally_block?
7170
1.94k
        )
7171
1.56k
        {
7172
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?"));
7173
1.56k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7174
1.56k
            if (_token == NULL) {
7175
0
                p->level--;
7176
0
                return NULL;
7177
0
            }
7178
1.56k
            int _end_lineno = _token->end_lineno;
7179
1.56k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7180
1.56k
            int _end_col_offset = _token->end_col_offset;
7181
1.56k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7182
1.56k
            _res = CHECK_VERSION ( stmt_ty , 11 , "Exception groups are" , _PyAST_TryStar ( b , ex , el , f , EXTRA ) );
7183
1.56k
            if (_res == NULL && PyErr_Occurred()) {
7184
0
                p->error_indicator = 1;
7185
0
                p->level--;
7186
0
                return NULL;
7187
0
            }
7188
1.56k
            goto done;
7189
1.56k
        }
7190
372
        p->mark = _mark;
7191
372
        D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7192
372
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_star_block+ else_block? finally_block?"));
7193
372
    }
7194
372
    _res = NULL;
7195
5.93k
  done:
7196
5.93k
    p->level--;
7197
5.93k
    return _res;
7198
372
}
7199
7200
// except_block:
7201
//     | invalid_except_stmt_indent
7202
//     | 'except' expression ':' block
7203
//     | 'except' expression 'as' NAME ':' block
7204
//     | 'except' expressions ':' block
7205
//     | 'except' ':' block
7206
//     | invalid_except_stmt
7207
static excepthandler_ty
7208
except_block_rule(Parser *p)
7209
12.8k
{
7210
12.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7211
0
        _Pypegen_stack_overflow(p);
7212
0
    }
7213
12.8k
    if (p->error_indicator) {
7214
0
        p->level--;
7215
0
        return NULL;
7216
0
    }
7217
12.8k
    excepthandler_ty _res = NULL;
7218
12.8k
    int _mark = p->mark;
7219
12.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7220
2
        p->error_indicator = 1;
7221
2
        p->level--;
7222
2
        return NULL;
7223
2
    }
7224
12.8k
    int _start_lineno = p->tokens[_mark]->lineno;
7225
12.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7226
12.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7227
12.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7228
12.8k
    if (p->call_invalid_rules) { // invalid_except_stmt_indent
7229
6.51k
        if (p->error_indicator) {
7230
0
            p->level--;
7231
0
            return NULL;
7232
0
        }
7233
6.51k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
7234
6.51k
        void *invalid_except_stmt_indent_var;
7235
6.51k
        if (
7236
6.51k
            (invalid_except_stmt_indent_var = invalid_except_stmt_indent_rule(p))  // invalid_except_stmt_indent
7237
6.51k
        )
7238
0
        {
7239
0
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
7240
0
            _res = invalid_except_stmt_indent_var;
7241
0
            goto done;
7242
0
        }
7243
6.51k
        p->mark = _mark;
7244
6.51k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7245
6.51k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt_indent"));
7246
6.51k
    }
7247
12.8k
    { // 'except' expression ':' block
7248
12.8k
        if (p->error_indicator) {
7249
6
            p->level--;
7250
6
            return NULL;
7251
6
        }
7252
12.8k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ':' block"));
7253
12.8k
        Token * _keyword;
7254
12.8k
        Token * _literal;
7255
12.8k
        asdl_stmt_seq* b;
7256
12.8k
        expr_ty e;
7257
12.8k
        if (
7258
12.8k
            (_keyword = _PyPegen_expect_token(p, 686))  // token='except'
7259
8.86k
            &&
7260
8.86k
            (e = expression_rule(p))  // expression
7261
2.37k
            &&
7262
2.37k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7263
1.36k
            &&
7264
1.36k
            (b = block_rule(p))  // block
7265
12.8k
        )
7266
1.31k
        {
7267
1.31k
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ':' block"));
7268
1.31k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7269
1.31k
            if (_token == NULL) {
7270
0
                p->level--;
7271
0
                return NULL;
7272
0
            }
7273
1.31k
            int _end_lineno = _token->end_lineno;
7274
1.31k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7275
1.31k
            int _end_col_offset = _token->end_col_offset;
7276
1.31k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7277
1.31k
            _res = _PyAST_ExceptHandler ( e , NULL , b , EXTRA );
7278
1.31k
            if (_res == NULL && PyErr_Occurred()) {
7279
0
                p->error_indicator = 1;
7280
0
                p->level--;
7281
0
                return NULL;
7282
0
            }
7283
1.31k
            goto done;
7284
1.31k
        }
7285
11.4k
        p->mark = _mark;
7286
11.4k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7287
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ':' block"));
7288
11.4k
    }
7289
0
    { // 'except' expression 'as' NAME ':' block
7290
11.4k
        if (p->error_indicator) {
7291
10
            p->level--;
7292
10
            return NULL;
7293
10
        }
7294
11.4k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7295
11.4k
        Token * _keyword;
7296
11.4k
        Token * _keyword_1;
7297
11.4k
        Token * _literal;
7298
11.4k
        asdl_stmt_seq* b;
7299
11.4k
        expr_ty e;
7300
11.4k
        expr_ty t;
7301
11.4k
        if (
7302
11.4k
            (_keyword = _PyPegen_expect_token(p, 686))  // token='except'
7303
7.54k
            &&
7304
7.54k
            (e = expression_rule(p))  // expression
7305
1.04k
            &&
7306
1.04k
            (_keyword_1 = _PyPegen_expect_token(p, 689))  // token='as'
7307
421
            &&
7308
421
            (t = _PyPegen_name_token(p))  // NAME
7309
397
            &&
7310
397
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7311
389
            &&
7312
389
            (b = block_rule(p))  // block
7313
11.4k
        )
7314
373
        {
7315
373
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7316
373
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7317
373
            if (_token == NULL) {
7318
0
                p->level--;
7319
0
                return NULL;
7320
0
            }
7321
373
            int _end_lineno = _token->end_lineno;
7322
373
            UNUSED(_end_lineno); // Only used by EXTRA macro
7323
373
            int _end_col_offset = _token->end_col_offset;
7324
373
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7325
373
            _res = _PyAST_ExceptHandler ( e , ( ( expr_ty ) t ) -> v . Name . id , b , EXTRA );
7326
373
            if (_res == NULL && PyErr_Occurred()) {
7327
0
                p->error_indicator = 1;
7328
0
                p->level--;
7329
0
                return NULL;
7330
0
            }
7331
373
            goto done;
7332
373
        }
7333
11.1k
        p->mark = _mark;
7334
11.1k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7335
11.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression 'as' NAME ':' block"));
7336
11.1k
    }
7337
0
    { // 'except' expressions ':' block
7338
11.1k
        if (p->error_indicator) {
7339
5
            p->level--;
7340
5
            return NULL;
7341
5
        }
7342
11.1k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expressions ':' block"));
7343
11.1k
        Token * _keyword;
7344
11.1k
        Token * _literal;
7345
11.1k
        asdl_stmt_seq* b;
7346
11.1k
        expr_ty e;
7347
11.1k
        if (
7348
11.1k
            (_keyword = _PyPegen_expect_token(p, 686))  // token='except'
7349
7.16k
            &&
7350
7.16k
            (e = expressions_rule(p))  // expressions
7351
669
            &&
7352
669
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7353
569
            &&
7354
569
            (b = block_rule(p))  // block
7355
11.1k
        )
7356
524
        {
7357
524
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expressions ':' block"));
7358
524
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7359
524
            if (_token == NULL) {
7360
0
                p->level--;
7361
0
                return NULL;
7362
0
            }
7363
524
            int _end_lineno = _token->end_lineno;
7364
524
            UNUSED(_end_lineno); // Only used by EXTRA macro
7365
524
            int _end_col_offset = _token->end_col_offset;
7366
524
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7367
524
            _res = CHECK_VERSION ( excepthandler_ty , 14 , "except expressions without parentheses are" , _PyAST_ExceptHandler ( e , NULL , b , EXTRA ) );
7368
524
            if (_res == NULL && PyErr_Occurred()) {
7369
0
                p->error_indicator = 1;
7370
0
                p->level--;
7371
0
                return NULL;
7372
0
            }
7373
524
            goto done;
7374
524
        }
7375
10.5k
        p->mark = _mark;
7376
10.5k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7377
10.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expressions ':' block"));
7378
10.5k
    }
7379
0
    { // 'except' ':' block
7380
10.5k
        if (p->error_indicator) {
7381
1
            p->level--;
7382
1
            return NULL;
7383
1
        }
7384
10.5k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
7385
10.5k
        Token * _keyword;
7386
10.5k
        Token * _literal;
7387
10.5k
        asdl_stmt_seq* b;
7388
10.5k
        if (
7389
10.5k
            (_keyword = _PyPegen_expect_token(p, 686))  // token='except'
7390
6.63k
            &&
7391
6.63k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7392
4.18k
            &&
7393
4.18k
            (b = block_rule(p))  // block
7394
10.5k
        )
7395
4.10k
        {
7396
4.10k
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
7397
4.10k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7398
4.10k
            if (_token == NULL) {
7399
0
                p->level--;
7400
0
                return NULL;
7401
0
            }
7402
4.10k
            int _end_lineno = _token->end_lineno;
7403
4.10k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7404
4.10k
            int _end_col_offset = _token->end_col_offset;
7405
4.10k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7406
4.10k
            _res = _PyAST_ExceptHandler ( NULL , NULL , b , EXTRA );
7407
4.10k
            if (_res == NULL && PyErr_Occurred()) {
7408
0
                p->error_indicator = 1;
7409
0
                p->level--;
7410
0
                return NULL;
7411
0
            }
7412
4.10k
            goto done;
7413
4.10k
        }
7414
6.47k
        p->mark = _mark;
7415
6.47k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7416
6.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' block"));
7417
6.47k
    }
7418
6.47k
    if (p->call_invalid_rules) { // invalid_except_stmt
7419
3.30k
        if (p->error_indicator) {
7420
15
            p->level--;
7421
15
            return NULL;
7422
15
        }
7423
3.28k
        D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
7424
3.28k
        void *invalid_except_stmt_var;
7425
3.28k
        if (
7426
3.28k
            (invalid_except_stmt_var = invalid_except_stmt_rule(p))  // invalid_except_stmt
7427
3.28k
        )
7428
0
        {
7429
0
            D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
7430
0
            _res = invalid_except_stmt_var;
7431
0
            goto done;
7432
0
        }
7433
3.28k
        p->mark = _mark;
7434
3.28k
        D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7435
3.28k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt"));
7436
3.28k
    }
7437
6.46k
    _res = NULL;
7438
12.7k
  done:
7439
12.7k
    p->level--;
7440
12.7k
    return _res;
7441
6.46k
}
7442
7443
// except_star_block:
7444
//     | invalid_except_star_stmt_indent
7445
//     | 'except' '*' expression ':' block
7446
//     | 'except' '*' expression 'as' NAME ':' block
7447
//     | 'except' '*' expressions ':' block
7448
//     | invalid_except_star_stmt
7449
static excepthandler_ty
7450
except_star_block_rule(Parser *p)
7451
7.43k
{
7452
7.43k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7453
0
        _Pypegen_stack_overflow(p);
7454
0
    }
7455
7.43k
    if (p->error_indicator) {
7456
0
        p->level--;
7457
0
        return NULL;
7458
0
    }
7459
7.43k
    excepthandler_ty _res = NULL;
7460
7.43k
    int _mark = p->mark;
7461
7.43k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7462
1
        p->error_indicator = 1;
7463
1
        p->level--;
7464
1
        return NULL;
7465
1
    }
7466
7.43k
    int _start_lineno = p->tokens[_mark]->lineno;
7467
7.43k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7468
7.43k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7469
7.43k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7470
7.43k
    if (p->call_invalid_rules) { // invalid_except_star_stmt_indent
7471
4.61k
        if (p->error_indicator) {
7472
0
            p->level--;
7473
0
            return NULL;
7474
0
        }
7475
4.61k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt_indent"));
7476
4.61k
        void *invalid_except_star_stmt_indent_var;
7477
4.61k
        if (
7478
4.61k
            (invalid_except_star_stmt_indent_var = invalid_except_star_stmt_indent_rule(p))  // invalid_except_star_stmt_indent
7479
4.61k
        )
7480
0
        {
7481
0
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt_indent"));
7482
0
            _res = invalid_except_star_stmt_indent_var;
7483
0
            goto done;
7484
0
        }
7485
4.61k
        p->mark = _mark;
7486
4.61k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7487
4.61k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_star_stmt_indent"));
7488
4.61k
    }
7489
7.43k
    { // 'except' '*' expression ':' block
7490
7.43k
        if (p->error_indicator) {
7491
5
            p->level--;
7492
5
            return NULL;
7493
5
        }
7494
7.42k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ':' block"));
7495
7.42k
        Token * _keyword;
7496
7.42k
        Token * _literal;
7497
7.42k
        Token * _literal_1;
7498
7.42k
        asdl_stmt_seq* b;
7499
7.42k
        expr_ty e;
7500
7.42k
        if (
7501
7.42k
            (_keyword = _PyPegen_expect_token(p, 686))  // token='except'
7502
4.78k
            &&
7503
4.78k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7504
3.90k
            &&
7505
3.90k
            (e = expression_rule(p))  // expression
7506
3.86k
            &&
7507
3.86k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7508
2.95k
            &&
7509
2.95k
            (b = block_rule(p))  // block
7510
7.42k
        )
7511
2.92k
        {
7512
2.92k
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ':' block"));
7513
2.92k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7514
2.92k
            if (_token == NULL) {
7515
0
                p->level--;
7516
0
                return NULL;
7517
0
            }
7518
2.92k
            int _end_lineno = _token->end_lineno;
7519
2.92k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7520
2.92k
            int _end_col_offset = _token->end_col_offset;
7521
2.92k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7522
2.92k
            _res = _PyAST_ExceptHandler ( e , NULL , b , EXTRA );
7523
2.92k
            if (_res == NULL && PyErr_Occurred()) {
7524
0
                p->error_indicator = 1;
7525
0
                p->level--;
7526
0
                return NULL;
7527
0
            }
7528
2.92k
            goto done;
7529
2.92k
        }
7530
4.50k
        p->mark = _mark;
7531
4.50k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7532
4.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ':' block"));
7533
4.50k
    }
7534
0
    { // 'except' '*' expression 'as' NAME ':' block
7535
4.50k
        if (p->error_indicator) {
7536
4
            p->level--;
7537
4
            return NULL;
7538
4
        }
7539
4.49k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' NAME ':' block"));
7540
4.49k
        Token * _keyword;
7541
4.49k
        Token * _keyword_1;
7542
4.49k
        Token * _literal;
7543
4.49k
        Token * _literal_1;
7544
4.49k
        asdl_stmt_seq* b;
7545
4.49k
        expr_ty e;
7546
4.49k
        expr_ty t;
7547
4.49k
        if (
7548
4.49k
            (_keyword = _PyPegen_expect_token(p, 686))  // token='except'
7549
1.85k
            &&
7550
1.85k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7551
969
            &&
7552
969
            (e = expression_rule(p))  // expression
7553
934
            &&
7554
934
            (_keyword_1 = _PyPegen_expect_token(p, 689))  // token='as'
7555
240
            &&
7556
240
            (t = _PyPegen_name_token(p))  // NAME
7557
230
            &&
7558
230
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7559
224
            &&
7560
224
            (b = block_rule(p))  // block
7561
4.49k
        )
7562
218
        {
7563
218
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' NAME ':' block"));
7564
218
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7565
218
            if (_token == NULL) {
7566
0
                p->level--;
7567
0
                return NULL;
7568
0
            }
7569
218
            int _end_lineno = _token->end_lineno;
7570
218
            UNUSED(_end_lineno); // Only used by EXTRA macro
7571
218
            int _end_col_offset = _token->end_col_offset;
7572
218
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7573
218
            _res = _PyAST_ExceptHandler ( e , ( ( expr_ty ) t ) -> v . Name . id , b , EXTRA );
7574
218
            if (_res == NULL && PyErr_Occurred()) {
7575
0
                p->error_indicator = 1;
7576
0
                p->level--;
7577
0
                return NULL;
7578
0
            }
7579
218
            goto done;
7580
218
        }
7581
4.27k
        p->mark = _mark;
7582
4.27k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7583
4.27k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression 'as' NAME ':' block"));
7584
4.27k
    }
7585
0
    { // 'except' '*' expressions ':' block
7586
4.27k
        if (p->error_indicator) {
7587
2
            p->level--;
7588
2
            return NULL;
7589
2
        }
7590
4.27k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expressions ':' block"));
7591
4.27k
        Token * _keyword;
7592
4.27k
        Token * _literal;
7593
4.27k
        Token * _literal_1;
7594
4.27k
        asdl_stmt_seq* b;
7595
4.27k
        expr_ty e;
7596
4.27k
        if (
7597
4.27k
            (_keyword = _PyPegen_expect_token(p, 686))  // token='except'
7598
1.63k
            &&
7599
1.63k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7600
749
            &&
7601
749
            (e = expressions_rule(p))  // expressions
7602
714
            &&
7603
714
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7604
639
            &&
7605
639
            (b = block_rule(p))  // block
7606
4.27k
        )
7607
610
        {
7608
610
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expressions ':' block"));
7609
610
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7610
610
            if (_token == NULL) {
7611
0
                p->level--;
7612
0
                return NULL;
7613
0
            }
7614
610
            int _end_lineno = _token->end_lineno;
7615
610
            UNUSED(_end_lineno); // Only used by EXTRA macro
7616
610
            int _end_col_offset = _token->end_col_offset;
7617
610
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7618
610
            _res = CHECK_VERSION ( excepthandler_ty , 14 , "except expressions without parentheses are" , _PyAST_ExceptHandler ( e , NULL , b , EXTRA ) );
7619
610
            if (_res == NULL && PyErr_Occurred()) {
7620
0
                p->error_indicator = 1;
7621
0
                p->level--;
7622
0
                return NULL;
7623
0
            }
7624
610
            goto done;
7625
610
        }
7626
3.66k
        p->mark = _mark;
7627
3.66k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7628
3.66k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expressions ':' block"));
7629
3.66k
    }
7630
3.66k
    if (p->call_invalid_rules) { // invalid_except_star_stmt
7631
2.52k
        if (p->error_indicator) {
7632
1
            p->level--;
7633
1
            return NULL;
7634
1
        }
7635
2.52k
        D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt"));
7636
2.52k
        void *invalid_except_star_stmt_var;
7637
2.52k
        if (
7638
2.52k
            (invalid_except_star_stmt_var = invalid_except_star_stmt_rule(p))  // invalid_except_star_stmt
7639
2.52k
        )
7640
0
        {
7641
0
            D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt"));
7642
0
            _res = invalid_except_star_stmt_var;
7643
0
            goto done;
7644
0
        }
7645
2.52k
        p->mark = _mark;
7646
2.52k
        D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7647
2.52k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_star_stmt"));
7648
2.52k
    }
7649
3.66k
    _res = NULL;
7650
7.42k
  done:
7651
7.42k
    p->level--;
7652
7.42k
    return _res;
7653
3.66k
}
7654
7655
// finally_block: invalid_finally_stmt | 'finally' &&':' block
7656
static asdl_stmt_seq*
7657
finally_block_rule(Parser *p)
7658
10.1k
{
7659
10.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7660
0
        _Pypegen_stack_overflow(p);
7661
0
    }
7662
10.1k
    if (p->error_indicator) {
7663
0
        p->level--;
7664
0
        return NULL;
7665
0
    }
7666
10.1k
    asdl_stmt_seq* _res = NULL;
7667
10.1k
    int _mark = p->mark;
7668
10.1k
    if (p->call_invalid_rules) { // invalid_finally_stmt
7669
3.10k
        if (p->error_indicator) {
7670
0
            p->level--;
7671
0
            return NULL;
7672
0
        }
7673
3.10k
        D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
7674
3.10k
        void *invalid_finally_stmt_var;
7675
3.10k
        if (
7676
3.10k
            (invalid_finally_stmt_var = invalid_finally_stmt_rule(p))  // invalid_finally_stmt
7677
3.10k
        )
7678
0
        {
7679
0
            D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
7680
0
            _res = invalid_finally_stmt_var;
7681
0
            goto done;
7682
0
        }
7683
3.10k
        p->mark = _mark;
7684
3.10k
        D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
7685
3.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_finally_stmt"));
7686
3.10k
    }
7687
10.1k
    { // 'finally' &&':' block
7688
10.1k
        if (p->error_indicator) {
7689
2
            p->level--;
7690
2
            return NULL;
7691
2
        }
7692
10.1k
        D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
7693
10.1k
        Token * _keyword;
7694
10.1k
        Token * _literal;
7695
10.1k
        asdl_stmt_seq* a;
7696
10.1k
        if (
7697
10.1k
            (_keyword = _PyPegen_expect_token(p, 682))  // token='finally'
7698
1.26k
            &&
7699
1.26k
            (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7700
1.26k
            &&
7701
1.26k
            (a = block_rule(p))  // block
7702
10.1k
        )
7703
1.24k
        {
7704
1.24k
            D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
7705
1.24k
            _res = a;
7706
1.24k
            if (_res == NULL && PyErr_Occurred()) {
7707
0
                p->error_indicator = 1;
7708
0
                p->level--;
7709
0
                return NULL;
7710
0
            }
7711
1.24k
            goto done;
7712
1.24k
        }
7713
8.86k
        p->mark = _mark;
7714
8.86k
        D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
7715
8.86k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' &&':' block"));
7716
8.86k
    }
7717
8.86k
    _res = NULL;
7718
10.1k
  done:
7719
10.1k
    p->level--;
7720
10.1k
    return _res;
7721
8.86k
}
7722
7723
// match_stmt:
7724
//     | "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
7725
//     | invalid_match_stmt
7726
static stmt_ty
7727
match_stmt_rule(Parser *p)
7728
133k
{
7729
133k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7730
0
        _Pypegen_stack_overflow(p);
7731
0
    }
7732
133k
    if (p->error_indicator) {
7733
0
        p->level--;
7734
0
        return NULL;
7735
0
    }
7736
133k
    stmt_ty _res = NULL;
7737
133k
    int _mark = p->mark;
7738
133k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7739
0
        p->error_indicator = 1;
7740
0
        p->level--;
7741
0
        return NULL;
7742
0
    }
7743
133k
    int _start_lineno = p->tokens[_mark]->lineno;
7744
133k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7745
133k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7746
133k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7747
133k
    { // "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
7748
133k
        if (p->error_indicator) {
7749
0
            p->level--;
7750
0
            return NULL;
7751
0
        }
7752
133k
        D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7753
133k
        expr_ty _keyword;
7754
133k
        Token * _literal;
7755
133k
        asdl_match_case_seq* cases;
7756
133k
        Token * dedent_var;
7757
133k
        Token * indent_var;
7758
133k
        Token * newline_var;
7759
133k
        expr_ty subject;
7760
133k
        if (
7761
133k
            (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
7762
3.87k
            &&
7763
3.87k
            (subject = subject_expr_rule(p))  // subject_expr
7764
3.01k
            &&
7765
3.01k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7766
2.44k
            &&
7767
2.44k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
7768
1.87k
            &&
7769
1.87k
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
7770
1.86k
            &&
7771
1.86k
            (cases = (asdl_match_case_seq*)_loop1_38_rule(p))  // case_block+
7772
707
            &&
7773
707
            (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
7774
133k
        )
7775
584
        {
7776
584
            D(fprintf(stderr, "%*c+ match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7777
584
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7778
584
            if (_token == NULL) {
7779
0
                p->level--;
7780
0
                return NULL;
7781
0
            }
7782
584
            int _end_lineno = _token->end_lineno;
7783
584
            UNUSED(_end_lineno); // Only used by EXTRA macro
7784
584
            int _end_col_offset = _token->end_col_offset;
7785
584
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7786
584
            _res = CHECK_VERSION ( stmt_ty , 10 , "Pattern matching is" , _PyAST_Match ( subject , cases , EXTRA ) );
7787
584
            if (_res == NULL && PyErr_Occurred()) {
7788
0
                p->error_indicator = 1;
7789
0
                p->level--;
7790
0
                return NULL;
7791
0
            }
7792
584
            goto done;
7793
584
        }
7794
133k
        p->mark = _mark;
7795
133k
        D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7796
133k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7797
133k
    }
7798
133k
    if (p->call_invalid_rules) { // invalid_match_stmt
7799
21.5k
        if (p->error_indicator) {
7800
134
            p->level--;
7801
134
            return NULL;
7802
134
        }
7803
21.4k
        D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_match_stmt"));
7804
21.4k
        void *invalid_match_stmt_var;
7805
21.4k
        if (
7806
21.4k
            (invalid_match_stmt_var = invalid_match_stmt_rule(p))  // invalid_match_stmt
7807
21.4k
        )
7808
0
        {
7809
0
            D(fprintf(stderr, "%*c+ match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_match_stmt"));
7810
0
            _res = invalid_match_stmt_var;
7811
0
            goto done;
7812
0
        }
7813
21.4k
        p->mark = _mark;
7814
21.4k
        D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7815
21.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_match_stmt"));
7816
21.4k
    }
7817
133k
    _res = NULL;
7818
133k
  done:
7819
133k
    p->level--;
7820
133k
    return _res;
7821
133k
}
7822
7823
// subject_expr: star_named_expression ',' star_named_expressions? | named_expression
7824
static expr_ty
7825
subject_expr_rule(Parser *p)
7826
6.42k
{
7827
6.42k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7828
0
        _Pypegen_stack_overflow(p);
7829
0
    }
7830
6.42k
    if (p->error_indicator) {
7831
0
        p->level--;
7832
0
        return NULL;
7833
0
    }
7834
6.42k
    expr_ty _res = NULL;
7835
6.42k
    int _mark = p->mark;
7836
6.42k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7837
1
        p->error_indicator = 1;
7838
1
        p->level--;
7839
1
        return NULL;
7840
1
    }
7841
6.42k
    int _start_lineno = p->tokens[_mark]->lineno;
7842
6.42k
    UNUSED(_start_lineno); // Only used by EXTRA macro
7843
6.42k
    int _start_col_offset = p->tokens[_mark]->col_offset;
7844
6.42k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
7845
6.42k
    { // star_named_expression ',' star_named_expressions?
7846
6.42k
        if (p->error_indicator) {
7847
0
            p->level--;
7848
0
            return NULL;
7849
0
        }
7850
6.42k
        D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7851
6.42k
        Token * _literal;
7852
6.42k
        expr_ty value;
7853
6.42k
        void *values;
7854
6.42k
        if (
7855
6.42k
            (value = star_named_expression_rule(p))  // star_named_expression
7856
4.90k
            &&
7857
4.90k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
7858
1.03k
            &&
7859
1.03k
            (values = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
7860
6.42k
        )
7861
1.03k
        {
7862
1.03k
            D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7863
1.03k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7864
1.03k
            if (_token == NULL) {
7865
0
                p->level--;
7866
0
                return NULL;
7867
0
            }
7868
1.03k
            int _end_lineno = _token->end_lineno;
7869
1.03k
            UNUSED(_end_lineno); // Only used by EXTRA macro
7870
1.03k
            int _end_col_offset = _token->end_col_offset;
7871
1.03k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
7872
1.03k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , value , values ) ) , Load , EXTRA );
7873
1.03k
            if (_res == NULL && PyErr_Occurred()) {
7874
0
                p->error_indicator = 1;
7875
0
                p->level--;
7876
0
                return NULL;
7877
0
            }
7878
1.03k
            goto done;
7879
1.03k
        }
7880
5.39k
        p->mark = _mark;
7881
5.39k
        D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
7882
5.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7883
5.39k
    }
7884
0
    { // named_expression
7885
5.39k
        if (p->error_indicator) {
7886
4
            p->level--;
7887
4
            return NULL;
7888
4
        }
7889
5.38k
        D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
7890
5.38k
        expr_ty named_expression_var;
7891
5.38k
        if (
7892
5.38k
            (named_expression_var = named_expression_rule(p))  // named_expression
7893
5.38k
        )
7894
3.86k
        {
7895
3.86k
            D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
7896
3.86k
            _res = named_expression_var;
7897
3.86k
            goto done;
7898
3.86k
        }
7899
1.52k
        p->mark = _mark;
7900
1.52k
        D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
7901
1.52k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
7902
1.52k
    }
7903
1.52k
    _res = NULL;
7904
6.42k
  done:
7905
6.42k
    p->level--;
7906
6.42k
    return _res;
7907
1.52k
}
7908
7909
// case_block: invalid_case_block | "case" patterns guard? ':' block
7910
static match_case_ty
7911
case_block_rule(Parser *p)
7912
5.86k
{
7913
5.86k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7914
0
        _Pypegen_stack_overflow(p);
7915
0
    }
7916
5.86k
    if (p->error_indicator) {
7917
0
        p->level--;
7918
0
        return NULL;
7919
0
    }
7920
5.86k
    match_case_ty _res = NULL;
7921
5.86k
    int _mark = p->mark;
7922
5.86k
    if (p->call_invalid_rules) { // invalid_case_block
7923
2.06k
        if (p->error_indicator) {
7924
0
            p->level--;
7925
0
            return NULL;
7926
0
        }
7927
2.06k
        D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_case_block"));
7928
2.06k
        void *invalid_case_block_var;
7929
2.06k
        if (
7930
2.06k
            (invalid_case_block_var = invalid_case_block_rule(p))  // invalid_case_block
7931
2.06k
        )
7932
0
        {
7933
0
            D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_case_block"));
7934
0
            _res = invalid_case_block_var;
7935
0
            goto done;
7936
0
        }
7937
2.06k
        p->mark = _mark;
7938
2.06k
        D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
7939
2.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_case_block"));
7940
2.06k
    }
7941
5.86k
    { // "case" patterns guard? ':' block
7942
5.86k
        if (p->error_indicator) {
7943
131
            p->level--;
7944
131
            return NULL;
7945
131
        }
7946
5.73k
        D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
7947
5.73k
        expr_ty _keyword;
7948
5.73k
        Token * _literal;
7949
5.73k
        asdl_stmt_seq* body;
7950
5.73k
        void *guard;
7951
5.73k
        pattern_ty pattern;
7952
5.73k
        if (
7953
5.73k
            (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
7954
5.11k
            &&
7955
5.11k
            (pattern = patterns_rule(p))  // patterns
7956
4.35k
            &&
7957
4.35k
            (guard = guard_rule(p), !p->error_indicator)  // guard?
7958
4.35k
            &&
7959
4.35k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7960
4.05k
            &&
7961
4.05k
            (body = block_rule(p))  // block
7962
5.73k
        )
7963
4.00k
        {
7964
4.00k
            D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
7965
4.00k
            _res = _PyAST_match_case ( pattern , guard , body , p -> arena );
7966
4.00k
            if (_res == NULL && PyErr_Occurred()) {
7967
0
                p->error_indicator = 1;
7968
0
                p->level--;
7969
0
                return NULL;
7970
0
            }
7971
4.00k
            goto done;
7972
4.00k
        }
7973
1.73k
        p->mark = _mark;
7974
1.73k
        D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
7975
1.73k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? ':' block"));
7976
1.73k
    }
7977
1.73k
    _res = NULL;
7978
5.73k
  done:
7979
5.73k
    p->level--;
7980
5.73k
    return _res;
7981
1.73k
}
7982
7983
// guard: 'if' named_expression
7984
static expr_ty
7985
guard_rule(Parser *p)
7986
7.45k
{
7987
7.45k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
7988
0
        _Pypegen_stack_overflow(p);
7989
0
    }
7990
7.45k
    if (p->error_indicator) {
7991
0
        p->level--;
7992
0
        return NULL;
7993
0
    }
7994
7.45k
    expr_ty _res = NULL;
7995
7.45k
    int _mark = p->mark;
7996
7.45k
    { // 'if' named_expression
7997
7.45k
        if (p->error_indicator) {
7998
0
            p->level--;
7999
0
            return NULL;
8000
0
        }
8001
7.45k
        D(fprintf(stderr, "%*c> guard[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
8002
7.45k
        Token * _keyword;
8003
7.45k
        expr_ty guard;
8004
7.45k
        if (
8005
7.45k
            (_keyword = _PyPegen_expect_token(p, 691))  // token='if'
8006
268
            &&
8007
268
            (guard = named_expression_rule(p))  // named_expression
8008
7.45k
        )
8009
260
        {
8010
260
            D(fprintf(stderr, "%*c+ guard[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
8011
260
            _res = guard;
8012
260
            if (_res == NULL && PyErr_Occurred()) {
8013
0
                p->error_indicator = 1;
8014
0
                p->level--;
8015
0
                return NULL;
8016
0
            }
8017
260
            goto done;
8018
260
        }
8019
7.19k
        p->mark = _mark;
8020
7.19k
        D(fprintf(stderr, "%*c%s guard[%d-%d]: %s failed!\n", p->level, ' ',
8021
7.19k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression"));
8022
7.19k
    }
8023
7.19k
    _res = NULL;
8024
7.45k
  done:
8025
7.45k
    p->level--;
8026
7.45k
    return _res;
8027
7.19k
}
8028
8029
// patterns: open_sequence_pattern | pattern
8030
static pattern_ty
8031
patterns_rule(Parser *p)
8032
8.77k
{
8033
8.77k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8034
0
        _Pypegen_stack_overflow(p);
8035
0
    }
8036
8.77k
    if (p->error_indicator) {
8037
0
        p->level--;
8038
0
        return NULL;
8039
0
    }
8040
8.77k
    pattern_ty _res = NULL;
8041
8.77k
    int _mark = p->mark;
8042
8.77k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8043
1
        p->error_indicator = 1;
8044
1
        p->level--;
8045
1
        return NULL;
8046
1
    }
8047
8.76k
    int _start_lineno = p->tokens[_mark]->lineno;
8048
8.76k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8049
8.76k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8050
8.76k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8051
8.76k
    { // open_sequence_pattern
8052
8.76k
        if (p->error_indicator) {
8053
0
            p->level--;
8054
0
            return NULL;
8055
0
        }
8056
8.76k
        D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
8057
8.76k
        asdl_pattern_seq* patterns;
8058
8.76k
        if (
8059
8.76k
            (patterns = (asdl_pattern_seq*)open_sequence_pattern_rule(p))  // open_sequence_pattern
8060
8.76k
        )
8061
1.91k
        {
8062
1.91k
            D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
8063
1.91k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8064
1.91k
            if (_token == NULL) {
8065
0
                p->level--;
8066
0
                return NULL;
8067
0
            }
8068
1.91k
            int _end_lineno = _token->end_lineno;
8069
1.91k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8070
1.91k
            int _end_col_offset = _token->end_col_offset;
8071
1.91k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8072
1.91k
            _res = _PyAST_MatchSequence ( patterns , EXTRA );
8073
1.91k
            if (_res == NULL && PyErr_Occurred()) {
8074
0
                p->error_indicator = 1;
8075
0
                p->level--;
8076
0
                return NULL;
8077
0
            }
8078
1.91k
            goto done;
8079
1.91k
        }
8080
6.85k
        p->mark = _mark;
8081
6.85k
        D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
8082
6.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "open_sequence_pattern"));
8083
6.85k
    }
8084
0
    { // pattern
8085
6.85k
        if (p->error_indicator) {
8086
252
            p->level--;
8087
252
            return NULL;
8088
252
        }
8089
6.60k
        D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
8090
6.60k
        pattern_ty pattern_var;
8091
6.60k
        if (
8092
6.60k
            (pattern_var = pattern_rule(p))  // pattern
8093
6.60k
        )
8094
5.54k
        {
8095
5.54k
            D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
8096
5.54k
            _res = pattern_var;
8097
5.54k
            goto done;
8098
5.54k
        }
8099
1.06k
        p->mark = _mark;
8100
1.06k
        D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
8101
1.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
8102
1.06k
    }
8103
1.06k
    _res = NULL;
8104
8.51k
  done:
8105
8.51k
    p->level--;
8106
8.51k
    return _res;
8107
1.06k
}
8108
8109
// pattern: as_pattern | or_pattern
8110
static pattern_ty
8111
pattern_rule(Parser *p)
8112
82.6k
{
8113
82.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8114
0
        _Pypegen_stack_overflow(p);
8115
0
    }
8116
82.6k
    if (p->error_indicator) {
8117
0
        p->level--;
8118
0
        return NULL;
8119
0
    }
8120
82.6k
    pattern_ty _res = NULL;
8121
82.6k
    int _mark = p->mark;
8122
82.6k
    { // as_pattern
8123
82.6k
        if (p->error_indicator) {
8124
0
            p->level--;
8125
0
            return NULL;
8126
0
        }
8127
82.6k
        D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "as_pattern"));
8128
82.6k
        pattern_ty as_pattern_var;
8129
82.6k
        if (
8130
82.6k
            (as_pattern_var = as_pattern_rule(p))  // as_pattern
8131
82.6k
        )
8132
564
        {
8133
564
            D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "as_pattern"));
8134
564
            _res = as_pattern_var;
8135
564
            goto done;
8136
564
        }
8137
82.0k
        p->mark = _mark;
8138
82.0k
        D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
8139
82.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "as_pattern"));
8140
82.0k
    }
8141
0
    { // or_pattern
8142
82.0k
        if (p->error_indicator) {
8143
3.75k
            p->level--;
8144
3.75k
            return NULL;
8145
3.75k
        }
8146
78.3k
        D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern"));
8147
78.3k
        pattern_ty or_pattern_var;
8148
78.3k
        if (
8149
78.3k
            (or_pattern_var = or_pattern_rule(p))  // or_pattern
8150
78.3k
        )
8151
51.8k
        {
8152
51.8k
            D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern"));
8153
51.8k
            _res = or_pattern_var;
8154
51.8k
            goto done;
8155
51.8k
        }
8156
26.5k
        p->mark = _mark;
8157
26.5k
        D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
8158
26.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern"));
8159
26.5k
    }
8160
26.5k
    _res = NULL;
8161
78.8k
  done:
8162
78.8k
    p->level--;
8163
78.8k
    return _res;
8164
26.5k
}
8165
8166
// as_pattern: or_pattern 'as' pattern_capture_target | invalid_as_pattern
8167
static pattern_ty
8168
as_pattern_rule(Parser *p)
8169
82.6k
{
8170
82.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8171
0
        _Pypegen_stack_overflow(p);
8172
0
    }
8173
82.6k
    if (p->error_indicator) {
8174
0
        p->level--;
8175
0
        return NULL;
8176
0
    }
8177
82.6k
    pattern_ty _res = NULL;
8178
82.6k
    int _mark = p->mark;
8179
82.6k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8180
38
        p->error_indicator = 1;
8181
38
        p->level--;
8182
38
        return NULL;
8183
38
    }
8184
82.6k
    int _start_lineno = p->tokens[_mark]->lineno;
8185
82.6k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8186
82.6k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8187
82.6k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8188
82.6k
    { // or_pattern 'as' pattern_capture_target
8189
82.6k
        if (p->error_indicator) {
8190
0
            p->level--;
8191
0
            return NULL;
8192
0
        }
8193
82.6k
        D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8194
82.6k
        Token * _keyword;
8195
82.6k
        pattern_ty pattern;
8196
82.6k
        expr_ty target;
8197
82.6k
        if (
8198
82.6k
            (pattern = or_pattern_rule(p))  // or_pattern
8199
52.4k
            &&
8200
52.4k
            (_keyword = _PyPegen_expect_token(p, 689))  // token='as'
8201
596
            &&
8202
596
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
8203
82.6k
        )
8204
564
        {
8205
564
            D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8206
564
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8207
564
            if (_token == NULL) {
8208
0
                p->level--;
8209
0
                return NULL;
8210
0
            }
8211
564
            int _end_lineno = _token->end_lineno;
8212
564
            UNUSED(_end_lineno); // Only used by EXTRA macro
8213
564
            int _end_col_offset = _token->end_col_offset;
8214
564
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8215
564
            _res = _PyAST_MatchAs ( pattern , target -> v . Name . id , EXTRA );
8216
564
            if (_res == NULL && PyErr_Occurred()) {
8217
0
                p->error_indicator = 1;
8218
0
                p->level--;
8219
0
                return NULL;
8220
0
            }
8221
564
            goto done;
8222
564
        }
8223
82.0k
        p->mark = _mark;
8224
82.0k
        D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8225
82.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
8226
82.0k
    }
8227
82.0k
    if (p->call_invalid_rules) { // invalid_as_pattern
8228
42.9k
        if (p->error_indicator) {
8229
1.56k
            p->level--;
8230
1.56k
            return NULL;
8231
1.56k
        }
8232
41.3k
        D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
8233
41.3k
        void *invalid_as_pattern_var;
8234
41.3k
        if (
8235
41.3k
            (invalid_as_pattern_var = invalid_as_pattern_rule(p))  // invalid_as_pattern
8236
41.3k
        )
8237
0
        {
8238
0
            D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
8239
0
            _res = invalid_as_pattern_var;
8240
0
            goto done;
8241
0
        }
8242
41.3k
        p->mark = _mark;
8243
41.3k
        D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8244
41.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_as_pattern"));
8245
41.3k
    }
8246
80.4k
    _res = NULL;
8247
81.0k
  done:
8248
81.0k
    p->level--;
8249
81.0k
    return _res;
8250
80.4k
}
8251
8252
// or_pattern: '|'.closed_pattern+
8253
static pattern_ty
8254
or_pattern_rule(Parser *p)
8255
243k
{
8256
243k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8257
0
        _Pypegen_stack_overflow(p);
8258
0
    }
8259
243k
    if (p->error_indicator) {
8260
0
        p->level--;
8261
0
        return NULL;
8262
0
    }
8263
243k
    pattern_ty _res = NULL;
8264
243k
    int _mark = p->mark;
8265
243k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8266
0
        p->error_indicator = 1;
8267
0
        p->level--;
8268
0
        return NULL;
8269
0
    }
8270
243k
    int _start_lineno = p->tokens[_mark]->lineno;
8271
243k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8272
243k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8273
243k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8274
243k
    { // '|'.closed_pattern+
8275
243k
        if (p->error_indicator) {
8276
0
            p->level--;
8277
0
            return NULL;
8278
0
        }
8279
243k
        D(fprintf(stderr, "%*c> or_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
8280
243k
        asdl_pattern_seq* patterns;
8281
243k
        if (
8282
243k
            (patterns = (asdl_pattern_seq*)_gather_40_rule(p))  // '|'.closed_pattern+
8283
243k
        )
8284
156k
        {
8285
156k
            D(fprintf(stderr, "%*c+ or_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
8286
156k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8287
156k
            if (_token == NULL) {
8288
0
                p->level--;
8289
0
                return NULL;
8290
0
            }
8291
156k
            int _end_lineno = _token->end_lineno;
8292
156k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8293
156k
            int _end_col_offset = _token->end_col_offset;
8294
156k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8295
156k
            _res = asdl_seq_LEN ( patterns ) == 1 ? asdl_seq_GET ( patterns , 0 ) : _PyAST_MatchOr ( patterns , EXTRA );
8296
156k
            if (_res == NULL && PyErr_Occurred()) {
8297
0
                p->error_indicator = 1;
8298
0
                p->level--;
8299
0
                return NULL;
8300
0
            }
8301
156k
            goto done;
8302
156k
        }
8303
87.6k
        p->mark = _mark;
8304
87.6k
        D(fprintf(stderr, "%*c%s or_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8305
87.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|'.closed_pattern+"));
8306
87.6k
    }
8307
87.6k
    _res = NULL;
8308
243k
  done:
8309
243k
    p->level--;
8310
243k
    return _res;
8311
87.6k
}
8312
8313
// closed_pattern:
8314
//     | literal_pattern
8315
//     | capture_pattern
8316
//     | wildcard_pattern
8317
//     | value_pattern
8318
//     | group_pattern
8319
//     | sequence_pattern
8320
//     | mapping_pattern
8321
//     | class_pattern
8322
static pattern_ty
8323
closed_pattern_rule(Parser *p)
8324
256k
{
8325
256k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8326
0
        _Pypegen_stack_overflow(p);
8327
0
    }
8328
256k
    if (p->error_indicator) {
8329
0
        p->level--;
8330
0
        return NULL;
8331
0
    }
8332
256k
    pattern_ty _res = NULL;
8333
256k
    if (_PyPegen_is_memoized(p, closed_pattern_type, &_res)) {
8334
204k
        p->level--;
8335
204k
        return _res;
8336
204k
    }
8337
52.6k
    int _mark = p->mark;
8338
52.6k
    { // literal_pattern
8339
52.6k
        if (p->error_indicator) {
8340
0
            p->level--;
8341
0
            return NULL;
8342
0
        }
8343
52.6k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
8344
52.6k
        pattern_ty literal_pattern_var;
8345
52.6k
        if (
8346
52.6k
            (literal_pattern_var = literal_pattern_rule(p))  // literal_pattern
8347
52.6k
        )
8348
5.25k
        {
8349
5.25k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
8350
5.25k
            _res = literal_pattern_var;
8351
5.25k
            goto done;
8352
5.25k
        }
8353
47.4k
        p->mark = _mark;
8354
47.4k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8355
47.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_pattern"));
8356
47.4k
    }
8357
0
    { // capture_pattern
8358
47.4k
        if (p->error_indicator) {
8359
22
            p->level--;
8360
22
            return NULL;
8361
22
        }
8362
47.4k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
8363
47.4k
        pattern_ty capture_pattern_var;
8364
47.4k
        if (
8365
47.4k
            (capture_pattern_var = capture_pattern_rule(p))  // capture_pattern
8366
47.4k
        )
8367
16.0k
        {
8368
16.0k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
8369
16.0k
            _res = capture_pattern_var;
8370
16.0k
            goto done;
8371
16.0k
        }
8372
31.3k
        p->mark = _mark;
8373
31.3k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8374
31.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "capture_pattern"));
8375
31.3k
    }
8376
0
    { // wildcard_pattern
8377
31.3k
        if (p->error_indicator) {
8378
0
            p->level--;
8379
0
            return NULL;
8380
0
        }
8381
31.3k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
8382
31.3k
        pattern_ty wildcard_pattern_var;
8383
31.3k
        if (
8384
31.3k
            (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
8385
31.3k
        )
8386
5.48k
        {
8387
5.48k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
8388
5.48k
            _res = wildcard_pattern_var;
8389
5.48k
            goto done;
8390
5.48k
        }
8391
25.8k
        p->mark = _mark;
8392
25.8k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8393
25.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "wildcard_pattern"));
8394
25.8k
    }
8395
0
    { // value_pattern
8396
25.8k
        if (p->error_indicator) {
8397
0
            p->level--;
8398
0
            return NULL;
8399
0
        }
8400
25.8k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "value_pattern"));
8401
25.8k
        pattern_ty value_pattern_var;
8402
25.8k
        if (
8403
25.8k
            (value_pattern_var = value_pattern_rule(p))  // value_pattern
8404
25.8k
        )
8405
225
        {
8406
225
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "value_pattern"));
8407
225
            _res = value_pattern_var;
8408
225
            goto done;
8409
225
        }
8410
25.6k
        p->mark = _mark;
8411
25.6k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8412
25.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "value_pattern"));
8413
25.6k
    }
8414
0
    { // group_pattern
8415
25.6k
        if (p->error_indicator) {
8416
4
            p->level--;
8417
4
            return NULL;
8418
4
        }
8419
25.6k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group_pattern"));
8420
25.6k
        pattern_ty group_pattern_var;
8421
25.6k
        if (
8422
25.6k
            (group_pattern_var = group_pattern_rule(p))  // group_pattern
8423
25.6k
        )
8424
560
        {
8425
560
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group_pattern"));
8426
560
            _res = group_pattern_var;
8427
560
            goto done;
8428
560
        }
8429
25.0k
        p->mark = _mark;
8430
25.0k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8431
25.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group_pattern"));
8432
25.0k
    }
8433
0
    { // sequence_pattern
8434
25.0k
        if (p->error_indicator) {
8435
441
            p->level--;
8436
441
            return NULL;
8437
441
        }
8438
24.6k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
8439
24.6k
        pattern_ty sequence_pattern_var;
8440
24.6k
        if (
8441
24.6k
            (sequence_pattern_var = sequence_pattern_rule(p))  // sequence_pattern
8442
24.6k
        )
8443
1.96k
        {
8444
1.96k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
8445
1.96k
            _res = sequence_pattern_var;
8446
1.96k
            goto done;
8447
1.96k
        }
8448
22.6k
        p->mark = _mark;
8449
22.6k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8450
22.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sequence_pattern"));
8451
22.6k
    }
8452
0
    { // mapping_pattern
8453
22.6k
        if (p->error_indicator) {
8454
535
            p->level--;
8455
535
            return NULL;
8456
535
        }
8457
22.1k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
8458
22.1k
        pattern_ty mapping_pattern_var;
8459
22.1k
        if (
8460
22.1k
            (mapping_pattern_var = mapping_pattern_rule(p))  // mapping_pattern
8461
22.1k
        )
8462
2.64k
        {
8463
2.64k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
8464
2.64k
            _res = mapping_pattern_var;
8465
2.64k
            goto done;
8466
2.64k
        }
8467
19.4k
        p->mark = _mark;
8468
19.4k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8469
19.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "mapping_pattern"));
8470
19.4k
    }
8471
0
    { // class_pattern
8472
19.4k
        if (p->error_indicator) {
8473
672
            p->level--;
8474
672
            return NULL;
8475
672
        }
8476
18.8k
        D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_pattern"));
8477
18.8k
        pattern_ty class_pattern_var;
8478
18.8k
        if (
8479
18.8k
            (class_pattern_var = class_pattern_rule(p))  // class_pattern
8480
18.8k
        )
8481
2.91k
        {
8482
2.91k
            D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_pattern"));
8483
2.91k
            _res = class_pattern_var;
8484
2.91k
            goto done;
8485
2.91k
        }
8486
15.9k
        p->mark = _mark;
8487
15.9k
        D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8488
15.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_pattern"));
8489
15.9k
    }
8490
15.9k
    _res = NULL;
8491
51.0k
  done:
8492
51.0k
    _PyPegen_insert_memo(p, _mark, closed_pattern_type, _res);
8493
51.0k
    p->level--;
8494
51.0k
    return _res;
8495
15.9k
}
8496
8497
// literal_pattern:
8498
//     | signed_number !('+' | '-')
8499
//     | complex_number
8500
//     | strings
8501
//     | 'None'
8502
//     | 'True'
8503
//     | 'False'
8504
static pattern_ty
8505
literal_pattern_rule(Parser *p)
8506
52.6k
{
8507
52.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8508
0
        _Pypegen_stack_overflow(p);
8509
0
    }
8510
52.6k
    if (p->error_indicator) {
8511
0
        p->level--;
8512
0
        return NULL;
8513
0
    }
8514
52.6k
    pattern_ty _res = NULL;
8515
52.6k
    int _mark = p->mark;
8516
52.6k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8517
0
        p->error_indicator = 1;
8518
0
        p->level--;
8519
0
        return NULL;
8520
0
    }
8521
52.6k
    int _start_lineno = p->tokens[_mark]->lineno;
8522
52.6k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8523
52.6k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8524
52.6k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8525
52.6k
    { // signed_number !('+' | '-')
8526
52.6k
        if (p->error_indicator) {
8527
0
            p->level--;
8528
0
            return NULL;
8529
0
        }
8530
52.6k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8531
52.6k
        expr_ty value;
8532
52.6k
        if (
8533
52.6k
            (value = signed_number_rule(p))  // signed_number
8534
4.47k
            &&
8535
4.47k
            _PyPegen_lookahead(0, _tmp_41_rule, p)
8536
52.6k
        )
8537
3.99k
        {
8538
3.99k
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8539
3.99k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8540
3.99k
            if (_token == NULL) {
8541
0
                p->level--;
8542
0
                return NULL;
8543
0
            }
8544
3.99k
            int _end_lineno = _token->end_lineno;
8545
3.99k
            UNUSED(_end_lineno); // Only used by EXTRA macro
8546
3.99k
            int _end_col_offset = _token->end_col_offset;
8547
3.99k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8548
3.99k
            _res = _PyAST_MatchValue ( value , EXTRA );
8549
3.99k
            if (_res == NULL && PyErr_Occurred()) {
8550
0
                p->error_indicator = 1;
8551
0
                p->level--;
8552
0
                return NULL;
8553
0
            }
8554
3.99k
            goto done;
8555
3.99k
        }
8556
48.7k
        p->mark = _mark;
8557
48.7k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8558
48.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
8559
48.7k
    }
8560
0
    { // complex_number
8561
48.7k
        if (p->error_indicator) {
8562
2
            p->level--;
8563
2
            return NULL;
8564
2
        }
8565
48.6k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
8566
48.6k
        expr_ty value;
8567
48.6k
        if (
8568
48.6k
            (value = complex_number_rule(p))  // complex_number
8569
48.6k
        )
8570
455
        {
8571
455
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
8572
455
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8573
455
            if (_token == NULL) {
8574
0
                p->level--;
8575
0
                return NULL;
8576
0
            }
8577
455
            int _end_lineno = _token->end_lineno;
8578
455
            UNUSED(_end_lineno); // Only used by EXTRA macro
8579
455
            int _end_col_offset = _token->end_col_offset;
8580
455
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8581
455
            _res = _PyAST_MatchValue ( value , EXTRA );
8582
455
            if (_res == NULL && PyErr_Occurred()) {
8583
0
                p->error_indicator = 1;
8584
0
                p->level--;
8585
0
                return NULL;
8586
0
            }
8587
455
            goto done;
8588
455
        }
8589
48.2k
        p->mark = _mark;
8590
48.2k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8591
48.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
8592
48.2k
    }
8593
0
    { // strings
8594
48.2k
        if (p->error_indicator) {
8595
12
            p->level--;
8596
12
            return NULL;
8597
12
        }
8598
48.2k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "strings"));
8599
48.2k
        expr_ty value;
8600
48.2k
        if (
8601
48.2k
            (value = strings_rule(p))  // strings
8602
48.2k
        )
8603
200
        {
8604
200
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "strings"));
8605
200
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8606
200
            if (_token == NULL) {
8607
0
                p->level--;
8608
0
                return NULL;
8609
0
            }
8610
200
            int _end_lineno = _token->end_lineno;
8611
200
            UNUSED(_end_lineno); // Only used by EXTRA macro
8612
200
            int _end_col_offset = _token->end_col_offset;
8613
200
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8614
200
            _res = _PyAST_MatchValue ( value , EXTRA );
8615
200
            if (_res == NULL && PyErr_Occurred()) {
8616
0
                p->error_indicator = 1;
8617
0
                p->level--;
8618
0
                return NULL;
8619
0
            }
8620
200
            goto done;
8621
200
        }
8622
48.0k
        p->mark = _mark;
8623
48.0k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8624
48.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "strings"));
8625
48.0k
    }
8626
0
    { // 'None'
8627
48.0k
        if (p->error_indicator) {
8628
8
            p->level--;
8629
8
            return NULL;
8630
8
        }
8631
48.0k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
8632
48.0k
        Token * _keyword;
8633
48.0k
        if (
8634
48.0k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
8635
48.0k
        )
8636
282
        {
8637
282
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
8638
282
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8639
282
            if (_token == NULL) {
8640
0
                p->level--;
8641
0
                return NULL;
8642
0
            }
8643
282
            int _end_lineno = _token->end_lineno;
8644
282
            UNUSED(_end_lineno); // Only used by EXTRA macro
8645
282
            int _end_col_offset = _token->end_col_offset;
8646
282
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8647
282
            _res = _PyAST_MatchSingleton ( Py_None , EXTRA );
8648
282
            if (_res == NULL && PyErr_Occurred()) {
8649
0
                p->error_indicator = 1;
8650
0
                p->level--;
8651
0
                return NULL;
8652
0
            }
8653
282
            goto done;
8654
282
        }
8655
47.7k
        p->mark = _mark;
8656
47.7k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8657
47.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
8658
47.7k
    }
8659
0
    { // 'True'
8660
47.7k
        if (p->error_indicator) {
8661
0
            p->level--;
8662
0
            return NULL;
8663
0
        }
8664
47.7k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
8665
47.7k
        Token * _keyword;
8666
47.7k
        if (
8667
47.7k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
8668
47.7k
        )
8669
71
        {
8670
71
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
8671
71
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8672
71
            if (_token == NULL) {
8673
0
                p->level--;
8674
0
                return NULL;
8675
0
            }
8676
71
            int _end_lineno = _token->end_lineno;
8677
71
            UNUSED(_end_lineno); // Only used by EXTRA macro
8678
71
            int _end_col_offset = _token->end_col_offset;
8679
71
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8680
71
            _res = _PyAST_MatchSingleton ( Py_True , EXTRA );
8681
71
            if (_res == NULL && PyErr_Occurred()) {
8682
0
                p->error_indicator = 1;
8683
0
                p->level--;
8684
0
                return NULL;
8685
0
            }
8686
71
            goto done;
8687
71
        }
8688
47.6k
        p->mark = _mark;
8689
47.6k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8690
47.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
8691
47.6k
    }
8692
0
    { // 'False'
8693
47.6k
        if (p->error_indicator) {
8694
0
            p->level--;
8695
0
            return NULL;
8696
0
        }
8697
47.6k
        D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
8698
47.6k
        Token * _keyword;
8699
47.6k
        if (
8700
47.6k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
8701
47.6k
        )
8702
255
        {
8703
255
            D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
8704
255
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8705
255
            if (_token == NULL) {
8706
0
                p->level--;
8707
0
                return NULL;
8708
0
            }
8709
255
            int _end_lineno = _token->end_lineno;
8710
255
            UNUSED(_end_lineno); // Only used by EXTRA macro
8711
255
            int _end_col_offset = _token->end_col_offset;
8712
255
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8713
255
            _res = _PyAST_MatchSingleton ( Py_False , EXTRA );
8714
255
            if (_res == NULL && PyErr_Occurred()) {
8715
0
                p->error_indicator = 1;
8716
0
                p->level--;
8717
0
                return NULL;
8718
0
            }
8719
255
            goto done;
8720
255
        }
8721
47.4k
        p->mark = _mark;
8722
47.4k
        D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8723
47.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
8724
47.4k
    }
8725
47.4k
    _res = NULL;
8726
52.6k
  done:
8727
52.6k
    p->level--;
8728
52.6k
    return _res;
8729
47.4k
}
8730
8731
// literal_expr:
8732
//     | signed_number !('+' | '-')
8733
//     | complex_number
8734
//     | &(STRING | FSTRING_START | TSTRING_START) strings
8735
//     | 'None'
8736
//     | 'True'
8737
//     | 'False'
8738
static expr_ty
8739
literal_expr_rule(Parser *p)
8740
7.56k
{
8741
7.56k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8742
0
        _Pypegen_stack_overflow(p);
8743
0
    }
8744
7.56k
    if (p->error_indicator) {
8745
0
        p->level--;
8746
0
        return NULL;
8747
0
    }
8748
7.56k
    expr_ty _res = NULL;
8749
7.56k
    int _mark = p->mark;
8750
7.56k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8751
9
        p->error_indicator = 1;
8752
9
        p->level--;
8753
9
        return NULL;
8754
9
    }
8755
7.55k
    int _start_lineno = p->tokens[_mark]->lineno;
8756
7.55k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8757
7.55k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8758
7.55k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8759
7.55k
    { // signed_number !('+' | '-')
8760
7.55k
        if (p->error_indicator) {
8761
0
            p->level--;
8762
0
            return NULL;
8763
0
        }
8764
7.55k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8765
7.55k
        expr_ty signed_number_var;
8766
7.55k
        if (
8767
7.55k
            (signed_number_var = signed_number_rule(p))  // signed_number
8768
4.43k
            &&
8769
4.43k
            _PyPegen_lookahead(0, _tmp_41_rule, p)
8770
7.55k
        )
8771
4.07k
        {
8772
4.07k
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8773
4.07k
            _res = signed_number_var;
8774
4.07k
            goto done;
8775
4.07k
        }
8776
3.48k
        p->mark = _mark;
8777
3.48k
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8778
3.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
8779
3.48k
    }
8780
0
    { // complex_number
8781
3.48k
        if (p->error_indicator) {
8782
2
            p->level--;
8783
2
            return NULL;
8784
2
        }
8785
3.47k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
8786
3.47k
        expr_ty complex_number_var;
8787
3.47k
        if (
8788
3.47k
            (complex_number_var = complex_number_rule(p))  // complex_number
8789
3.47k
        )
8790
333
        {
8791
333
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
8792
333
            _res = complex_number_var;
8793
333
            goto done;
8794
333
        }
8795
3.14k
        p->mark = _mark;
8796
3.14k
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8797
3.14k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
8798
3.14k
    }
8799
0
    { // &(STRING | FSTRING_START | TSTRING_START) strings
8800
3.14k
        if (p->error_indicator) {
8801
4
            p->level--;
8802
4
            return NULL;
8803
4
        }
8804
3.14k
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8805
3.14k
        expr_ty strings_var;
8806
3.14k
        if (
8807
3.14k
            _PyPegen_lookahead(1, _tmp_42_rule, p)
8808
2.35k
            &&
8809
2.35k
            (strings_var = strings_rule(p))  // strings
8810
3.14k
        )
8811
2.34k
        {
8812
2.34k
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8813
2.34k
            _res = strings_var;
8814
2.34k
            goto done;
8815
2.34k
        }
8816
802
        p->mark = _mark;
8817
802
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8818
802
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
8819
802
    }
8820
0
    { // 'None'
8821
802
        if (p->error_indicator) {
8822
5
            p->level--;
8823
5
            return NULL;
8824
5
        }
8825
797
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
8826
797
        Token * _keyword;
8827
797
        if (
8828
797
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
8829
797
        )
8830
7
        {
8831
7
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
8832
7
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8833
7
            if (_token == NULL) {
8834
0
                p->level--;
8835
0
                return NULL;
8836
0
            }
8837
7
            int _end_lineno = _token->end_lineno;
8838
7
            UNUSED(_end_lineno); // Only used by EXTRA macro
8839
7
            int _end_col_offset = _token->end_col_offset;
8840
7
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8841
7
            _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
8842
7
            if (_res == NULL && PyErr_Occurred()) {
8843
0
                p->error_indicator = 1;
8844
0
                p->level--;
8845
0
                return NULL;
8846
0
            }
8847
7
            goto done;
8848
7
        }
8849
790
        p->mark = _mark;
8850
790
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8851
790
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
8852
790
    }
8853
0
    { // 'True'
8854
790
        if (p->error_indicator) {
8855
0
            p->level--;
8856
0
            return NULL;
8857
0
        }
8858
790
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
8859
790
        Token * _keyword;
8860
790
        if (
8861
790
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
8862
790
        )
8863
66
        {
8864
66
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
8865
66
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8866
66
            if (_token == NULL) {
8867
0
                p->level--;
8868
0
                return NULL;
8869
0
            }
8870
66
            int _end_lineno = _token->end_lineno;
8871
66
            UNUSED(_end_lineno); // Only used by EXTRA macro
8872
66
            int _end_col_offset = _token->end_col_offset;
8873
66
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8874
66
            _res = _PyAST_Constant ( Py_True , NULL , EXTRA );
8875
66
            if (_res == NULL && PyErr_Occurred()) {
8876
0
                p->error_indicator = 1;
8877
0
                p->level--;
8878
0
                return NULL;
8879
0
            }
8880
66
            goto done;
8881
66
        }
8882
724
        p->mark = _mark;
8883
724
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8884
724
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
8885
724
    }
8886
0
    { // 'False'
8887
724
        if (p->error_indicator) {
8888
0
            p->level--;
8889
0
            return NULL;
8890
0
        }
8891
724
        D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
8892
724
        Token * _keyword;
8893
724
        if (
8894
724
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
8895
724
        )
8896
7
        {
8897
7
            D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
8898
7
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8899
7
            if (_token == NULL) {
8900
0
                p->level--;
8901
0
                return NULL;
8902
0
            }
8903
7
            int _end_lineno = _token->end_lineno;
8904
7
            UNUSED(_end_lineno); // Only used by EXTRA macro
8905
7
            int _end_col_offset = _token->end_col_offset;
8906
7
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8907
7
            _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
8908
7
            if (_res == NULL && PyErr_Occurred()) {
8909
0
                p->error_indicator = 1;
8910
0
                p->level--;
8911
0
                return NULL;
8912
0
            }
8913
7
            goto done;
8914
7
        }
8915
717
        p->mark = _mark;
8916
717
        D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8917
717
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
8918
717
    }
8919
717
    _res = NULL;
8920
7.54k
  done:
8921
7.54k
    p->level--;
8922
7.54k
    return _res;
8923
717
}
8924
8925
// complex_number:
8926
//     | signed_real_number '+' imaginary_number
8927
//     | signed_real_number '-' imaginary_number
8928
static expr_ty
8929
complex_number_rule(Parser *p)
8930
52.1k
{
8931
52.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
8932
0
        _Pypegen_stack_overflow(p);
8933
0
    }
8934
52.1k
    if (p->error_indicator) {
8935
0
        p->level--;
8936
0
        return NULL;
8937
0
    }
8938
52.1k
    expr_ty _res = NULL;
8939
52.1k
    int _mark = p->mark;
8940
52.1k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8941
0
        p->error_indicator = 1;
8942
0
        p->level--;
8943
0
        return NULL;
8944
0
    }
8945
52.1k
    int _start_lineno = p->tokens[_mark]->lineno;
8946
52.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
8947
52.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
8948
52.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
8949
52.1k
    { // signed_real_number '+' imaginary_number
8950
52.1k
        if (p->error_indicator) {
8951
0
            p->level--;
8952
0
            return NULL;
8953
0
        }
8954
52.1k
        D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
8955
52.1k
        Token * _literal;
8956
52.1k
        expr_ty imag;
8957
52.1k
        expr_ty real;
8958
52.1k
        if (
8959
52.1k
            (real = signed_real_number_rule(p))  // signed_real_number
8960
842
            &&
8961
842
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
8962
352
            &&
8963
352
            (imag = imaginary_number_rule(p))  // imaginary_number
8964
52.1k
        )
8965
337
        {
8966
337
            D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
8967
337
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8968
337
            if (_token == NULL) {
8969
0
                p->level--;
8970
0
                return NULL;
8971
0
            }
8972
337
            int _end_lineno = _token->end_lineno;
8973
337
            UNUSED(_end_lineno); // Only used by EXTRA macro
8974
337
            int _end_col_offset = _token->end_col_offset;
8975
337
            UNUSED(_end_col_offset); // Only used by EXTRA macro
8976
337
            _res = _PyAST_BinOp ( real , Add , imag , EXTRA );
8977
337
            if (_res == NULL && PyErr_Occurred()) {
8978
0
                p->error_indicator = 1;
8979
0
                p->level--;
8980
0
                return NULL;
8981
0
            }
8982
337
            goto done;
8983
337
        }
8984
51.8k
        p->mark = _mark;
8985
51.8k
        D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
8986
51.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '+' imaginary_number"));
8987
51.8k
    }
8988
0
    { // signed_real_number '-' imaginary_number
8989
51.8k
        if (p->error_indicator) {
8990
9
            p->level--;
8991
9
            return NULL;
8992
9
        }
8993
51.8k
        D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
8994
51.8k
        Token * _literal;
8995
51.8k
        expr_ty imag;
8996
51.8k
        expr_ty real;
8997
51.8k
        if (
8998
51.8k
            (real = signed_real_number_rule(p))  // signed_real_number
8999
499
            &&
9000
499
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
9001
490
            &&
9002
490
            (imag = imaginary_number_rule(p))  // imaginary_number
9003
51.8k
        )
9004
451
        {
9005
451
            D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
9006
451
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9007
451
            if (_token == NULL) {
9008
0
                p->level--;
9009
0
                return NULL;
9010
0
            }
9011
451
            int _end_lineno = _token->end_lineno;
9012
451
            UNUSED(_end_lineno); // Only used by EXTRA macro
9013
451
            int _end_col_offset = _token->end_col_offset;
9014
451
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9015
451
            _res = _PyAST_BinOp ( real , Sub , imag , EXTRA );
9016
451
            if (_res == NULL && PyErr_Occurred()) {
9017
0
                p->error_indicator = 1;
9018
0
                p->level--;
9019
0
                return NULL;
9020
0
            }
9021
451
            goto done;
9022
451
        }
9023
51.3k
        p->mark = _mark;
9024
51.3k
        D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
9025
51.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '-' imaginary_number"));
9026
51.3k
    }
9027
51.3k
    _res = NULL;
9028
52.1k
  done:
9029
52.1k
    p->level--;
9030
52.1k
    return _res;
9031
51.3k
}
9032
9033
// signed_number: NUMBER | '-' NUMBER
9034
static expr_ty
9035
signed_number_rule(Parser *p)
9036
60.2k
{
9037
60.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9038
0
        _Pypegen_stack_overflow(p);
9039
0
    }
9040
60.2k
    if (p->error_indicator) {
9041
0
        p->level--;
9042
0
        return NULL;
9043
0
    }
9044
60.2k
    expr_ty _res = NULL;
9045
60.2k
    int _mark = p->mark;
9046
60.2k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9047
0
        p->error_indicator = 1;
9048
0
        p->level--;
9049
0
        return NULL;
9050
0
    }
9051
60.2k
    int _start_lineno = p->tokens[_mark]->lineno;
9052
60.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9053
60.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9054
60.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9055
60.2k
    { // NUMBER
9056
60.2k
        if (p->error_indicator) {
9057
0
            p->level--;
9058
0
            return NULL;
9059
0
        }
9060
60.2k
        D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9061
60.2k
        expr_ty number_var;
9062
60.2k
        if (
9063
60.2k
            (number_var = _PyPegen_number_token(p))  // NUMBER
9064
60.2k
        )
9065
7.67k
        {
9066
7.67k
            D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9067
7.67k
            _res = number_var;
9068
7.67k
            goto done;
9069
7.67k
        }
9070
52.5k
        p->mark = _mark;
9071
52.5k
        D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
9072
52.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9073
52.5k
    }
9074
0
    { // '-' NUMBER
9075
52.5k
        if (p->error_indicator) {
9076
0
            p->level--;
9077
0
            return NULL;
9078
0
        }
9079
52.5k
        D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
9080
52.5k
        Token * _literal;
9081
52.5k
        expr_ty number;
9082
52.5k
        if (
9083
52.5k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
9084
1.25k
            &&
9085
1.25k
            (number = _PyPegen_number_token(p))  // NUMBER
9086
52.5k
        )
9087
1.23k
        {
9088
1.23k
            D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
9089
1.23k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9090
1.23k
            if (_token == NULL) {
9091
0
                p->level--;
9092
0
                return NULL;
9093
0
            }
9094
1.23k
            int _end_lineno = _token->end_lineno;
9095
1.23k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9096
1.23k
            int _end_col_offset = _token->end_col_offset;
9097
1.23k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9098
1.23k
            _res = _PyAST_UnaryOp ( USub , number , EXTRA );
9099
1.23k
            if (_res == NULL && PyErr_Occurred()) {
9100
0
                p->error_indicator = 1;
9101
0
                p->level--;
9102
0
                return NULL;
9103
0
            }
9104
1.23k
            goto done;
9105
1.23k
        }
9106
51.3k
        p->mark = _mark;
9107
51.3k
        D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
9108
51.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' NUMBER"));
9109
51.3k
    }
9110
51.3k
    _res = NULL;
9111
60.2k
  done:
9112
60.2k
    p->level--;
9113
60.2k
    return _res;
9114
51.3k
}
9115
9116
// signed_real_number: real_number | '-' real_number
9117
static expr_ty
9118
signed_real_number_rule(Parser *p)
9119
104k
{
9120
104k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9121
0
        _Pypegen_stack_overflow(p);
9122
0
    }
9123
104k
    if (p->error_indicator) {
9124
0
        p->level--;
9125
0
        return NULL;
9126
0
    }
9127
104k
    expr_ty _res = NULL;
9128
104k
    int _mark = p->mark;
9129
104k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9130
0
        p->error_indicator = 1;
9131
0
        p->level--;
9132
0
        return NULL;
9133
0
    }
9134
104k
    int _start_lineno = p->tokens[_mark]->lineno;
9135
104k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9136
104k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9137
104k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9138
104k
    { // real_number
9139
104k
        if (p->error_indicator) {
9140
0
            p->level--;
9141
0
            return NULL;
9142
0
        }
9143
104k
        D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "real_number"));
9144
104k
        expr_ty real_number_var;
9145
104k
        if (
9146
104k
            (real_number_var = real_number_rule(p))  // real_number
9147
104k
        )
9148
798
        {
9149
798
            D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "real_number"));
9150
798
            _res = real_number_var;
9151
798
            goto done;
9152
798
        }
9153
103k
        p->mark = _mark;
9154
103k
        D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
9155
103k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "real_number"));
9156
103k
    }
9157
0
    { // '-' real_number
9158
103k
        if (p->error_indicator) {
9159
1
            p->level--;
9160
1
            return NULL;
9161
1
        }
9162
103k
        D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
9163
103k
        Token * _literal;
9164
103k
        expr_ty real;
9165
103k
        if (
9166
103k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
9167
583
            &&
9168
583
            (real = real_number_rule(p))  // real_number
9169
103k
        )
9170
543
        {
9171
543
            D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
9172
543
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9173
543
            if (_token == NULL) {
9174
0
                p->level--;
9175
0
                return NULL;
9176
0
            }
9177
543
            int _end_lineno = _token->end_lineno;
9178
543
            UNUSED(_end_lineno); // Only used by EXTRA macro
9179
543
            int _end_col_offset = _token->end_col_offset;
9180
543
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9181
543
            _res = _PyAST_UnaryOp ( USub , real , EXTRA );
9182
543
            if (_res == NULL && PyErr_Occurred()) {
9183
0
                p->error_indicator = 1;
9184
0
                p->level--;
9185
0
                return NULL;
9186
0
            }
9187
543
            goto done;
9188
543
        }
9189
102k
        p->mark = _mark;
9190
102k
        D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
9191
102k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' real_number"));
9192
102k
    }
9193
102k
    _res = NULL;
9194
104k
  done:
9195
104k
    p->level--;
9196
104k
    return _res;
9197
102k
}
9198
9199
// real_number: NUMBER
9200
static expr_ty
9201
real_number_rule(Parser *p)
9202
104k
{
9203
104k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9204
0
        _Pypegen_stack_overflow(p);
9205
0
    }
9206
104k
    if (p->error_indicator) {
9207
0
        p->level--;
9208
0
        return NULL;
9209
0
    }
9210
104k
    expr_ty _res = NULL;
9211
104k
    int _mark = p->mark;
9212
104k
    { // NUMBER
9213
104k
        if (p->error_indicator) {
9214
0
            p->level--;
9215
0
            return NULL;
9216
0
        }
9217
104k
        D(fprintf(stderr, "%*c> real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9218
104k
        expr_ty real;
9219
104k
        if (
9220
104k
            (real = _PyPegen_number_token(p))  // NUMBER
9221
104k
        )
9222
1.34k
        {
9223
1.34k
            D(fprintf(stderr, "%*c+ real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9224
1.34k
            _res = _PyPegen_ensure_real ( p , real );
9225
1.34k
            if (_res == NULL && PyErr_Occurred()) {
9226
3
                p->error_indicator = 1;
9227
3
                p->level--;
9228
3
                return NULL;
9229
3
            }
9230
1.34k
            goto done;
9231
1.34k
        }
9232
103k
        p->mark = _mark;
9233
103k
        D(fprintf(stderr, "%*c%s real_number[%d-%d]: %s failed!\n", p->level, ' ',
9234
103k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9235
103k
    }
9236
103k
    _res = NULL;
9237
104k
  done:
9238
104k
    p->level--;
9239
104k
    return _res;
9240
103k
}
9241
9242
// imaginary_number: NUMBER
9243
static expr_ty
9244
imaginary_number_rule(Parser *p)
9245
842
{
9246
842
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9247
0
        _Pypegen_stack_overflow(p);
9248
0
    }
9249
842
    if (p->error_indicator) {
9250
0
        p->level--;
9251
0
        return NULL;
9252
0
    }
9253
842
    expr_ty _res = NULL;
9254
842
    int _mark = p->mark;
9255
842
    { // NUMBER
9256
842
        if (p->error_indicator) {
9257
0
            p->level--;
9258
0
            return NULL;
9259
0
        }
9260
842
        D(fprintf(stderr, "%*c> imaginary_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9261
842
        expr_ty imag;
9262
842
        if (
9263
842
            (imag = _PyPegen_number_token(p))  // NUMBER
9264
842
        )
9265
796
        {
9266
796
            D(fprintf(stderr, "%*c+ imaginary_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
9267
796
            _res = _PyPegen_ensure_imaginary ( p , imag );
9268
796
            if (_res == NULL && PyErr_Occurred()) {
9269
8
                p->error_indicator = 1;
9270
8
                p->level--;
9271
8
                return NULL;
9272
8
            }
9273
788
            goto done;
9274
796
        }
9275
46
        p->mark = _mark;
9276
46
        D(fprintf(stderr, "%*c%s imaginary_number[%d-%d]: %s failed!\n", p->level, ' ',
9277
46
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
9278
46
    }
9279
46
    _res = NULL;
9280
834
  done:
9281
834
    p->level--;
9282
834
    return _res;
9283
46
}
9284
9285
// capture_pattern: pattern_capture_target
9286
static pattern_ty
9287
capture_pattern_rule(Parser *p)
9288
47.4k
{
9289
47.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9290
0
        _Pypegen_stack_overflow(p);
9291
0
    }
9292
47.4k
    if (p->error_indicator) {
9293
0
        p->level--;
9294
0
        return NULL;
9295
0
    }
9296
47.4k
    pattern_ty _res = NULL;
9297
47.4k
    int _mark = p->mark;
9298
47.4k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9299
0
        p->error_indicator = 1;
9300
0
        p->level--;
9301
0
        return NULL;
9302
0
    }
9303
47.4k
    int _start_lineno = p->tokens[_mark]->lineno;
9304
47.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9305
47.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9306
47.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9307
47.4k
    { // pattern_capture_target
9308
47.4k
        if (p->error_indicator) {
9309
0
            p->level--;
9310
0
            return NULL;
9311
0
        }
9312
47.4k
        D(fprintf(stderr, "%*c> capture_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
9313
47.4k
        expr_ty target;
9314
47.4k
        if (
9315
47.4k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
9316
47.4k
        )
9317
16.0k
        {
9318
16.0k
            D(fprintf(stderr, "%*c+ capture_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
9319
16.0k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9320
16.0k
            if (_token == NULL) {
9321
0
                p->level--;
9322
0
                return NULL;
9323
0
            }
9324
16.0k
            int _end_lineno = _token->end_lineno;
9325
16.0k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9326
16.0k
            int _end_col_offset = _token->end_col_offset;
9327
16.0k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9328
16.0k
            _res = _PyAST_MatchAs ( NULL , target -> v . Name . id , EXTRA );
9329
16.0k
            if (_res == NULL && PyErr_Occurred()) {
9330
0
                p->error_indicator = 1;
9331
0
                p->level--;
9332
0
                return NULL;
9333
0
            }
9334
16.0k
            goto done;
9335
16.0k
        }
9336
31.3k
        p->mark = _mark;
9337
31.3k
        D(fprintf(stderr, "%*c%s capture_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9338
31.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern_capture_target"));
9339
31.3k
    }
9340
31.3k
    _res = NULL;
9341
47.4k
  done:
9342
47.4k
    p->level--;
9343
47.4k
    return _res;
9344
31.3k
}
9345
9346
// pattern_capture_target: !"_" NAME !('.' | '(' | '=')
9347
static expr_ty
9348
pattern_capture_target_rule(Parser *p)
9349
50.4k
{
9350
50.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9351
0
        _Pypegen_stack_overflow(p);
9352
0
    }
9353
50.4k
    if (p->error_indicator) {
9354
0
        p->level--;
9355
0
        return NULL;
9356
0
    }
9357
50.4k
    expr_ty _res = NULL;
9358
50.4k
    int _mark = p->mark;
9359
50.4k
    { // !"_" NAME !('.' | '(' | '=')
9360
50.4k
        if (p->error_indicator) {
9361
0
            p->level--;
9362
0
            return NULL;
9363
0
        }
9364
50.4k
        D(fprintf(stderr, "%*c> pattern_capture_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9365
50.4k
        expr_ty name;
9366
50.4k
        if (
9367
50.4k
            _PyPegen_lookahead_with_string(0, _PyPegen_expect_soft_keyword, p, "_")
9368
44.1k
            &&
9369
44.1k
            (name = _PyPegen_name_token(p))  // NAME
9370
31.3k
            &&
9371
31.3k
            _PyPegen_lookahead(0, _tmp_43_rule, p)
9372
50.4k
        )
9373
18.2k
        {
9374
18.2k
            D(fprintf(stderr, "%*c+ pattern_capture_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9375
18.2k
            _res = _PyPegen_set_expr_context ( p , name , Store );
9376
18.2k
            if (_res == NULL && PyErr_Occurred()) {
9377
0
                p->error_indicator = 1;
9378
0
                p->level--;
9379
0
                return NULL;
9380
0
            }
9381
18.2k
            goto done;
9382
18.2k
        }
9383
32.1k
        p->mark = _mark;
9384
32.1k
        D(fprintf(stderr, "%*c%s pattern_capture_target[%d-%d]: %s failed!\n", p->level, ' ',
9385
32.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9386
32.1k
    }
9387
32.1k
    _res = NULL;
9388
50.4k
  done:
9389
50.4k
    p->level--;
9390
50.4k
    return _res;
9391
32.1k
}
9392
9393
// wildcard_pattern: "_"
9394
static pattern_ty
9395
wildcard_pattern_rule(Parser *p)
9396
32.1k
{
9397
32.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9398
0
        _Pypegen_stack_overflow(p);
9399
0
    }
9400
32.1k
    if (p->error_indicator) {
9401
0
        p->level--;
9402
0
        return NULL;
9403
0
    }
9404
32.1k
    pattern_ty _res = NULL;
9405
32.1k
    int _mark = p->mark;
9406
32.1k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9407
0
        p->error_indicator = 1;
9408
0
        p->level--;
9409
0
        return NULL;
9410
0
    }
9411
32.1k
    int _start_lineno = p->tokens[_mark]->lineno;
9412
32.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9413
32.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9414
32.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9415
32.1k
    { // "_"
9416
32.1k
        if (p->error_indicator) {
9417
0
            p->level--;
9418
0
            return NULL;
9419
0
        }
9420
32.1k
        D(fprintf(stderr, "%*c> wildcard_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"_\""));
9421
32.1k
        expr_ty _keyword;
9422
32.1k
        if (
9423
32.1k
            (_keyword = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
9424
32.1k
        )
9425
6.28k
        {
9426
6.28k
            D(fprintf(stderr, "%*c+ wildcard_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"_\""));
9427
6.28k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9428
6.28k
            if (_token == NULL) {
9429
0
                p->level--;
9430
0
                return NULL;
9431
0
            }
9432
6.28k
            int _end_lineno = _token->end_lineno;
9433
6.28k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9434
6.28k
            int _end_col_offset = _token->end_col_offset;
9435
6.28k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9436
6.28k
            _res = _PyAST_MatchAs ( NULL , NULL , EXTRA );
9437
6.28k
            if (_res == NULL && PyErr_Occurred()) {
9438
0
                p->error_indicator = 1;
9439
0
                p->level--;
9440
0
                return NULL;
9441
0
            }
9442
6.28k
            goto done;
9443
6.28k
        }
9444
25.8k
        p->mark = _mark;
9445
25.8k
        D(fprintf(stderr, "%*c%s wildcard_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9446
25.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"_\""));
9447
25.8k
    }
9448
25.8k
    _res = NULL;
9449
32.1k
  done:
9450
32.1k
    p->level--;
9451
32.1k
    return _res;
9452
25.8k
}
9453
9454
// value_pattern: attr !('.' | '(' | '=')
9455
static pattern_ty
9456
value_pattern_rule(Parser *p)
9457
25.8k
{
9458
25.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9459
0
        _Pypegen_stack_overflow(p);
9460
0
    }
9461
25.8k
    if (p->error_indicator) {
9462
0
        p->level--;
9463
0
        return NULL;
9464
0
    }
9465
25.8k
    pattern_ty _res = NULL;
9466
25.8k
    int _mark = p->mark;
9467
25.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9468
0
        p->error_indicator = 1;
9469
0
        p->level--;
9470
0
        return NULL;
9471
0
    }
9472
25.8k
    int _start_lineno = p->tokens[_mark]->lineno;
9473
25.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9474
25.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9475
25.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9476
25.8k
    { // attr !('.' | '(' | '=')
9477
25.8k
        if (p->error_indicator) {
9478
0
            p->level--;
9479
0
            return NULL;
9480
0
        }
9481
25.8k
        D(fprintf(stderr, "%*c> value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
9482
25.8k
        expr_ty attr;
9483
25.8k
        if (
9484
25.8k
            (attr = attr_rule(p))  // attr
9485
484
            &&
9486
484
            _PyPegen_lookahead(0, _tmp_43_rule, p)
9487
25.8k
        )
9488
225
        {
9489
225
            D(fprintf(stderr, "%*c+ value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
9490
225
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9491
225
            if (_token == NULL) {
9492
0
                p->level--;
9493
0
                return NULL;
9494
0
            }
9495
225
            int _end_lineno = _token->end_lineno;
9496
225
            UNUSED(_end_lineno); // Only used by EXTRA macro
9497
225
            int _end_col_offset = _token->end_col_offset;
9498
225
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9499
225
            _res = _PyAST_MatchValue ( attr , EXTRA );
9500
225
            if (_res == NULL && PyErr_Occurred()) {
9501
0
                p->error_indicator = 1;
9502
0
                p->level--;
9503
0
                return NULL;
9504
0
            }
9505
225
            goto done;
9506
225
        }
9507
25.6k
        p->mark = _mark;
9508
25.6k
        D(fprintf(stderr, "%*c%s value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9509
25.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr !('.' | '(' | '=')"));
9510
25.6k
    }
9511
25.6k
    _res = NULL;
9512
25.8k
  done:
9513
25.8k
    p->level--;
9514
25.8k
    return _res;
9515
25.6k
}
9516
9517
// Left-recursive
9518
// attr: name_or_attr '.' NAME
9519
static expr_ty attr_raw(Parser *);
9520
static expr_ty
9521
attr_rule(Parser *p)
9522
128k
{
9523
128k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9524
0
        _Pypegen_stack_overflow(p);
9525
0
    }
9526
128k
    expr_ty _res = NULL;
9527
128k
    if (_PyPegen_is_memoized(p, attr_type, &_res)) {
9528
102k
        p->level--;
9529
102k
        return _res;
9530
102k
    }
9531
26.4k
    int _mark = p->mark;
9532
26.4k
    int _resmark = p->mark;
9533
26.9k
    while (1) {
9534
26.9k
        int tmpvar_1 = _PyPegen_update_memo(p, _mark, attr_type, _res);
9535
26.9k
        if (tmpvar_1) {
9536
0
            p->level--;
9537
0
            return _res;
9538
0
        }
9539
26.9k
        p->mark = _mark;
9540
26.9k
        void *_raw = attr_raw(p);
9541
26.9k
        if (p->error_indicator) {
9542
8
            p->level--;
9543
8
            return NULL;
9544
8
        }
9545
26.9k
        if (_raw == NULL || p->mark <= _resmark)
9546
26.4k
            break;
9547
560
        _resmark = p->mark;
9548
560
        _res = _raw;
9549
560
    }
9550
26.4k
    p->mark = _resmark;
9551
26.4k
    p->level--;
9552
26.4k
    return _res;
9553
26.4k
}
9554
static expr_ty
9555
attr_raw(Parser *p)
9556
26.9k
{
9557
26.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9558
0
        _Pypegen_stack_overflow(p);
9559
0
    }
9560
26.9k
    if (p->error_indicator) {
9561
0
        p->level--;
9562
0
        return NULL;
9563
0
    }
9564
26.9k
    expr_ty _res = NULL;
9565
26.9k
    int _mark = p->mark;
9566
26.9k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9567
0
        p->error_indicator = 1;
9568
0
        p->level--;
9569
0
        return NULL;
9570
0
    }
9571
26.9k
    int _start_lineno = p->tokens[_mark]->lineno;
9572
26.9k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9573
26.9k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9574
26.9k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9575
26.9k
    { // name_or_attr '.' NAME
9576
26.9k
        if (p->error_indicator) {
9577
0
            p->level--;
9578
0
            return NULL;
9579
0
        }
9580
26.9k
        D(fprintf(stderr, "%*c> attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
9581
26.9k
        Token * _literal;
9582
26.9k
        expr_ty attr;
9583
26.9k
        expr_ty value;
9584
26.9k
        if (
9585
26.9k
            (value = name_or_attr_rule(p))  // name_or_attr
9586
13.6k
            &&
9587
13.6k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
9588
572
            &&
9589
572
            (attr = _PyPegen_name_token(p))  // NAME
9590
26.9k
        )
9591
560
        {
9592
560
            D(fprintf(stderr, "%*c+ attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
9593
560
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9594
560
            if (_token == NULL) {
9595
0
                p->level--;
9596
0
                return NULL;
9597
0
            }
9598
560
            int _end_lineno = _token->end_lineno;
9599
560
            UNUSED(_end_lineno); // Only used by EXTRA macro
9600
560
            int _end_col_offset = _token->end_col_offset;
9601
560
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9602
560
            _res = _PyAST_Attribute ( value , attr -> v . Name . id , Load , EXTRA );
9603
560
            if (_res == NULL && PyErr_Occurred()) {
9604
0
                p->error_indicator = 1;
9605
0
                p->level--;
9606
0
                return NULL;
9607
0
            }
9608
560
            goto done;
9609
560
        }
9610
26.4k
        p->mark = _mark;
9611
26.4k
        D(fprintf(stderr, "%*c%s attr[%d-%d]: %s failed!\n", p->level, ' ',
9612
26.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '.' NAME"));
9613
26.4k
    }
9614
26.4k
    _res = NULL;
9615
26.9k
  done:
9616
26.9k
    p->level--;
9617
26.9k
    return _res;
9618
26.4k
}
9619
9620
// Left-recursive
9621
// name_or_attr: attr | NAME
9622
static expr_ty
9623
name_or_attr_rule(Parser *p)
9624
102k
{
9625
102k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9626
0
        _Pypegen_stack_overflow(p);
9627
0
    }
9628
102k
    if (p->error_indicator) {
9629
0
        p->level--;
9630
0
        return NULL;
9631
0
    }
9632
102k
    expr_ty _res = NULL;
9633
102k
    int _mark = p->mark;
9634
102k
    { // attr
9635
102k
        if (p->error_indicator) {
9636
0
            p->level--;
9637
0
            return NULL;
9638
0
        }
9639
102k
        D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
9640
102k
        expr_ty attr_var;
9641
102k
        if (
9642
102k
            (attr_var = attr_rule(p))  // attr
9643
102k
        )
9644
1.68k
        {
9645
1.68k
            D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
9646
1.68k
            _res = attr_var;
9647
1.68k
            goto done;
9648
1.68k
        }
9649
100k
        p->mark = _mark;
9650
100k
        D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
9651
100k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
9652
100k
    }
9653
0
    { // NAME
9654
100k
        if (p->error_indicator) {
9655
0
            p->level--;
9656
0
            return NULL;
9657
0
        }
9658
100k
        D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
9659
100k
        expr_ty name_var;
9660
100k
        if (
9661
100k
            (name_var = _PyPegen_name_token(p))  // NAME
9662
100k
        )
9663
60.7k
        {
9664
60.7k
            D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
9665
60.7k
            _res = name_var;
9666
60.7k
            goto done;
9667
60.7k
        }
9668
39.8k
        p->mark = _mark;
9669
39.8k
        D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
9670
39.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
9671
39.8k
    }
9672
39.8k
    _res = NULL;
9673
102k
  done:
9674
102k
    p->level--;
9675
102k
    return _res;
9676
39.8k
}
9677
9678
// group_pattern: '(' pattern ')'
9679
static pattern_ty
9680
group_pattern_rule(Parser *p)
9681
25.6k
{
9682
25.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9683
0
        _Pypegen_stack_overflow(p);
9684
0
    }
9685
25.6k
    if (p->error_indicator) {
9686
0
        p->level--;
9687
0
        return NULL;
9688
0
    }
9689
25.6k
    pattern_ty _res = NULL;
9690
25.6k
    int _mark = p->mark;
9691
25.6k
    { // '(' pattern ')'
9692
25.6k
        if (p->error_indicator) {
9693
0
            p->level--;
9694
0
            return NULL;
9695
0
        }
9696
25.6k
        D(fprintf(stderr, "%*c> group_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
9697
25.6k
        Token * _literal;
9698
25.6k
        Token * _literal_1;
9699
25.6k
        pattern_ty pattern;
9700
25.6k
        if (
9701
25.6k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
9702
4.36k
            &&
9703
4.36k
            (pattern = pattern_rule(p))  // pattern
9704
1.07k
            &&
9705
1.07k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
9706
25.6k
        )
9707
560
        {
9708
560
            D(fprintf(stderr, "%*c+ group_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
9709
560
            _res = pattern;
9710
560
            if (_res == NULL && PyErr_Occurred()) {
9711
0
                p->error_indicator = 1;
9712
0
                p->level--;
9713
0
                return NULL;
9714
0
            }
9715
560
            goto done;
9716
560
        }
9717
25.0k
        p->mark = _mark;
9718
25.0k
        D(fprintf(stderr, "%*c%s group_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9719
25.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' pattern ')'"));
9720
25.0k
    }
9721
25.0k
    _res = NULL;
9722
25.6k
  done:
9723
25.6k
    p->level--;
9724
25.6k
    return _res;
9725
25.0k
}
9726
9727
// sequence_pattern: '[' maybe_sequence_pattern? ']' | '(' open_sequence_pattern? ')'
9728
static pattern_ty
9729
sequence_pattern_rule(Parser *p)
9730
24.6k
{
9731
24.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9732
0
        _Pypegen_stack_overflow(p);
9733
0
    }
9734
24.6k
    if (p->error_indicator) {
9735
0
        p->level--;
9736
0
        return NULL;
9737
0
    }
9738
24.6k
    pattern_ty _res = NULL;
9739
24.6k
    int _mark = p->mark;
9740
24.6k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9741
0
        p->error_indicator = 1;
9742
0
        p->level--;
9743
0
        return NULL;
9744
0
    }
9745
24.6k
    int _start_lineno = p->tokens[_mark]->lineno;
9746
24.6k
    UNUSED(_start_lineno); // Only used by EXTRA macro
9747
24.6k
    int _start_col_offset = p->tokens[_mark]->col_offset;
9748
24.6k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
9749
24.6k
    { // '[' maybe_sequence_pattern? ']'
9750
24.6k
        if (p->error_indicator) {
9751
0
            p->level--;
9752
0
            return NULL;
9753
0
        }
9754
24.6k
        D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9755
24.6k
        Token * _literal;
9756
24.6k
        Token * _literal_1;
9757
24.6k
        void *patterns;
9758
24.6k
        if (
9759
24.6k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
9760
1.76k
            &&
9761
1.76k
            (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
9762
1.31k
            &&
9763
1.31k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
9764
24.6k
        )
9765
224
        {
9766
224
            D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9767
224
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9768
224
            if (_token == NULL) {
9769
0
                p->level--;
9770
0
                return NULL;
9771
0
            }
9772
224
            int _end_lineno = _token->end_lineno;
9773
224
            UNUSED(_end_lineno); // Only used by EXTRA macro
9774
224
            int _end_col_offset = _token->end_col_offset;
9775
224
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9776
224
            _res = _PyAST_MatchSequence ( patterns , EXTRA );
9777
224
            if (_res == NULL && PyErr_Occurred()) {
9778
0
                p->error_indicator = 1;
9779
0
                p->level--;
9780
0
                return NULL;
9781
0
            }
9782
224
            goto done;
9783
224
        }
9784
24.4k
        p->mark = _mark;
9785
24.4k
        D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9786
24.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9787
24.4k
    }
9788
0
    { // '(' open_sequence_pattern? ')'
9789
24.4k
        if (p->error_indicator) {
9790
450
            p->level--;
9791
450
            return NULL;
9792
450
        }
9793
23.9k
        D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9794
23.9k
        Token * _literal;
9795
23.9k
        Token * _literal_1;
9796
23.9k
        void *patterns;
9797
23.9k
        if (
9798
23.9k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
9799
3.36k
            &&
9800
3.36k
            (patterns = open_sequence_pattern_rule(p), !p->error_indicator)  // open_sequence_pattern?
9801
3.27k
            &&
9802
3.27k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
9803
23.9k
        )
9804
1.73k
        {
9805
1.73k
            D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9806
1.73k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9807
1.73k
            if (_token == NULL) {
9808
0
                p->level--;
9809
0
                return NULL;
9810
0
            }
9811
1.73k
            int _end_lineno = _token->end_lineno;
9812
1.73k
            UNUSED(_end_lineno); // Only used by EXTRA macro
9813
1.73k
            int _end_col_offset = _token->end_col_offset;
9814
1.73k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
9815
1.73k
            _res = _PyAST_MatchSequence ( patterns , EXTRA );
9816
1.73k
            if (_res == NULL && PyErr_Occurred()) {
9817
0
                p->error_indicator = 1;
9818
0
                p->level--;
9819
0
                return NULL;
9820
0
            }
9821
1.73k
            goto done;
9822
1.73k
        }
9823
22.2k
        p->mark = _mark;
9824
22.2k
        D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9825
22.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9826
22.2k
    }
9827
22.2k
    _res = NULL;
9828
24.1k
  done:
9829
24.1k
    p->level--;
9830
24.1k
    return _res;
9831
22.2k
}
9832
9833
// open_sequence_pattern: maybe_star_pattern ',' maybe_sequence_pattern?
9834
static asdl_seq*
9835
open_sequence_pattern_rule(Parser *p)
9836
12.1k
{
9837
12.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9838
0
        _Pypegen_stack_overflow(p);
9839
0
    }
9840
12.1k
    if (p->error_indicator) {
9841
0
        p->level--;
9842
0
        return NULL;
9843
0
    }
9844
12.1k
    asdl_seq* _res = NULL;
9845
12.1k
    int _mark = p->mark;
9846
12.1k
    { // maybe_star_pattern ',' maybe_sequence_pattern?
9847
12.1k
        if (p->error_indicator) {
9848
0
            p->level--;
9849
0
            return NULL;
9850
0
        }
9851
12.1k
        D(fprintf(stderr, "%*c> open_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
9852
12.1k
        Token * _literal;
9853
12.1k
        pattern_ty pattern;
9854
12.1k
        void *patterns;
9855
12.1k
        if (
9856
12.1k
            (pattern = maybe_star_pattern_rule(p))  // maybe_star_pattern
9857
7.99k
            &&
9858
7.99k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
9859
2.41k
            &&
9860
2.41k
            (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
9861
12.1k
        )
9862
2.31k
        {
9863
2.31k
            D(fprintf(stderr, "%*c+ open_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
9864
2.31k
            _res = _PyPegen_seq_insert_in_front ( p , pattern , patterns );
9865
2.31k
            if (_res == NULL && PyErr_Occurred()) {
9866
0
                p->error_indicator = 1;
9867
0
                p->level--;
9868
0
                return NULL;
9869
0
            }
9870
2.31k
            goto done;
9871
2.31k
        }
9872
9.82k
        p->mark = _mark;
9873
9.82k
        D(fprintf(stderr, "%*c%s open_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9874
9.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
9875
9.82k
    }
9876
9.82k
    _res = NULL;
9877
12.1k
  done:
9878
12.1k
    p->level--;
9879
12.1k
    return _res;
9880
9.82k
}
9881
9882
// maybe_sequence_pattern: ','.maybe_star_pattern+ ','?
9883
static asdl_seq*
9884
maybe_sequence_pattern_rule(Parser *p)
9885
4.18k
{
9886
4.18k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9887
0
        _Pypegen_stack_overflow(p);
9888
0
    }
9889
4.18k
    if (p->error_indicator) {
9890
0
        p->level--;
9891
0
        return NULL;
9892
0
    }
9893
4.18k
    asdl_seq* _res = NULL;
9894
4.18k
    int _mark = p->mark;
9895
4.18k
    { // ','.maybe_star_pattern+ ','?
9896
4.18k
        if (p->error_indicator) {
9897
0
            p->level--;
9898
0
            return NULL;
9899
0
        }
9900
4.18k
        D(fprintf(stderr, "%*c> maybe_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
9901
4.18k
        void *_opt_var;
9902
4.18k
        UNUSED(_opt_var); // Silence compiler warnings
9903
4.18k
        asdl_seq * patterns;
9904
4.18k
        if (
9905
4.18k
            (patterns = _gather_45_rule(p))  // ','.maybe_star_pattern+
9906
2.04k
            &&
9907
2.04k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
9908
4.18k
        )
9909
1.82k
        {
9910
1.82k
            D(fprintf(stderr, "%*c+ maybe_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
9911
1.82k
            _res = patterns;
9912
1.82k
            if (_res == NULL && PyErr_Occurred()) {
9913
0
                p->error_indicator = 1;
9914
0
                p->level--;
9915
0
                return NULL;
9916
0
            }
9917
1.82k
            goto done;
9918
1.82k
        }
9919
2.35k
        p->mark = _mark;
9920
2.35k
        D(fprintf(stderr, "%*c%s maybe_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9921
2.35k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.maybe_star_pattern+ ','?"));
9922
2.35k
    }
9923
2.35k
    _res = NULL;
9924
4.18k
  done:
9925
4.18k
    p->level--;
9926
4.18k
    return _res;
9927
2.35k
}
9928
9929
// maybe_star_pattern: star_pattern | pattern
9930
static pattern_ty
9931
maybe_star_pattern_rule(Parser *p)
9932
29.9k
{
9933
29.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9934
0
        _Pypegen_stack_overflow(p);
9935
0
    }
9936
29.9k
    if (p->error_indicator) {
9937
0
        p->level--;
9938
0
        return NULL;
9939
0
    }
9940
29.9k
    pattern_ty _res = NULL;
9941
29.9k
    int _mark = p->mark;
9942
29.9k
    { // star_pattern
9943
29.9k
        if (p->error_indicator) {
9944
0
            p->level--;
9945
0
            return NULL;
9946
0
        }
9947
29.9k
        D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_pattern"));
9948
29.9k
        pattern_ty star_pattern_var;
9949
29.9k
        if (
9950
29.9k
            (star_pattern_var = star_pattern_rule(p))  // star_pattern
9951
29.9k
        )
9952
2.59k
        {
9953
2.59k
            D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_pattern"));
9954
2.59k
            _res = star_pattern_var;
9955
2.59k
            goto done;
9956
2.59k
        }
9957
27.3k
        p->mark = _mark;
9958
27.3k
        D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9959
27.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_pattern"));
9960
27.3k
    }
9961
0
    { // pattern
9962
27.3k
        if (p->error_indicator) {
9963
28
            p->level--;
9964
28
            return NULL;
9965
28
        }
9966
27.3k
        D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
9967
27.3k
        pattern_ty pattern_var;
9968
27.3k
        if (
9969
27.3k
            (pattern_var = pattern_rule(p))  // pattern
9970
27.3k
        )
9971
20.1k
        {
9972
20.1k
            D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
9973
20.1k
            _res = pattern_var;
9974
20.1k
            goto done;
9975
20.1k
        }
9976
7.18k
        p->mark = _mark;
9977
7.18k
        D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9978
7.18k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
9979
7.18k
    }
9980
7.18k
    _res = NULL;
9981
29.9k
  done:
9982
29.9k
    p->level--;
9983
29.9k
    return _res;
9984
7.18k
}
9985
9986
// star_pattern: '*' pattern_capture_target | '*' wildcard_pattern
9987
static pattern_ty
9988
star_pattern_rule(Parser *p)
9989
29.9k
{
9990
29.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
9991
0
        _Pypegen_stack_overflow(p);
9992
0
    }
9993
29.9k
    if (p->error_indicator) {
9994
0
        p->level--;
9995
0
        return NULL;
9996
0
    }
9997
29.9k
    pattern_ty _res = NULL;
9998
29.9k
    if (_PyPegen_is_memoized(p, star_pattern_type, &_res)) {
9999
6.13k
        p->level--;
10000
6.13k
        return _res;
10001
6.13k
    }
10002
23.8k
    int _mark = p->mark;
10003
23.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10004
0
        p->error_indicator = 1;
10005
0
        p->level--;
10006
0
        return NULL;
10007
0
    }
10008
23.8k
    int _start_lineno = p->tokens[_mark]->lineno;
10009
23.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10010
23.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10011
23.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10012
23.8k
    { // '*' pattern_capture_target
10013
23.8k
        if (p->error_indicator) {
10014
0
            p->level--;
10015
0
            return NULL;
10016
0
        }
10017
23.8k
        D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
10018
23.8k
        Token * _literal;
10019
23.8k
        expr_ty target;
10020
23.8k
        if (
10021
23.8k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
10022
1.63k
            &&
10023
1.63k
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
10024
23.8k
        )
10025
826
        {
10026
826
            D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
10027
826
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10028
826
            if (_token == NULL) {
10029
0
                p->level--;
10030
0
                return NULL;
10031
0
            }
10032
826
            int _end_lineno = _token->end_lineno;
10033
826
            UNUSED(_end_lineno); // Only used by EXTRA macro
10034
826
            int _end_col_offset = _token->end_col_offset;
10035
826
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10036
826
            _res = _PyAST_MatchStar ( target -> v . Name . id , EXTRA );
10037
826
            if (_res == NULL && PyErr_Occurred()) {
10038
0
                p->error_indicator = 1;
10039
0
                p->level--;
10040
0
                return NULL;
10041
0
            }
10042
826
            goto done;
10043
826
        }
10044
22.9k
        p->mark = _mark;
10045
22.9k
        D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10046
22.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' pattern_capture_target"));
10047
22.9k
    }
10048
0
    { // '*' wildcard_pattern
10049
22.9k
        if (p->error_indicator) {
10050
2
            p->level--;
10051
2
            return NULL;
10052
2
        }
10053
22.9k
        D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
10054
22.9k
        Token * _literal;
10055
22.9k
        pattern_ty wildcard_pattern_var;
10056
22.9k
        if (
10057
22.9k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
10058
810
            &&
10059
810
            (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
10060
22.9k
        )
10061
801
        {
10062
801
            D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
10063
801
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10064
801
            if (_token == NULL) {
10065
0
                p->level--;
10066
0
                return NULL;
10067
0
            }
10068
801
            int _end_lineno = _token->end_lineno;
10069
801
            UNUSED(_end_lineno); // Only used by EXTRA macro
10070
801
            int _end_col_offset = _token->end_col_offset;
10071
801
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10072
801
            _res = _PyAST_MatchStar ( NULL , EXTRA );
10073
801
            if (_res == NULL && PyErr_Occurred()) {
10074
0
                p->error_indicator = 1;
10075
0
                p->level--;
10076
0
                return NULL;
10077
0
            }
10078
801
            goto done;
10079
801
        }
10080
22.1k
        p->mark = _mark;
10081
22.1k
        D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10082
22.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' wildcard_pattern"));
10083
22.1k
    }
10084
22.1k
    _res = NULL;
10085
23.8k
  done:
10086
23.8k
    _PyPegen_insert_memo(p, _mark, star_pattern_type, _res);
10087
23.8k
    p->level--;
10088
23.8k
    return _res;
10089
22.1k
}
10090
10091
// mapping_pattern:
10092
//     | '{' '}'
10093
//     | '{' double_star_pattern ','? '}'
10094
//     | '{' items_pattern ',' double_star_pattern ','? '}'
10095
//     | '{' items_pattern ','? '}'
10096
static pattern_ty
10097
mapping_pattern_rule(Parser *p)
10098
22.1k
{
10099
22.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10100
0
        _Pypegen_stack_overflow(p);
10101
0
    }
10102
22.1k
    if (p->error_indicator) {
10103
0
        p->level--;
10104
0
        return NULL;
10105
0
    }
10106
22.1k
    pattern_ty _res = NULL;
10107
22.1k
    int _mark = p->mark;
10108
22.1k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10109
0
        p->error_indicator = 1;
10110
0
        p->level--;
10111
0
        return NULL;
10112
0
    }
10113
22.1k
    int _start_lineno = p->tokens[_mark]->lineno;
10114
22.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10115
22.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10116
22.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10117
22.1k
    { // '{' '}'
10118
22.1k
        if (p->error_indicator) {
10119
0
            p->level--;
10120
0
            return NULL;
10121
0
        }
10122
22.1k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
10123
22.1k
        Token * _literal;
10124
22.1k
        Token * _literal_1;
10125
22.1k
        if (
10126
22.1k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10127
4.12k
            &&
10128
4.12k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10129
22.1k
        )
10130
1.12k
        {
10131
1.12k
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
10132
1.12k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10133
1.12k
            if (_token == NULL) {
10134
0
                p->level--;
10135
0
                return NULL;
10136
0
            }
10137
1.12k
            int _end_lineno = _token->end_lineno;
10138
1.12k
            UNUSED(_end_lineno); // Only used by EXTRA macro
10139
1.12k
            int _end_col_offset = _token->end_col_offset;
10140
1.12k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10141
1.12k
            _res = _PyAST_MatchMapping ( NULL , NULL , NULL , EXTRA );
10142
1.12k
            if (_res == NULL && PyErr_Occurred()) {
10143
0
                p->error_indicator = 1;
10144
0
                p->level--;
10145
0
                return NULL;
10146
0
            }
10147
1.12k
            goto done;
10148
1.12k
        }
10149
21.0k
        p->mark = _mark;
10150
21.0k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10151
21.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
10152
21.0k
    }
10153
0
    { // '{' double_star_pattern ','? '}'
10154
21.0k
        if (p->error_indicator) {
10155
5
            p->level--;
10156
5
            return NULL;
10157
5
        }
10158
21.0k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10159
21.0k
        Token * _literal;
10160
21.0k
        Token * _literal_1;
10161
21.0k
        void *_opt_var;
10162
21.0k
        UNUSED(_opt_var); // Silence compiler warnings
10163
21.0k
        expr_ty rest;
10164
21.0k
        if (
10165
21.0k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10166
3.00k
            &&
10167
3.00k
            (rest = double_star_pattern_rule(p))  // double_star_pattern
10168
397
            &&
10169
397
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10170
396
            &&
10171
396
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10172
21.0k
        )
10173
393
        {
10174
393
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10175
393
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10176
393
            if (_token == NULL) {
10177
0
                p->level--;
10178
0
                return NULL;
10179
0
            }
10180
393
            int _end_lineno = _token->end_lineno;
10181
393
            UNUSED(_end_lineno); // Only used by EXTRA macro
10182
393
            int _end_col_offset = _token->end_col_offset;
10183
393
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10184
393
            _res = _PyAST_MatchMapping ( NULL , NULL , rest -> v . Name . id , EXTRA );
10185
393
            if (_res == NULL && PyErr_Occurred()) {
10186
0
                p->error_indicator = 1;
10187
0
                p->level--;
10188
0
                return NULL;
10189
0
            }
10190
393
            goto done;
10191
393
        }
10192
20.6k
        p->mark = _mark;
10193
20.6k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10194
20.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_star_pattern ','? '}'"));
10195
20.6k
    }
10196
0
    { // '{' items_pattern ',' double_star_pattern ','? '}'
10197
20.6k
        if (p->error_indicator) {
10198
3
            p->level--;
10199
3
            return NULL;
10200
3
        }
10201
20.6k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10202
20.6k
        Token * _literal;
10203
20.6k
        Token * _literal_1;
10204
20.6k
        Token * _literal_2;
10205
20.6k
        void *_opt_var;
10206
20.6k
        UNUSED(_opt_var); // Silence compiler warnings
10207
20.6k
        asdl_seq* items;
10208
20.6k
        expr_ty rest;
10209
20.6k
        if (
10210
20.6k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10211
2.60k
            &&
10212
2.60k
            (items = items_pattern_rule(p))  // items_pattern
10213
1.84k
            &&
10214
1.84k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
10215
1.15k
            &&
10216
1.15k
            (rest = double_star_pattern_rule(p))  // double_star_pattern
10217
373
            &&
10218
373
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10219
372
            &&
10220
372
            (_literal_2 = _PyPegen_expect_token(p, 26))  // token='}'
10221
20.6k
        )
10222
363
        {
10223
363
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10224
363
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10225
363
            if (_token == NULL) {
10226
0
                p->level--;
10227
0
                return NULL;
10228
0
            }
10229
363
            int _end_lineno = _token->end_lineno;
10230
363
            UNUSED(_end_lineno); // Only used by EXTRA macro
10231
363
            int _end_col_offset = _token->end_col_offset;
10232
363
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10233
363
            _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 );
10234
363
            if (_res == NULL && PyErr_Occurred()) {
10235
0
                p->error_indicator = 1;
10236
0
                p->level--;
10237
0
                return NULL;
10238
0
            }
10239
363
            goto done;
10240
363
        }
10241
20.2k
        p->mark = _mark;
10242
20.2k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10243
20.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
10244
20.2k
    }
10245
0
    { // '{' items_pattern ','? '}'
10246
20.2k
        if (p->error_indicator) {
10247
664
            p->level--;
10248
664
            return NULL;
10249
664
        }
10250
19.5k
        D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
10251
19.5k
        Token * _literal;
10252
19.5k
        Token * _literal_1;
10253
19.5k
        void *_opt_var;
10254
19.5k
        UNUSED(_opt_var); // Silence compiler warnings
10255
19.5k
        asdl_seq* items;
10256
19.5k
        if (
10257
19.5k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
10258
1.57k
            &&
10259
1.57k
            (items = items_pattern_rule(p))  // items_pattern
10260
1.06k
            &&
10261
1.06k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10262
1.06k
            &&
10263
1.06k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
10264
19.5k
        )
10265
768
        {
10266
768
            D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
10267
768
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10268
768
            if (_token == NULL) {
10269
0
                p->level--;
10270
0
                return NULL;
10271
0
            }
10272
768
            int _end_lineno = _token->end_lineno;
10273
768
            UNUSED(_end_lineno); // Only used by EXTRA macro
10274
768
            int _end_col_offset = _token->end_col_offset;
10275
768
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10276
768
            _res = _PyAST_MatchMapping ( CHECK ( asdl_expr_seq* , _PyPegen_get_pattern_keys ( p , items ) ) , CHECK ( asdl_pattern_seq* , _PyPegen_get_patterns ( p , items ) ) , NULL , EXTRA );
10277
768
            if (_res == NULL && PyErr_Occurred()) {
10278
0
                p->error_indicator = 1;
10279
0
                p->level--;
10280
0
                return NULL;
10281
0
            }
10282
768
            goto done;
10283
768
        }
10284
18.8k
        p->mark = _mark;
10285
18.8k
        D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10286
18.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ','? '}'"));
10287
18.8k
    }
10288
18.8k
    _res = NULL;
10289
21.4k
  done:
10290
21.4k
    p->level--;
10291
21.4k
    return _res;
10292
18.8k
}
10293
10294
// items_pattern: ','.key_value_pattern+
10295
static asdl_seq*
10296
items_pattern_rule(Parser *p)
10297
4.18k
{
10298
4.18k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10299
0
        _Pypegen_stack_overflow(p);
10300
0
    }
10301
4.18k
    if (p->error_indicator) {
10302
0
        p->level--;
10303
0
        return NULL;
10304
0
    }
10305
4.18k
    asdl_seq* _res = NULL;
10306
4.18k
    int _mark = p->mark;
10307
4.18k
    { // ','.key_value_pattern+
10308
4.18k
        if (p->error_indicator) {
10309
0
            p->level--;
10310
0
            return NULL;
10311
0
        }
10312
4.18k
        D(fprintf(stderr, "%*c> items_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
10313
4.18k
        asdl_seq * _gather_47_var;
10314
4.18k
        if (
10315
4.18k
            (_gather_47_var = _gather_47_rule(p))  // ','.key_value_pattern+
10316
4.18k
        )
10317
2.90k
        {
10318
2.90k
            D(fprintf(stderr, "%*c+ items_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
10319
2.90k
            _res = _gather_47_var;
10320
2.90k
            goto done;
10321
2.90k
        }
10322
1.27k
        p->mark = _mark;
10323
1.27k
        D(fprintf(stderr, "%*c%s items_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10324
1.27k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.key_value_pattern+"));
10325
1.27k
    }
10326
1.27k
    _res = NULL;
10327
4.18k
  done:
10328
4.18k
    p->level--;
10329
4.18k
    return _res;
10330
1.27k
}
10331
10332
// key_value_pattern: (literal_expr | attr) ':' pattern
10333
static KeyPatternPair*
10334
key_value_pattern_rule(Parser *p)
10335
7.56k
{
10336
7.56k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10337
0
        _Pypegen_stack_overflow(p);
10338
0
    }
10339
7.56k
    if (p->error_indicator) {
10340
0
        p->level--;
10341
0
        return NULL;
10342
0
    }
10343
7.56k
    KeyPatternPair* _res = NULL;
10344
7.56k
    int _mark = p->mark;
10345
7.56k
    { // (literal_expr | attr) ':' pattern
10346
7.56k
        if (p->error_indicator) {
10347
0
            p->level--;
10348
0
            return NULL;
10349
0
        }
10350
7.56k
        D(fprintf(stderr, "%*c> key_value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10351
7.56k
        Token * _literal;
10352
7.56k
        void *key;
10353
7.56k
        pattern_ty pattern;
10354
7.56k
        if (
10355
7.56k
            (key = _tmp_48_rule(p))  // literal_expr | attr
10356
6.84k
            &&
10357
6.84k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
10358
6.73k
            &&
10359
6.73k
            (pattern = pattern_rule(p))  // pattern
10360
7.56k
        )
10361
4.75k
        {
10362
4.75k
            D(fprintf(stderr, "%*c+ key_value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10363
4.75k
            _res = _PyPegen_key_pattern_pair ( p , key , pattern );
10364
4.75k
            if (_res == NULL && PyErr_Occurred()) {
10365
0
                p->error_indicator = 1;
10366
0
                p->level--;
10367
0
                return NULL;
10368
0
            }
10369
4.75k
            goto done;
10370
4.75k
        }
10371
2.80k
        p->mark = _mark;
10372
2.80k
        D(fprintf(stderr, "%*c%s key_value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10373
2.80k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10374
2.80k
    }
10375
2.80k
    _res = NULL;
10376
7.56k
  done:
10377
7.56k
    p->level--;
10378
7.56k
    return _res;
10379
2.80k
}
10380
10381
// double_star_pattern: '**' pattern_capture_target
10382
static expr_ty
10383
double_star_pattern_rule(Parser *p)
10384
4.15k
{
10385
4.15k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10386
0
        _Pypegen_stack_overflow(p);
10387
0
    }
10388
4.15k
    if (p->error_indicator) {
10389
409
        p->level--;
10390
409
        return NULL;
10391
409
    }
10392
3.74k
    expr_ty _res = NULL;
10393
3.74k
    int _mark = p->mark;
10394
3.74k
    { // '**' pattern_capture_target
10395
3.74k
        if (p->error_indicator) {
10396
0
            p->level--;
10397
0
            return NULL;
10398
0
        }
10399
3.74k
        D(fprintf(stderr, "%*c> double_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
10400
3.74k
        Token * _literal;
10401
3.74k
        expr_ty target;
10402
3.74k
        if (
10403
3.74k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
10404
773
            &&
10405
773
            (target = pattern_capture_target_rule(p))  // pattern_capture_target
10406
3.74k
        )
10407
770
        {
10408
770
            D(fprintf(stderr, "%*c+ double_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
10409
770
            _res = target;
10410
770
            if (_res == NULL && PyErr_Occurred()) {
10411
0
                p->error_indicator = 1;
10412
0
                p->level--;
10413
0
                return NULL;
10414
0
            }
10415
770
            goto done;
10416
770
        }
10417
2.97k
        p->mark = _mark;
10418
2.97k
        D(fprintf(stderr, "%*c%s double_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10419
2.97k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' pattern_capture_target"));
10420
2.97k
    }
10421
2.97k
    _res = NULL;
10422
3.74k
  done:
10423
3.74k
    p->level--;
10424
3.74k
    return _res;
10425
2.97k
}
10426
10427
// class_pattern:
10428
//     | name_or_attr '(' ')'
10429
//     | name_or_attr '(' positional_patterns ','? ')'
10430
//     | name_or_attr '(' keyword_patterns ','? ')'
10431
//     | name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
10432
//     | invalid_class_pattern
10433
static pattern_ty
10434
class_pattern_rule(Parser *p)
10435
18.8k
{
10436
18.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10437
0
        _Pypegen_stack_overflow(p);
10438
0
    }
10439
18.8k
    if (p->error_indicator) {
10440
0
        p->level--;
10441
0
        return NULL;
10442
0
    }
10443
18.8k
    pattern_ty _res = NULL;
10444
18.8k
    int _mark = p->mark;
10445
18.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10446
0
        p->error_indicator = 1;
10447
0
        p->level--;
10448
0
        return NULL;
10449
0
    }
10450
18.8k
    int _start_lineno = p->tokens[_mark]->lineno;
10451
18.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
10452
18.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
10453
18.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10454
18.8k
    { // name_or_attr '(' ')'
10455
18.8k
        if (p->error_indicator) {
10456
0
            p->level--;
10457
0
            return NULL;
10458
0
        }
10459
18.8k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
10460
18.8k
        Token * _literal;
10461
18.8k
        Token * _literal_1;
10462
18.8k
        expr_ty cls;
10463
18.8k
        if (
10464
18.8k
            (cls = name_or_attr_rule(p))  // name_or_attr
10465
12.8k
            &&
10466
12.8k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10467
9.66k
            &&
10468
9.66k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10469
18.8k
        )
10470
1.01k
        {
10471
1.01k
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
10472
1.01k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10473
1.01k
            if (_token == NULL) {
10474
0
                p->level--;
10475
0
                return NULL;
10476
0
            }
10477
1.01k
            int _end_lineno = _token->end_lineno;
10478
1.01k
            UNUSED(_end_lineno); // Only used by EXTRA macro
10479
1.01k
            int _end_col_offset = _token->end_col_offset;
10480
1.01k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10481
1.01k
            _res = _PyAST_MatchClass ( cls , NULL , NULL , NULL , EXTRA );
10482
1.01k
            if (_res == NULL && PyErr_Occurred()) {
10483
0
                p->error_indicator = 1;
10484
0
                p->level--;
10485
0
                return NULL;
10486
0
            }
10487
1.01k
            goto done;
10488
1.01k
        }
10489
17.8k
        p->mark = _mark;
10490
17.8k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10491
17.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' ')'"));
10492
17.8k
    }
10493
0
    { // name_or_attr '(' positional_patterns ','? ')'
10494
17.8k
        if (p->error_indicator) {
10495
12
            p->level--;
10496
12
            return NULL;
10497
12
        }
10498
17.7k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10499
17.7k
        Token * _literal;
10500
17.7k
        Token * _literal_1;
10501
17.7k
        void *_opt_var;
10502
17.7k
        UNUSED(_opt_var); // Silence compiler warnings
10503
17.7k
        expr_ty cls;
10504
17.7k
        asdl_pattern_seq* patterns;
10505
17.7k
        if (
10506
17.7k
            (cls = name_or_attr_rule(p))  // name_or_attr
10507
11.8k
            &&
10508
11.8k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10509
8.64k
            &&
10510
8.64k
            (patterns = positional_patterns_rule(p))  // positional_patterns
10511
4.78k
            &&
10512
4.78k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10513
4.52k
            &&
10514
4.52k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10515
17.7k
        )
10516
1.15k
        {
10517
1.15k
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10518
1.15k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10519
1.15k
            if (_token == NULL) {
10520
0
                p->level--;
10521
0
                return NULL;
10522
0
            }
10523
1.15k
            int _end_lineno = _token->end_lineno;
10524
1.15k
            UNUSED(_end_lineno); // Only used by EXTRA macro
10525
1.15k
            int _end_col_offset = _token->end_col_offset;
10526
1.15k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10527
1.15k
            _res = _PyAST_MatchClass ( cls , patterns , NULL , NULL , EXTRA );
10528
1.15k
            if (_res == NULL && PyErr_Occurred()) {
10529
0
                p->error_indicator = 1;
10530
0
                p->level--;
10531
0
                return NULL;
10532
0
            }
10533
1.15k
            goto done;
10534
1.15k
        }
10535
16.6k
        p->mark = _mark;
10536
16.6k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10537
16.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10538
16.6k
    }
10539
0
    { // name_or_attr '(' keyword_patterns ','? ')'
10540
16.6k
        if (p->error_indicator) {
10541
630
            p->level--;
10542
630
            return NULL;
10543
630
        }
10544
16.0k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10545
16.0k
        Token * _literal;
10546
16.0k
        Token * _literal_1;
10547
16.0k
        void *_opt_var;
10548
16.0k
        UNUSED(_opt_var); // Silence compiler warnings
10549
16.0k
        expr_ty cls;
10550
16.0k
        asdl_seq* keywords;
10551
16.0k
        if (
10552
16.0k
            (cls = name_or_attr_rule(p))  // name_or_attr
10553
10.0k
            &&
10554
10.0k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10555
6.86k
            &&
10556
6.86k
            (keywords = keyword_patterns_rule(p))  // keyword_patterns
10557
2.21k
            &&
10558
2.21k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10559
2.13k
            &&
10560
2.13k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10561
16.0k
        )
10562
607
        {
10563
607
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10564
607
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10565
607
            if (_token == NULL) {
10566
0
                p->level--;
10567
0
                return NULL;
10568
0
            }
10569
607
            int _end_lineno = _token->end_lineno;
10570
607
            UNUSED(_end_lineno); // Only used by EXTRA macro
10571
607
            int _end_col_offset = _token->end_col_offset;
10572
607
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10573
607
            _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 );
10574
607
            if (_res == NULL && PyErr_Occurred()) {
10575
0
                p->error_indicator = 1;
10576
0
                p->level--;
10577
0
                return NULL;
10578
0
            }
10579
607
            goto done;
10580
607
        }
10581
15.4k
        p->mark = _mark;
10582
15.4k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10583
15.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10584
15.4k
    }
10585
0
    { // name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
10586
15.4k
        if (p->error_indicator) {
10587
304
            p->level--;
10588
304
            return NULL;
10589
304
        }
10590
15.1k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10591
15.1k
        Token * _literal;
10592
15.1k
        Token * _literal_1;
10593
15.1k
        Token * _literal_2;
10594
15.1k
        void *_opt_var;
10595
15.1k
        UNUSED(_opt_var); // Silence compiler warnings
10596
15.1k
        expr_ty cls;
10597
15.1k
        asdl_seq* keywords;
10598
15.1k
        asdl_pattern_seq* patterns;
10599
15.1k
        if (
10600
15.1k
            (cls = name_or_attr_rule(p))  // name_or_attr
10601
9.14k
            &&
10602
9.14k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
10603
5.94k
            &&
10604
5.94k
            (patterns = positional_patterns_rule(p))  // positional_patterns
10605
3.13k
            &&
10606
3.13k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
10607
1.82k
            &&
10608
1.82k
            (keywords = keyword_patterns_rule(p))  // keyword_patterns
10609
776
            &&
10610
776
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10611
453
            &&
10612
453
            (_literal_2 = _PyPegen_expect_token(p, 8))  // token=')'
10613
15.1k
        )
10614
139
        {
10615
139
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10616
139
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10617
139
            if (_token == NULL) {
10618
0
                p->level--;
10619
0
                return NULL;
10620
0
            }
10621
139
            int _end_lineno = _token->end_lineno;
10622
139
            UNUSED(_end_lineno); // Only used by EXTRA macro
10623
139
            int _end_col_offset = _token->end_col_offset;
10624
139
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10625
139
            _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 );
10626
139
            if (_res == NULL && PyErr_Occurred()) {
10627
0
                p->error_indicator = 1;
10628
0
                p->level--;
10629
0
                return NULL;
10630
0
            }
10631
139
            goto done;
10632
139
        }
10633
14.9k
        p->mark = _mark;
10634
14.9k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10635
14.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10636
14.9k
    }
10637
14.9k
    if (p->call_invalid_rules) { // invalid_class_pattern
10638
7.92k
        if (p->error_indicator) {
10639
355
            p->level--;
10640
355
            return NULL;
10641
355
        }
10642
7.57k
        D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
10643
7.57k
        void *invalid_class_pattern_var;
10644
7.57k
        if (
10645
7.57k
            (invalid_class_pattern_var = invalid_class_pattern_rule(p))  // invalid_class_pattern
10646
7.57k
        )
10647
0
        {
10648
0
            D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
10649
0
            _res = invalid_class_pattern_var;
10650
0
            goto done;
10651
0
        }
10652
7.57k
        p->mark = _mark;
10653
7.57k
        D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10654
7.57k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_pattern"));
10655
7.57k
    }
10656
14.6k
    _res = NULL;
10657
17.5k
  done:
10658
17.5k
    p->level--;
10659
17.5k
    return _res;
10660
14.6k
}
10661
10662
// positional_patterns: ','.pattern+
10663
static asdl_pattern_seq*
10664
positional_patterns_rule(Parser *p)
10665
18.6k
{
10666
18.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10667
0
        _Pypegen_stack_overflow(p);
10668
0
    }
10669
18.6k
    if (p->error_indicator) {
10670
0
        p->level--;
10671
0
        return NULL;
10672
0
    }
10673
18.6k
    asdl_pattern_seq* _res = NULL;
10674
18.6k
    int _mark = p->mark;
10675
18.6k
    { // ','.pattern+
10676
18.6k
        if (p->error_indicator) {
10677
0
            p->level--;
10678
0
            return NULL;
10679
0
        }
10680
18.6k
        D(fprintf(stderr, "%*c> positional_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
10681
18.6k
        asdl_pattern_seq* args;
10682
18.6k
        if (
10683
18.6k
            (args = (asdl_pattern_seq*)_gather_50_rule(p))  // ','.pattern+
10684
18.6k
        )
10685
9.95k
        {
10686
9.95k
            D(fprintf(stderr, "%*c+ positional_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
10687
9.95k
            _res = args;
10688
9.95k
            if (_res == NULL && PyErr_Occurred()) {
10689
0
                p->error_indicator = 1;
10690
0
                p->level--;
10691
0
                return NULL;
10692
0
            }
10693
9.95k
            goto done;
10694
9.95k
        }
10695
8.70k
        p->mark = _mark;
10696
8.70k
        D(fprintf(stderr, "%*c%s positional_patterns[%d-%d]: %s failed!\n", p->level, ' ',
10697
8.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.pattern+"));
10698
8.70k
    }
10699
8.70k
    _res = NULL;
10700
18.6k
  done:
10701
18.6k
    p->level--;
10702
18.6k
    return _res;
10703
8.70k
}
10704
10705
// keyword_patterns: ','.keyword_pattern+
10706
static asdl_seq*
10707
keyword_patterns_rule(Parser *p)
10708
11.8k
{
10709
11.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10710
0
        _Pypegen_stack_overflow(p);
10711
0
    }
10712
11.8k
    if (p->error_indicator) {
10713
0
        p->level--;
10714
0
        return NULL;
10715
0
    }
10716
11.8k
    asdl_seq* _res = NULL;
10717
11.8k
    int _mark = p->mark;
10718
11.8k
    { // ','.keyword_pattern+
10719
11.8k
        if (p->error_indicator) {
10720
0
            p->level--;
10721
0
            return NULL;
10722
0
        }
10723
11.8k
        D(fprintf(stderr, "%*c> keyword_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
10724
11.8k
        asdl_seq * _gather_52_var;
10725
11.8k
        if (
10726
11.8k
            (_gather_52_var = _gather_52_rule(p))  // ','.keyword_pattern+
10727
11.8k
        )
10728
4.29k
        {
10729
4.29k
            D(fprintf(stderr, "%*c+ keyword_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
10730
4.29k
            _res = _gather_52_var;
10731
4.29k
            goto done;
10732
4.29k
        }
10733
7.51k
        p->mark = _mark;
10734
7.51k
        D(fprintf(stderr, "%*c%s keyword_patterns[%d-%d]: %s failed!\n", p->level, ' ',
10735
7.51k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.keyword_pattern+"));
10736
7.51k
    }
10737
7.51k
    _res = NULL;
10738
11.8k
  done:
10739
11.8k
    p->level--;
10740
11.8k
    return _res;
10741
7.51k
}
10742
10743
// keyword_pattern: NAME '=' pattern
10744
static KeyPatternPair*
10745
keyword_pattern_rule(Parser *p)
10746
16.2k
{
10747
16.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10748
0
        _Pypegen_stack_overflow(p);
10749
0
    }
10750
16.2k
    if (p->error_indicator) {
10751
0
        p->level--;
10752
0
        return NULL;
10753
0
    }
10754
16.2k
    KeyPatternPair* _res = NULL;
10755
16.2k
    int _mark = p->mark;
10756
16.2k
    { // NAME '=' pattern
10757
16.2k
        if (p->error_indicator) {
10758
0
            p->level--;
10759
0
            return NULL;
10760
0
        }
10761
16.2k
        D(fprintf(stderr, "%*c> keyword_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
10762
16.2k
        Token * _literal;
10763
16.2k
        expr_ty arg;
10764
16.2k
        pattern_ty value;
10765
16.2k
        if (
10766
16.2k
            (arg = _PyPegen_name_token(p))  // NAME
10767
15.7k
            &&
10768
15.7k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
10769
9.10k
            &&
10770
9.10k
            (value = pattern_rule(p))  // pattern
10771
16.2k
        )
10772
6.09k
        {
10773
6.09k
            D(fprintf(stderr, "%*c+ keyword_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
10774
6.09k
            _res = _PyPegen_key_pattern_pair ( p , arg , value );
10775
6.09k
            if (_res == NULL && PyErr_Occurred()) {
10776
0
                p->error_indicator = 1;
10777
0
                p->level--;
10778
0
                return NULL;
10779
0
            }
10780
6.09k
            goto done;
10781
6.09k
        }
10782
10.1k
        p->mark = _mark;
10783
10.1k
        D(fprintf(stderr, "%*c%s keyword_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10784
10.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' pattern"));
10785
10.1k
    }
10786
10.1k
    _res = NULL;
10787
16.2k
  done:
10788
16.2k
    p->level--;
10789
16.2k
    return _res;
10790
10.1k
}
10791
10792
// type_alias: "type" NAME type_params? '=' expression
10793
static stmt_ty
10794
type_alias_rule(Parser *p)
10795
473
{
10796
473
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10797
0
        _Pypegen_stack_overflow(p);
10798
0
    }
10799
473
    if (p->error_indicator) {
10800
0
        p->level--;
10801
0
        return NULL;
10802
0
    }
10803
473
    stmt_ty _res = NULL;
10804
473
    int _mark = p->mark;
10805
473
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10806
0
        p->error_indicator = 1;
10807
0
        p->level--;
10808
0
        return NULL;
10809
0
    }
10810
473
    int _start_lineno = p->tokens[_mark]->lineno;
10811
473
    UNUSED(_start_lineno); // Only used by EXTRA macro
10812
473
    int _start_col_offset = p->tokens[_mark]->col_offset;
10813
473
    UNUSED(_start_col_offset); // Only used by EXTRA macro
10814
473
    { // "type" NAME type_params? '=' expression
10815
473
        if (p->error_indicator) {
10816
0
            p->level--;
10817
0
            return NULL;
10818
0
        }
10819
473
        D(fprintf(stderr, "%*c> type_alias[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"type\" NAME type_params? '=' expression"));
10820
473
        expr_ty _keyword;
10821
473
        Token * _literal;
10822
473
        expr_ty b;
10823
473
        expr_ty n;
10824
473
        void *t;
10825
473
        if (
10826
473
            (_keyword = _PyPegen_expect_soft_keyword(p, "type"))  // soft_keyword='"type"'
10827
473
            &&
10828
473
            (n = _PyPegen_name_token(p))  // NAME
10829
277
            &&
10830
277
            (t = type_params_rule(p), !p->error_indicator)  // type_params?
10831
276
            &&
10832
276
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
10833
263
            &&
10834
263
            (b = expression_rule(p))  // expression
10835
473
        )
10836
260
        {
10837
260
            D(fprintf(stderr, "%*c+ type_alias[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"type\" NAME type_params? '=' expression"));
10838
260
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10839
260
            if (_token == NULL) {
10840
0
                p->level--;
10841
0
                return NULL;
10842
0
            }
10843
260
            int _end_lineno = _token->end_lineno;
10844
260
            UNUSED(_end_lineno); // Only used by EXTRA macro
10845
260
            int _end_col_offset = _token->end_col_offset;
10846
260
            UNUSED(_end_col_offset); // Only used by EXTRA macro
10847
260
            _res = CHECK_VERSION ( stmt_ty , 12 , "Type statement is" , _PyAST_TypeAlias ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , n , Store ) ) , t , b , EXTRA ) );
10848
260
            if (_res == NULL && PyErr_Occurred()) {
10849
0
                p->error_indicator = 1;
10850
0
                p->level--;
10851
0
                return NULL;
10852
0
            }
10853
260
            goto done;
10854
260
        }
10855
213
        p->mark = _mark;
10856
213
        D(fprintf(stderr, "%*c%s type_alias[%d-%d]: %s failed!\n", p->level, ' ',
10857
213
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"type\" NAME type_params? '=' expression"));
10858
213
    }
10859
213
    _res = NULL;
10860
473
  done:
10861
473
    p->level--;
10862
473
    return _res;
10863
213
}
10864
10865
// type_params: invalid_type_params | '[' type_param_seq ']'
10866
static asdl_type_param_seq*
10867
type_params_rule(Parser *p)
10868
21.3k
{
10869
21.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10870
0
        _Pypegen_stack_overflow(p);
10871
0
    }
10872
21.3k
    if (p->error_indicator) {
10873
0
        p->level--;
10874
0
        return NULL;
10875
0
    }
10876
21.3k
    asdl_type_param_seq* _res = NULL;
10877
21.3k
    int _mark = p->mark;
10878
21.3k
    if (p->call_invalid_rules) { // invalid_type_params
10879
8.30k
        if (p->error_indicator) {
10880
0
            p->level--;
10881
0
            return NULL;
10882
0
        }
10883
8.30k
        D(fprintf(stderr, "%*c> type_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_type_params"));
10884
8.30k
        void *invalid_type_params_var;
10885
8.30k
        if (
10886
8.30k
            (invalid_type_params_var = invalid_type_params_rule(p))  // invalid_type_params
10887
8.30k
        )
10888
0
        {
10889
0
            D(fprintf(stderr, "%*c+ type_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_type_params"));
10890
0
            _res = invalid_type_params_var;
10891
0
            goto done;
10892
0
        }
10893
8.30k
        p->mark = _mark;
10894
8.30k
        D(fprintf(stderr, "%*c%s type_params[%d-%d]: %s failed!\n", p->level, ' ',
10895
8.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_type_params"));
10896
8.30k
    }
10897
21.3k
    { // '[' type_param_seq ']'
10898
21.3k
        if (p->error_indicator) {
10899
3
            p->level--;
10900
3
            return NULL;
10901
3
        }
10902
21.3k
        D(fprintf(stderr, "%*c> type_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' type_param_seq ']'"));
10903
21.3k
        Token * _literal;
10904
21.3k
        Token * _literal_1;
10905
21.3k
        asdl_type_param_seq* t;
10906
21.3k
        if (
10907
21.3k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
10908
1.56k
            &&
10909
1.56k
            (t = type_param_seq_rule(p))  // type_param_seq
10910
1.51k
            &&
10911
1.51k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
10912
21.3k
        )
10913
1.34k
        {
10914
1.34k
            D(fprintf(stderr, "%*c+ type_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' type_param_seq ']'"));
10915
1.34k
            _res = CHECK_VERSION ( asdl_type_param_seq* , 12 , "Type parameter lists are" , t );
10916
1.34k
            if (_res == NULL && PyErr_Occurred()) {
10917
0
                p->error_indicator = 1;
10918
0
                p->level--;
10919
0
                return NULL;
10920
0
            }
10921
1.34k
            goto done;
10922
1.34k
        }
10923
20.0k
        p->mark = _mark;
10924
20.0k
        D(fprintf(stderr, "%*c%s type_params[%d-%d]: %s failed!\n", p->level, ' ',
10925
20.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' type_param_seq ']'"));
10926
20.0k
    }
10927
20.0k
    _res = NULL;
10928
21.3k
  done:
10929
21.3k
    p->level--;
10930
21.3k
    return _res;
10931
20.0k
}
10932
10933
// type_param_seq: ','.type_param+ ','?
10934
static asdl_type_param_seq*
10935
type_param_seq_rule(Parser *p)
10936
1.56k
{
10937
1.56k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10938
0
        _Pypegen_stack_overflow(p);
10939
0
    }
10940
1.56k
    if (p->error_indicator) {
10941
0
        p->level--;
10942
0
        return NULL;
10943
0
    }
10944
1.56k
    asdl_type_param_seq* _res = NULL;
10945
1.56k
    int _mark = p->mark;
10946
1.56k
    { // ','.type_param+ ','?
10947
1.56k
        if (p->error_indicator) {
10948
0
            p->level--;
10949
0
            return NULL;
10950
0
        }
10951
1.56k
        D(fprintf(stderr, "%*c> type_param_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.type_param+ ','?"));
10952
1.56k
        void *_opt_var;
10953
1.56k
        UNUSED(_opt_var); // Silence compiler warnings
10954
1.56k
        asdl_type_param_seq* a;
10955
1.56k
        if (
10956
1.56k
            (a = (asdl_type_param_seq*)_gather_54_rule(p))  // ','.type_param+
10957
1.52k
            &&
10958
1.52k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10959
1.56k
        )
10960
1.51k
        {
10961
1.51k
            D(fprintf(stderr, "%*c+ type_param_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.type_param+ ','?"));
10962
1.51k
            _res = a;
10963
1.51k
            if (_res == NULL && PyErr_Occurred()) {
10964
0
                p->error_indicator = 1;
10965
0
                p->level--;
10966
0
                return NULL;
10967
0
            }
10968
1.51k
            goto done;
10969
1.51k
        }
10970
52
        p->mark = _mark;
10971
52
        D(fprintf(stderr, "%*c%s type_param_seq[%d-%d]: %s failed!\n", p->level, ' ',
10972
52
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.type_param+ ','?"));
10973
52
    }
10974
52
    _res = NULL;
10975
1.56k
  done:
10976
1.56k
    p->level--;
10977
1.56k
    return _res;
10978
52
}
10979
10980
// type_param:
10981
//     | NAME type_param_bound? type_param_default?
10982
//     | invalid_type_param
10983
//     | '*' NAME type_param_starred_default?
10984
//     | '**' NAME type_param_default?
10985
static type_param_ty
10986
type_param_rule(Parser *p)
10987
12.7k
{
10988
12.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
10989
0
        _Pypegen_stack_overflow(p);
10990
0
    }
10991
12.7k
    if (p->error_indicator) {
10992
0
        p->level--;
10993
0
        return NULL;
10994
0
    }
10995
12.7k
    type_param_ty _res = NULL;
10996
12.7k
    if (_PyPegen_is_memoized(p, type_param_type, &_res)) {
10997
2.66k
        p->level--;
10998
2.66k
        return _res;
10999
2.66k
    }
11000
10.0k
    int _mark = p->mark;
11001
10.0k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11002
0
        p->error_indicator = 1;
11003
0
        p->level--;
11004
0
        return NULL;
11005
0
    }
11006
10.0k
    int _start_lineno = p->tokens[_mark]->lineno;
11007
10.0k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11008
10.0k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11009
10.0k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11010
10.0k
    { // NAME type_param_bound? type_param_default?
11011
10.0k
        if (p->error_indicator) {
11012
0
            p->level--;
11013
0
            return NULL;
11014
0
        }
11015
10.0k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME type_param_bound? type_param_default?"));
11016
10.0k
        expr_ty a;
11017
10.0k
        void *b;
11018
10.0k
        void *c;
11019
10.0k
        if (
11020
10.0k
            (a = _PyPegen_name_token(p))  // NAME
11021
6.90k
            &&
11022
6.90k
            (b = type_param_bound_rule(p), !p->error_indicator)  // type_param_bound?
11023
6.89k
            &&
11024
6.89k
            (c = type_param_default_rule(p), !p->error_indicator)  // type_param_default?
11025
10.0k
        )
11026
6.89k
        {
11027
6.89k
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME type_param_bound? type_param_default?"));
11028
6.89k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11029
6.89k
            if (_token == NULL) {
11030
0
                p->level--;
11031
0
                return NULL;
11032
0
            }
11033
6.89k
            int _end_lineno = _token->end_lineno;
11034
6.89k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11035
6.89k
            int _end_col_offset = _token->end_col_offset;
11036
6.89k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11037
6.89k
            _res = _PyAST_TypeVar ( a -> v . Name . id , b , c , EXTRA );
11038
6.89k
            if (_res == NULL && PyErr_Occurred()) {
11039
0
                p->error_indicator = 1;
11040
0
                p->level--;
11041
0
                return NULL;
11042
0
            }
11043
6.89k
            goto done;
11044
6.89k
        }
11045
3.13k
        p->mark = _mark;
11046
3.13k
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11047
3.13k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME type_param_bound? type_param_default?"));
11048
3.13k
    }
11049
3.13k
    if (p->call_invalid_rules) { // invalid_type_param
11050
904
        if (p->error_indicator) {
11051
3
            p->level--;
11052
3
            return NULL;
11053
3
        }
11054
901
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_type_param"));
11055
901
        void *invalid_type_param_var;
11056
901
        if (
11057
901
            (invalid_type_param_var = invalid_type_param_rule(p))  // invalid_type_param
11058
901
        )
11059
0
        {
11060
0
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_type_param"));
11061
0
            _res = invalid_type_param_var;
11062
0
            goto done;
11063
0
        }
11064
901
        p->mark = _mark;
11065
901
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11066
901
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_type_param"));
11067
901
    }
11068
3.13k
    { // '*' NAME type_param_starred_default?
11069
3.13k
        if (p->error_indicator) {
11070
10
            p->level--;
11071
10
            return NULL;
11072
10
        }
11073
3.12k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' NAME type_param_starred_default?"));
11074
3.12k
        Token * _literal;
11075
3.12k
        expr_ty a;
11076
3.12k
        void *b;
11077
3.12k
        if (
11078
3.12k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11079
1.54k
            &&
11080
1.54k
            (a = _PyPegen_name_token(p))  // NAME
11081
1.53k
            &&
11082
1.53k
            (b = type_param_starred_default_rule(p), !p->error_indicator)  // type_param_starred_default?
11083
3.12k
        )
11084
1.53k
        {
11085
1.53k
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' NAME type_param_starred_default?"));
11086
1.53k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11087
1.53k
            if (_token == NULL) {
11088
0
                p->level--;
11089
0
                return NULL;
11090
0
            }
11091
1.53k
            int _end_lineno = _token->end_lineno;
11092
1.53k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11093
1.53k
            int _end_col_offset = _token->end_col_offset;
11094
1.53k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11095
1.53k
            _res = _PyAST_TypeVarTuple ( a -> v . Name . id , b , EXTRA );
11096
1.53k
            if (_res == NULL && PyErr_Occurred()) {
11097
0
                p->error_indicator = 1;
11098
0
                p->level--;
11099
0
                return NULL;
11100
0
            }
11101
1.53k
            goto done;
11102
1.53k
        }
11103
1.59k
        p->mark = _mark;
11104
1.59k
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11105
1.59k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' NAME type_param_starred_default?"));
11106
1.59k
    }
11107
0
    { // '**' NAME type_param_default?
11108
1.59k
        if (p->error_indicator) {
11109
5
            p->level--;
11110
5
            return NULL;
11111
5
        }
11112
1.58k
        D(fprintf(stderr, "%*c> type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' NAME type_param_default?"));
11113
1.58k
        Token * _literal;
11114
1.58k
        expr_ty a;
11115
1.58k
        void *b;
11116
1.58k
        if (
11117
1.58k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
11118
974
            &&
11119
974
            (a = _PyPegen_name_token(p))  // NAME
11120
971
            &&
11121
971
            (b = type_param_default_rule(p), !p->error_indicator)  // type_param_default?
11122
1.58k
        )
11123
970
        {
11124
970
            D(fprintf(stderr, "%*c+ type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' NAME type_param_default?"));
11125
970
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11126
970
            if (_token == NULL) {
11127
0
                p->level--;
11128
0
                return NULL;
11129
0
            }
11130
970
            int _end_lineno = _token->end_lineno;
11131
970
            UNUSED(_end_lineno); // Only used by EXTRA macro
11132
970
            int _end_col_offset = _token->end_col_offset;
11133
970
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11134
970
            _res = _PyAST_ParamSpec ( a -> v . Name . id , b , EXTRA );
11135
970
            if (_res == NULL && PyErr_Occurred()) {
11136
0
                p->error_indicator = 1;
11137
0
                p->level--;
11138
0
                return NULL;
11139
0
            }
11140
970
            goto done;
11141
970
        }
11142
617
        p->mark = _mark;
11143
617
        D(fprintf(stderr, "%*c%s type_param[%d-%d]: %s failed!\n", p->level, ' ',
11144
617
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' NAME type_param_default?"));
11145
617
    }
11146
617
    _res = NULL;
11147
10.0k
  done:
11148
10.0k
    _PyPegen_insert_memo(p, _mark, type_param_type, _res);
11149
10.0k
    p->level--;
11150
10.0k
    return _res;
11151
617
}
11152
11153
// type_param_bound: ':' expression
11154
static expr_ty
11155
type_param_bound_rule(Parser *p)
11156
6.90k
{
11157
6.90k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11158
0
        _Pypegen_stack_overflow(p);
11159
0
    }
11160
6.90k
    if (p->error_indicator) {
11161
0
        p->level--;
11162
0
        return NULL;
11163
0
    }
11164
6.90k
    expr_ty _res = NULL;
11165
6.90k
    int _mark = p->mark;
11166
6.90k
    { // ':' expression
11167
6.90k
        if (p->error_indicator) {
11168
0
            p->level--;
11169
0
            return NULL;
11170
0
        }
11171
6.90k
        D(fprintf(stderr, "%*c> type_param_bound[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
11172
6.90k
        Token * _literal;
11173
6.90k
        expr_ty e;
11174
6.90k
        if (
11175
6.90k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
11176
274
            &&
11177
274
            (e = expression_rule(p))  // expression
11178
6.90k
        )
11179
270
        {
11180
270
            D(fprintf(stderr, "%*c+ type_param_bound[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
11181
270
            _res = e;
11182
270
            if (_res == NULL && PyErr_Occurred()) {
11183
0
                p->error_indicator = 1;
11184
0
                p->level--;
11185
0
                return NULL;
11186
0
            }
11187
270
            goto done;
11188
270
        }
11189
6.63k
        p->mark = _mark;
11190
6.63k
        D(fprintf(stderr, "%*c%s type_param_bound[%d-%d]: %s failed!\n", p->level, ' ',
11191
6.63k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
11192
6.63k
    }
11193
6.63k
    _res = NULL;
11194
6.90k
  done:
11195
6.90k
    p->level--;
11196
6.90k
    return _res;
11197
6.63k
}
11198
11199
// type_param_default: '=' expression
11200
static expr_ty
11201
type_param_default_rule(Parser *p)
11202
7.86k
{
11203
7.86k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11204
0
        _Pypegen_stack_overflow(p);
11205
0
    }
11206
7.86k
    if (p->error_indicator) {
11207
0
        p->level--;
11208
0
        return NULL;
11209
0
    }
11210
7.86k
    expr_ty _res = NULL;
11211
7.86k
    int _mark = p->mark;
11212
7.86k
    { // '=' expression
11213
7.86k
        if (p->error_indicator) {
11214
0
            p->level--;
11215
0
            return NULL;
11216
0
        }
11217
7.86k
        D(fprintf(stderr, "%*c> type_param_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
11218
7.86k
        Token * _literal;
11219
7.86k
        expr_ty e;
11220
7.86k
        if (
11221
7.86k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
11222
1.82k
            &&
11223
1.82k
            (e = expression_rule(p))  // expression
11224
7.86k
        )
11225
1.81k
        {
11226
1.81k
            D(fprintf(stderr, "%*c+ type_param_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
11227
1.81k
            _res = CHECK_VERSION ( expr_ty , 13 , "Type parameter defaults are" , e );
11228
1.81k
            if (_res == NULL && PyErr_Occurred()) {
11229
0
                p->error_indicator = 1;
11230
0
                p->level--;
11231
0
                return NULL;
11232
0
            }
11233
1.81k
            goto done;
11234
1.81k
        }
11235
6.05k
        p->mark = _mark;
11236
6.05k
        D(fprintf(stderr, "%*c%s type_param_default[%d-%d]: %s failed!\n", p->level, ' ',
11237
6.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
11238
6.05k
    }
11239
6.05k
    _res = NULL;
11240
7.86k
  done:
11241
7.86k
    p->level--;
11242
7.86k
    return _res;
11243
6.05k
}
11244
11245
// type_param_starred_default: '=' star_expression
11246
static expr_ty
11247
type_param_starred_default_rule(Parser *p)
11248
1.53k
{
11249
1.53k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11250
0
        _Pypegen_stack_overflow(p);
11251
0
    }
11252
1.53k
    if (p->error_indicator) {
11253
0
        p->level--;
11254
0
        return NULL;
11255
0
    }
11256
1.53k
    expr_ty _res = NULL;
11257
1.53k
    int _mark = p->mark;
11258
1.53k
    { // '=' star_expression
11259
1.53k
        if (p->error_indicator) {
11260
0
            p->level--;
11261
0
            return NULL;
11262
0
        }
11263
1.53k
        D(fprintf(stderr, "%*c> type_param_starred_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' star_expression"));
11264
1.53k
        Token * _literal;
11265
1.53k
        expr_ty e;
11266
1.53k
        if (
11267
1.53k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
11268
660
            &&
11269
660
            (e = star_expression_rule(p))  // star_expression
11270
1.53k
        )
11271
656
        {
11272
656
            D(fprintf(stderr, "%*c+ type_param_starred_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' star_expression"));
11273
656
            _res = CHECK_VERSION ( expr_ty , 13 , "Type parameter defaults are" , e );
11274
656
            if (_res == NULL && PyErr_Occurred()) {
11275
0
                p->error_indicator = 1;
11276
0
                p->level--;
11277
0
                return NULL;
11278
0
            }
11279
656
            goto done;
11280
656
        }
11281
881
        p->mark = _mark;
11282
881
        D(fprintf(stderr, "%*c%s type_param_starred_default[%d-%d]: %s failed!\n", p->level, ' ',
11283
881
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' star_expression"));
11284
881
    }
11285
881
    _res = NULL;
11286
1.53k
  done:
11287
1.53k
    p->level--;
11288
1.53k
    return _res;
11289
881
}
11290
11291
// expressions: expression ((',' expression))+ ','? | expression ',' | expression
11292
static expr_ty
11293
expressions_rule(Parser *p)
11294
11.5k
{
11295
11.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11296
0
        _Pypegen_stack_overflow(p);
11297
0
    }
11298
11.5k
    if (p->error_indicator) {
11299
0
        p->level--;
11300
0
        return NULL;
11301
0
    }
11302
11.5k
    expr_ty _res = NULL;
11303
11.5k
    int _mark = p->mark;
11304
11.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11305
9
        p->error_indicator = 1;
11306
9
        p->level--;
11307
9
        return NULL;
11308
9
    }
11309
11.5k
    int _start_lineno = p->tokens[_mark]->lineno;
11310
11.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11311
11.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11312
11.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11313
11.5k
    { // expression ((',' expression))+ ','?
11314
11.5k
        if (p->error_indicator) {
11315
0
            p->level--;
11316
0
            return NULL;
11317
0
        }
11318
11.5k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
11319
11.5k
        void *_opt_var;
11320
11.5k
        UNUSED(_opt_var); // Silence compiler warnings
11321
11.5k
        expr_ty a;
11322
11.5k
        asdl_seq * b;
11323
11.5k
        if (
11324
11.5k
            (a = expression_rule(p))  // expression
11325
4.55k
            &&
11326
4.55k
            (b = _loop1_55_rule(p))  // ((',' expression))+
11327
1.28k
            &&
11328
1.28k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11329
11.5k
        )
11330
1.28k
        {
11331
1.28k
            D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
11332
1.28k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11333
1.28k
            if (_token == NULL) {
11334
0
                p->level--;
11335
0
                return NULL;
11336
0
            }
11337
1.28k
            int _end_lineno = _token->end_lineno;
11338
1.28k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11339
1.28k
            int _end_col_offset = _token->end_col_offset;
11340
1.28k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11341
1.28k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
11342
1.28k
            if (_res == NULL && PyErr_Occurred()) {
11343
0
                p->error_indicator = 1;
11344
0
                p->level--;
11345
0
                return NULL;
11346
0
            }
11347
1.28k
            goto done;
11348
1.28k
        }
11349
10.2k
        p->mark = _mark;
11350
10.2k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11351
10.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ((',' expression))+ ','?"));
11352
10.2k
    }
11353
0
    { // expression ','
11354
10.2k
        if (p->error_indicator) {
11355
4
            p->level--;
11356
4
            return NULL;
11357
4
        }
11358
10.2k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ','"));
11359
10.2k
        Token * _literal;
11360
10.2k
        expr_ty a;
11361
10.2k
        if (
11362
10.2k
            (a = expression_rule(p))  // expression
11363
3.27k
            &&
11364
3.27k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
11365
10.2k
        )
11366
1.97k
        {
11367
1.97k
            D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ','"));
11368
1.97k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11369
1.97k
            if (_token == NULL) {
11370
0
                p->level--;
11371
0
                return NULL;
11372
0
            }
11373
1.97k
            int _end_lineno = _token->end_lineno;
11374
1.97k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11375
1.97k
            int _end_col_offset = _token->end_col_offset;
11376
1.97k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11377
1.97k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
11378
1.97k
            if (_res == NULL && PyErr_Occurred()) {
11379
0
                p->error_indicator = 1;
11380
0
                p->level--;
11381
0
                return NULL;
11382
0
            }
11383
1.97k
            goto done;
11384
1.97k
        }
11385
8.28k
        p->mark = _mark;
11386
8.28k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11387
8.28k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ','"));
11388
8.28k
    }
11389
0
    { // expression
11390
8.28k
        if (p->error_indicator) {
11391
0
            p->level--;
11392
0
            return NULL;
11393
0
        }
11394
8.28k
        D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
11395
8.28k
        expr_ty expression_var;
11396
8.28k
        if (
11397
8.28k
            (expression_var = expression_rule(p))  // expression
11398
8.28k
        )
11399
1.30k
        {
11400
1.30k
            D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
11401
1.30k
            _res = expression_var;
11402
1.30k
            goto done;
11403
1.30k
        }
11404
6.98k
        p->mark = _mark;
11405
6.98k
        D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
11406
6.98k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
11407
6.98k
    }
11408
6.98k
    _res = NULL;
11409
11.5k
  done:
11410
11.5k
    p->level--;
11411
11.5k
    return _res;
11412
6.98k
}
11413
11414
// expression:
11415
//     | invalid_expression
11416
//     | invalid_legacy_expression
11417
//     | disjunction 'if' disjunction 'else' expression
11418
//     | disjunction
11419
//     | lambdef
11420
static expr_ty
11421
expression_rule(Parser *p)
11422
1.81M
{
11423
1.81M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11424
1
        _Pypegen_stack_overflow(p);
11425
1
    }
11426
1.81M
    if (p->error_indicator) {
11427
3
        p->level--;
11428
3
        return NULL;
11429
3
    }
11430
1.81M
    expr_ty _res = NULL;
11431
1.81M
    if (_PyPegen_is_memoized(p, expression_type, &_res)) {
11432
1.16M
        p->level--;
11433
1.16M
        return _res;
11434
1.16M
    }
11435
654k
    int _mark = p->mark;
11436
654k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11437
0
        p->error_indicator = 1;
11438
0
        p->level--;
11439
0
        return NULL;
11440
0
    }
11441
654k
    int _start_lineno = p->tokens[_mark]->lineno;
11442
654k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11443
654k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11444
654k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11445
654k
    if (p->call_invalid_rules) { // invalid_expression
11446
226k
        if (p->error_indicator) {
11447
0
            p->level--;
11448
0
            return NULL;
11449
0
        }
11450
226k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
11451
226k
        void *invalid_expression_var;
11452
226k
        if (
11453
226k
            (invalid_expression_var = invalid_expression_rule(p))  // invalid_expression
11454
226k
        )
11455
0
        {
11456
0
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
11457
0
            _res = invalid_expression_var;
11458
0
            goto done;
11459
0
        }
11460
226k
        p->mark = _mark;
11461
226k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11462
226k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_expression"));
11463
226k
    }
11464
654k
    if (p->call_invalid_rules) { // invalid_legacy_expression
11465
226k
        if (p->error_indicator) {
11466
31.7k
            p->level--;
11467
31.7k
            return NULL;
11468
31.7k
        }
11469
195k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
11470
195k
        void *invalid_legacy_expression_var;
11471
195k
        if (
11472
195k
            (invalid_legacy_expression_var = invalid_legacy_expression_rule(p))  // invalid_legacy_expression
11473
195k
        )
11474
0
        {
11475
0
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
11476
0
            _res = invalid_legacy_expression_var;
11477
0
            goto done;
11478
0
        }
11479
195k
        p->mark = _mark;
11480
195k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11481
195k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_legacy_expression"));
11482
195k
    }
11483
622k
    { // disjunction 'if' disjunction 'else' expression
11484
622k
        if (p->error_indicator) {
11485
1.27k
            p->level--;
11486
1.27k
            return NULL;
11487
1.27k
        }
11488
621k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11489
621k
        Token * _keyword;
11490
621k
        Token * _keyword_1;
11491
621k
        expr_ty a;
11492
621k
        expr_ty b;
11493
621k
        expr_ty c;
11494
621k
        if (
11495
621k
            (a = disjunction_rule(p))  // disjunction
11496
378k
            &&
11497
378k
            (_keyword = _PyPegen_expect_token(p, 691))  // token='if'
11498
1.94k
            &&
11499
1.94k
            (b = disjunction_rule(p))  // disjunction
11500
1.47k
            &&
11501
1.47k
            (_keyword_1 = _PyPegen_expect_token(p, 695))  // token='else'
11502
1.38k
            &&
11503
1.38k
            (c = expression_rule(p))  // expression
11504
621k
        )
11505
1.18k
        {
11506
1.18k
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11507
1.18k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11508
1.18k
            if (_token == NULL) {
11509
0
                p->level--;
11510
0
                return NULL;
11511
0
            }
11512
1.18k
            int _end_lineno = _token->end_lineno;
11513
1.18k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11514
1.18k
            int _end_col_offset = _token->end_col_offset;
11515
1.18k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11516
1.18k
            _res = _PyAST_IfExp ( b , a , c , EXTRA );
11517
1.18k
            if (_res == NULL && PyErr_Occurred()) {
11518
0
                p->error_indicator = 1;
11519
0
                p->level--;
11520
0
                return NULL;
11521
0
            }
11522
1.18k
            goto done;
11523
1.18k
        }
11524
619k
        p->mark = _mark;
11525
619k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11526
619k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
11527
619k
    }
11528
0
    { // disjunction
11529
619k
        if (p->error_indicator) {
11530
8.54k
            p->level--;
11531
8.54k
            return NULL;
11532
8.54k
        }
11533
611k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
11534
611k
        expr_ty disjunction_var;
11535
611k
        if (
11536
611k
            (disjunction_var = disjunction_rule(p))  // disjunction
11537
611k
        )
11538
377k
        {
11539
377k
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
11540
377k
            _res = disjunction_var;
11541
377k
            goto done;
11542
377k
        }
11543
234k
        p->mark = _mark;
11544
234k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11545
234k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
11546
234k
    }
11547
0
    { // lambdef
11548
234k
        if (p->error_indicator) {
11549
0
            p->level--;
11550
0
            return NULL;
11551
0
        }
11552
234k
        D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
11553
234k
        expr_ty lambdef_var;
11554
234k
        if (
11555
234k
            (lambdef_var = lambdef_rule(p))  // lambdef
11556
234k
        )
11557
2.86k
        {
11558
2.86k
            D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
11559
2.86k
            _res = lambdef_var;
11560
2.86k
            goto done;
11561
2.86k
        }
11562
231k
        p->mark = _mark;
11563
231k
        D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
11564
231k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
11565
231k
    }
11566
231k
    _res = NULL;
11567
612k
  done:
11568
612k
    _PyPegen_insert_memo(p, _mark, expression_type, _res);
11569
612k
    p->level--;
11570
612k
    return _res;
11571
231k
}
11572
11573
// yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
11574
static expr_ty
11575
yield_expr_rule(Parser *p)
11576
129k
{
11577
129k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11578
1
        _Pypegen_stack_overflow(p);
11579
1
    }
11580
129k
    if (p->error_indicator) {
11581
1
        p->level--;
11582
1
        return NULL;
11583
1
    }
11584
129k
    expr_ty _res = NULL;
11585
129k
    int _mark = p->mark;
11586
129k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11587
62
        p->error_indicator = 1;
11588
62
        p->level--;
11589
62
        return NULL;
11590
62
    }
11591
129k
    int _start_lineno = p->tokens[_mark]->lineno;
11592
129k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11593
129k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11594
129k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11595
129k
    { // 'yield' 'from' expression
11596
129k
        if (p->error_indicator) {
11597
0
            p->level--;
11598
0
            return NULL;
11599
0
        }
11600
129k
        D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
11601
129k
        Token * _keyword;
11602
129k
        Token * _keyword_1;
11603
129k
        expr_ty a;
11604
129k
        if (
11605
129k
            (_keyword = _PyPegen_expect_token(p, 588))  // token='yield'
11606
3.70k
            &&
11607
3.70k
            (_keyword_1 = _PyPegen_expect_token(p, 642))  // token='from'
11608
557
            &&
11609
557
            (a = expression_rule(p))  // expression
11610
129k
        )
11611
304
        {
11612
304
            D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
11613
304
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11614
304
            if (_token == NULL) {
11615
0
                p->level--;
11616
0
                return NULL;
11617
0
            }
11618
304
            int _end_lineno = _token->end_lineno;
11619
304
            UNUSED(_end_lineno); // Only used by EXTRA macro
11620
304
            int _end_col_offset = _token->end_col_offset;
11621
304
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11622
304
            _res = _PyAST_YieldFrom ( a , EXTRA );
11623
304
            if (_res == NULL && PyErr_Occurred()) {
11624
0
                p->error_indicator = 1;
11625
0
                p->level--;
11626
0
                return NULL;
11627
0
            }
11628
304
            goto done;
11629
304
        }
11630
129k
        p->mark = _mark;
11631
129k
        D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
11632
129k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' 'from' expression"));
11633
129k
    }
11634
0
    { // 'yield' star_expressions?
11635
129k
        if (p->error_indicator) {
11636
71
            p->level--;
11637
71
            return NULL;
11638
71
        }
11639
129k
        D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
11640
129k
        Token * _keyword;
11641
129k
        void *a;
11642
129k
        if (
11643
129k
            (_keyword = _PyPegen_expect_token(p, 588))  // token='yield'
11644
3.33k
            &&
11645
3.33k
            (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
11646
129k
        )
11647
2.94k
        {
11648
2.94k
            D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
11649
2.94k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11650
2.94k
            if (_token == NULL) {
11651
0
                p->level--;
11652
0
                return NULL;
11653
0
            }
11654
2.94k
            int _end_lineno = _token->end_lineno;
11655
2.94k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11656
2.94k
            int _end_col_offset = _token->end_col_offset;
11657
2.94k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11658
2.94k
            _res = _PyAST_Yield ( a , EXTRA );
11659
2.94k
            if (_res == NULL && PyErr_Occurred()) {
11660
0
                p->error_indicator = 1;
11661
0
                p->level--;
11662
0
                return NULL;
11663
0
            }
11664
2.94k
            goto done;
11665
2.94k
        }
11666
126k
        p->mark = _mark;
11667
126k
        D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
11668
126k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' star_expressions?"));
11669
126k
    }
11670
126k
    _res = NULL;
11671
129k
  done:
11672
129k
    p->level--;
11673
129k
    return _res;
11674
126k
}
11675
11676
// star_expressions:
11677
//     | star_expression ((',' star_expression))+ ','?
11678
//     | star_expression ','
11679
//     | star_expression
11680
static expr_ty
11681
star_expressions_rule(Parser *p)
11682
371k
{
11683
371k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11684
1
        _Pypegen_stack_overflow(p);
11685
1
    }
11686
371k
    if (p->error_indicator) {
11687
1
        p->level--;
11688
1
        return NULL;
11689
1
    }
11690
371k
    expr_ty _res = NULL;
11691
371k
    int _mark = p->mark;
11692
371k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11693
6
        p->error_indicator = 1;
11694
6
        p->level--;
11695
6
        return NULL;
11696
6
    }
11697
371k
    int _start_lineno = p->tokens[_mark]->lineno;
11698
371k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11699
371k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11700
371k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11701
371k
    { // star_expression ((',' star_expression))+ ','?
11702
371k
        if (p->error_indicator) {
11703
0
            p->level--;
11704
0
            return NULL;
11705
0
        }
11706
371k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11707
371k
        void *_opt_var;
11708
371k
        UNUSED(_opt_var); // Silence compiler warnings
11709
371k
        expr_ty a;
11710
371k
        asdl_seq * b;
11711
371k
        if (
11712
371k
            (a = star_expression_rule(p))  // star_expression
11713
215k
            &&
11714
215k
            (b = _loop1_56_rule(p))  // ((',' star_expression))+
11715
5.55k
            &&
11716
5.55k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11717
371k
        )
11718
5.55k
        {
11719
5.55k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11720
5.55k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11721
5.55k
            if (_token == NULL) {
11722
0
                p->level--;
11723
0
                return NULL;
11724
0
            }
11725
5.55k
            int _end_lineno = _token->end_lineno;
11726
5.55k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11727
5.55k
            int _end_col_offset = _token->end_col_offset;
11728
5.55k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11729
5.55k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
11730
5.55k
            if (_res == NULL && PyErr_Occurred()) {
11731
0
                p->error_indicator = 1;
11732
0
                p->level--;
11733
0
                return NULL;
11734
0
            }
11735
5.55k
            goto done;
11736
5.55k
        }
11737
366k
        p->mark = _mark;
11738
366k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11739
366k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
11740
366k
    }
11741
0
    { // star_expression ','
11742
366k
        if (p->error_indicator) {
11743
5.38k
            p->level--;
11744
5.38k
            return NULL;
11745
5.38k
        }
11746
360k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
11747
360k
        Token * _literal;
11748
360k
        expr_ty a;
11749
360k
        if (
11750
360k
            (a = star_expression_rule(p))  // star_expression
11751
209k
            &&
11752
209k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
11753
360k
        )
11754
7.71k
        {
11755
7.71k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
11756
7.71k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11757
7.71k
            if (_token == NULL) {
11758
0
                p->level--;
11759
0
                return NULL;
11760
0
            }
11761
7.71k
            int _end_lineno = _token->end_lineno;
11762
7.71k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11763
7.71k
            int _end_col_offset = _token->end_col_offset;
11764
7.71k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11765
7.71k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
11766
7.71k
            if (_res == NULL && PyErr_Occurred()) {
11767
0
                p->error_indicator = 1;
11768
0
                p->level--;
11769
0
                return NULL;
11770
0
            }
11771
7.71k
            goto done;
11772
7.71k
        }
11773
353k
        p->mark = _mark;
11774
353k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11775
353k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ','"));
11776
353k
    }
11777
0
    { // star_expression
11778
353k
        if (p->error_indicator) {
11779
0
            p->level--;
11780
0
            return NULL;
11781
0
        }
11782
353k
        D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression"));
11783
353k
        expr_ty star_expression_var;
11784
353k
        if (
11785
353k
            (star_expression_var = star_expression_rule(p))  // star_expression
11786
353k
        )
11787
202k
        {
11788
202k
            D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression"));
11789
202k
            _res = star_expression_var;
11790
202k
            goto done;
11791
202k
        }
11792
150k
        p->mark = _mark;
11793
150k
        D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11794
150k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression"));
11795
150k
    }
11796
150k
    _res = NULL;
11797
366k
  done:
11798
366k
    p->level--;
11799
366k
    return _res;
11800
150k
}
11801
11802
// star_expression: '*' bitwise_or | expression
11803
static expr_ty
11804
star_expression_rule(Parser *p)
11805
1.11M
{
11806
1.11M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11807
1
        _Pypegen_stack_overflow(p);
11808
1
    }
11809
1.11M
    if (p->error_indicator) {
11810
1
        p->level--;
11811
1
        return NULL;
11812
1
    }
11813
1.11M
    expr_ty _res = NULL;
11814
1.11M
    if (_PyPegen_is_memoized(p, star_expression_type, &_res)) {
11815
805k
        p->level--;
11816
805k
        return _res;
11817
805k
    }
11818
307k
    int _mark = p->mark;
11819
307k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11820
0
        p->error_indicator = 1;
11821
0
        p->level--;
11822
0
        return NULL;
11823
0
    }
11824
307k
    int _start_lineno = p->tokens[_mark]->lineno;
11825
307k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11826
307k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11827
307k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11828
307k
    { // '*' bitwise_or
11829
307k
        if (p->error_indicator) {
11830
0
            p->level--;
11831
0
            return NULL;
11832
0
        }
11833
307k
        D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11834
307k
        Token * _literal;
11835
307k
        expr_ty a;
11836
307k
        if (
11837
307k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11838
3.32k
            &&
11839
3.32k
            (a = bitwise_or_rule(p))  // bitwise_or
11840
307k
        )
11841
2.63k
        {
11842
2.63k
            D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11843
2.63k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11844
2.63k
            if (_token == NULL) {
11845
0
                p->level--;
11846
0
                return NULL;
11847
0
            }
11848
2.63k
            int _end_lineno = _token->end_lineno;
11849
2.63k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11850
2.63k
            int _end_col_offset = _token->end_col_offset;
11851
2.63k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11852
2.63k
            _res = _PyAST_Starred ( a , Load , EXTRA );
11853
2.63k
            if (_res == NULL && PyErr_Occurred()) {
11854
0
                p->error_indicator = 1;
11855
0
                p->level--;
11856
0
                return NULL;
11857
0
            }
11858
2.63k
            goto done;
11859
2.63k
        }
11860
304k
        p->mark = _mark;
11861
304k
        D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
11862
304k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
11863
304k
    }
11864
0
    { // expression
11865
304k
        if (p->error_indicator) {
11866
336
            p->level--;
11867
336
            return NULL;
11868
336
        }
11869
304k
        D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
11870
304k
        expr_ty expression_var;
11871
304k
        if (
11872
304k
            (expression_var = expression_rule(p))  // expression
11873
304k
        )
11874
165k
        {
11875
165k
            D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
11876
165k
            _res = expression_var;
11877
165k
            goto done;
11878
165k
        }
11879
138k
        p->mark = _mark;
11880
138k
        D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
11881
138k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
11882
138k
    }
11883
138k
    _res = NULL;
11884
306k
  done:
11885
306k
    _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
11886
306k
    p->level--;
11887
306k
    return _res;
11888
138k
}
11889
11890
// star_named_expressions: ','.star_named_expression+ ','?
11891
static asdl_expr_seq*
11892
star_named_expressions_rule(Parser *p)
11893
106k
{
11894
106k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11895
1
        _Pypegen_stack_overflow(p);
11896
1
    }
11897
106k
    if (p->error_indicator) {
11898
1
        p->level--;
11899
1
        return NULL;
11900
1
    }
11901
106k
    asdl_expr_seq* _res = NULL;
11902
106k
    int _mark = p->mark;
11903
106k
    { // ','.star_named_expression+ ','?
11904
106k
        if (p->error_indicator) {
11905
0
            p->level--;
11906
0
            return NULL;
11907
0
        }
11908
106k
        D(fprintf(stderr, "%*c> star_named_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
11909
106k
        void *_opt_var;
11910
106k
        UNUSED(_opt_var); // Silence compiler warnings
11911
106k
        asdl_expr_seq* a;
11912
106k
        if (
11913
106k
            (a = (asdl_expr_seq*)_gather_58_rule(p))  // ','.star_named_expression+
11914
42.1k
            &&
11915
42.1k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11916
106k
        )
11917
41.8k
        {
11918
41.8k
            D(fprintf(stderr, "%*c+ star_named_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
11919
41.8k
            _res = a;
11920
41.8k
            if (_res == NULL && PyErr_Occurred()) {
11921
0
                p->error_indicator = 1;
11922
0
                p->level--;
11923
0
                return NULL;
11924
0
            }
11925
41.8k
            goto done;
11926
41.8k
        }
11927
64.7k
        p->mark = _mark;
11928
64.7k
        D(fprintf(stderr, "%*c%s star_named_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11929
64.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_named_expression+ ','?"));
11930
64.7k
    }
11931
64.7k
    _res = NULL;
11932
106k
  done:
11933
106k
    p->level--;
11934
106k
    return _res;
11935
64.7k
}
11936
11937
// star_named_expression: '*' bitwise_or | named_expression
11938
static expr_ty
11939
star_named_expression_rule(Parser *p)
11940
359k
{
11941
359k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
11942
1
        _Pypegen_stack_overflow(p);
11943
1
    }
11944
359k
    if (p->error_indicator) {
11945
1
        p->level--;
11946
1
        return NULL;
11947
1
    }
11948
359k
    expr_ty _res = NULL;
11949
359k
    int _mark = p->mark;
11950
359k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11951
161
        p->error_indicator = 1;
11952
161
        p->level--;
11953
161
        return NULL;
11954
161
    }
11955
359k
    int _start_lineno = p->tokens[_mark]->lineno;
11956
359k
    UNUSED(_start_lineno); // Only used by EXTRA macro
11957
359k
    int _start_col_offset = p->tokens[_mark]->col_offset;
11958
359k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
11959
359k
    { // '*' bitwise_or
11960
359k
        if (p->error_indicator) {
11961
0
            p->level--;
11962
0
            return NULL;
11963
0
        }
11964
359k
        D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11965
359k
        Token * _literal;
11966
359k
        expr_ty a;
11967
359k
        if (
11968
359k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11969
5.27k
            &&
11970
5.27k
            (a = bitwise_or_rule(p))  // bitwise_or
11971
359k
        )
11972
3.56k
        {
11973
3.56k
            D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11974
3.56k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11975
3.56k
            if (_token == NULL) {
11976
0
                p->level--;
11977
0
                return NULL;
11978
0
            }
11979
3.56k
            int _end_lineno = _token->end_lineno;
11980
3.56k
            UNUSED(_end_lineno); // Only used by EXTRA macro
11981
3.56k
            int _end_col_offset = _token->end_col_offset;
11982
3.56k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
11983
3.56k
            _res = _PyAST_Starred ( a , Load , EXTRA );
11984
3.56k
            if (_res == NULL && PyErr_Occurred()) {
11985
0
                p->error_indicator = 1;
11986
0
                p->level--;
11987
0
                return NULL;
11988
0
            }
11989
3.56k
            goto done;
11990
3.56k
        }
11991
355k
        p->mark = _mark;
11992
355k
        D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
11993
355k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
11994
355k
    }
11995
0
    { // named_expression
11996
355k
        if (p->error_indicator) {
11997
691
            p->level--;
11998
691
            return NULL;
11999
691
        }
12000
354k
        D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
12001
354k
        expr_ty named_expression_var;
12002
354k
        if (
12003
354k
            (named_expression_var = named_expression_rule(p))  // named_expression
12004
354k
        )
12005
182k
        {
12006
182k
            D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
12007
182k
            _res = named_expression_var;
12008
182k
            goto done;
12009
182k
        }
12010
172k
        p->mark = _mark;
12011
172k
        D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12012
172k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
12013
172k
    }
12014
172k
    _res = NULL;
12015
358k
  done:
12016
358k
    p->level--;
12017
358k
    return _res;
12018
172k
}
12019
12020
// assignment_expression: NAME ':=' ~ expression
12021
static expr_ty
12022
assignment_expression_rule(Parser *p)
12023
681k
{
12024
681k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12025
1
        _Pypegen_stack_overflow(p);
12026
1
    }
12027
681k
    if (p->error_indicator) {
12028
1
        p->level--;
12029
1
        return NULL;
12030
1
    }
12031
681k
    expr_ty _res = NULL;
12032
681k
    int _mark = p->mark;
12033
681k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12034
86
        p->error_indicator = 1;
12035
86
        p->level--;
12036
86
        return NULL;
12037
86
    }
12038
681k
    int _start_lineno = p->tokens[_mark]->lineno;
12039
681k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12040
681k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12041
681k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12042
681k
    { // NAME ':=' ~ expression
12043
681k
        if (p->error_indicator) {
12044
0
            p->level--;
12045
0
            return NULL;
12046
0
        }
12047
681k
        D(fprintf(stderr, "%*c> assignment_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
12048
681k
        int _cut_var = 0;
12049
681k
        Token * _literal;
12050
681k
        expr_ty a;
12051
681k
        expr_ty b;
12052
681k
        if (
12053
681k
            (a = _PyPegen_name_token(p))  // NAME
12054
241k
            &&
12055
241k
            (_literal = _PyPegen_expect_token(p, 53))  // token=':='
12056
3.88k
            &&
12057
3.88k
            (_cut_var = 1)
12058
3.88k
            &&
12059
3.88k
            (b = expression_rule(p))  // expression
12060
681k
        )
12061
819
        {
12062
819
            D(fprintf(stderr, "%*c+ assignment_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
12063
819
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12064
819
            if (_token == NULL) {
12065
0
                p->level--;
12066
0
                return NULL;
12067
0
            }
12068
819
            int _end_lineno = _token->end_lineno;
12069
819
            UNUSED(_end_lineno); // Only used by EXTRA macro
12070
819
            int _end_col_offset = _token->end_col_offset;
12071
819
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12072
819
            _res = CHECK_VERSION ( expr_ty , 8 , "Assignment expressions are" , _PyAST_NamedExpr ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA ) );
12073
819
            if (_res == NULL && PyErr_Occurred()) {
12074
0
                p->error_indicator = 1;
12075
0
                p->level--;
12076
0
                return NULL;
12077
0
            }
12078
819
            goto done;
12079
819
        }
12080
680k
        p->mark = _mark;
12081
680k
        D(fprintf(stderr, "%*c%s assignment_expression[%d-%d]: %s failed!\n", p->level, ' ',
12082
680k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':=' ~ expression"));
12083
680k
        if (_cut_var) {
12084
3.06k
            p->level--;
12085
3.06k
            return NULL;
12086
3.06k
        }
12087
680k
    }
12088
677k
    _res = NULL;
12089
678k
  done:
12090
678k
    p->level--;
12091
678k
    return _res;
12092
677k
}
12093
12094
// named_expression: assignment_expression | invalid_named_expression | expression !':='
12095
static expr_ty
12096
named_expression_rule(Parser *p)
12097
489k
{
12098
489k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12099
1
        _Pypegen_stack_overflow(p);
12100
1
    }
12101
489k
    if (p->error_indicator) {
12102
1
        p->level--;
12103
1
        return NULL;
12104
1
    }
12105
489k
    expr_ty _res = NULL;
12106
489k
    int _mark = p->mark;
12107
489k
    { // assignment_expression
12108
489k
        if (p->error_indicator) {
12109
0
            p->level--;
12110
0
            return NULL;
12111
0
        }
12112
489k
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
12113
489k
        expr_ty assignment_expression_var;
12114
489k
        if (
12115
489k
            (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
12116
489k
        )
12117
466
        {
12118
466
            D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
12119
466
            _res = assignment_expression_var;
12120
466
            goto done;
12121
466
        }
12122
489k
        p->mark = _mark;
12123
489k
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12124
489k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
12125
489k
    }
12126
489k
    if (p->call_invalid_rules) { // invalid_named_expression
12127
259k
        if (p->error_indicator) {
12128
215
            p->level--;
12129
215
            return NULL;
12130
215
        }
12131
259k
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
12132
259k
        void *invalid_named_expression_var;
12133
259k
        if (
12134
259k
            (invalid_named_expression_var = invalid_named_expression_rule(p))  // invalid_named_expression
12135
259k
        )
12136
0
        {
12137
0
            D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
12138
0
            _res = invalid_named_expression_var;
12139
0
            goto done;
12140
0
        }
12141
259k
        p->mark = _mark;
12142
259k
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12143
259k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_named_expression"));
12144
259k
    }
12145
489k
    { // expression !':='
12146
489k
        if (p->error_indicator) {
12147
16.9k
            p->level--;
12148
16.9k
            return NULL;
12149
16.9k
        }
12150
472k
        D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
12151
472k
        expr_ty expression_var;
12152
472k
        if (
12153
472k
            (expression_var = expression_rule(p))  // expression
12154
268k
            &&
12155
268k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
12156
472k
        )
12157
267k
        {
12158
267k
            D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
12159
267k
            _res = expression_var;
12160
267k
            goto done;
12161
267k
        }
12162
204k
        p->mark = _mark;
12163
204k
        D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
12164
204k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
12165
204k
    }
12166
204k
    _res = NULL;
12167
472k
  done:
12168
472k
    p->level--;
12169
472k
    return _res;
12170
204k
}
12171
12172
// disjunction: conjunction (('or' conjunction))+ | conjunction
12173
static expr_ty
12174
disjunction_rule(Parser *p)
12175
2.05M
{
12176
2.05M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12177
1
        _Pypegen_stack_overflow(p);
12178
1
    }
12179
2.05M
    if (p->error_indicator) {
12180
25
        p->level--;
12181
25
        return NULL;
12182
25
    }
12183
2.05M
    expr_ty _res = NULL;
12184
2.05M
    if (_PyPegen_is_memoized(p, disjunction_type, &_res)) {
12185
1.35M
        p->level--;
12186
1.35M
        return _res;
12187
1.35M
    }
12188
703k
    int _mark = p->mark;
12189
703k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12190
0
        p->error_indicator = 1;
12191
0
        p->level--;
12192
0
        return NULL;
12193
0
    }
12194
703k
    int _start_lineno = p->tokens[_mark]->lineno;
12195
703k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12196
703k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12197
703k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12198
703k
    { // conjunction (('or' conjunction))+
12199
703k
        if (p->error_indicator) {
12200
0
            p->level--;
12201
0
            return NULL;
12202
0
        }
12203
703k
        D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
12204
703k
        expr_ty a;
12205
703k
        asdl_seq * b;
12206
703k
        if (
12207
703k
            (a = conjunction_rule(p))  // conjunction
12208
394k
            &&
12209
394k
            (b = _loop1_59_rule(p))  // (('or' conjunction))+
12210
703k
        )
12211
1.58k
        {
12212
1.58k
            D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
12213
1.58k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12214
1.58k
            if (_token == NULL) {
12215
0
                p->level--;
12216
0
                return NULL;
12217
0
            }
12218
1.58k
            int _end_lineno = _token->end_lineno;
12219
1.58k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12220
1.58k
            int _end_col_offset = _token->end_col_offset;
12221
1.58k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12222
1.58k
            _res = _PyAST_BoolOp ( Or , CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
12223
1.58k
            if (_res == NULL && PyErr_Occurred()) {
12224
0
                p->error_indicator = 1;
12225
0
                p->level--;
12226
0
                return NULL;
12227
0
            }
12228
1.58k
            goto done;
12229
1.58k
        }
12230
701k
        p->mark = _mark;
12231
701k
        D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
12232
701k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction (('or' conjunction))+"));
12233
701k
    }
12234
0
    { // conjunction
12235
701k
        if (p->error_indicator) {
12236
37.8k
            p->level--;
12237
37.8k
            return NULL;
12238
37.8k
        }
12239
663k
        D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction"));
12240
663k
        expr_ty conjunction_var;
12241
663k
        if (
12242
663k
            (conjunction_var = conjunction_rule(p))  // conjunction
12243
663k
        )
12244
392k
        {
12245
392k
            D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction"));
12246
392k
            _res = conjunction_var;
12247
392k
            goto done;
12248
392k
        }
12249
271k
        p->mark = _mark;
12250
271k
        D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
12251
271k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction"));
12252
271k
    }
12253
271k
    _res = NULL;
12254
665k
  done:
12255
665k
    _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
12256
665k
    p->level--;
12257
665k
    return _res;
12258
271k
}
12259
12260
// conjunction: inversion (('and' inversion))+ | inversion
12261
static expr_ty
12262
conjunction_rule(Parser *p)
12263
1.37M
{
12264
1.37M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12265
1
        _Pypegen_stack_overflow(p);
12266
1
    }
12267
1.37M
    if (p->error_indicator) {
12268
1
        p->level--;
12269
1
        return NULL;
12270
1
    }
12271
1.37M
    expr_ty _res = NULL;
12272
1.37M
    if (_PyPegen_is_memoized(p, conjunction_type, &_res)) {
12273
663k
        p->level--;
12274
663k
        return _res;
12275
663k
    }
12276
708k
    int _mark = p->mark;
12277
708k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12278
0
        p->error_indicator = 1;
12279
0
        p->level--;
12280
0
        return NULL;
12281
0
    }
12282
708k
    int _start_lineno = p->tokens[_mark]->lineno;
12283
708k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12284
708k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12285
708k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12286
708k
    { // inversion (('and' inversion))+
12287
708k
        if (p->error_indicator) {
12288
0
            p->level--;
12289
0
            return NULL;
12290
0
        }
12291
708k
        D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
12292
708k
        expr_ty a;
12293
708k
        asdl_seq * b;
12294
708k
        if (
12295
708k
            (a = inversion_rule(p))  // inversion
12296
398k
            &&
12297
398k
            (b = _loop1_60_rule(p))  // (('and' inversion))+
12298
708k
        )
12299
1.71k
        {
12300
1.71k
            D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
12301
1.71k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12302
1.71k
            if (_token == NULL) {
12303
0
                p->level--;
12304
0
                return NULL;
12305
0
            }
12306
1.71k
            int _end_lineno = _token->end_lineno;
12307
1.71k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12308
1.71k
            int _end_col_offset = _token->end_col_offset;
12309
1.71k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12310
1.71k
            _res = _PyAST_BoolOp ( And , CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
12311
1.71k
            if (_res == NULL && PyErr_Occurred()) {
12312
0
                p->error_indicator = 1;
12313
0
                p->level--;
12314
0
                return NULL;
12315
0
            }
12316
1.71k
            goto done;
12317
1.71k
        }
12318
706k
        p->mark = _mark;
12319
706k
        D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
12320
706k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion (('and' inversion))+"));
12321
706k
    }
12322
0
    { // inversion
12323
706k
        if (p->error_indicator) {
12324
37.8k
            p->level--;
12325
37.8k
            return NULL;
12326
37.8k
        }
12327
668k
        D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion"));
12328
668k
        expr_ty inversion_var;
12329
668k
        if (
12330
668k
            (inversion_var = inversion_rule(p))  // inversion
12331
668k
        )
12332
396k
        {
12333
396k
            D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion"));
12334
396k
            _res = inversion_var;
12335
396k
            goto done;
12336
396k
        }
12337
271k
        p->mark = _mark;
12338
271k
        D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
12339
271k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion"));
12340
271k
    }
12341
271k
    _res = NULL;
12342
670k
  done:
12343
670k
    _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
12344
670k
    p->level--;
12345
670k
    return _res;
12346
271k
}
12347
12348
// inversion: 'not' inversion | comparison
12349
static expr_ty
12350
inversion_rule(Parser *p)
12351
1.38M
{
12352
1.38M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12353
1
        _Pypegen_stack_overflow(p);
12354
1
    }
12355
1.38M
    if (p->error_indicator) {
12356
1
        p->level--;
12357
1
        return NULL;
12358
1
    }
12359
1.38M
    expr_ty _res = NULL;
12360
1.38M
    if (_PyPegen_is_memoized(p, inversion_type, &_res)) {
12361
669k
        p->level--;
12362
669k
        return _res;
12363
669k
    }
12364
713k
    int _mark = p->mark;
12365
713k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12366
0
        p->error_indicator = 1;
12367
0
        p->level--;
12368
0
        return NULL;
12369
0
    }
12370
713k
    int _start_lineno = p->tokens[_mark]->lineno;
12371
713k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12372
713k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12373
713k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12374
713k
    { // 'not' inversion
12375
713k
        if (p->error_indicator) {
12376
0
            p->level--;
12377
0
            return NULL;
12378
0
        }
12379
713k
        D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
12380
713k
        Token * _keyword;
12381
713k
        expr_ty a;
12382
713k
        if (
12383
713k
            (_keyword = _PyPegen_expect_token(p, 712))  // token='not'
12384
2.18k
            &&
12385
2.18k
            (a = inversion_rule(p))  // inversion
12386
713k
        )
12387
1.87k
        {
12388
1.87k
            D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
12389
1.87k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12390
1.87k
            if (_token == NULL) {
12391
0
                p->level--;
12392
0
                return NULL;
12393
0
            }
12394
1.87k
            int _end_lineno = _token->end_lineno;
12395
1.87k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12396
1.87k
            int _end_col_offset = _token->end_col_offset;
12397
1.87k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12398
1.87k
            _res = _PyAST_UnaryOp ( Not , a , EXTRA );
12399
1.87k
            if (_res == NULL && PyErr_Occurred()) {
12400
0
                p->error_indicator = 1;
12401
0
                p->level--;
12402
0
                return NULL;
12403
0
            }
12404
1.87k
            goto done;
12405
1.87k
        }
12406
712k
        p->mark = _mark;
12407
712k
        D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
12408
712k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' inversion"));
12409
712k
    }
12410
0
    { // comparison
12411
712k
        if (p->error_indicator) {
12412
86
            p->level--;
12413
86
            return NULL;
12414
86
        }
12415
711k
        D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "comparison"));
12416
711k
        expr_ty comparison_var;
12417
711k
        if (
12418
711k
            (comparison_var = comparison_rule(p))  // comparison
12419
711k
        )
12420
401k
        {
12421
401k
            D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "comparison"));
12422
401k
            _res = comparison_var;
12423
401k
            goto done;
12424
401k
        }
12425
310k
        p->mark = _mark;
12426
310k
        D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
12427
310k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "comparison"));
12428
310k
    }
12429
310k
    _res = NULL;
12430
713k
  done:
12431
713k
    _PyPegen_insert_memo(p, _mark, inversion_type, _res);
12432
713k
    p->level--;
12433
713k
    return _res;
12434
310k
}
12435
12436
// comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
12437
static expr_ty
12438
comparison_rule(Parser *p)
12439
711k
{
12440
711k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12441
2
        _Pypegen_stack_overflow(p);
12442
2
    }
12443
711k
    if (p->error_indicator) {
12444
2
        p->level--;
12445
2
        return NULL;
12446
2
    }
12447
711k
    expr_ty _res = NULL;
12448
711k
    int _mark = p->mark;
12449
711k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12450
0
        p->error_indicator = 1;
12451
0
        p->level--;
12452
0
        return NULL;
12453
0
    }
12454
711k
    int _start_lineno = p->tokens[_mark]->lineno;
12455
711k
    UNUSED(_start_lineno); // Only used by EXTRA macro
12456
711k
    int _start_col_offset = p->tokens[_mark]->col_offset;
12457
711k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
12458
711k
    { // bitwise_or compare_op_bitwise_or_pair+
12459
711k
        if (p->error_indicator) {
12460
0
            p->level--;
12461
0
            return NULL;
12462
0
        }
12463
711k
        D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12464
711k
        expr_ty a;
12465
711k
        asdl_seq * b;
12466
711k
        if (
12467
711k
            (a = bitwise_or_rule(p))  // bitwise_or
12468
404k
            &&
12469
404k
            (b = _loop1_61_rule(p))  // compare_op_bitwise_or_pair+
12470
711k
        )
12471
11.0k
        {
12472
11.0k
            D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12473
11.0k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12474
11.0k
            if (_token == NULL) {
12475
0
                p->level--;
12476
0
                return NULL;
12477
0
            }
12478
11.0k
            int _end_lineno = _token->end_lineno;
12479
11.0k
            UNUSED(_end_lineno); // Only used by EXTRA macro
12480
11.0k
            int _end_col_offset = _token->end_col_offset;
12481
11.0k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
12482
11.0k
            _res = _PyAST_Compare ( a , CHECK ( asdl_int_seq* , _PyPegen_get_cmpops ( p , b ) ) , CHECK ( asdl_expr_seq* , _PyPegen_get_exprs ( p , b ) ) , EXTRA );
12483
11.0k
            if (_res == NULL && PyErr_Occurred()) {
12484
0
                p->error_indicator = 1;
12485
0
                p->level--;
12486
0
                return NULL;
12487
0
            }
12488
11.0k
            goto done;
12489
11.0k
        }
12490
700k
        p->mark = _mark;
12491
700k
        D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
12492
700k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
12493
700k
    }
12494
0
    { // bitwise_or
12495
700k
        if (p->error_indicator) {
12496
38.0k
            p->level--;
12497
38.0k
            return NULL;
12498
38.0k
        }
12499
662k
        D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
12500
662k
        expr_ty bitwise_or_var;
12501
662k
        if (
12502
662k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
12503
662k
        )
12504
390k
        {
12505
390k
            D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
12506
390k
            _res = bitwise_or_var;
12507
390k
            goto done;
12508
390k
        }
12509
272k
        p->mark = _mark;
12510
272k
        D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
12511
272k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or"));
12512
272k
    }
12513
272k
    _res = NULL;
12514
673k
  done:
12515
673k
    p->level--;
12516
673k
    return _res;
12517
272k
}
12518
12519
// compare_op_bitwise_or_pair:
12520
//     | eq_bitwise_or
12521
//     | noteq_bitwise_or
12522
//     | lte_bitwise_or
12523
//     | lt_bitwise_or
12524
//     | gte_bitwise_or
12525
//     | gt_bitwise_or
12526
//     | notin_bitwise_or
12527
//     | in_bitwise_or
12528
//     | isnot_bitwise_or
12529
//     | is_bitwise_or
12530
static CmpopExprPair*
12531
compare_op_bitwise_or_pair_rule(Parser *p)
12532
428k
{
12533
428k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12534
0
        _Pypegen_stack_overflow(p);
12535
0
    }
12536
428k
    if (p->error_indicator) {
12537
0
        p->level--;
12538
0
        return NULL;
12539
0
    }
12540
428k
    CmpopExprPair* _res = NULL;
12541
428k
    int _mark = p->mark;
12542
428k
    { // eq_bitwise_or
12543
428k
        if (p->error_indicator) {
12544
0
            p->level--;
12545
0
            return NULL;
12546
0
        }
12547
428k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
12548
428k
        CmpopExprPair* eq_bitwise_or_var;
12549
428k
        if (
12550
428k
            (eq_bitwise_or_var = eq_bitwise_or_rule(p))  // eq_bitwise_or
12551
428k
        )
12552
2.03k
        {
12553
2.03k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
12554
2.03k
            _res = eq_bitwise_or_var;
12555
2.03k
            goto done;
12556
2.03k
        }
12557
426k
        p->mark = _mark;
12558
426k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12559
426k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "eq_bitwise_or"));
12560
426k
    }
12561
0
    { // noteq_bitwise_or
12562
426k
        if (p->error_indicator) {
12563
216
            p->level--;
12564
216
            return NULL;
12565
216
        }
12566
425k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
12567
425k
        CmpopExprPair* noteq_bitwise_or_var;
12568
425k
        if (
12569
425k
            (noteq_bitwise_or_var = noteq_bitwise_or_rule(p))  // noteq_bitwise_or
12570
425k
        )
12571
813
        {
12572
813
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
12573
813
            _res = noteq_bitwise_or_var;
12574
813
            goto done;
12575
813
        }
12576
425k
        p->mark = _mark;
12577
425k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12578
425k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "noteq_bitwise_or"));
12579
425k
    }
12580
0
    { // lte_bitwise_or
12581
425k
        if (p->error_indicator) {
12582
195
            p->level--;
12583
195
            return NULL;
12584
195
        }
12585
424k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
12586
424k
        CmpopExprPair* lte_bitwise_or_var;
12587
424k
        if (
12588
424k
            (lte_bitwise_or_var = lte_bitwise_or_rule(p))  // lte_bitwise_or
12589
424k
        )
12590
597
        {
12591
597
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
12592
597
            _res = lte_bitwise_or_var;
12593
597
            goto done;
12594
597
        }
12595
424k
        p->mark = _mark;
12596
424k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12597
424k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lte_bitwise_or"));
12598
424k
    }
12599
0
    { // lt_bitwise_or
12600
424k
        if (p->error_indicator) {
12601
197
            p->level--;
12602
197
            return NULL;
12603
197
        }
12604
424k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
12605
424k
        CmpopExprPair* lt_bitwise_or_var;
12606
424k
        if (
12607
424k
            (lt_bitwise_or_var = lt_bitwise_or_rule(p))  // lt_bitwise_or
12608
424k
        )
12609
4.45k
        {
12610
4.45k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
12611
4.45k
            _res = lt_bitwise_or_var;
12612
4.45k
            goto done;
12613
4.45k
        }
12614
419k
        p->mark = _mark;
12615
419k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12616
419k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lt_bitwise_or"));
12617
419k
    }
12618
0
    { // gte_bitwise_or
12619
419k
        if (p->error_indicator) {
12620
248
            p->level--;
12621
248
            return NULL;
12622
248
        }
12623
419k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
12624
419k
        CmpopExprPair* gte_bitwise_or_var;
12625
419k
        if (
12626
419k
            (gte_bitwise_or_var = gte_bitwise_or_rule(p))  // gte_bitwise_or
12627
419k
        )
12628
570
        {
12629
570
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
12630
570
            _res = gte_bitwise_or_var;
12631
570
            goto done;
12632
570
        }
12633
418k
        p->mark = _mark;
12634
418k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12635
418k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gte_bitwise_or"));
12636
418k
    }
12637
0
    { // gt_bitwise_or
12638
418k
        if (p->error_indicator) {
12639
200
            p->level--;
12640
200
            return NULL;
12641
200
        }
12642
418k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
12643
418k
        CmpopExprPair* gt_bitwise_or_var;
12644
418k
        if (
12645
418k
            (gt_bitwise_or_var = gt_bitwise_or_rule(p))  // gt_bitwise_or
12646
418k
        )
12647
10.1k
        {
12648
10.1k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
12649
10.1k
            _res = gt_bitwise_or_var;
12650
10.1k
            goto done;
12651
10.1k
        }
12652
408k
        p->mark = _mark;
12653
408k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12654
408k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gt_bitwise_or"));
12655
408k
    }
12656
0
    { // notin_bitwise_or
12657
408k
        if (p->error_indicator) {
12658
395
            p->level--;
12659
395
            return NULL;
12660
395
        }
12661
408k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
12662
408k
        CmpopExprPair* notin_bitwise_or_var;
12663
408k
        if (
12664
408k
            (notin_bitwise_or_var = notin_bitwise_or_rule(p))  // notin_bitwise_or
12665
408k
        )
12666
636
        {
12667
636
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
12668
636
            _res = notin_bitwise_or_var;
12669
636
            goto done;
12670
636
        }
12671
407k
        p->mark = _mark;
12672
407k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12673
407k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "notin_bitwise_or"));
12674
407k
    }
12675
0
    { // in_bitwise_or
12676
407k
        if (p->error_indicator) {
12677
280
            p->level--;
12678
280
            return NULL;
12679
280
        }
12680
407k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
12681
407k
        CmpopExprPair* in_bitwise_or_var;
12682
407k
        if (
12683
407k
            (in_bitwise_or_var = in_bitwise_or_rule(p))  // in_bitwise_or
12684
407k
        )
12685
1.68k
        {
12686
1.68k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
12687
1.68k
            _res = in_bitwise_or_var;
12688
1.68k
            goto done;
12689
1.68k
        }
12690
405k
        p->mark = _mark;
12691
405k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12692
405k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "in_bitwise_or"));
12693
405k
    }
12694
0
    { // isnot_bitwise_or
12695
405k
        if (p->error_indicator) {
12696
345
            p->level--;
12697
345
            return NULL;
12698
345
        }
12699
405k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
12700
405k
        CmpopExprPair* isnot_bitwise_or_var;
12701
405k
        if (
12702
405k
            (isnot_bitwise_or_var = isnot_bitwise_or_rule(p))  // isnot_bitwise_or
12703
405k
        )
12704
921
        {
12705
921
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
12706
921
            _res = isnot_bitwise_or_var;
12707
921
            goto done;
12708
921
        }
12709
404k
        p->mark = _mark;
12710
404k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12711
404k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "isnot_bitwise_or"));
12712
404k
    }
12713
0
    { // is_bitwise_or
12714
404k
        if (p->error_indicator) {
12715
196
            p->level--;
12716
196
            return NULL;
12717
196
        }
12718
403k
        D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
12719
403k
        CmpopExprPair* is_bitwise_or_var;
12720
403k
        if (
12721
403k
            (is_bitwise_or_var = is_bitwise_or_rule(p))  // is_bitwise_or
12722
403k
        )
12723
2.08k
        {
12724
2.08k
            D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
12725
2.08k
            _res = is_bitwise_or_var;
12726
2.08k
            goto done;
12727
2.08k
        }
12728
401k
        p->mark = _mark;
12729
401k
        D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12730
401k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "is_bitwise_or"));
12731
401k
    }
12732
401k
    _res = NULL;
12733
425k
  done:
12734
425k
    p->level--;
12735
425k
    return _res;
12736
401k
}
12737
12738
// eq_bitwise_or: '==' bitwise_or
12739
static CmpopExprPair*
12740
eq_bitwise_or_rule(Parser *p)
12741
428k
{
12742
428k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12743
0
        _Pypegen_stack_overflow(p);
12744
0
    }
12745
428k
    if (p->error_indicator) {
12746
0
        p->level--;
12747
0
        return NULL;
12748
0
    }
12749
428k
    CmpopExprPair* _res = NULL;
12750
428k
    int _mark = p->mark;
12751
428k
    { // '==' bitwise_or
12752
428k
        if (p->error_indicator) {
12753
0
            p->level--;
12754
0
            return NULL;
12755
0
        }
12756
428k
        D(fprintf(stderr, "%*c> eq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
12757
428k
        Token * _literal;
12758
428k
        expr_ty a;
12759
428k
        if (
12760
428k
            (_literal = _PyPegen_expect_token(p, 27))  // token='=='
12761
2.36k
            &&
12762
2.36k
            (a = bitwise_or_rule(p))  // bitwise_or
12763
428k
        )
12764
2.03k
        {
12765
2.03k
            D(fprintf(stderr, "%*c+ eq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
12766
2.03k
            _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
12767
2.03k
            if (_res == NULL && PyErr_Occurred()) {
12768
0
                p->error_indicator = 1;
12769
0
                p->level--;
12770
0
                return NULL;
12771
0
            }
12772
2.03k
            goto done;
12773
2.03k
        }
12774
426k
        p->mark = _mark;
12775
426k
        D(fprintf(stderr, "%*c%s eq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12776
426k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'==' bitwise_or"));
12777
426k
    }
12778
426k
    _res = NULL;
12779
428k
  done:
12780
428k
    p->level--;
12781
428k
    return _res;
12782
426k
}
12783
12784
// noteq_bitwise_or: ('!=') bitwise_or
12785
static CmpopExprPair*
12786
noteq_bitwise_or_rule(Parser *p)
12787
425k
{
12788
425k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12789
0
        _Pypegen_stack_overflow(p);
12790
0
    }
12791
425k
    if (p->error_indicator) {
12792
0
        p->level--;
12793
0
        return NULL;
12794
0
    }
12795
425k
    CmpopExprPair* _res = NULL;
12796
425k
    int _mark = p->mark;
12797
425k
    { // ('!=') bitwise_or
12798
425k
        if (p->error_indicator) {
12799
0
            p->level--;
12800
0
            return NULL;
12801
0
        }
12802
425k
        D(fprintf(stderr, "%*c> noteq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
12803
425k
        void *_tmp_62_var;
12804
425k
        expr_ty a;
12805
425k
        if (
12806
425k
            (_tmp_62_var = _tmp_62_rule(p))  // '!='
12807
1.33k
            &&
12808
1.33k
            (a = bitwise_or_rule(p))  // bitwise_or
12809
425k
        )
12810
813
        {
12811
813
            D(fprintf(stderr, "%*c+ noteq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
12812
813
            _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
12813
813
            if (_res == NULL && PyErr_Occurred()) {
12814
0
                p->error_indicator = 1;
12815
0
                p->level--;
12816
0
                return NULL;
12817
0
            }
12818
813
            goto done;
12819
813
        }
12820
425k
        p->mark = _mark;
12821
425k
        D(fprintf(stderr, "%*c%s noteq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12822
425k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('!=') bitwise_or"));
12823
425k
    }
12824
425k
    _res = NULL;
12825
425k
  done:
12826
425k
    p->level--;
12827
425k
    return _res;
12828
425k
}
12829
12830
// lte_bitwise_or: '<=' bitwise_or
12831
static CmpopExprPair*
12832
lte_bitwise_or_rule(Parser *p)
12833
424k
{
12834
424k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12835
0
        _Pypegen_stack_overflow(p);
12836
0
    }
12837
424k
    if (p->error_indicator) {
12838
0
        p->level--;
12839
0
        return NULL;
12840
0
    }
12841
424k
    CmpopExprPair* _res = NULL;
12842
424k
    int _mark = p->mark;
12843
424k
    { // '<=' bitwise_or
12844
424k
        if (p->error_indicator) {
12845
0
            p->level--;
12846
0
            return NULL;
12847
0
        }
12848
424k
        D(fprintf(stderr, "%*c> lte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12849
424k
        Token * _literal;
12850
424k
        expr_ty a;
12851
424k
        if (
12852
424k
            (_literal = _PyPegen_expect_token(p, 29))  // token='<='
12853
996
            &&
12854
996
            (a = bitwise_or_rule(p))  // bitwise_or
12855
424k
        )
12856
597
        {
12857
597
            D(fprintf(stderr, "%*c+ lte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12858
597
            _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
12859
597
            if (_res == NULL && PyErr_Occurred()) {
12860
0
                p->error_indicator = 1;
12861
0
                p->level--;
12862
0
                return NULL;
12863
0
            }
12864
597
            goto done;
12865
597
        }
12866
424k
        p->mark = _mark;
12867
424k
        D(fprintf(stderr, "%*c%s lte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12868
424k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<=' bitwise_or"));
12869
424k
    }
12870
424k
    _res = NULL;
12871
424k
  done:
12872
424k
    p->level--;
12873
424k
    return _res;
12874
424k
}
12875
12876
// lt_bitwise_or: '<' bitwise_or
12877
static CmpopExprPair*
12878
lt_bitwise_or_rule(Parser *p)
12879
424k
{
12880
424k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12881
0
        _Pypegen_stack_overflow(p);
12882
0
    }
12883
424k
    if (p->error_indicator) {
12884
0
        p->level--;
12885
0
        return NULL;
12886
0
    }
12887
424k
    CmpopExprPair* _res = NULL;
12888
424k
    int _mark = p->mark;
12889
424k
    { // '<' bitwise_or
12890
424k
        if (p->error_indicator) {
12891
0
            p->level--;
12892
0
            return NULL;
12893
0
        }
12894
424k
        D(fprintf(stderr, "%*c> lt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12895
424k
        Token * _literal;
12896
424k
        expr_ty a;
12897
424k
        if (
12898
424k
            (_literal = _PyPegen_expect_token(p, 20))  // token='<'
12899
4.97k
            &&
12900
4.97k
            (a = bitwise_or_rule(p))  // bitwise_or
12901
424k
        )
12902
4.45k
        {
12903
4.45k
            D(fprintf(stderr, "%*c+ lt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12904
4.45k
            _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
12905
4.45k
            if (_res == NULL && PyErr_Occurred()) {
12906
0
                p->error_indicator = 1;
12907
0
                p->level--;
12908
0
                return NULL;
12909
0
            }
12910
4.45k
            goto done;
12911
4.45k
        }
12912
419k
        p->mark = _mark;
12913
419k
        D(fprintf(stderr, "%*c%s lt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12914
419k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<' bitwise_or"));
12915
419k
    }
12916
419k
    _res = NULL;
12917
424k
  done:
12918
424k
    p->level--;
12919
424k
    return _res;
12920
419k
}
12921
12922
// gte_bitwise_or: '>=' bitwise_or
12923
static CmpopExprPair*
12924
gte_bitwise_or_rule(Parser *p)
12925
419k
{
12926
419k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12927
0
        _Pypegen_stack_overflow(p);
12928
0
    }
12929
419k
    if (p->error_indicator) {
12930
0
        p->level--;
12931
0
        return NULL;
12932
0
    }
12933
419k
    CmpopExprPair* _res = NULL;
12934
419k
    int _mark = p->mark;
12935
419k
    { // '>=' bitwise_or
12936
419k
        if (p->error_indicator) {
12937
0
            p->level--;
12938
0
            return NULL;
12939
0
        }
12940
419k
        D(fprintf(stderr, "%*c> gte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12941
419k
        Token * _literal;
12942
419k
        expr_ty a;
12943
419k
        if (
12944
419k
            (_literal = _PyPegen_expect_token(p, 30))  // token='>='
12945
991
            &&
12946
991
            (a = bitwise_or_rule(p))  // bitwise_or
12947
419k
        )
12948
570
        {
12949
570
            D(fprintf(stderr, "%*c+ gte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12950
570
            _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
12951
570
            if (_res == NULL && PyErr_Occurred()) {
12952
0
                p->error_indicator = 1;
12953
0
                p->level--;
12954
0
                return NULL;
12955
0
            }
12956
570
            goto done;
12957
570
        }
12958
418k
        p->mark = _mark;
12959
418k
        D(fprintf(stderr, "%*c%s gte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12960
418k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>=' bitwise_or"));
12961
418k
    }
12962
418k
    _res = NULL;
12963
419k
  done:
12964
419k
    p->level--;
12965
419k
    return _res;
12966
418k
}
12967
12968
// gt_bitwise_or: '>' bitwise_or
12969
static CmpopExprPair*
12970
gt_bitwise_or_rule(Parser *p)
12971
418k
{
12972
418k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
12973
0
        _Pypegen_stack_overflow(p);
12974
0
    }
12975
418k
    if (p->error_indicator) {
12976
0
        p->level--;
12977
0
        return NULL;
12978
0
    }
12979
418k
    CmpopExprPair* _res = NULL;
12980
418k
    int _mark = p->mark;
12981
418k
    { // '>' bitwise_or
12982
418k
        if (p->error_indicator) {
12983
0
            p->level--;
12984
0
            return NULL;
12985
0
        }
12986
418k
        D(fprintf(stderr, "%*c> gt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12987
418k
        Token * _literal;
12988
418k
        expr_ty a;
12989
418k
        if (
12990
418k
            (_literal = _PyPegen_expect_token(p, 21))  // token='>'
12991
10.8k
            &&
12992
10.8k
            (a = bitwise_or_rule(p))  // bitwise_or
12993
418k
        )
12994
10.1k
        {
12995
10.1k
            D(fprintf(stderr, "%*c+ gt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12996
10.1k
            _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
12997
10.1k
            if (_res == NULL && PyErr_Occurred()) {
12998
0
                p->error_indicator = 1;
12999
0
                p->level--;
13000
0
                return NULL;
13001
0
            }
13002
10.1k
            goto done;
13003
10.1k
        }
13004
408k
        p->mark = _mark;
13005
408k
        D(fprintf(stderr, "%*c%s gt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13006
408k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>' bitwise_or"));
13007
408k
    }
13008
408k
    _res = NULL;
13009
418k
  done:
13010
418k
    p->level--;
13011
418k
    return _res;
13012
408k
}
13013
13014
// notin_bitwise_or: 'not' 'in' bitwise_or
13015
static CmpopExprPair*
13016
notin_bitwise_or_rule(Parser *p)
13017
408k
{
13018
408k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13019
0
        _Pypegen_stack_overflow(p);
13020
0
    }
13021
408k
    if (p->error_indicator) {
13022
0
        p->level--;
13023
0
        return NULL;
13024
0
    }
13025
408k
    CmpopExprPair* _res = NULL;
13026
408k
    int _mark = p->mark;
13027
408k
    { // 'not' 'in' bitwise_or
13028
408k
        if (p->error_indicator) {
13029
0
            p->level--;
13030
0
            return NULL;
13031
0
        }
13032
408k
        D(fprintf(stderr, "%*c> notin_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
13033
408k
        Token * _keyword;
13034
408k
        Token * _keyword_1;
13035
408k
        expr_ty a;
13036
408k
        if (
13037
408k
            (_keyword = _PyPegen_expect_token(p, 712))  // token='not'
13038
1.36k
            &&
13039
1.36k
            (_keyword_1 = _PyPegen_expect_token(p, 704))  // token='in'
13040
1.13k
            &&
13041
1.13k
            (a = bitwise_or_rule(p))  // bitwise_or
13042
408k
        )
13043
636
        {
13044
636
            D(fprintf(stderr, "%*c+ notin_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
13045
636
            _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
13046
636
            if (_res == NULL && PyErr_Occurred()) {
13047
0
                p->error_indicator = 1;
13048
0
                p->level--;
13049
0
                return NULL;
13050
0
            }
13051
636
            goto done;
13052
636
        }
13053
407k
        p->mark = _mark;
13054
407k
        D(fprintf(stderr, "%*c%s notin_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13055
407k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' 'in' bitwise_or"));
13056
407k
    }
13057
407k
    _res = NULL;
13058
408k
  done:
13059
408k
    p->level--;
13060
408k
    return _res;
13061
407k
}
13062
13063
// in_bitwise_or: 'in' bitwise_or
13064
static CmpopExprPair*
13065
in_bitwise_or_rule(Parser *p)
13066
407k
{
13067
407k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13068
0
        _Pypegen_stack_overflow(p);
13069
0
    }
13070
407k
    if (p->error_indicator) {
13071
0
        p->level--;
13072
0
        return NULL;
13073
0
    }
13074
407k
    CmpopExprPair* _res = NULL;
13075
407k
    int _mark = p->mark;
13076
407k
    { // 'in' bitwise_or
13077
407k
        if (p->error_indicator) {
13078
0
            p->level--;
13079
0
            return NULL;
13080
0
        }
13081
407k
        D(fprintf(stderr, "%*c> in_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
13082
407k
        Token * _keyword;
13083
407k
        expr_ty a;
13084
407k
        if (
13085
407k
            (_keyword = _PyPegen_expect_token(p, 704))  // token='in'
13086
2.38k
            &&
13087
2.38k
            (a = bitwise_or_rule(p))  // bitwise_or
13088
407k
        )
13089
1.68k
        {
13090
1.68k
            D(fprintf(stderr, "%*c+ in_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
13091
1.68k
            _res = _PyPegen_cmpop_expr_pair ( p , In , a );
13092
1.68k
            if (_res == NULL && PyErr_Occurred()) {
13093
0
                p->error_indicator = 1;
13094
0
                p->level--;
13095
0
                return NULL;
13096
0
            }
13097
1.68k
            goto done;
13098
1.68k
        }
13099
405k
        p->mark = _mark;
13100
405k
        D(fprintf(stderr, "%*c%s in_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13101
405k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'in' bitwise_or"));
13102
405k
    }
13103
405k
    _res = NULL;
13104
407k
  done:
13105
407k
    p->level--;
13106
407k
    return _res;
13107
405k
}
13108
13109
// isnot_bitwise_or: 'is' 'not' bitwise_or
13110
static CmpopExprPair*
13111
isnot_bitwise_or_rule(Parser *p)
13112
405k
{
13113
405k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13114
0
        _Pypegen_stack_overflow(p);
13115
0
    }
13116
405k
    if (p->error_indicator) {
13117
0
        p->level--;
13118
0
        return NULL;
13119
0
    }
13120
405k
    CmpopExprPair* _res = NULL;
13121
405k
    int _mark = p->mark;
13122
405k
    { // 'is' 'not' bitwise_or
13123
405k
        if (p->error_indicator) {
13124
0
            p->level--;
13125
0
            return NULL;
13126
0
        }
13127
405k
        D(fprintf(stderr, "%*c> isnot_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
13128
405k
        Token * _keyword;
13129
405k
        Token * _keyword_1;
13130
405k
        expr_ty a;
13131
405k
        if (
13132
405k
            (_keyword = _PyPegen_expect_token(p, 597))  // token='is'
13133
3.64k
            &&
13134
3.64k
            (_keyword_1 = _PyPegen_expect_token(p, 712))  // token='not'
13135
1.42k
            &&
13136
1.42k
            (a = bitwise_or_rule(p))  // bitwise_or
13137
405k
        )
13138
921
        {
13139
921
            D(fprintf(stderr, "%*c+ isnot_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
13140
921
            _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
13141
921
            if (_res == NULL && PyErr_Occurred()) {
13142
0
                p->error_indicator = 1;
13143
0
                p->level--;
13144
0
                return NULL;
13145
0
            }
13146
921
            goto done;
13147
921
        }
13148
404k
        p->mark = _mark;
13149
404k
        D(fprintf(stderr, "%*c%s isnot_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13150
404k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' 'not' bitwise_or"));
13151
404k
    }
13152
404k
    _res = NULL;
13153
405k
  done:
13154
405k
    p->level--;
13155
405k
    return _res;
13156
404k
}
13157
13158
// is_bitwise_or: 'is' bitwise_or
13159
static CmpopExprPair*
13160
is_bitwise_or_rule(Parser *p)
13161
403k
{
13162
403k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13163
0
        _Pypegen_stack_overflow(p);
13164
0
    }
13165
403k
    if (p->error_indicator) {
13166
0
        p->level--;
13167
0
        return NULL;
13168
0
    }
13169
403k
    CmpopExprPair* _res = NULL;
13170
403k
    int _mark = p->mark;
13171
403k
    { // 'is' bitwise_or
13172
403k
        if (p->error_indicator) {
13173
0
            p->level--;
13174
0
            return NULL;
13175
0
        }
13176
403k
        D(fprintf(stderr, "%*c> is_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
13177
403k
        Token * _keyword;
13178
403k
        expr_ty a;
13179
403k
        if (
13180
403k
            (_keyword = _PyPegen_expect_token(p, 597))  // token='is'
13181
2.52k
            &&
13182
2.52k
            (a = bitwise_or_rule(p))  // bitwise_or
13183
403k
        )
13184
2.08k
        {
13185
2.08k
            D(fprintf(stderr, "%*c+ is_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
13186
2.08k
            _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
13187
2.08k
            if (_res == NULL && PyErr_Occurred()) {
13188
0
                p->error_indicator = 1;
13189
0
                p->level--;
13190
0
                return NULL;
13191
0
            }
13192
2.08k
            goto done;
13193
2.08k
        }
13194
401k
        p->mark = _mark;
13195
401k
        D(fprintf(stderr, "%*c%s is_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13196
401k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' bitwise_or"));
13197
401k
    }
13198
401k
    _res = NULL;
13199
403k
  done:
13200
403k
    p->level--;
13201
403k
    return _res;
13202
401k
}
13203
13204
// Left-recursive
13205
// bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
13206
static expr_ty bitwise_or_raw(Parser *);
13207
static expr_ty
13208
bitwise_or_rule(Parser *p)
13209
2.69M
{
13210
2.69M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13211
2
        _Pypegen_stack_overflow(p);
13212
2
    }
13213
2.69M
    expr_ty _res = NULL;
13214
2.69M
    if (_PyPegen_is_memoized(p, bitwise_or_type, &_res)) {
13215
1.94M
        p->level--;
13216
1.94M
        return _res;
13217
1.94M
    }
13218
751k
    int _mark = p->mark;
13219
751k
    int _resmark = p->mark;
13220
1.18M
    while (1) {
13221
1.18M
        int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
13222
1.18M
        if (tmpvar_2) {
13223
0
            p->level--;
13224
0
            return _res;
13225
0
        }
13226
1.18M
        p->mark = _mark;
13227
1.18M
        void *_raw = bitwise_or_raw(p);
13228
1.18M
        if (p->error_indicator) {
13229
40.5k
            p->level--;
13230
40.5k
            return NULL;
13231
40.5k
        }
13232
1.14M
        if (_raw == NULL || p->mark <= _resmark)
13233
710k
            break;
13234
435k
        _resmark = p->mark;
13235
435k
        _res = _raw;
13236
435k
    }
13237
710k
    p->mark = _resmark;
13238
710k
    p->level--;
13239
710k
    return _res;
13240
751k
}
13241
static expr_ty
13242
bitwise_or_raw(Parser *p)
13243
1.18M
{
13244
1.18M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13245
1
        _Pypegen_stack_overflow(p);
13246
1
    }
13247
1.18M
    if (p->error_indicator) {
13248
2
        p->level--;
13249
2
        return NULL;
13250
2
    }
13251
1.18M
    expr_ty _res = NULL;
13252
1.18M
    int _mark = p->mark;
13253
1.18M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13254
0
        p->error_indicator = 1;
13255
0
        p->level--;
13256
0
        return NULL;
13257
0
    }
13258
1.18M
    int _start_lineno = p->tokens[_mark]->lineno;
13259
1.18M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13260
1.18M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13261
1.18M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13262
1.18M
    { // bitwise_or '|' bitwise_xor
13263
1.18M
        if (p->error_indicator) {
13264
0
            p->level--;
13265
0
            return NULL;
13266
0
        }
13267
1.18M
        D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13268
1.18M
        Token * _literal;
13269
1.18M
        expr_ty a;
13270
1.18M
        expr_ty b;
13271
1.18M
        if (
13272
1.18M
            (a = bitwise_or_rule(p))  // bitwise_or
13273
435k
            &&
13274
435k
            (_literal = _PyPegen_expect_token(p, 18))  // token='|'
13275
2.17k
            &&
13276
2.17k
            (b = bitwise_xor_rule(p))  // bitwise_xor
13277
1.18M
        )
13278
1.69k
        {
13279
1.69k
            D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13280
1.69k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13281
1.69k
            if (_token == NULL) {
13282
0
                p->level--;
13283
0
                return NULL;
13284
0
            }
13285
1.69k
            int _end_lineno = _token->end_lineno;
13286
1.69k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13287
1.69k
            int _end_col_offset = _token->end_col_offset;
13288
1.69k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13289
1.69k
            _res = _PyAST_BinOp ( a , BitOr , b , EXTRA );
13290
1.69k
            if (_res == NULL && PyErr_Occurred()) {
13291
0
                p->error_indicator = 1;
13292
0
                p->level--;
13293
0
                return NULL;
13294
0
            }
13295
1.69k
            goto done;
13296
1.69k
        }
13297
1.18M
        p->mark = _mark;
13298
1.18M
        D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13299
1.18M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or '|' bitwise_xor"));
13300
1.18M
    }
13301
0
    { // bitwise_xor
13302
1.18M
        if (p->error_indicator) {
13303
302
            p->level--;
13304
302
            return NULL;
13305
302
        }
13306
1.18M
        D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
13307
1.18M
        expr_ty bitwise_xor_var;
13308
1.18M
        if (
13309
1.18M
            (bitwise_xor_var = bitwise_xor_rule(p))  // bitwise_xor
13310
1.18M
        )
13311
868k
        {
13312
868k
            D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
13313
868k
            _res = bitwise_xor_var;
13314
868k
            goto done;
13315
868k
        }
13316
317k
        p->mark = _mark;
13317
317k
        D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
13318
317k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor"));
13319
317k
    }
13320
317k
    _res = NULL;
13321
1.18M
  done:
13322
1.18M
    p->level--;
13323
1.18M
    return _res;
13324
317k
}
13325
13326
// Left-recursive
13327
// bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
13328
static expr_ty bitwise_xor_raw(Parser *);
13329
static expr_ty
13330
bitwise_xor_rule(Parser *p)
13331
2.37M
{
13332
2.37M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13333
1
        _Pypegen_stack_overflow(p);
13334
1
    }
13335
2.37M
    expr_ty _res = NULL;
13336
2.37M
    if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res)) {
13337
1.62M
        p->level--;
13338
1.62M
        return _res;
13339
1.62M
    }
13340
753k
    int _mark = p->mark;
13341
753k
    int _resmark = p->mark;
13342
1.19M
    while (1) {
13343
1.19M
        int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
13344
1.19M
        if (tmpvar_3) {
13345
0
            p->level--;
13346
0
            return _res;
13347
0
        }
13348
1.19M
        p->mark = _mark;
13349
1.19M
        void *_raw = bitwise_xor_raw(p);
13350
1.19M
        if (p->error_indicator) {
13351
40.5k
            p->level--;
13352
40.5k
            return NULL;
13353
40.5k
        }
13354
1.15M
        if (_raw == NULL || p->mark <= _resmark)
13355
713k
            break;
13356
436k
        _resmark = p->mark;
13357
436k
        _res = _raw;
13358
436k
    }
13359
713k
    p->mark = _resmark;
13360
713k
    p->level--;
13361
713k
    return _res;
13362
753k
}
13363
static expr_ty
13364
bitwise_xor_raw(Parser *p)
13365
1.19M
{
13366
1.19M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13367
1
        _Pypegen_stack_overflow(p);
13368
1
    }
13369
1.19M
    if (p->error_indicator) {
13370
1
        p->level--;
13371
1
        return NULL;
13372
1
    }
13373
1.19M
    expr_ty _res = NULL;
13374
1.19M
    int _mark = p->mark;
13375
1.19M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13376
0
        p->error_indicator = 1;
13377
0
        p->level--;
13378
0
        return NULL;
13379
0
    }
13380
1.19M
    int _start_lineno = p->tokens[_mark]->lineno;
13381
1.19M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13382
1.19M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13383
1.19M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13384
1.19M
    { // bitwise_xor '^' bitwise_and
13385
1.19M
        if (p->error_indicator) {
13386
0
            p->level--;
13387
0
            return NULL;
13388
0
        }
13389
1.19M
        D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13390
1.19M
        Token * _literal;
13391
1.19M
        expr_ty a;
13392
1.19M
        expr_ty b;
13393
1.19M
        if (
13394
1.19M
            (a = bitwise_xor_rule(p))  // bitwise_xor
13395
436k
            &&
13396
436k
            (_literal = _PyPegen_expect_token(p, 32))  // token='^'
13397
1.29k
            &&
13398
1.29k
            (b = bitwise_and_rule(p))  // bitwise_and
13399
1.19M
        )
13400
848
        {
13401
848
            D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13402
848
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13403
848
            if (_token == NULL) {
13404
0
                p->level--;
13405
0
                return NULL;
13406
0
            }
13407
848
            int _end_lineno = _token->end_lineno;
13408
848
            UNUSED(_end_lineno); // Only used by EXTRA macro
13409
848
            int _end_col_offset = _token->end_col_offset;
13410
848
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13411
848
            _res = _PyAST_BinOp ( a , BitXor , b , EXTRA );
13412
848
            if (_res == NULL && PyErr_Occurred()) {
13413
0
                p->error_indicator = 1;
13414
0
                p->level--;
13415
0
                return NULL;
13416
0
            }
13417
848
            goto done;
13418
848
        }
13419
1.18M
        p->mark = _mark;
13420
1.18M
        D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
13421
1.18M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor '^' bitwise_and"));
13422
1.18M
    }
13423
0
    { // bitwise_and
13424
1.18M
        if (p->error_indicator) {
13425
200
            p->level--;
13426
200
            return NULL;
13427
200
        }
13428
1.18M
        D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
13429
1.18M
        expr_ty bitwise_and_var;
13430
1.18M
        if (
13431
1.18M
            (bitwise_and_var = bitwise_and_rule(p))  // bitwise_and
13432
1.18M
        )
13433
871k
        {
13434
871k
            D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
13435
871k
            _res = bitwise_and_var;
13436
871k
            goto done;
13437
871k
        }
13438
317k
        p->mark = _mark;
13439
317k
        D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
13440
317k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and"));
13441
317k
    }
13442
317k
    _res = NULL;
13443
1.19M
  done:
13444
1.19M
    p->level--;
13445
1.19M
    return _res;
13446
317k
}
13447
13448
// Left-recursive
13449
// bitwise_and: bitwise_and '&' shift_expr | shift_expr
13450
static expr_ty bitwise_and_raw(Parser *);
13451
static expr_ty
13452
bitwise_and_rule(Parser *p)
13453
2.38M
{
13454
2.38M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13455
2
        _Pypegen_stack_overflow(p);
13456
2
    }
13457
2.38M
    expr_ty _res = NULL;
13458
2.38M
    if (_PyPegen_is_memoized(p, bitwise_and_type, &_res)) {
13459
1.63M
        p->level--;
13460
1.63M
        return _res;
13461
1.63M
    }
13462
754k
    int _mark = p->mark;
13463
754k
    int _resmark = p->mark;
13464
1.19M
    while (1) {
13465
1.19M
        int tmpvar_4 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
13466
1.19M
        if (tmpvar_4) {
13467
0
            p->level--;
13468
0
            return _res;
13469
0
        }
13470
1.19M
        p->mark = _mark;
13471
1.19M
        void *_raw = bitwise_and_raw(p);
13472
1.19M
        if (p->error_indicator) {
13473
40.5k
            p->level--;
13474
40.5k
            return NULL;
13475
40.5k
        }
13476
1.15M
        if (_raw == NULL || p->mark <= _resmark)
13477
714k
            break;
13478
439k
        _resmark = p->mark;
13479
439k
        _res = _raw;
13480
439k
    }
13481
714k
    p->mark = _resmark;
13482
714k
    p->level--;
13483
714k
    return _res;
13484
754k
}
13485
static expr_ty
13486
bitwise_and_raw(Parser *p)
13487
1.19M
{
13488
1.19M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13489
2
        _Pypegen_stack_overflow(p);
13490
2
    }
13491
1.19M
    if (p->error_indicator) {
13492
2
        p->level--;
13493
2
        return NULL;
13494
2
    }
13495
1.19M
    expr_ty _res = NULL;
13496
1.19M
    int _mark = p->mark;
13497
1.19M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13498
0
        p->error_indicator = 1;
13499
0
        p->level--;
13500
0
        return NULL;
13501
0
    }
13502
1.19M
    int _start_lineno = p->tokens[_mark]->lineno;
13503
1.19M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13504
1.19M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13505
1.19M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13506
1.19M
    { // bitwise_and '&' shift_expr
13507
1.19M
        if (p->error_indicator) {
13508
0
            p->level--;
13509
0
            return NULL;
13510
0
        }
13511
1.19M
        D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
13512
1.19M
        Token * _literal;
13513
1.19M
        expr_ty a;
13514
1.19M
        expr_ty b;
13515
1.19M
        if (
13516
1.19M
            (a = bitwise_and_rule(p))  // bitwise_and
13517
439k
            &&
13518
439k
            (_literal = _PyPegen_expect_token(p, 19))  // token='&'
13519
3.05k
            &&
13520
3.05k
            (b = shift_expr_rule(p))  // shift_expr
13521
1.19M
        )
13522
2.22k
        {
13523
2.22k
            D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
13524
2.22k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13525
2.22k
            if (_token == NULL) {
13526
0
                p->level--;
13527
0
                return NULL;
13528
0
            }
13529
2.22k
            int _end_lineno = _token->end_lineno;
13530
2.22k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13531
2.22k
            int _end_col_offset = _token->end_col_offset;
13532
2.22k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13533
2.22k
            _res = _PyAST_BinOp ( a , BitAnd , b , EXTRA );
13534
2.22k
            if (_res == NULL && PyErr_Occurred()) {
13535
0
                p->error_indicator = 1;
13536
0
                p->level--;
13537
0
                return NULL;
13538
0
            }
13539
2.22k
            goto done;
13540
2.22k
        }
13541
1.19M
        p->mark = _mark;
13542
1.19M
        D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
13543
1.19M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and '&' shift_expr"));
13544
1.19M
    }
13545
0
    { // shift_expr
13546
1.19M
        if (p->error_indicator) {
13547
321
            p->level--;
13548
321
            return NULL;
13549
321
        }
13550
1.19M
        D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr"));
13551
1.19M
        expr_ty shift_expr_var;
13552
1.19M
        if (
13553
1.19M
            (shift_expr_var = shift_expr_rule(p))  // shift_expr
13554
1.19M
        )
13555
873k
        {
13556
873k
            D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr"));
13557
873k
            _res = shift_expr_var;
13558
873k
            goto done;
13559
873k
        }
13560
317k
        p->mark = _mark;
13561
317k
        D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
13562
317k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr"));
13563
317k
    }
13564
317k
    _res = NULL;
13565
1.19M
  done:
13566
1.19M
    p->level--;
13567
1.19M
    return _res;
13568
317k
}
13569
13570
// Left-recursive
13571
// shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | invalid_arithmetic | sum
13572
static expr_ty shift_expr_raw(Parser *);
13573
static expr_ty
13574
shift_expr_rule(Parser *p)
13575
3.59M
{
13576
3.59M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13577
1
        _Pypegen_stack_overflow(p);
13578
1
    }
13579
3.59M
    expr_ty _res = NULL;
13580
3.59M
    if (_PyPegen_is_memoized(p, shift_expr_type, &_res)) {
13581
2.83M
        p->level--;
13582
2.83M
        return _res;
13583
2.83M
    }
13584
757k
    int _mark = p->mark;
13585
757k
    int _resmark = p->mark;
13586
1.19M
    while (1) {
13587
1.19M
        int tmpvar_5 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
13588
1.19M
        if (tmpvar_5) {
13589
0
            p->level--;
13590
0
            return _res;
13591
0
        }
13592
1.19M
        p->mark = _mark;
13593
1.19M
        void *_raw = shift_expr_raw(p);
13594
1.19M
        if (p->error_indicator) {
13595
40.4k
            p->level--;
13596
40.4k
            return NULL;
13597
40.4k
        }
13598
1.15M
        if (_raw == NULL || p->mark <= _resmark)
13599
717k
            break;
13600
441k
        _resmark = p->mark;
13601
441k
        _res = _raw;
13602
441k
    }
13603
717k
    p->mark = _resmark;
13604
717k
    p->level--;
13605
717k
    return _res;
13606
757k
}
13607
static expr_ty
13608
shift_expr_raw(Parser *p)
13609
1.19M
{
13610
1.19M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13611
1
        _Pypegen_stack_overflow(p);
13612
1
    }
13613
1.19M
    if (p->error_indicator) {
13614
1
        p->level--;
13615
1
        return NULL;
13616
1
    }
13617
1.19M
    expr_ty _res = NULL;
13618
1.19M
    int _mark = p->mark;
13619
1.19M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13620
0
        p->error_indicator = 1;
13621
0
        p->level--;
13622
0
        return NULL;
13623
0
    }
13624
1.19M
    int _start_lineno = p->tokens[_mark]->lineno;
13625
1.19M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13626
1.19M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13627
1.19M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13628
1.19M
    { // shift_expr '<<' sum
13629
1.19M
        if (p->error_indicator) {
13630
0
            p->level--;
13631
0
            return NULL;
13632
0
        }
13633
1.19M
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
13634
1.19M
        Token * _literal;
13635
1.19M
        expr_ty a;
13636
1.19M
        expr_ty b;
13637
1.19M
        if (
13638
1.19M
            (a = shift_expr_rule(p))  // shift_expr
13639
441k
            &&
13640
441k
            (_literal = _PyPegen_expect_token(p, 33))  // token='<<'
13641
1.26k
            &&
13642
1.26k
            (b = sum_rule(p))  // sum
13643
1.19M
        )
13644
806
        {
13645
806
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
13646
806
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13647
806
            if (_token == NULL) {
13648
0
                p->level--;
13649
0
                return NULL;
13650
0
            }
13651
806
            int _end_lineno = _token->end_lineno;
13652
806
            UNUSED(_end_lineno); // Only used by EXTRA macro
13653
806
            int _end_col_offset = _token->end_col_offset;
13654
806
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13655
806
            _res = _PyAST_BinOp ( a , LShift , b , EXTRA );
13656
806
            if (_res == NULL && PyErr_Occurred()) {
13657
0
                p->error_indicator = 1;
13658
0
                p->level--;
13659
0
                return NULL;
13660
0
            }
13661
806
            goto done;
13662
806
        }
13663
1.19M
        p->mark = _mark;
13664
1.19M
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13665
1.19M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '<<' sum"));
13666
1.19M
    }
13667
0
    { // shift_expr '>>' sum
13668
1.19M
        if (p->error_indicator) {
13669
212
            p->level--;
13670
212
            return NULL;
13671
212
        }
13672
1.19M
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
13673
1.19M
        Token * _literal;
13674
1.19M
        expr_ty a;
13675
1.19M
        expr_ty b;
13676
1.19M
        if (
13677
1.19M
            (a = shift_expr_rule(p))  // shift_expr
13678
440k
            &&
13679
440k
            (_literal = _PyPegen_expect_token(p, 34))  // token='>>'
13680
1.15k
            &&
13681
1.15k
            (b = sum_rule(p))  // sum
13682
1.19M
        )
13683
723
        {
13684
723
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
13685
723
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13686
723
            if (_token == NULL) {
13687
0
                p->level--;
13688
0
                return NULL;
13689
0
            }
13690
723
            int _end_lineno = _token->end_lineno;
13691
723
            UNUSED(_end_lineno); // Only used by EXTRA macro
13692
723
            int _end_col_offset = _token->end_col_offset;
13693
723
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13694
723
            _res = _PyAST_BinOp ( a , RShift , b , EXTRA );
13695
723
            if (_res == NULL && PyErr_Occurred()) {
13696
0
                p->error_indicator = 1;
13697
0
                p->level--;
13698
0
                return NULL;
13699
0
            }
13700
723
            goto done;
13701
723
        }
13702
1.19M
        p->mark = _mark;
13703
1.19M
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13704
1.19M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '>>' sum"));
13705
1.19M
    }
13706
1.19M
    if (p->call_invalid_rules) { // invalid_arithmetic
13707
298k
        if (p->error_indicator) {
13708
201
            p->level--;
13709
201
            return NULL;
13710
201
        }
13711
297k
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_arithmetic"));
13712
297k
        void *invalid_arithmetic_var;
13713
297k
        if (
13714
297k
            (invalid_arithmetic_var = invalid_arithmetic_rule(p))  // invalid_arithmetic
13715
297k
        )
13716
0
        {
13717
0
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_arithmetic"));
13718
0
            _res = invalid_arithmetic_var;
13719
0
            goto done;
13720
0
        }
13721
297k
        p->mark = _mark;
13722
297k
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13723
297k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_arithmetic"));
13724
297k
    }
13725
1.19M
    { // sum
13726
1.19M
        if (p->error_indicator) {
13727
30.6k
            p->level--;
13728
30.6k
            return NULL;
13729
30.6k
        }
13730
1.16M
        D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum"));
13731
1.16M
        expr_ty sum_var;
13732
1.16M
        if (
13733
1.16M
            (sum_var = sum_rule(p))  // sum
13734
1.16M
        )
13735
879k
        {
13736
879k
            D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum"));
13737
879k
            _res = sum_var;
13738
879k
            goto done;
13739
879k
        }
13740
287k
        p->mark = _mark;
13741
287k
        D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13742
287k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum"));
13743
287k
    }
13744
287k
    _res = NULL;
13745
1.16M
  done:
13746
1.16M
    p->level--;
13747
1.16M
    return _res;
13748
287k
}
13749
13750
// Left-recursive
13751
// sum: sum '+' term | sum '-' term | term
13752
static expr_ty sum_raw(Parser *);
13753
static expr_ty
13754
sum_rule(Parser *p)
13755
3.90M
{
13756
3.90M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13757
1
        _Pypegen_stack_overflow(p);
13758
1
    }
13759
3.90M
    expr_ty _res = NULL;
13760
3.90M
    if (_PyPegen_is_memoized(p, sum_type, &_res)) {
13761
3.14M
        p->level--;
13762
3.14M
        return _res;
13763
3.14M
    }
13764
760k
    int _mark = p->mark;
13765
760k
    int _resmark = p->mark;
13766
1.22M
    while (1) {
13767
1.22M
        int tmpvar_6 = _PyPegen_update_memo(p, _mark, sum_type, _res);
13768
1.22M
        if (tmpvar_6) {
13769
0
            p->level--;
13770
0
            return _res;
13771
0
        }
13772
1.22M
        p->mark = _mark;
13773
1.22M
        void *_raw = sum_raw(p);
13774
1.22M
        if (p->error_indicator) {
13775
40.2k
            p->level--;
13776
40.2k
            return NULL;
13777
40.2k
        }
13778
1.18M
        if (_raw == NULL || p->mark <= _resmark)
13779
719k
            break;
13780
465k
        _resmark = p->mark;
13781
465k
        _res = _raw;
13782
465k
    }
13783
719k
    p->mark = _resmark;
13784
719k
    p->level--;
13785
719k
    return _res;
13786
760k
}
13787
static expr_ty
13788
sum_raw(Parser *p)
13789
1.22M
{
13790
1.22M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13791
1
        _Pypegen_stack_overflow(p);
13792
1
    }
13793
1.22M
    if (p->error_indicator) {
13794
1
        p->level--;
13795
1
        return NULL;
13796
1
    }
13797
1.22M
    expr_ty _res = NULL;
13798
1.22M
    int _mark = p->mark;
13799
1.22M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13800
0
        p->error_indicator = 1;
13801
0
        p->level--;
13802
0
        return NULL;
13803
0
    }
13804
1.22M
    int _start_lineno = p->tokens[_mark]->lineno;
13805
1.22M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13806
1.22M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13807
1.22M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13808
1.22M
    { // sum '+' term
13809
1.22M
        if (p->error_indicator) {
13810
0
            p->level--;
13811
0
            return NULL;
13812
0
        }
13813
1.22M
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
13814
1.22M
        Token * _literal;
13815
1.22M
        expr_ty a;
13816
1.22M
        expr_ty b;
13817
1.22M
        if (
13818
1.22M
            (a = sum_rule(p))  // sum
13819
465k
            &&
13820
465k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
13821
10.6k
            &&
13822
10.6k
            (b = term_rule(p))  // term
13823
1.22M
        )
13824
9.28k
        {
13825
9.28k
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
13826
9.28k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13827
9.28k
            if (_token == NULL) {
13828
0
                p->level--;
13829
0
                return NULL;
13830
0
            }
13831
9.28k
            int _end_lineno = _token->end_lineno;
13832
9.28k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13833
9.28k
            int _end_col_offset = _token->end_col_offset;
13834
9.28k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13835
9.28k
            _res = _PyAST_BinOp ( a , Add , b , EXTRA );
13836
9.28k
            if (_res == NULL && PyErr_Occurred()) {
13837
0
                p->error_indicator = 1;
13838
0
                p->level--;
13839
0
                return NULL;
13840
0
            }
13841
9.28k
            goto done;
13842
9.28k
        }
13843
1.21M
        p->mark = _mark;
13844
1.21M
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13845
1.21M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '+' term"));
13846
1.21M
    }
13847
0
    { // sum '-' term
13848
1.21M
        if (p->error_indicator) {
13849
244
            p->level--;
13850
244
            return NULL;
13851
244
        }
13852
1.21M
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13853
1.21M
        Token * _literal;
13854
1.21M
        expr_ty a;
13855
1.21M
        expr_ty b;
13856
1.21M
        if (
13857
1.21M
            (a = sum_rule(p))  // sum
13858
455k
            &&
13859
455k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
13860
14.6k
            &&
13861
14.6k
            (b = term_rule(p))  // term
13862
1.21M
        )
13863
13.1k
        {
13864
13.1k
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13865
13.1k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13866
13.1k
            if (_token == NULL) {
13867
0
                p->level--;
13868
0
                return NULL;
13869
0
            }
13870
13.1k
            int _end_lineno = _token->end_lineno;
13871
13.1k
            UNUSED(_end_lineno); // Only used by EXTRA macro
13872
13.1k
            int _end_col_offset = _token->end_col_offset;
13873
13.1k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
13874
13.1k
            _res = _PyAST_BinOp ( a , Sub , b , EXTRA );
13875
13.1k
            if (_res == NULL && PyErr_Occurred()) {
13876
0
                p->error_indicator = 1;
13877
0
                p->level--;
13878
0
                return NULL;
13879
0
            }
13880
13.1k
            goto done;
13881
13.1k
        }
13882
1.20M
        p->mark = _mark;
13883
1.20M
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13884
1.20M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '-' term"));
13885
1.20M
    }
13886
0
    { // term
13887
1.20M
        if (p->error_indicator) {
13888
895
            p->level--;
13889
895
            return NULL;
13890
895
        }
13891
1.20M
        D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term"));
13892
1.20M
        expr_ty term_var;
13893
1.20M
        if (
13894
1.20M
            (term_var = term_rule(p))  // term
13895
1.20M
        )
13896
884k
        {
13897
884k
            D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term"));
13898
884k
            _res = term_var;
13899
884k
            goto done;
13900
884k
        }
13901
317k
        p->mark = _mark;
13902
317k
        D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13903
317k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term"));
13904
317k
    }
13905
317k
    _res = NULL;
13906
1.22M
  done:
13907
1.22M
    p->level--;
13908
1.22M
    return _res;
13909
317k
}
13910
13911
// Left-recursive
13912
// term:
13913
//     | term '*' factor
13914
//     | term '/' factor
13915
//     | term '//' factor
13916
//     | term '%' factor
13917
//     | term '@' factor
13918
//     | invalid_factor
13919
//     | factor
13920
static expr_ty term_raw(Parser *);
13921
static expr_ty
13922
term_rule(Parser *p)
13923
7.51M
{
13924
7.51M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13925
1
        _Pypegen_stack_overflow(p);
13926
1
    }
13927
7.51M
    expr_ty _res = NULL;
13928
7.51M
    if (_PyPegen_is_memoized(p, term_type, &_res)) {
13929
6.73M
        p->level--;
13930
6.73M
        return _res;
13931
6.73M
    }
13932
784k
    int _mark = p->mark;
13933
784k
    int _resmark = p->mark;
13934
1.26M
    while (1) {
13935
1.26M
        int tmpvar_7 = _PyPegen_update_memo(p, _mark, term_type, _res);
13936
1.26M
        if (tmpvar_7) {
13937
0
            p->level--;
13938
0
            return _res;
13939
0
        }
13940
1.26M
        p->mark = _mark;
13941
1.26M
        void *_raw = term_raw(p);
13942
1.26M
        if (p->error_indicator) {
13943
40.2k
            p->level--;
13944
40.2k
            return NULL;
13945
40.2k
        }
13946
1.22M
        if (_raw == NULL || p->mark <= _resmark)
13947
744k
            break;
13948
479k
        _resmark = p->mark;
13949
479k
        _res = _raw;
13950
479k
    }
13951
744k
    p->mark = _resmark;
13952
744k
    p->level--;
13953
744k
    return _res;
13954
784k
}
13955
static expr_ty
13956
term_raw(Parser *p)
13957
1.26M
{
13958
1.26M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
13959
2
        _Pypegen_stack_overflow(p);
13960
2
    }
13961
1.26M
    if (p->error_indicator) {
13962
2
        p->level--;
13963
2
        return NULL;
13964
2
    }
13965
1.26M
    expr_ty _res = NULL;
13966
1.26M
    int _mark = p->mark;
13967
1.26M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13968
0
        p->error_indicator = 1;
13969
0
        p->level--;
13970
0
        return NULL;
13971
0
    }
13972
1.26M
    int _start_lineno = p->tokens[_mark]->lineno;
13973
1.26M
    UNUSED(_start_lineno); // Only used by EXTRA macro
13974
1.26M
    int _start_col_offset = p->tokens[_mark]->col_offset;
13975
1.26M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
13976
1.26M
    { // term '*' factor
13977
1.26M
        if (p->error_indicator) {
13978
0
            p->level--;
13979
0
            return NULL;
13980
0
        }
13981
1.26M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13982
1.26M
        Token * _literal;
13983
1.26M
        expr_ty a;
13984
1.26M
        expr_ty b;
13985
1.26M
        if (
13986
1.26M
            (a = term_rule(p))  // term
13987
479k
            &&
13988
479k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
13989
6.00k
            &&
13990
6.00k
            (b = factor_rule(p))  // factor
13991
1.26M
        )
13992
4.90k
        {
13993
4.90k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13994
4.90k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13995
4.90k
            if (_token == NULL) {
13996
0
                p->level--;
13997
0
                return NULL;
13998
0
            }
13999
4.90k
            int _end_lineno = _token->end_lineno;
14000
4.90k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14001
4.90k
            int _end_col_offset = _token->end_col_offset;
14002
4.90k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14003
4.90k
            _res = _PyAST_BinOp ( a , Mult , b , EXTRA );
14004
4.90k
            if (_res == NULL && PyErr_Occurred()) {
14005
0
                p->error_indicator = 1;
14006
0
                p->level--;
14007
0
                return NULL;
14008
0
            }
14009
4.90k
            goto done;
14010
4.90k
        }
14011
1.25M
        p->mark = _mark;
14012
1.25M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14013
1.25M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '*' factor"));
14014
1.25M
    }
14015
0
    { // term '/' factor
14016
1.25M
        if (p->error_indicator) {
14017
448
            p->level--;
14018
448
            return NULL;
14019
448
        }
14020
1.25M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
14021
1.25M
        Token * _literal;
14022
1.25M
        expr_ty a;
14023
1.25M
        expr_ty b;
14024
1.25M
        if (
14025
1.25M
            (a = term_rule(p))  // term
14026
474k
            &&
14027
474k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
14028
3.34k
            &&
14029
3.34k
            (b = factor_rule(p))  // factor
14030
1.25M
        )
14031
2.80k
        {
14032
2.80k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
14033
2.80k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14034
2.80k
            if (_token == NULL) {
14035
0
                p->level--;
14036
0
                return NULL;
14037
0
            }
14038
2.80k
            int _end_lineno = _token->end_lineno;
14039
2.80k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14040
2.80k
            int _end_col_offset = _token->end_col_offset;
14041
2.80k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14042
2.80k
            _res = _PyAST_BinOp ( a , Div , b , EXTRA );
14043
2.80k
            if (_res == NULL && PyErr_Occurred()) {
14044
0
                p->error_indicator = 1;
14045
0
                p->level--;
14046
0
                return NULL;
14047
0
            }
14048
2.80k
            goto done;
14049
2.80k
        }
14050
1.25M
        p->mark = _mark;
14051
1.25M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14052
1.25M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '/' factor"));
14053
1.25M
    }
14054
0
    { // term '//' factor
14055
1.25M
        if (p->error_indicator) {
14056
214
            p->level--;
14057
214
            return NULL;
14058
214
        }
14059
1.25M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
14060
1.25M
        Token * _literal;
14061
1.25M
        expr_ty a;
14062
1.25M
        expr_ty b;
14063
1.25M
        if (
14064
1.25M
            (a = term_rule(p))  // term
14065
471k
            &&
14066
471k
            (_literal = _PyPegen_expect_token(p, 47))  // token='//'
14067
978
            &&
14068
978
            (b = factor_rule(p))  // factor
14069
1.25M
        )
14070
575
        {
14071
575
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
14072
575
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14073
575
            if (_token == NULL) {
14074
0
                p->level--;
14075
0
                return NULL;
14076
0
            }
14077
575
            int _end_lineno = _token->end_lineno;
14078
575
            UNUSED(_end_lineno); // Only used by EXTRA macro
14079
575
            int _end_col_offset = _token->end_col_offset;
14080
575
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14081
575
            _res = _PyAST_BinOp ( a , FloorDiv , b , EXTRA );
14082
575
            if (_res == NULL && PyErr_Occurred()) {
14083
0
                p->error_indicator = 1;
14084
0
                p->level--;
14085
0
                return NULL;
14086
0
            }
14087
575
            goto done;
14088
575
        }
14089
1.25M
        p->mark = _mark;
14090
1.25M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14091
1.25M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '//' factor"));
14092
1.25M
    }
14093
0
    { // term '%' factor
14094
1.25M
        if (p->error_indicator) {
14095
196
            p->level--;
14096
196
            return NULL;
14097
196
        }
14098
1.25M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
14099
1.25M
        Token * _literal;
14100
1.25M
        expr_ty a;
14101
1.25M
        expr_ty b;
14102
1.25M
        if (
14103
1.25M
            (a = term_rule(p))  // term
14104
470k
            &&
14105
470k
            (_literal = _PyPegen_expect_token(p, 24))  // token='%'
14106
3.55k
            &&
14107
3.55k
            (b = factor_rule(p))  // factor
14108
1.25M
        )
14109
2.98k
        {
14110
2.98k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
14111
2.98k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14112
2.98k
            if (_token == NULL) {
14113
0
                p->level--;
14114
0
                return NULL;
14115
0
            }
14116
2.98k
            int _end_lineno = _token->end_lineno;
14117
2.98k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14118
2.98k
            int _end_col_offset = _token->end_col_offset;
14119
2.98k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14120
2.98k
            _res = _PyAST_BinOp ( a , Mod , b , EXTRA );
14121
2.98k
            if (_res == NULL && PyErr_Occurred()) {
14122
0
                p->error_indicator = 1;
14123
0
                p->level--;
14124
0
                return NULL;
14125
0
            }
14126
2.98k
            goto done;
14127
2.98k
        }
14128
1.25M
        p->mark = _mark;
14129
1.25M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14130
1.25M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '%' factor"));
14131
1.25M
    }
14132
0
    { // term '@' factor
14133
1.25M
        if (p->error_indicator) {
14134
225
            p->level--;
14135
225
            return NULL;
14136
225
        }
14137
1.25M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
14138
1.25M
        Token * _literal;
14139
1.25M
        expr_ty a;
14140
1.25M
        expr_ty b;
14141
1.25M
        if (
14142
1.25M
            (a = term_rule(p))  // term
14143
467k
            &&
14144
467k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
14145
3.21k
            &&
14146
3.21k
            (b = factor_rule(p))  // factor
14147
1.25M
        )
14148
2.32k
        {
14149
2.32k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
14150
2.32k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14151
2.32k
            if (_token == NULL) {
14152
0
                p->level--;
14153
0
                return NULL;
14154
0
            }
14155
2.32k
            int _end_lineno = _token->end_lineno;
14156
2.32k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14157
2.32k
            int _end_col_offset = _token->end_col_offset;
14158
2.32k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14159
2.32k
            _res = CHECK_VERSION ( expr_ty , 5 , "The '@' operator is" , _PyAST_BinOp ( a , MatMult , b , EXTRA ) );
14160
2.32k
            if (_res == NULL && PyErr_Occurred()) {
14161
0
                p->error_indicator = 1;
14162
0
                p->level--;
14163
0
                return NULL;
14164
0
            }
14165
2.32k
            goto done;
14166
2.32k
        }
14167
1.25M
        p->mark = _mark;
14168
1.25M
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14169
1.25M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '@' factor"));
14170
1.25M
    }
14171
1.25M
    if (p->call_invalid_rules) { // invalid_factor
14172
308k
        if (p->error_indicator) {
14173
200
            p->level--;
14174
200
            return NULL;
14175
200
        }
14176
308k
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_factor"));
14177
308k
        void *invalid_factor_var;
14178
308k
        if (
14179
308k
            (invalid_factor_var = invalid_factor_rule(p))  // invalid_factor
14180
308k
        )
14181
0
        {
14182
0
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_factor"));
14183
0
            _res = invalid_factor_var;
14184
0
            goto done;
14185
0
        }
14186
308k
        p->mark = _mark;
14187
308k
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14188
308k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_factor"));
14189
308k
    }
14190
1.24M
    { // factor
14191
1.24M
        if (p->error_indicator) {
14192
314
            p->level--;
14193
314
            return NULL;
14194
314
        }
14195
1.24M
        D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "factor"));
14196
1.24M
        expr_ty factor_var;
14197
1.24M
        if (
14198
1.24M
            (factor_var = factor_rule(p))  // factor
14199
1.24M
        )
14200
930k
        {
14201
930k
            D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "factor"));
14202
930k
            _res = factor_var;
14203
930k
            goto done;
14204
930k
        }
14205
318k
        p->mark = _mark;
14206
318k
        D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
14207
318k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "factor"));
14208
318k
    }
14209
318k
    _res = NULL;
14210
1.26M
  done:
14211
1.26M
    p->level--;
14212
1.26M
    return _res;
14213
318k
}
14214
14215
// factor: '+' factor | '-' factor | '~' factor | power
14216
static expr_ty
14217
factor_rule(Parser *p)
14218
1.44M
{
14219
1.44M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14220
1
        _Pypegen_stack_overflow(p);
14221
1
    }
14222
1.44M
    if (p->error_indicator) {
14223
1
        p->level--;
14224
1
        return NULL;
14225
1
    }
14226
1.44M
    expr_ty _res = NULL;
14227
1.44M
    if (_PyPegen_is_memoized(p, factor_type, &_res)) {
14228
467k
        p->level--;
14229
467k
        return _res;
14230
467k
    }
14231
979k
    int _mark = p->mark;
14232
979k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14233
0
        p->error_indicator = 1;
14234
0
        p->level--;
14235
0
        return NULL;
14236
0
    }
14237
979k
    int _start_lineno = p->tokens[_mark]->lineno;
14238
979k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14239
979k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14240
979k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14241
979k
    { // '+' factor
14242
979k
        if (p->error_indicator) {
14243
0
            p->level--;
14244
0
            return NULL;
14245
0
        }
14246
979k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+' factor"));
14247
979k
        Token * _literal;
14248
979k
        expr_ty a;
14249
979k
        if (
14250
979k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
14251
50.6k
            &&
14252
50.6k
            (a = factor_rule(p))  // factor
14253
979k
        )
14254
48.9k
        {
14255
48.9k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+' factor"));
14256
48.9k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14257
48.9k
            if (_token == NULL) {
14258
0
                p->level--;
14259
0
                return NULL;
14260
0
            }
14261
48.9k
            int _end_lineno = _token->end_lineno;
14262
48.9k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14263
48.9k
            int _end_col_offset = _token->end_col_offset;
14264
48.9k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14265
48.9k
            _res = _PyAST_UnaryOp ( UAdd , a , EXTRA );
14266
48.9k
            if (_res == NULL && PyErr_Occurred()) {
14267
0
                p->error_indicator = 1;
14268
0
                p->level--;
14269
0
                return NULL;
14270
0
            }
14271
48.9k
            goto done;
14272
48.9k
        }
14273
930k
        p->mark = _mark;
14274
930k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14275
930k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+' factor"));
14276
930k
    }
14277
0
    { // '-' factor
14278
930k
        if (p->error_indicator) {
14279
588
            p->level--;
14280
588
            return NULL;
14281
588
        }
14282
930k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' factor"));
14283
930k
        Token * _literal;
14284
930k
        expr_ty a;
14285
930k
        if (
14286
930k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
14287
97.5k
            &&
14288
97.5k
            (a = factor_rule(p))  // factor
14289
930k
        )
14290
95.2k
        {
14291
95.2k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' factor"));
14292
95.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14293
95.2k
            if (_token == NULL) {
14294
0
                p->level--;
14295
0
                return NULL;
14296
0
            }
14297
95.2k
            int _end_lineno = _token->end_lineno;
14298
95.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14299
95.2k
            int _end_col_offset = _token->end_col_offset;
14300
95.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14301
95.2k
            _res = _PyAST_UnaryOp ( USub , a , EXTRA );
14302
95.2k
            if (_res == NULL && PyErr_Occurred()) {
14303
0
                p->error_indicator = 1;
14304
0
                p->level--;
14305
0
                return NULL;
14306
0
            }
14307
95.2k
            goto done;
14308
95.2k
        }
14309
835k
        p->mark = _mark;
14310
835k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14311
835k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' factor"));
14312
835k
    }
14313
0
    { // '~' factor
14314
835k
        if (p->error_indicator) {
14315
1.30k
            p->level--;
14316
1.30k
            return NULL;
14317
1.30k
        }
14318
833k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'~' factor"));
14319
833k
        Token * _literal;
14320
833k
        expr_ty a;
14321
833k
        if (
14322
833k
            (_literal = _PyPegen_expect_token(p, 31))  // token='~'
14323
30.8k
            &&
14324
30.8k
            (a = factor_rule(p))  // factor
14325
833k
        )
14326
29.9k
        {
14327
29.9k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'~' factor"));
14328
29.9k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14329
29.9k
            if (_token == NULL) {
14330
0
                p->level--;
14331
0
                return NULL;
14332
0
            }
14333
29.9k
            int _end_lineno = _token->end_lineno;
14334
29.9k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14335
29.9k
            int _end_col_offset = _token->end_col_offset;
14336
29.9k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14337
29.9k
            _res = _PyAST_UnaryOp ( Invert , a , EXTRA );
14338
29.9k
            if (_res == NULL && PyErr_Occurred()) {
14339
0
                p->error_indicator = 1;
14340
0
                p->level--;
14341
0
                return NULL;
14342
0
            }
14343
29.9k
            goto done;
14344
29.9k
        }
14345
803k
        p->mark = _mark;
14346
803k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14347
803k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'~' factor"));
14348
803k
    }
14349
0
    { // power
14350
803k
        if (p->error_indicator) {
14351
251
            p->level--;
14352
251
            return NULL;
14353
251
        }
14354
803k
        D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "power"));
14355
803k
        expr_ty power_var;
14356
803k
        if (
14357
803k
            (power_var = power_rule(p))  // power
14358
803k
        )
14359
479k
        {
14360
479k
            D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "power"));
14361
479k
            _res = power_var;
14362
479k
            goto done;
14363
479k
        }
14364
324k
        p->mark = _mark;
14365
324k
        D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
14366
324k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "power"));
14367
324k
    }
14368
324k
    _res = NULL;
14369
977k
  done:
14370
977k
    _PyPegen_insert_memo(p, _mark, factor_type, _res);
14371
977k
    p->level--;
14372
977k
    return _res;
14373
324k
}
14374
14375
// power: await_primary '**' factor | await_primary
14376
static expr_ty
14377
power_rule(Parser *p)
14378
803k
{
14379
803k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14380
2
        _Pypegen_stack_overflow(p);
14381
2
    }
14382
803k
    if (p->error_indicator) {
14383
2
        p->level--;
14384
2
        return NULL;
14385
2
    }
14386
803k
    expr_ty _res = NULL;
14387
803k
    int _mark = p->mark;
14388
803k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14389
0
        p->error_indicator = 1;
14390
0
        p->level--;
14391
0
        return NULL;
14392
0
    }
14393
803k
    int _start_lineno = p->tokens[_mark]->lineno;
14394
803k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14395
803k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14396
803k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14397
803k
    { // await_primary '**' factor
14398
803k
        if (p->error_indicator) {
14399
0
            p->level--;
14400
0
            return NULL;
14401
0
        }
14402
803k
        D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
14403
803k
        Token * _literal;
14404
803k
        expr_ty a;
14405
803k
        expr_ty b;
14406
803k
        if (
14407
803k
            (a = await_primary_rule(p))  // await_primary
14408
479k
            &&
14409
479k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
14410
1.73k
            &&
14411
1.73k
            (b = factor_rule(p))  // factor
14412
803k
        )
14413
1.45k
        {
14414
1.45k
            D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
14415
1.45k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14416
1.45k
            if (_token == NULL) {
14417
0
                p->level--;
14418
0
                return NULL;
14419
0
            }
14420
1.45k
            int _end_lineno = _token->end_lineno;
14421
1.45k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14422
1.45k
            int _end_col_offset = _token->end_col_offset;
14423
1.45k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14424
1.45k
            _res = _PyAST_BinOp ( a , Pow , b , EXTRA );
14425
1.45k
            if (_res == NULL && PyErr_Occurred()) {
14426
0
                p->error_indicator = 1;
14427
0
                p->level--;
14428
0
                return NULL;
14429
0
            }
14430
1.45k
            goto done;
14431
1.45k
        }
14432
802k
        p->mark = _mark;
14433
802k
        D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
14434
802k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary '**' factor"));
14435
802k
    }
14436
0
    { // await_primary
14437
802k
        if (p->error_indicator) {
14438
40.2k
            p->level--;
14439
40.2k
            return NULL;
14440
40.2k
        }
14441
761k
        D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary"));
14442
761k
        expr_ty await_primary_var;
14443
761k
        if (
14444
761k
            (await_primary_var = await_primary_rule(p))  // await_primary
14445
761k
        )
14446
477k
        {
14447
477k
            D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary"));
14448
477k
            _res = await_primary_var;
14449
477k
            goto done;
14450
477k
        }
14451
283k
        p->mark = _mark;
14452
283k
        D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
14453
283k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary"));
14454
283k
    }
14455
283k
    _res = NULL;
14456
763k
  done:
14457
763k
    p->level--;
14458
763k
    return _res;
14459
283k
}
14460
14461
// await_primary: 'await' primary | primary
14462
static expr_ty
14463
await_primary_rule(Parser *p)
14464
1.56M
{
14465
1.56M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14466
1
        _Pypegen_stack_overflow(p);
14467
1
    }
14468
1.56M
    if (p->error_indicator) {
14469
1
        p->level--;
14470
1
        return NULL;
14471
1
    }
14472
1.56M
    expr_ty _res = NULL;
14473
1.56M
    if (_PyPegen_is_memoized(p, await_primary_type, &_res)) {
14474
761k
        p->level--;
14475
761k
        return _res;
14476
761k
    }
14477
803k
    int _mark = p->mark;
14478
803k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14479
0
        p->error_indicator = 1;
14480
0
        p->level--;
14481
0
        return NULL;
14482
0
    }
14483
803k
    int _start_lineno = p->tokens[_mark]->lineno;
14484
803k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14485
803k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14486
803k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14487
803k
    { // 'await' primary
14488
803k
        if (p->error_indicator) {
14489
0
            p->level--;
14490
0
            return NULL;
14491
0
        }
14492
803k
        D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'await' primary"));
14493
803k
        Token * _keyword;
14494
803k
        expr_ty a;
14495
803k
        if (
14496
803k
            (_keyword = _PyPegen_expect_token(p, 598))  // token='await'
14497
836
            &&
14498
836
            (a = primary_rule(p))  // primary
14499
803k
        )
14500
390
        {
14501
390
            D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'await' primary"));
14502
390
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14503
390
            if (_token == NULL) {
14504
0
                p->level--;
14505
0
                return NULL;
14506
0
            }
14507
390
            int _end_lineno = _token->end_lineno;
14508
390
            UNUSED(_end_lineno); // Only used by EXTRA macro
14509
390
            int _end_col_offset = _token->end_col_offset;
14510
390
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14511
390
            _res = CHECK_VERSION ( expr_ty , 5 , "Await expressions are" , _PyAST_Await ( a , EXTRA ) );
14512
390
            if (_res == NULL && PyErr_Occurred()) {
14513
0
                p->error_indicator = 1;
14514
0
                p->level--;
14515
0
                return NULL;
14516
0
            }
14517
390
            goto done;
14518
390
        }
14519
803k
        p->mark = _mark;
14520
803k
        D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
14521
803k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'await' primary"));
14522
803k
    }
14523
0
    { // primary
14524
803k
        if (p->error_indicator) {
14525
246
            p->level--;
14526
246
            return NULL;
14527
246
        }
14528
802k
        D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary"));
14529
802k
        expr_ty primary_var;
14530
802k
        if (
14531
802k
            (primary_var = primary_rule(p))  // primary
14532
802k
        )
14533
479k
        {
14534
479k
            D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary"));
14535
479k
            _res = primary_var;
14536
479k
            goto done;
14537
479k
        }
14538
323k
        p->mark = _mark;
14539
323k
        D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
14540
323k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary"));
14541
323k
    }
14542
323k
    _res = NULL;
14543
803k
  done:
14544
803k
    _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
14545
803k
    p->level--;
14546
803k
    return _res;
14547
323k
}
14548
14549
// Left-recursive
14550
// primary:
14551
//     | primary '.' NAME
14552
//     | primary genexp
14553
//     | primary '(' arguments? ')'
14554
//     | primary '[' slices ']'
14555
//     | atom
14556
static expr_ty primary_raw(Parser *);
14557
static expr_ty
14558
primary_rule(Parser *p)
14559
6.10M
{
14560
6.10M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14561
3
        _Pypegen_stack_overflow(p);
14562
3
    }
14563
6.10M
    expr_ty _res = NULL;
14564
6.10M
    if (_PyPegen_is_memoized(p, primary_type, &_res)) {
14565
5.30M
        p->level--;
14566
5.30M
        return _res;
14567
5.30M
    }
14568
803k
    int _mark = p->mark;
14569
803k
    int _resmark = p->mark;
14570
1.35M
    while (1) {
14571
1.35M
        int tmpvar_8 = _PyPegen_update_memo(p, _mark, primary_type, _res);
14572
1.35M
        if (tmpvar_8) {
14573
0
            p->level--;
14574
0
            return _res;
14575
0
        }
14576
1.35M
        p->mark = _mark;
14577
1.35M
        void *_raw = primary_raw(p);
14578
1.35M
        if (p->error_indicator) {
14579
40.0k
            p->level--;
14580
40.0k
            return NULL;
14581
40.0k
        }
14582
1.31M
        if (_raw == NULL || p->mark <= _resmark)
14583
763k
            break;
14584
551k
        _resmark = p->mark;
14585
551k
        _res = _raw;
14586
551k
    }
14587
763k
    p->mark = _resmark;
14588
763k
    p->level--;
14589
763k
    return _res;
14590
803k
}
14591
static expr_ty
14592
primary_raw(Parser *p)
14593
1.35M
{
14594
1.35M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14595
1
        _Pypegen_stack_overflow(p);
14596
1
    }
14597
1.35M
    if (p->error_indicator) {
14598
3
        p->level--;
14599
3
        return NULL;
14600
3
    }
14601
1.35M
    expr_ty _res = NULL;
14602
1.35M
    int _mark = p->mark;
14603
1.35M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14604
0
        p->error_indicator = 1;
14605
0
        p->level--;
14606
0
        return NULL;
14607
0
    }
14608
1.35M
    int _start_lineno = p->tokens[_mark]->lineno;
14609
1.35M
    UNUSED(_start_lineno); // Only used by EXTRA macro
14610
1.35M
    int _start_col_offset = p->tokens[_mark]->col_offset;
14611
1.35M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14612
1.35M
    { // primary '.' NAME
14613
1.35M
        if (p->error_indicator) {
14614
0
            p->level--;
14615
0
            return NULL;
14616
0
        }
14617
1.35M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
14618
1.35M
        Token * _literal;
14619
1.35M
        expr_ty a;
14620
1.35M
        expr_ty b;
14621
1.35M
        if (
14622
1.35M
            (a = primary_rule(p))  // primary
14623
551k
            &&
14624
551k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
14625
25.1k
            &&
14626
25.1k
            (b = _PyPegen_name_token(p))  // NAME
14627
1.35M
        )
14628
24.5k
        {
14629
24.5k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
14630
24.5k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14631
24.5k
            if (_token == NULL) {
14632
0
                p->level--;
14633
0
                return NULL;
14634
0
            }
14635
24.5k
            int _end_lineno = _token->end_lineno;
14636
24.5k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14637
24.5k
            int _end_col_offset = _token->end_col_offset;
14638
24.5k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14639
24.5k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
14640
24.5k
            if (_res == NULL && PyErr_Occurred()) {
14641
0
                p->error_indicator = 1;
14642
0
                p->level--;
14643
0
                return NULL;
14644
0
            }
14645
24.5k
            goto done;
14646
24.5k
        }
14647
1.33M
        p->mark = _mark;
14648
1.33M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14649
1.33M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '.' NAME"));
14650
1.33M
    }
14651
0
    { // primary genexp
14652
1.33M
        if (p->error_indicator) {
14653
370
            p->level--;
14654
370
            return NULL;
14655
370
        }
14656
1.33M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary genexp"));
14657
1.33M
        expr_ty a;
14658
1.33M
        expr_ty b;
14659
1.33M
        if (
14660
1.33M
            (a = primary_rule(p))  // primary
14661
526k
            &&
14662
526k
            (b = genexp_rule(p))  // genexp
14663
1.33M
        )
14664
865
        {
14665
865
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary genexp"));
14666
865
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14667
865
            if (_token == NULL) {
14668
0
                p->level--;
14669
0
                return NULL;
14670
0
            }
14671
865
            int _end_lineno = _token->end_lineno;
14672
865
            UNUSED(_end_lineno); // Only used by EXTRA macro
14673
865
            int _end_col_offset = _token->end_col_offset;
14674
865
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14675
865
            _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq* , ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
14676
865
            if (_res == NULL && PyErr_Occurred()) {
14677
0
                p->error_indicator = 1;
14678
0
                p->level--;
14679
0
                return NULL;
14680
0
            }
14681
865
            goto done;
14682
865
        }
14683
1.32M
        p->mark = _mark;
14684
1.32M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14685
1.32M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary genexp"));
14686
1.32M
    }
14687
0
    { // primary '(' arguments? ')'
14688
1.32M
        if (p->error_indicator) {
14689
3.93k
            p->level--;
14690
3.93k
            return NULL;
14691
3.93k
        }
14692
1.32M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
14693
1.32M
        Token * _literal;
14694
1.32M
        Token * _literal_1;
14695
1.32M
        expr_ty a;
14696
1.32M
        void *b;
14697
1.32M
        if (
14698
1.32M
            (a = primary_rule(p))  // primary
14699
522k
            &&
14700
522k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
14701
44.3k
            &&
14702
44.3k
            (b = arguments_rule(p), !p->error_indicator)  // arguments?
14703
41.7k
            &&
14704
41.7k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
14705
1.32M
        )
14706
34.0k
        {
14707
34.0k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
14708
34.0k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14709
34.0k
            if (_token == NULL) {
14710
0
                p->level--;
14711
0
                return NULL;
14712
0
            }
14713
34.0k
            int _end_lineno = _token->end_lineno;
14714
34.0k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14715
34.0k
            int _end_col_offset = _token->end_col_offset;
14716
34.0k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14717
34.0k
            _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
14718
34.0k
            if (_res == NULL && PyErr_Occurred()) {
14719
0
                p->error_indicator = 1;
14720
0
                p->level--;
14721
0
                return NULL;
14722
0
            }
14723
34.0k
            goto done;
14724
34.0k
        }
14725
1.29M
        p->mark = _mark;
14726
1.29M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14727
1.29M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '(' arguments? ')'"));
14728
1.29M
    }
14729
0
    { // primary '[' slices ']'
14730
1.29M
        if (p->error_indicator) {
14731
2.59k
            p->level--;
14732
2.59k
            return NULL;
14733
2.59k
        }
14734
1.28M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
14735
1.28M
        Token * _literal;
14736
1.28M
        Token * _literal_1;
14737
1.28M
        expr_ty a;
14738
1.28M
        expr_ty b;
14739
1.28M
        if (
14740
1.28M
            (a = primary_rule(p))  // primary
14741
485k
            &&
14742
485k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
14743
8.80k
            &&
14744
8.80k
            (b = slices_rule(p))  // slices
14745
6.78k
            &&
14746
6.78k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
14747
1.28M
        )
14748
4.88k
        {
14749
4.88k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
14750
4.88k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14751
4.88k
            if (_token == NULL) {
14752
0
                p->level--;
14753
0
                return NULL;
14754
0
            }
14755
4.88k
            int _end_lineno = _token->end_lineno;
14756
4.88k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14757
4.88k
            int _end_col_offset = _token->end_col_offset;
14758
4.88k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14759
4.88k
            _res = _PyAST_Subscript ( a , b , Load , EXTRA );
14760
4.88k
            if (_res == NULL && PyErr_Occurred()) {
14761
0
                p->error_indicator = 1;
14762
0
                p->level--;
14763
0
                return NULL;
14764
0
            }
14765
4.88k
            goto done;
14766
4.88k
        }
14767
1.28M
        p->mark = _mark;
14768
1.28M
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14769
1.28M
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '[' slices ']'"));
14770
1.28M
    }
14771
0
    { // atom
14772
1.28M
        if (p->error_indicator) {
14773
869
            p->level--;
14774
869
            return NULL;
14775
869
        }
14776
1.28M
        D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom"));
14777
1.28M
        expr_ty atom_var;
14778
1.28M
        if (
14779
1.28M
            (atom_var = atom_rule(p))  // atom
14780
1.28M
        )
14781
967k
        {
14782
967k
            D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom"));
14783
967k
            _res = atom_var;
14784
967k
            goto done;
14785
967k
        }
14786
316k
        p->mark = _mark;
14787
316k
        D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14788
316k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom"));
14789
316k
    }
14790
316k
    _res = NULL;
14791
1.34M
  done:
14792
1.34M
    p->level--;
14793
1.34M
    return _res;
14794
316k
}
14795
14796
// slices: slice !',' | ','.(slice | starred_expression)+ ','?
14797
static expr_ty
14798
slices_rule(Parser *p)
14799
18.2k
{
14800
18.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14801
0
        _Pypegen_stack_overflow(p);
14802
0
    }
14803
18.2k
    if (p->error_indicator) {
14804
0
        p->level--;
14805
0
        return NULL;
14806
0
    }
14807
18.2k
    expr_ty _res = NULL;
14808
18.2k
    int _mark = p->mark;
14809
18.2k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14810
42
        p->error_indicator = 1;
14811
42
        p->level--;
14812
42
        return NULL;
14813
42
    }
14814
18.1k
    int _start_lineno = p->tokens[_mark]->lineno;
14815
18.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14816
18.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14817
18.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14818
18.1k
    { // slice !','
14819
18.1k
        if (p->error_indicator) {
14820
0
            p->level--;
14821
0
            return NULL;
14822
0
        }
14823
18.1k
        D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice !','"));
14824
18.1k
        expr_ty a;
14825
18.1k
        if (
14826
18.1k
            (a = slice_rule(p))  // slice
14827
14.9k
            &&
14828
14.9k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
14829
18.1k
        )
14830
12.7k
        {
14831
12.7k
            D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice !','"));
14832
12.7k
            _res = a;
14833
12.7k
            if (_res == NULL && PyErr_Occurred()) {
14834
0
                p->error_indicator = 1;
14835
0
                p->level--;
14836
0
                return NULL;
14837
0
            }
14838
12.7k
            goto done;
14839
12.7k
        }
14840
5.39k
        p->mark = _mark;
14841
5.39k
        D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
14842
5.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice !','"));
14843
5.39k
    }
14844
0
    { // ','.(slice | starred_expression)+ ','?
14845
5.39k
        if (p->error_indicator) {
14846
857
            p->level--;
14847
857
            return NULL;
14848
857
        }
14849
4.54k
        D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14850
4.54k
        void *_opt_var;
14851
4.54k
        UNUSED(_opt_var); // Silence compiler warnings
14852
4.54k
        asdl_expr_seq* a;
14853
4.54k
        if (
14854
4.54k
            (a = (asdl_expr_seq*)_gather_64_rule(p))  // ','.(slice | starred_expression)+
14855
2.36k
            &&
14856
2.36k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
14857
4.54k
        )
14858
2.15k
        {
14859
2.15k
            D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14860
2.15k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14861
2.15k
            if (_token == NULL) {
14862
0
                p->level--;
14863
0
                return NULL;
14864
0
            }
14865
2.15k
            int _end_lineno = _token->end_lineno;
14866
2.15k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14867
2.15k
            int _end_col_offset = _token->end_col_offset;
14868
2.15k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14869
2.15k
            _res = _PyAST_Tuple ( a , Load , EXTRA );
14870
2.15k
            if (_res == NULL && PyErr_Occurred()) {
14871
0
                p->error_indicator = 1;
14872
0
                p->level--;
14873
0
                return NULL;
14874
0
            }
14875
2.15k
            goto done;
14876
2.15k
        }
14877
2.39k
        p->mark = _mark;
14878
2.39k
        D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
14879
2.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14880
2.39k
    }
14881
2.39k
    _res = NULL;
14882
17.3k
  done:
14883
17.3k
    p->level--;
14884
17.3k
    return _res;
14885
2.39k
}
14886
14887
// slice: expression? ':' expression? [':' expression?] | named_expression
14888
static expr_ty
14889
slice_rule(Parser *p)
14890
39.7k
{
14891
39.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14892
1
        _Pypegen_stack_overflow(p);
14893
1
    }
14894
39.7k
    if (p->error_indicator) {
14895
1
        p->level--;
14896
1
        return NULL;
14897
1
    }
14898
39.7k
    expr_ty _res = NULL;
14899
39.7k
    int _mark = p->mark;
14900
39.7k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14901
19
        p->error_indicator = 1;
14902
19
        p->level--;
14903
19
        return NULL;
14904
19
    }
14905
39.7k
    int _start_lineno = p->tokens[_mark]->lineno;
14906
39.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
14907
39.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
14908
39.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
14909
39.7k
    { // expression? ':' expression? [':' expression?]
14910
39.7k
        if (p->error_indicator) {
14911
0
            p->level--;
14912
0
            return NULL;
14913
0
        }
14914
39.7k
        D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14915
39.7k
        Token * _literal;
14916
39.7k
        void *a;
14917
39.7k
        void *b;
14918
39.7k
        void *c;
14919
39.7k
        if (
14920
39.7k
            (a = expression_rule(p), !p->error_indicator)  // expression?
14921
39.0k
            &&
14922
39.0k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
14923
15.1k
            &&
14924
15.1k
            (b = expression_rule(p), !p->error_indicator)  // expression?
14925
14.9k
            &&
14926
14.9k
            (c = _tmp_65_rule(p), !p->error_indicator)  // [':' expression?]
14927
39.7k
        )
14928
14.7k
        {
14929
14.7k
            D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14930
14.7k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14931
14.7k
            if (_token == NULL) {
14932
0
                p->level--;
14933
0
                return NULL;
14934
0
            }
14935
14.7k
            int _end_lineno = _token->end_lineno;
14936
14.7k
            UNUSED(_end_lineno); // Only used by EXTRA macro
14937
14.7k
            int _end_col_offset = _token->end_col_offset;
14938
14.7k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
14939
14.7k
            _res = _PyAST_Slice ( a , b , c , EXTRA );
14940
14.7k
            if (_res == NULL && PyErr_Occurred()) {
14941
0
                p->error_indicator = 1;
14942
0
                p->level--;
14943
0
                return NULL;
14944
0
            }
14945
14.7k
            goto done;
14946
14.7k
        }
14947
24.9k
        p->mark = _mark;
14948
24.9k
        D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14949
24.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14950
24.9k
    }
14951
0
    { // named_expression
14952
24.9k
        if (p->error_indicator) {
14953
1.04k
            p->level--;
14954
1.04k
            return NULL;
14955
1.04k
        }
14956
23.8k
        D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
14957
23.8k
        expr_ty a;
14958
23.8k
        if (
14959
23.8k
            (a = named_expression_rule(p))  // named_expression
14960
23.8k
        )
14961
18.0k
        {
14962
18.0k
            D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
14963
18.0k
            _res = a;
14964
18.0k
            if (_res == NULL && PyErr_Occurred()) {
14965
0
                p->error_indicator = 1;
14966
0
                p->level--;
14967
0
                return NULL;
14968
0
            }
14969
18.0k
            goto done;
14970
18.0k
        }
14971
5.87k
        p->mark = _mark;
14972
5.87k
        D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14973
5.87k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
14974
5.87k
    }
14975
5.87k
    _res = NULL;
14976
38.6k
  done:
14977
38.6k
    p->level--;
14978
38.6k
    return _res;
14979
5.87k
}
14980
14981
// atom:
14982
//     | NAME
14983
//     | 'True'
14984
//     | 'False'
14985
//     | 'None'
14986
//     | &(STRING | FSTRING_START | TSTRING_START) strings
14987
//     | NUMBER
14988
//     | &'(' (tuple | group | genexp)
14989
//     | &'[' (list | listcomp)
14990
//     | &'{' (dict | set | dictcomp | setcomp)
14991
//     | '...'
14992
static expr_ty
14993
atom_rule(Parser *p)
14994
1.57M
{
14995
1.57M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
14996
0
        _Pypegen_stack_overflow(p);
14997
0
    }
14998
1.57M
    if (p->error_indicator) {
14999
0
        p->level--;
15000
0
        return NULL;
15001
0
    }
15002
1.57M
    expr_ty _res = NULL;
15003
1.57M
    int _mark = p->mark;
15004
1.57M
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15005
0
        p->error_indicator = 1;
15006
0
        p->level--;
15007
0
        return NULL;
15008
0
    }
15009
1.57M
    int _start_lineno = p->tokens[_mark]->lineno;
15010
1.57M
    UNUSED(_start_lineno); // Only used by EXTRA macro
15011
1.57M
    int _start_col_offset = p->tokens[_mark]->col_offset;
15012
1.57M
    UNUSED(_start_col_offset); // Only used by EXTRA macro
15013
1.57M
    { // NAME
15014
1.57M
        if (p->error_indicator) {
15015
0
            p->level--;
15016
0
            return NULL;
15017
0
        }
15018
1.57M
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
15019
1.57M
        expr_ty name_var;
15020
1.57M
        if (
15021
1.57M
            (name_var = _PyPegen_name_token(p))  // NAME
15022
1.57M
        )
15023
706k
        {
15024
706k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
15025
706k
            _res = name_var;
15026
706k
            goto done;
15027
706k
        }
15028
869k
        p->mark = _mark;
15029
869k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15030
869k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
15031
869k
    }
15032
0
    { // 'True'
15033
869k
        if (p->error_indicator) {
15034
1
            p->level--;
15035
1
            return NULL;
15036
1
        }
15037
869k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
15038
869k
        Token * _keyword;
15039
869k
        if (
15040
869k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
15041
869k
        )
15042
3.81k
        {
15043
3.81k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
15044
3.81k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15045
3.81k
            if (_token == NULL) {
15046
0
                p->level--;
15047
0
                return NULL;
15048
0
            }
15049
3.81k
            int _end_lineno = _token->end_lineno;
15050
3.81k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15051
3.81k
            int _end_col_offset = _token->end_col_offset;
15052
3.81k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15053
3.81k
            _res = _PyAST_Constant ( Py_True , NULL , EXTRA );
15054
3.81k
            if (_res == NULL && PyErr_Occurred()) {
15055
0
                p->error_indicator = 1;
15056
0
                p->level--;
15057
0
                return NULL;
15058
0
            }
15059
3.81k
            goto done;
15060
3.81k
        }
15061
865k
        p->mark = _mark;
15062
865k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15063
865k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
15064
865k
    }
15065
0
    { // 'False'
15066
865k
        if (p->error_indicator) {
15067
0
            p->level--;
15068
0
            return NULL;
15069
0
        }
15070
865k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
15071
865k
        Token * _keyword;
15072
865k
        if (
15073
865k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
15074
865k
        )
15075
2.67k
        {
15076
2.67k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
15077
2.67k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15078
2.67k
            if (_token == NULL) {
15079
0
                p->level--;
15080
0
                return NULL;
15081
0
            }
15082
2.67k
            int _end_lineno = _token->end_lineno;
15083
2.67k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15084
2.67k
            int _end_col_offset = _token->end_col_offset;
15085
2.67k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15086
2.67k
            _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
15087
2.67k
            if (_res == NULL && PyErr_Occurred()) {
15088
0
                p->error_indicator = 1;
15089
0
                p->level--;
15090
0
                return NULL;
15091
0
            }
15092
2.67k
            goto done;
15093
2.67k
        }
15094
863k
        p->mark = _mark;
15095
863k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15096
863k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
15097
863k
    }
15098
0
    { // 'None'
15099
863k
        if (p->error_indicator) {
15100
0
            p->level--;
15101
0
            return NULL;
15102
0
        }
15103
863k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
15104
863k
        Token * _keyword;
15105
863k
        if (
15106
863k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
15107
863k
        )
15108
9.42k
        {
15109
9.42k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
15110
9.42k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15111
9.42k
            if (_token == NULL) {
15112
0
                p->level--;
15113
0
                return NULL;
15114
0
            }
15115
9.42k
            int _end_lineno = _token->end_lineno;
15116
9.42k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15117
9.42k
            int _end_col_offset = _token->end_col_offset;
15118
9.42k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15119
9.42k
            _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
15120
9.42k
            if (_res == NULL && PyErr_Occurred()) {
15121
0
                p->error_indicator = 1;
15122
0
                p->level--;
15123
0
                return NULL;
15124
0
            }
15125
9.42k
            goto done;
15126
9.42k
        }
15127
853k
        p->mark = _mark;
15128
853k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15129
853k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
15130
853k
    }
15131
0
    { // &(STRING | FSTRING_START | TSTRING_START) strings
15132
853k
        if (p->error_indicator) {
15133
0
            p->level--;
15134
0
            return NULL;
15135
0
        }
15136
853k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15137
853k
        expr_ty strings_var;
15138
853k
        if (
15139
853k
            _PyPegen_lookahead(1, _tmp_42_rule, p)
15140
116k
            &&
15141
116k
            (strings_var = strings_rule(p))  // strings
15142
853k
        )
15143
110k
        {
15144
110k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15145
110k
            _res = strings_var;
15146
110k
            goto done;
15147
110k
        }
15148
743k
        p->mark = _mark;
15149
743k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15150
743k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&(STRING | FSTRING_START | TSTRING_START) strings"));
15151
743k
    }
15152
0
    { // NUMBER
15153
743k
        if (p->error_indicator) {
15154
4.35k
            p->level--;
15155
4.35k
            return NULL;
15156
4.35k
        }
15157
738k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
15158
738k
        expr_ty number_var;
15159
738k
        if (
15160
738k
            (number_var = _PyPegen_number_token(p))  // NUMBER
15161
738k
        )
15162
246k
        {
15163
246k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
15164
246k
            _res = number_var;
15165
246k
            goto done;
15166
246k
        }
15167
492k
        p->mark = _mark;
15168
492k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15169
492k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
15170
492k
    }
15171
0
    { // &'(' (tuple | group | genexp)
15172
492k
        if (p->error_indicator) {
15173
12
            p->level--;
15174
12
            return NULL;
15175
12
        }
15176
492k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
15177
492k
        void *_tmp_66_var;
15178
492k
        if (
15179
492k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7)  // token='('
15180
81.9k
            &&
15181
81.9k
            (_tmp_66_var = _tmp_66_rule(p))  // tuple | group | genexp
15182
492k
        )
15183
54.3k
        {
15184
54.3k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
15185
54.3k
            _res = _tmp_66_var;
15186
54.3k
            goto done;
15187
54.3k
        }
15188
438k
        p->mark = _mark;
15189
438k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15190
438k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'(' (tuple | group | genexp)"));
15191
438k
    }
15192
0
    { // &'[' (list | listcomp)
15193
438k
        if (p->error_indicator) {
15194
7.86k
            p->level--;
15195
7.86k
            return NULL;
15196
7.86k
        }
15197
430k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
15198
430k
        void *_tmp_67_var;
15199
430k
        if (
15200
430k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9)  // token='['
15201
61.6k
            &&
15202
61.6k
            (_tmp_67_var = _tmp_67_rule(p))  // list | listcomp
15203
430k
        )
15204
17.3k
        {
15205
17.3k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
15206
17.3k
            _res = _tmp_67_var;
15207
17.3k
            goto done;
15208
17.3k
        }
15209
413k
        p->mark = _mark;
15210
413k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15211
413k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'[' (list | listcomp)"));
15212
413k
    }
15213
0
    { // &'{' (dict | set | dictcomp | setcomp)
15214
413k
        if (p->error_indicator) {
15215
13.3k
            p->level--;
15216
13.3k
            return NULL;
15217
13.3k
        }
15218
399k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15219
399k
        void *_tmp_68_var;
15220
399k
        if (
15221
399k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25)  // token='{'
15222
28.5k
            &&
15223
28.5k
            (_tmp_68_var = _tmp_68_rule(p))  // dict | set | dictcomp | setcomp
15224
399k
        )
15225
8.23k
        {
15226
8.23k
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15227
8.23k
            _res = _tmp_68_var;
15228
8.23k
            goto done;
15229
8.23k
        }
15230
391k
        p->mark = _mark;
15231
391k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15232
391k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
15233
391k
    }
15234
0
    { // '...'
15235
391k
        if (p->error_indicator) {
15236
9.69k
            p->level--;
15237
9.69k
            return NULL;
15238
9.69k
        }
15239
381k
        D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
15240
381k
        Token * _literal;
15241
381k
        if (
15242
381k
            (_literal = _PyPegen_expect_token(p, 52))  // token='...'
15243
381k
        )
15244
958
        {
15245
958
            D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
15246
958
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15247
958
            if (_token == NULL) {
15248
0
                p->level--;
15249
0
                return NULL;
15250
0
            }
15251
958
            int _end_lineno = _token->end_lineno;
15252
958
            UNUSED(_end_lineno); // Only used by EXTRA macro
15253
958
            int _end_col_offset = _token->end_col_offset;
15254
958
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15255
958
            _res = _PyAST_Constant ( Py_Ellipsis , NULL , EXTRA );
15256
958
            if (_res == NULL && PyErr_Occurred()) {
15257
0
                p->error_indicator = 1;
15258
0
                p->level--;
15259
0
                return NULL;
15260
0
            }
15261
958
            goto done;
15262
958
        }
15263
380k
        p->mark = _mark;
15264
380k
        D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
15265
380k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
15266
380k
    }
15267
380k
    _res = NULL;
15268
1.54M
  done:
15269
1.54M
    p->level--;
15270
1.54M
    return _res;
15271
380k
}
15272
15273
// group: '(' (yield_expr | named_expression) ')' | invalid_group
15274
static expr_ty
15275
group_rule(Parser *p)
15276
34.3k
{
15277
34.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15278
0
        _Pypegen_stack_overflow(p);
15279
0
    }
15280
34.3k
    if (p->error_indicator) {
15281
0
        p->level--;
15282
0
        return NULL;
15283
0
    }
15284
34.3k
    expr_ty _res = NULL;
15285
34.3k
    int _mark = p->mark;
15286
34.3k
    { // '(' (yield_expr | named_expression) ')'
15287
34.3k
        if (p->error_indicator) {
15288
0
            p->level--;
15289
0
            return NULL;
15290
0
        }
15291
34.3k
        D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15292
34.3k
        Token * _literal;
15293
34.3k
        Token * _literal_1;
15294
34.3k
        void *a;
15295
34.3k
        if (
15296
34.3k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
15297
34.3k
            &&
15298
34.3k
            (a = _tmp_69_rule(p))  // yield_expr | named_expression
15299
23.4k
            &&
15300
23.4k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
15301
34.3k
        )
15302
10.0k
        {
15303
10.0k
            D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15304
10.0k
            _res = a;
15305
10.0k
            if (_res == NULL && PyErr_Occurred()) {
15306
0
                p->error_indicator = 1;
15307
0
                p->level--;
15308
0
                return NULL;
15309
0
            }
15310
10.0k
            goto done;
15311
10.0k
        }
15312
24.2k
        p->mark = _mark;
15313
24.2k
        D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
15314
24.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
15315
24.2k
    }
15316
24.2k
    if (p->call_invalid_rules) { // invalid_group
15317
8.88k
        if (p->error_indicator) {
15318
212
            p->level--;
15319
212
            return NULL;
15320
212
        }
15321
8.67k
        D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_group"));
15322
8.67k
        void *invalid_group_var;
15323
8.67k
        if (
15324
8.67k
            (invalid_group_var = invalid_group_rule(p))  // invalid_group
15325
8.67k
        )
15326
0
        {
15327
0
            D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_group"));
15328
0
            _res = invalid_group_var;
15329
0
            goto done;
15330
0
        }
15331
8.67k
        p->mark = _mark;
15332
8.67k
        D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
15333
8.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_group"));
15334
8.67k
    }
15335
24.0k
    _res = NULL;
15336
34.1k
  done:
15337
34.1k
    p->level--;
15338
34.1k
    return _res;
15339
24.0k
}
15340
15341
// lambdef: 'lambda' lambda_params? ':' expression
15342
static expr_ty
15343
lambdef_rule(Parser *p)
15344
321k
{
15345
321k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15346
0
        _Pypegen_stack_overflow(p);
15347
0
    }
15348
321k
    if (p->error_indicator) {
15349
0
        p->level--;
15350
0
        return NULL;
15351
0
    }
15352
321k
    expr_ty _res = NULL;
15353
321k
    int _mark = p->mark;
15354
321k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15355
0
        p->error_indicator = 1;
15356
0
        p->level--;
15357
0
        return NULL;
15358
0
    }
15359
321k
    int _start_lineno = p->tokens[_mark]->lineno;
15360
321k
    UNUSED(_start_lineno); // Only used by EXTRA macro
15361
321k
    int _start_col_offset = p->tokens[_mark]->col_offset;
15362
321k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
15363
321k
    { // 'lambda' lambda_params? ':' expression
15364
321k
        if (p->error_indicator) {
15365
0
            p->level--;
15366
0
            return NULL;
15367
0
        }
15368
321k
        D(fprintf(stderr, "%*c> lambdef[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15369
321k
        Token * _keyword;
15370
321k
        Token * _literal;
15371
321k
        void *a;
15372
321k
        expr_ty b;
15373
321k
        if (
15374
321k
            (_keyword = _PyPegen_expect_token(p, 622))  // token='lambda'
15375
7.87k
            &&
15376
7.87k
            (a = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
15377
6.89k
            &&
15378
6.89k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
15379
4.08k
            &&
15380
4.08k
            (b = expression_rule(p))  // expression
15381
321k
        )
15382
2.94k
        {
15383
2.94k
            D(fprintf(stderr, "%*c+ lambdef[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15384
2.94k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15385
2.94k
            if (_token == NULL) {
15386
0
                p->level--;
15387
0
                return NULL;
15388
0
            }
15389
2.94k
            int _end_lineno = _token->end_lineno;
15390
2.94k
            UNUSED(_end_lineno); // Only used by EXTRA macro
15391
2.94k
            int _end_col_offset = _token->end_col_offset;
15392
2.94k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
15393
2.94k
            _res = _PyAST_Lambda ( ( a ) ? a : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
15394
2.94k
            if (_res == NULL && PyErr_Occurred()) {
15395
0
                p->error_indicator = 1;
15396
0
                p->level--;
15397
0
                return NULL;
15398
0
            }
15399
2.94k
            goto done;
15400
2.94k
        }
15401
318k
        p->mark = _mark;
15402
318k
        D(fprintf(stderr, "%*c%s lambdef[%d-%d]: %s failed!\n", p->level, ' ',
15403
318k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' expression"));
15404
318k
    }
15405
318k
    _res = NULL;
15406
321k
  done:
15407
321k
    p->level--;
15408
321k
    return _res;
15409
318k
}
15410
15411
// lambda_params: invalid_lambda_parameters | lambda_parameters
15412
static arguments_ty
15413
lambda_params_rule(Parser *p)
15414
13.7k
{
15415
13.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15416
0
        _Pypegen_stack_overflow(p);
15417
0
    }
15418
13.7k
    if (p->error_indicator) {
15419
0
        p->level--;
15420
0
        return NULL;
15421
0
    }
15422
13.7k
    arguments_ty _res = NULL;
15423
13.7k
    int _mark = p->mark;
15424
13.7k
    if (p->call_invalid_rules) { // invalid_lambda_parameters
15425
8.49k
        if (p->error_indicator) {
15426
0
            p->level--;
15427
0
            return NULL;
15428
0
        }
15429
8.49k
        D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
15430
8.49k
        void *invalid_lambda_parameters_var;
15431
8.49k
        if (
15432
8.49k
            (invalid_lambda_parameters_var = invalid_lambda_parameters_rule(p))  // invalid_lambda_parameters
15433
8.49k
        )
15434
0
        {
15435
0
            D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
15436
0
            _res = invalid_lambda_parameters_var;
15437
0
            goto done;
15438
0
        }
15439
8.49k
        p->mark = _mark;
15440
8.49k
        D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
15441
8.49k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_parameters"));
15442
8.49k
    }
15443
13.7k
    { // lambda_parameters
15444
13.7k
        if (p->error_indicator) {
15445
682
            p->level--;
15446
682
            return NULL;
15447
682
        }
15448
13.1k
        D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
15449
13.1k
        arguments_ty lambda_parameters_var;
15450
13.1k
        if (
15451
13.1k
            (lambda_parameters_var = lambda_parameters_rule(p))  // lambda_parameters
15452
13.1k
        )
15453
6.93k
        {
15454
6.93k
            D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
15455
6.93k
            _res = lambda_parameters_var;
15456
6.93k
            goto done;
15457
6.93k
        }
15458
6.16k
        p->mark = _mark;
15459
6.16k
        D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
15460
6.16k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_parameters"));
15461
6.16k
    }
15462
6.16k
    _res = NULL;
15463
13.1k
  done:
15464
13.1k
    p->level--;
15465
13.1k
    return _res;
15466
6.16k
}
15467
15468
// lambda_parameters:
15469
//     | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
15470
//     | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
15471
//     | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
15472
//     | lambda_param_with_default+ lambda_star_etc?
15473
//     | lambda_star_etc
15474
static arguments_ty
15475
lambda_parameters_rule(Parser *p)
15476
13.1k
{
15477
13.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15478
0
        _Pypegen_stack_overflow(p);
15479
0
    }
15480
13.1k
    if (p->error_indicator) {
15481
0
        p->level--;
15482
0
        return NULL;
15483
0
    }
15484
13.1k
    arguments_ty _res = NULL;
15485
13.1k
    int _mark = p->mark;
15486
13.1k
    { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
15487
13.1k
        if (p->error_indicator) {
15488
0
            p->level--;
15489
0
            return NULL;
15490
0
        }
15491
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?"));
15492
13.1k
        asdl_arg_seq* a;
15493
13.1k
        asdl_arg_seq* b;
15494
13.1k
        asdl_seq * c;
15495
13.1k
        void *d;
15496
13.1k
        if (
15497
13.1k
            (a = lambda_slash_no_default_rule(p))  // lambda_slash_no_default
15498
829
            &&
15499
829
            (b = (asdl_arg_seq*)_loop0_70_rule(p))  // lambda_param_no_default*
15500
829
            &&
15501
829
            (c = _loop0_71_rule(p))  // lambda_param_with_default*
15502
827
            &&
15503
827
            (d = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15504
13.1k
        )
15505
748
        {
15506
748
            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?"));
15507
748
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , a , NULL , b , c , d ) );
15508
748
            if (_res == NULL && PyErr_Occurred()) {
15509
0
                p->error_indicator = 1;
15510
0
                p->level--;
15511
0
                return NULL;
15512
0
            }
15513
748
            goto done;
15514
748
        }
15515
12.3k
        p->mark = _mark;
15516
12.3k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15517
12.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?"));
15518
12.3k
    }
15519
0
    { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
15520
12.3k
        if (p->error_indicator) {
15521
93
            p->level--;
15522
93
            return NULL;
15523
93
        }
15524
12.2k
        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?"));
15525
12.2k
        SlashWithDefault* a;
15526
12.2k
        asdl_seq * b;
15527
12.2k
        void *c;
15528
12.2k
        if (
15529
12.2k
            (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
15530
1.12k
            &&
15531
1.12k
            (b = _loop0_71_rule(p))  // lambda_param_with_default*
15532
1.12k
            &&
15533
1.12k
            (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15534
12.2k
        )
15535
1.00k
        {
15536
1.00k
            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?"));
15537
1.00k
            _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , NULL , a , NULL , b , c ) );
15538
1.00k
            if (_res == NULL && PyErr_Occurred()) {
15539
0
                p->error_indicator = 1;
15540
0
                p->level--;
15541
0
                return NULL;
15542
0
            }
15543
1.00k
            goto done;
15544
1.00k
        }
15545
11.2k
        p->mark = _mark;
15546
11.2k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15547
11.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default lambda_param_with_default* lambda_star_etc?"));
15548
11.2k
    }
15549
0
    { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
15550
11.2k
        if (p->error_indicator) {
15551
372
            p->level--;
15552
372
            return NULL;
15553
372
        }
15554
10.8k
        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?"));
15555
10.8k
        asdl_arg_seq* a;
15556
10.8k
        asdl_seq * b;
15557
10.8k
        void *c;
15558
10.8k
        if (
15559
10.8k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15560
1.57k
            &&
15561
1.57k
            (b = _loop0_71_rule(p))  // lambda_param_with_default*
15562
1.57k
            &&
15563
1.57k
            (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15564
10.8k
        )
15565
1.49k
        {
15566
1.49k
            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?"));
15567
1.49k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
15568
1.49k
            if (_res == NULL && PyErr_Occurred()) {
15569
0
                p->error_indicator = 1;
15570
0
                p->level--;
15571
0
                return NULL;
15572
0
            }
15573
1.49k
            goto done;
15574
1.49k
        }
15575
9.38k
        p->mark = _mark;
15576
9.38k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15577
9.38k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?"));
15578
9.38k
    }
15579
0
    { // lambda_param_with_default+ lambda_star_etc?
15580
9.38k
        if (p->error_indicator) {
15581
86
            p->level--;
15582
86
            return NULL;
15583
86
        }
15584
9.30k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15585
9.30k
        asdl_seq * a;
15586
9.30k
        void *b;
15587
9.30k
        if (
15588
9.30k
            (a = _loop1_73_rule(p))  // lambda_param_with_default+
15589
1.79k
            &&
15590
1.79k
            (b = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
15591
9.30k
        )
15592
1.67k
        {
15593
1.67k
            D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15594
1.67k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
15595
1.67k
            if (_res == NULL && PyErr_Occurred()) {
15596
0
                p->error_indicator = 1;
15597
0
                p->level--;
15598
0
                return NULL;
15599
0
            }
15600
1.67k
            goto done;
15601
1.67k
        }
15602
7.63k
        p->mark = _mark;
15603
7.63k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15604
7.63k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
15605
7.63k
    }
15606
0
    { // lambda_star_etc
15607
7.63k
        if (p->error_indicator) {
15608
126
            p->level--;
15609
126
            return NULL;
15610
126
        }
15611
7.50k
        D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
15612
7.50k
        StarEtc* a;
15613
7.50k
        if (
15614
7.50k
            (a = lambda_star_etc_rule(p))  // lambda_star_etc
15615
7.50k
        )
15616
2.01k
        {
15617
2.01k
            D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
15618
2.01k
            _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
15619
2.01k
            if (_res == NULL && PyErr_Occurred()) {
15620
0
                p->error_indicator = 1;
15621
0
                p->level--;
15622
0
                return NULL;
15623
0
            }
15624
2.01k
            goto done;
15625
2.01k
        }
15626
5.49k
        p->mark = _mark;
15627
5.49k
        D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
15628
5.49k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_star_etc"));
15629
5.49k
    }
15630
5.49k
    _res = NULL;
15631
12.4k
  done:
15632
12.4k
    p->level--;
15633
12.4k
    return _res;
15634
5.49k
}
15635
15636
// lambda_slash_no_default:
15637
//     | lambda_param_no_default+ '/' ','
15638
//     | lambda_param_no_default+ '/' &':'
15639
static asdl_arg_seq*
15640
lambda_slash_no_default_rule(Parser *p)
15641
37.6k
{
15642
37.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15643
0
        _Pypegen_stack_overflow(p);
15644
0
    }
15645
37.6k
    if (p->error_indicator) {
15646
0
        p->level--;
15647
0
        return NULL;
15648
0
    }
15649
37.6k
    asdl_arg_seq* _res = NULL;
15650
37.6k
    int _mark = p->mark;
15651
37.6k
    { // lambda_param_no_default+ '/' ','
15652
37.6k
        if (p->error_indicator) {
15653
0
            p->level--;
15654
0
            return NULL;
15655
0
        }
15656
37.6k
        D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15657
37.6k
        Token * _literal;
15658
37.6k
        Token * _literal_1;
15659
37.6k
        asdl_arg_seq* a;
15660
37.6k
        if (
15661
37.6k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15662
6.63k
            &&
15663
6.63k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15664
2.67k
            &&
15665
2.67k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15666
37.6k
        )
15667
1.53k
        {
15668
1.53k
            D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15669
1.53k
            _res = a;
15670
1.53k
            if (_res == NULL && PyErr_Occurred()) {
15671
0
                p->error_indicator = 1;
15672
0
                p->level--;
15673
0
                return NULL;
15674
0
            }
15675
1.53k
            goto done;
15676
1.53k
        }
15677
36.1k
        p->mark = _mark;
15678
36.1k
        D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
15679
36.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' ','"));
15680
36.1k
    }
15681
0
    { // lambda_param_no_default+ '/' &':'
15682
36.1k
        if (p->error_indicator) {
15683
14
            p->level--;
15684
14
            return NULL;
15685
14
        }
15686
36.1k
        D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
15687
36.1k
        Token * _literal;
15688
36.1k
        asdl_arg_seq* a;
15689
36.1k
        if (
15690
36.1k
            (a = (asdl_arg_seq*)_loop1_72_rule(p))  // lambda_param_no_default+
15691
5.09k
            &&
15692
5.09k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15693
1.13k
            &&
15694
1.13k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
15695
36.1k
        )
15696
1.11k
        {
15697
1.11k
            D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
15698
1.11k
            _res = a;
15699
1.11k
            if (_res == NULL && PyErr_Occurred()) {
15700
0
                p->error_indicator = 1;
15701
0
                p->level--;
15702
0
                return NULL;
15703
0
            }
15704
1.11k
            goto done;
15705
1.11k
        }
15706
35.0k
        p->mark = _mark;
15707
35.0k
        D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
15708
35.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
15709
35.0k
    }
15710
35.0k
    _res = NULL;
15711
37.6k
  done:
15712
37.6k
    p->level--;
15713
37.6k
    return _res;
15714
35.0k
}
15715
15716
// lambda_slash_with_default:
15717
//     | lambda_param_no_default* lambda_param_with_default+ '/' ','
15718
//     | lambda_param_no_default* lambda_param_with_default+ '/' &':'
15719
static SlashWithDefault*
15720
lambda_slash_with_default_rule(Parser *p)
15721
35.6k
{
15722
35.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15723
0
        _Pypegen_stack_overflow(p);
15724
0
    }
15725
35.6k
    if (p->error_indicator) {
15726
0
        p->level--;
15727
0
        return NULL;
15728
0
    }
15729
35.6k
    SlashWithDefault* _res = NULL;
15730
35.6k
    int _mark = p->mark;
15731
35.6k
    { // lambda_param_no_default* lambda_param_with_default+ '/' ','
15732
35.6k
        if (p->error_indicator) {
15733
0
            p->level--;
15734
0
            return NULL;
15735
0
        }
15736
35.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+ '/' ','"));
15737
35.6k
        Token * _literal;
15738
35.6k
        Token * _literal_1;
15739
35.6k
        asdl_seq * a;
15740
35.6k
        asdl_seq * b;
15741
35.6k
        if (
15742
35.6k
            (a = _loop0_70_rule(p))  // lambda_param_no_default*
15743
35.6k
            &&
15744
35.6k
            (b = _loop1_73_rule(p))  // lambda_param_with_default+
15745
9.82k
            &&
15746
9.82k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15747
3.26k
            &&
15748
3.26k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15749
35.6k
        )
15750
2.18k
        {
15751
2.18k
            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+ '/' ','"));
15752
2.18k
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
15753
2.18k
            if (_res == NULL && PyErr_Occurred()) {
15754
0
                p->error_indicator = 1;
15755
0
                p->level--;
15756
0
                return NULL;
15757
0
            }
15758
2.18k
            goto done;
15759
2.18k
        }
15760
33.4k
        p->mark = _mark;
15761
33.4k
        D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
15762
33.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' ','"));
15763
33.4k
    }
15764
0
    { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
15765
33.4k
        if (p->error_indicator) {
15766
566
            p->level--;
15767
566
            return NULL;
15768
566
        }
15769
32.8k
        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+ '/' &':'"));
15770
32.8k
        Token * _literal;
15771
32.8k
        asdl_seq * a;
15772
32.8k
        asdl_seq * b;
15773
32.8k
        if (
15774
32.8k
            (a = _loop0_70_rule(p))  // lambda_param_no_default*
15775
32.8k
            &&
15776
32.8k
            (b = _loop1_73_rule(p))  // lambda_param_with_default+
15777
7.63k
            &&
15778
7.63k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
15779
1.08k
            &&
15780
1.08k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
15781
32.8k
        )
15782
1.05k
        {
15783
1.05k
            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+ '/' &':'"));
15784
1.05k
            _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
15785
1.05k
            if (_res == NULL && PyErr_Occurred()) {
15786
0
                p->error_indicator = 1;
15787
0
                p->level--;
15788
0
                return NULL;
15789
0
            }
15790
1.05k
            goto done;
15791
1.05k
        }
15792
31.8k
        p->mark = _mark;
15793
31.8k
        D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
15794
31.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' &':'"));
15795
31.8k
    }
15796
31.8k
    _res = NULL;
15797
35.0k
  done:
15798
35.0k
    p->level--;
15799
35.0k
    return _res;
15800
31.8k
}
15801
15802
// lambda_star_etc:
15803
//     | invalid_lambda_star_etc
15804
//     | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
15805
//     | '*' ',' lambda_param_maybe_default+ lambda_kwds?
15806
//     | lambda_kwds
15807
static StarEtc*
15808
lambda_star_etc_rule(Parser *p)
15809
12.8k
{
15810
12.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15811
0
        _Pypegen_stack_overflow(p);
15812
0
    }
15813
12.8k
    if (p->error_indicator) {
15814
194
        p->level--;
15815
194
        return NULL;
15816
194
    }
15817
12.6k
    StarEtc* _res = NULL;
15818
12.6k
    int _mark = p->mark;
15819
12.6k
    if (p->call_invalid_rules) { // invalid_lambda_star_etc
15820
7.81k
        if (p->error_indicator) {
15821
0
            p->level--;
15822
0
            return NULL;
15823
0
        }
15824
7.81k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
15825
7.81k
        void *invalid_lambda_star_etc_var;
15826
7.81k
        if (
15827
7.81k
            (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p))  // invalid_lambda_star_etc
15828
7.81k
        )
15829
0
        {
15830
0
            D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
15831
0
            _res = invalid_lambda_star_etc_var;
15832
0
            goto done;
15833
0
        }
15834
7.81k
        p->mark = _mark;
15835
7.81k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15836
7.81k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_star_etc"));
15837
7.81k
    }
15838
12.6k
    { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
15839
12.6k
        if (p->error_indicator) {
15840
17
            p->level--;
15841
17
            return NULL;
15842
17
        }
15843
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?"));
15844
12.6k
        Token * _literal;
15845
12.6k
        arg_ty a;
15846
12.6k
        asdl_seq * b;
15847
12.6k
        void *c;
15848
12.6k
        if (
15849
12.6k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
15850
4.43k
            &&
15851
4.43k
            (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
15852
1.51k
            &&
15853
1.51k
            (b = _loop0_74_rule(p))  // lambda_param_maybe_default*
15854
1.51k
            &&
15855
1.51k
            (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
15856
12.6k
        )
15857
1.48k
        {
15858
1.48k
            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?"));
15859
1.48k
            _res = _PyPegen_star_etc ( p , a , b , c );
15860
1.48k
            if (_res == NULL && PyErr_Occurred()) {
15861
0
                p->error_indicator = 1;
15862
0
                p->level--;
15863
0
                return NULL;
15864
0
            }
15865
1.48k
            goto done;
15866
1.48k
        }
15867
11.1k
        p->mark = _mark;
15868
11.1k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15869
11.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?"));
15870
11.1k
    }
15871
0
    { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
15872
11.1k
        if (p->error_indicator) {
15873
47
            p->level--;
15874
47
            return NULL;
15875
47
        }
15876
11.0k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15877
11.0k
        Token * _literal;
15878
11.0k
        Token * _literal_1;
15879
11.0k
        asdl_seq * b;
15880
11.0k
        void *c;
15881
11.0k
        if (
15882
11.0k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
15883
2.91k
            &&
15884
2.91k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15885
2.49k
            &&
15886
2.49k
            (b = _loop1_75_rule(p))  // lambda_param_maybe_default+
15887
343
            &&
15888
343
            (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
15889
11.0k
        )
15890
342
        {
15891
342
            D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15892
342
            _res = _PyPegen_star_etc ( p , NULL , b , c );
15893
342
            if (_res == NULL && PyErr_Occurred()) {
15894
0
                p->error_indicator = 1;
15895
0
                p->level--;
15896
0
                return NULL;
15897
0
            }
15898
342
            goto done;
15899
342
        }
15900
10.7k
        p->mark = _mark;
15901
10.7k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15902
10.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15903
10.7k
    }
15904
0
    { // lambda_kwds
15905
10.7k
        if (p->error_indicator) {
15906
476
            p->level--;
15907
476
            return NULL;
15908
476
        }
15909
10.2k
        D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
15910
10.2k
        arg_ty a;
15911
10.2k
        if (
15912
10.2k
            (a = lambda_kwds_rule(p))  // lambda_kwds
15913
10.2k
        )
15914
388
        {
15915
388
            D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
15916
388
            _res = _PyPegen_star_etc ( p , NULL , NULL , a );
15917
388
            if (_res == NULL && PyErr_Occurred()) {
15918
0
                p->error_indicator = 1;
15919
0
                p->level--;
15920
0
                return NULL;
15921
0
            }
15922
388
            goto done;
15923
388
        }
15924
9.88k
        p->mark = _mark;
15925
9.88k
        D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15926
9.88k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_kwds"));
15927
9.88k
    }
15928
9.88k
    _res = NULL;
15929
12.0k
  done:
15930
12.0k
    p->level--;
15931
12.0k
    return _res;
15932
9.88k
}
15933
15934
// lambda_kwds: invalid_lambda_kwds | '**' lambda_param_no_default
15935
static arg_ty
15936
lambda_kwds_rule(Parser *p)
15937
12.1k
{
15938
12.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
15939
0
        _Pypegen_stack_overflow(p);
15940
0
    }
15941
12.1k
    if (p->error_indicator) {
15942
38
        p->level--;
15943
38
        return NULL;
15944
38
    }
15945
12.0k
    arg_ty _res = NULL;
15946
12.0k
    int _mark = p->mark;
15947
12.0k
    if (p->call_invalid_rules) { // invalid_lambda_kwds
15948
7.79k
        if (p->error_indicator) {
15949
0
            p->level--;
15950
0
            return NULL;
15951
0
        }
15952
7.79k
        D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_kwds"));
15953
7.79k
        void *invalid_lambda_kwds_var;
15954
7.79k
        if (
15955
7.79k
            (invalid_lambda_kwds_var = invalid_lambda_kwds_rule(p))  // invalid_lambda_kwds
15956
7.79k
        )
15957
0
        {
15958
0
            D(fprintf(stderr, "%*c+ lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_kwds"));
15959
0
            _res = invalid_lambda_kwds_var;
15960
0
            goto done;
15961
0
        }
15962
7.79k
        p->mark = _mark;
15963
7.79k
        D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
15964
7.79k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_kwds"));
15965
7.79k
    }
15966
12.0k
    { // '**' lambda_param_no_default
15967
12.0k
        if (p->error_indicator) {
15968
5
            p->level--;
15969
5
            return NULL;
15970
5
        }
15971
12.0k
        D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
15972
12.0k
        Token * _literal;
15973
12.0k
        arg_ty a;
15974
12.0k
        if (
15975
12.0k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
15976
423
            &&
15977
423
            (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
15978
12.0k
        )
15979
388
        {
15980
388
            D(fprintf(stderr, "%*c+ lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
15981
388
            _res = a;
15982
388
            if (_res == NULL && PyErr_Occurred()) {
15983
0
                p->error_indicator = 1;
15984
0
                p->level--;
15985
0
                return NULL;
15986
0
            }
15987
388
            goto done;
15988
388
        }
15989
11.7k
        p->mark = _mark;
15990
11.7k
        D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
15991
11.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param_no_default"));
15992
11.7k
    }
15993
11.7k
    _res = NULL;
15994
12.0k
  done:
15995
12.0k
    p->level--;
15996
12.0k
    return _res;
15997
11.7k
}
15998
15999
// lambda_param_no_default: lambda_param ',' | lambda_param &':'
16000
static arg_ty
16001
lambda_param_no_default_rule(Parser *p)
16002
383k
{
16003
383k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16004
0
        _Pypegen_stack_overflow(p);
16005
0
    }
16006
383k
    if (p->error_indicator) {
16007
0
        p->level--;
16008
0
        return NULL;
16009
0
    }
16010
383k
    arg_ty _res = NULL;
16011
383k
    int _mark = p->mark;
16012
383k
    { // lambda_param ','
16013
383k
        if (p->error_indicator) {
16014
0
            p->level--;
16015
0
            return NULL;
16016
0
        }
16017
383k
        D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
16018
383k
        Token * _literal;
16019
383k
        arg_ty a;
16020
383k
        if (
16021
383k
            (a = lambda_param_rule(p))  // lambda_param
16022
267k
            &&
16023
267k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
16024
383k
        )
16025
191k
        {
16026
191k
            D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
16027
191k
            _res = a;
16028
191k
            if (_res == NULL && PyErr_Occurred()) {
16029
0
                p->error_indicator = 1;
16030
0
                p->level--;
16031
0
                return NULL;
16032
0
            }
16033
191k
            goto done;
16034
191k
        }
16035
191k
        p->mark = _mark;
16036
191k
        D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
16037
191k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param ','"));
16038
191k
    }
16039
0
    { // lambda_param &':'
16040
191k
        if (p->error_indicator) {
16041
25
            p->level--;
16042
25
            return NULL;
16043
25
        }
16044
191k
        D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
16045
191k
        arg_ty a;
16046
191k
        if (
16047
191k
            (a = lambda_param_rule(p))  // lambda_param
16048
76.0k
            &&
16049
76.0k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16050
191k
        )
16051
13.9k
        {
16052
13.9k
            D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
16053
13.9k
            _res = a;
16054
13.9k
            if (_res == NULL && PyErr_Occurred()) {
16055
0
                p->error_indicator = 1;
16056
0
                p->level--;
16057
0
                return NULL;
16058
0
            }
16059
13.9k
            goto done;
16060
13.9k
        }
16061
177k
        p->mark = _mark;
16062
177k
        D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
16063
177k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param &':'"));
16064
177k
    }
16065
177k
    _res = NULL;
16066
383k
  done:
16067
383k
    p->level--;
16068
383k
    return _res;
16069
177k
}
16070
16071
// lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
16072
static NameDefaultPair*
16073
lambda_param_with_default_rule(Parser *p)
16074
117k
{
16075
117k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16076
0
        _Pypegen_stack_overflow(p);
16077
0
    }
16078
117k
    if (p->error_indicator) {
16079
0
        p->level--;
16080
0
        return NULL;
16081
0
    }
16082
117k
    NameDefaultPair* _res = NULL;
16083
117k
    int _mark = p->mark;
16084
117k
    { // lambda_param default ','
16085
117k
        if (p->error_indicator) {
16086
0
            p->level--;
16087
0
            return NULL;
16088
0
        }
16089
117k
        D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
16090
117k
        Token * _literal;
16091
117k
        arg_ty a;
16092
117k
        expr_ty c;
16093
117k
        if (
16094
117k
            (a = lambda_param_rule(p))  // lambda_param
16095
40.3k
            &&
16096
40.3k
            (c = default_rule(p))  // default
16097
29.4k
            &&
16098
29.4k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
16099
117k
        )
16100
19.7k
        {
16101
19.7k
            D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
16102
19.7k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16103
19.7k
            if (_res == NULL && PyErr_Occurred()) {
16104
0
                p->error_indicator = 1;
16105
0
                p->level--;
16106
0
                return NULL;
16107
0
            }
16108
19.7k
            goto done;
16109
19.7k
        }
16110
97.6k
        p->mark = _mark;
16111
97.6k
        D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
16112
97.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default ','"));
16113
97.6k
    }
16114
0
    { // lambda_param default &':'
16115
97.6k
        if (p->error_indicator) {
16116
758
            p->level--;
16117
758
            return NULL;
16118
758
        }
16119
96.8k
        D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
16120
96.8k
        arg_ty a;
16121
96.8k
        expr_ty c;
16122
96.8k
        if (
16123
96.8k
            (a = lambda_param_rule(p))  // lambda_param
16124
19.8k
            &&
16125
19.8k
            (c = default_rule(p))  // default
16126
9.65k
            &&
16127
9.65k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16128
96.8k
        )
16129
8.86k
        {
16130
8.86k
            D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
16131
8.86k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16132
8.86k
            if (_res == NULL && PyErr_Occurred()) {
16133
0
                p->error_indicator = 1;
16134
0
                p->level--;
16135
0
                return NULL;
16136
0
            }
16137
8.86k
            goto done;
16138
8.86k
        }
16139
87.9k
        p->mark = _mark;
16140
87.9k
        D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
16141
87.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default &':'"));
16142
87.9k
    }
16143
87.9k
    _res = NULL;
16144
116k
  done:
16145
116k
    p->level--;
16146
116k
    return _res;
16147
87.9k
}
16148
16149
// lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
16150
static NameDefaultPair*
16151
lambda_param_maybe_default_rule(Parser *p)
16152
55.4k
{
16153
55.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16154
0
        _Pypegen_stack_overflow(p);
16155
0
    }
16156
55.4k
    if (p->error_indicator) {
16157
0
        p->level--;
16158
0
        return NULL;
16159
0
    }
16160
55.4k
    NameDefaultPair* _res = NULL;
16161
55.4k
    int _mark = p->mark;
16162
55.4k
    { // lambda_param default? ','
16163
55.4k
        if (p->error_indicator) {
16164
0
            p->level--;
16165
0
            return NULL;
16166
0
        }
16167
55.4k
        D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
16168
55.4k
        Token * _literal;
16169
55.4k
        arg_ty a;
16170
55.4k
        void *c;
16171
55.4k
        if (
16172
55.4k
            (a = lambda_param_rule(p))  // lambda_param
16173
37.7k
            &&
16174
37.7k
            (c = default_rule(p), !p->error_indicator)  // default?
16175
36.8k
            &&
16176
36.8k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
16177
55.4k
        )
16178
26.7k
        {
16179
26.7k
            D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
16180
26.7k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16181
26.7k
            if (_res == NULL && PyErr_Occurred()) {
16182
0
                p->error_indicator = 1;
16183
0
                p->level--;
16184
0
                return NULL;
16185
0
            }
16186
26.7k
            goto done;
16187
26.7k
        }
16188
28.7k
        p->mark = _mark;
16189
28.7k
        D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
16190
28.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? ','"));
16191
28.7k
    }
16192
0
    { // lambda_param default? &':'
16193
28.7k
        if (p->error_indicator) {
16194
855
            p->level--;
16195
855
            return NULL;
16196
855
        }
16197
27.8k
        D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
16198
27.8k
        arg_ty a;
16199
27.8k
        void *c;
16200
27.8k
        if (
16201
27.8k
            (a = lambda_param_rule(p))  // lambda_param
16202
10.1k
            &&
16203
10.1k
            (c = default_rule(p), !p->error_indicator)  // default?
16204
10.1k
            &&
16205
10.1k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
16206
27.8k
        )
16207
2.83k
        {
16208
2.83k
            D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
16209
2.83k
            _res = _PyPegen_name_default_pair ( p , a , c , NULL );
16210
2.83k
            if (_res == NULL && PyErr_Occurred()) {
16211
0
                p->error_indicator = 1;
16212
0
                p->level--;
16213
0
                return NULL;
16214
0
            }
16215
2.83k
            goto done;
16216
2.83k
        }
16217
25.0k
        p->mark = _mark;
16218
25.0k
        D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
16219
25.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? &':'"));
16220
25.0k
    }
16221
25.0k
    _res = NULL;
16222
54.5k
  done:
16223
54.5k
    p->level--;
16224
54.5k
    return _res;
16225
25.0k
}
16226
16227
// lambda_param: NAME
16228
static arg_ty
16229
lambda_param_rule(Parser *p)
16230
879k
{
16231
879k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16232
0
        _Pypegen_stack_overflow(p);
16233
0
    }
16234
879k
    if (p->error_indicator) {
16235
0
        p->level--;
16236
0
        return NULL;
16237
0
    }
16238
879k
    arg_ty _res = NULL;
16239
879k
    int _mark = p->mark;
16240
879k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16241
55
        p->error_indicator = 1;
16242
55
        p->level--;
16243
55
        return NULL;
16244
55
    }
16245
879k
    int _start_lineno = p->tokens[_mark]->lineno;
16246
879k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16247
879k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16248
879k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16249
879k
    { // NAME
16250
879k
        if (p->error_indicator) {
16251
0
            p->level--;
16252
0
            return NULL;
16253
0
        }
16254
879k
        D(fprintf(stderr, "%*c> lambda_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
16255
879k
        expr_ty a;
16256
879k
        if (
16257
879k
            (a = _PyPegen_name_token(p))  // NAME
16258
879k
        )
16259
457k
        {
16260
457k
            D(fprintf(stderr, "%*c+ lambda_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
16261
457k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16262
457k
            if (_token == NULL) {
16263
0
                p->level--;
16264
0
                return NULL;
16265
0
            }
16266
457k
            int _end_lineno = _token->end_lineno;
16267
457k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16268
457k
            int _end_col_offset = _token->end_col_offset;
16269
457k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16270
457k
            _res = _PyAST_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
16271
457k
            if (_res == NULL && PyErr_Occurred()) {
16272
0
                p->error_indicator = 1;
16273
0
                p->level--;
16274
0
                return NULL;
16275
0
            }
16276
457k
            goto done;
16277
457k
        }
16278
421k
        p->mark = _mark;
16279
421k
        D(fprintf(stderr, "%*c%s lambda_param[%d-%d]: %s failed!\n", p->level, ' ',
16280
421k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
16281
421k
    }
16282
421k
    _res = NULL;
16283
879k
  done:
16284
879k
    p->level--;
16285
879k
    return _res;
16286
421k
}
16287
16288
// fstring_middle: fstring_replacement_field | FSTRING_MIDDLE
16289
static expr_ty
16290
fstring_middle_rule(Parser *p)
16291
59.5k
{
16292
59.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16293
1
        _Pypegen_stack_overflow(p);
16294
1
    }
16295
59.5k
    if (p->error_indicator) {
16296
1
        p->level--;
16297
1
        return NULL;
16298
1
    }
16299
59.5k
    expr_ty _res = NULL;
16300
59.5k
    int _mark = p->mark;
16301
59.5k
    { // fstring_replacement_field
16302
59.5k
        if (p->error_indicator) {
16303
0
            p->level--;
16304
0
            return NULL;
16305
0
        }
16306
59.5k
        D(fprintf(stderr, "%*c> fstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16307
59.5k
        expr_ty fstring_replacement_field_var;
16308
59.5k
        if (
16309
59.5k
            (fstring_replacement_field_var = fstring_replacement_field_rule(p))  // fstring_replacement_field
16310
59.5k
        )
16311
17.0k
        {
16312
17.0k
            D(fprintf(stderr, "%*c+ fstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16313
17.0k
            _res = fstring_replacement_field_var;
16314
17.0k
            goto done;
16315
17.0k
        }
16316
42.5k
        p->mark = _mark;
16317
42.5k
        D(fprintf(stderr, "%*c%s fstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
16318
42.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_replacement_field"));
16319
42.5k
    }
16320
0
    { // FSTRING_MIDDLE
16321
42.5k
        if (p->error_indicator) {
16322
2.33k
            p->level--;
16323
2.33k
            return NULL;
16324
2.33k
        }
16325
40.1k
        D(fprintf(stderr, "%*c> fstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16326
40.1k
        Token * t;
16327
40.1k
        if (
16328
40.1k
            (t = _PyPegen_expect_token(p, FSTRING_MIDDLE))  // token='FSTRING_MIDDLE'
16329
40.1k
        )
16330
25.4k
        {
16331
25.4k
            D(fprintf(stderr, "%*c+ fstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16332
25.4k
            _res = _PyPegen_constant_from_token ( p , t );
16333
25.4k
            if (_res == NULL && PyErr_Occurred()) {
16334
5
                p->error_indicator = 1;
16335
5
                p->level--;
16336
5
                return NULL;
16337
5
            }
16338
25.4k
            goto done;
16339
25.4k
        }
16340
14.7k
        p->mark = _mark;
16341
14.7k
        D(fprintf(stderr, "%*c%s fstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
16342
14.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_MIDDLE"));
16343
14.7k
    }
16344
14.7k
    _res = NULL;
16345
57.1k
  done:
16346
57.1k
    p->level--;
16347
57.1k
    return _res;
16348
14.7k
}
16349
16350
// fstring_replacement_field:
16351
//     | '{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'
16352
//     | invalid_fstring_replacement_field
16353
static expr_ty
16354
fstring_replacement_field_rule(Parser *p)
16355
66.3k
{
16356
66.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16357
2
        _Pypegen_stack_overflow(p);
16358
2
    }
16359
66.3k
    if (p->error_indicator) {
16360
2
        p->level--;
16361
2
        return NULL;
16362
2
    }
16363
66.3k
    expr_ty _res = NULL;
16364
66.3k
    int _mark = p->mark;
16365
66.3k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16366
145
        p->error_indicator = 1;
16367
145
        p->level--;
16368
145
        return NULL;
16369
145
    }
16370
66.1k
    int _start_lineno = p->tokens[_mark]->lineno;
16371
66.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16372
66.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16373
66.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16374
66.1k
    { // '{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'
16375
66.1k
        if (p->error_indicator) {
16376
0
            p->level--;
16377
0
            return NULL;
16378
0
        }
16379
66.1k
        D(fprintf(stderr, "%*c> fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'"));
16380
66.1k
        Token * _literal;
16381
66.1k
        expr_ty a;
16382
66.1k
        void *conversion;
16383
66.1k
        void *debug_expr;
16384
66.1k
        void *format;
16385
66.1k
        Token * rbrace;
16386
66.1k
        if (
16387
66.1k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16388
24.3k
            &&
16389
24.3k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16390
21.8k
            &&
16391
21.8k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16392
21.8k
            &&
16393
21.8k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16394
21.8k
            &&
16395
21.8k
            (format = fstring_full_format_spec_rule(p), !p->error_indicator)  // fstring_full_format_spec?
16396
21.4k
            &&
16397
21.4k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16398
66.1k
        )
16399
20.2k
        {
16400
20.2k
            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? '}'"));
16401
20.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16402
20.2k
            if (_token == NULL) {
16403
0
                p->level--;
16404
0
                return NULL;
16405
0
            }
16406
20.2k
            int _end_lineno = _token->end_lineno;
16407
20.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16408
20.2k
            int _end_col_offset = _token->end_col_offset;
16409
20.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16410
20.2k
            _res = _PyPegen_formatted_value ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16411
20.2k
            if (_res == NULL && PyErr_Occurred()) {
16412
1
                p->error_indicator = 1;
16413
1
                p->level--;
16414
1
                return NULL;
16415
1
            }
16416
20.2k
            goto done;
16417
20.2k
        }
16418
45.9k
        p->mark = _mark;
16419
45.9k
        D(fprintf(stderr, "%*c%s fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16420
45.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? fstring_full_format_spec? '}'"));
16421
45.9k
    }
16422
45.9k
    if (p->call_invalid_rules) { // invalid_fstring_replacement_field
16423
11.4k
        if (p->error_indicator) {
16424
1.36k
            p->level--;
16425
1.36k
            return NULL;
16426
1.36k
        }
16427
10.1k
        D(fprintf(stderr, "%*c> fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_fstring_replacement_field"));
16428
10.1k
        void *invalid_fstring_replacement_field_var;
16429
10.1k
        if (
16430
10.1k
            (invalid_fstring_replacement_field_var = invalid_fstring_replacement_field_rule(p))  // invalid_fstring_replacement_field
16431
10.1k
        )
16432
0
        {
16433
0
            D(fprintf(stderr, "%*c+ fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_fstring_replacement_field"));
16434
0
            _res = invalid_fstring_replacement_field_var;
16435
0
            goto done;
16436
0
        }
16437
10.1k
        p->mark = _mark;
16438
10.1k
        D(fprintf(stderr, "%*c%s fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16439
10.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_fstring_replacement_field"));
16440
10.1k
    }
16441
44.5k
    _res = NULL;
16442
64.8k
  done:
16443
64.8k
    p->level--;
16444
64.8k
    return _res;
16445
44.5k
}
16446
16447
// fstring_conversion: "!" NAME
16448
static ResultTokenWithMetadata*
16449
fstring_conversion_rule(Parser *p)
16450
29.6k
{
16451
29.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16452
0
        _Pypegen_stack_overflow(p);
16453
0
    }
16454
29.6k
    if (p->error_indicator) {
16455
0
        p->level--;
16456
0
        return NULL;
16457
0
    }
16458
29.6k
    ResultTokenWithMetadata* _res = NULL;
16459
29.6k
    int _mark = p->mark;
16460
29.6k
    { // "!" NAME
16461
29.6k
        if (p->error_indicator) {
16462
0
            p->level--;
16463
0
            return NULL;
16464
0
        }
16465
29.6k
        D(fprintf(stderr, "%*c> fstring_conversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"!\" NAME"));
16466
29.6k
        expr_ty conv;
16467
29.6k
        Token * conv_token;
16468
29.6k
        if (
16469
29.6k
            (conv_token = _PyPegen_expect_token(p, 54))  // token='!'
16470
1.64k
            &&
16471
1.64k
            (conv = _PyPegen_name_token(p))  // NAME
16472
29.6k
        )
16473
1.59k
        {
16474
1.59k
            D(fprintf(stderr, "%*c+ fstring_conversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"!\" NAME"));
16475
1.59k
            _res = _PyPegen_check_fstring_conversion ( p , conv_token , conv );
16476
1.59k
            if (_res == NULL && PyErr_Occurred()) {
16477
16
                p->error_indicator = 1;
16478
16
                p->level--;
16479
16
                return NULL;
16480
16
            }
16481
1.57k
            goto done;
16482
1.59k
        }
16483
28.0k
        p->mark = _mark;
16484
28.0k
        D(fprintf(stderr, "%*c%s fstring_conversion[%d-%d]: %s failed!\n", p->level, ' ',
16485
28.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"!\" NAME"));
16486
28.0k
    }
16487
28.0k
    _res = NULL;
16488
29.6k
  done:
16489
29.6k
    p->level--;
16490
29.6k
    return _res;
16491
28.0k
}
16492
16493
// fstring_full_format_spec: ':' fstring_format_spec*
16494
static ResultTokenWithMetadata*
16495
fstring_full_format_spec_rule(Parser *p)
16496
21.8k
{
16497
21.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16498
0
        _Pypegen_stack_overflow(p);
16499
0
    }
16500
21.8k
    if (p->error_indicator) {
16501
0
        p->level--;
16502
0
        return NULL;
16503
0
    }
16504
21.8k
    ResultTokenWithMetadata* _res = NULL;
16505
21.8k
    int _mark = p->mark;
16506
21.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16507
2
        p->error_indicator = 1;
16508
2
        p->level--;
16509
2
        return NULL;
16510
2
    }
16511
21.8k
    int _start_lineno = p->tokens[_mark]->lineno;
16512
21.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16513
21.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16514
21.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16515
21.8k
    { // ':' fstring_format_spec*
16516
21.8k
        if (p->error_indicator) {
16517
0
            p->level--;
16518
0
            return NULL;
16519
0
        }
16520
21.8k
        D(fprintf(stderr, "%*c> fstring_full_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' fstring_format_spec*"));
16521
21.8k
        Token * colon;
16522
21.8k
        asdl_seq * spec;
16523
21.8k
        if (
16524
21.8k
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
16525
3.42k
            &&
16526
3.42k
            (spec = _loop0_76_rule(p))  // fstring_format_spec*
16527
21.8k
        )
16528
3.42k
        {
16529
3.42k
            D(fprintf(stderr, "%*c+ fstring_full_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' fstring_format_spec*"));
16530
3.42k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16531
3.42k
            if (_token == NULL) {
16532
0
                p->level--;
16533
0
                return NULL;
16534
0
            }
16535
3.42k
            int _end_lineno = _token->end_lineno;
16536
3.42k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16537
3.42k
            int _end_col_offset = _token->end_col_offset;
16538
3.42k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16539
3.42k
            _res = _PyPegen_setup_full_format_spec ( p , colon , ( asdl_expr_seq* ) spec , EXTRA );
16540
3.42k
            if (_res == NULL && PyErr_Occurred()) {
16541
0
                p->error_indicator = 1;
16542
0
                p->level--;
16543
0
                return NULL;
16544
0
            }
16545
3.42k
            goto done;
16546
3.42k
        }
16547
18.3k
        p->mark = _mark;
16548
18.3k
        D(fprintf(stderr, "%*c%s fstring_full_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16549
18.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' fstring_format_spec*"));
16550
18.3k
    }
16551
18.3k
    _res = NULL;
16552
21.8k
  done:
16553
21.8k
    p->level--;
16554
21.8k
    return _res;
16555
18.3k
}
16556
16557
// fstring_format_spec: FSTRING_MIDDLE | fstring_replacement_field
16558
static expr_ty
16559
fstring_format_spec_rule(Parser *p)
16560
12.8k
{
16561
12.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16562
0
        _Pypegen_stack_overflow(p);
16563
0
    }
16564
12.8k
    if (p->error_indicator) {
16565
0
        p->level--;
16566
0
        return NULL;
16567
0
    }
16568
12.8k
    expr_ty _res = NULL;
16569
12.8k
    int _mark = p->mark;
16570
12.8k
    { // FSTRING_MIDDLE
16571
12.8k
        if (p->error_indicator) {
16572
0
            p->level--;
16573
0
            return NULL;
16574
0
        }
16575
12.8k
        D(fprintf(stderr, "%*c> fstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16576
12.8k
        Token * t;
16577
12.8k
        if (
16578
12.8k
            (t = _PyPegen_expect_token(p, FSTRING_MIDDLE))  // token='FSTRING_MIDDLE'
16579
12.8k
        )
16580
5.98k
        {
16581
5.98k
            D(fprintf(stderr, "%*c+ fstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_MIDDLE"));
16582
5.98k
            _res = _PyPegen_decoded_constant_from_token ( p , t );
16583
5.98k
            if (_res == NULL && PyErr_Occurred()) {
16584
1
                p->error_indicator = 1;
16585
1
                p->level--;
16586
1
                return NULL;
16587
1
            }
16588
5.98k
            goto done;
16589
5.98k
        }
16590
6.84k
        p->mark = _mark;
16591
6.84k
        D(fprintf(stderr, "%*c%s fstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16592
6.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_MIDDLE"));
16593
6.84k
    }
16594
0
    { // fstring_replacement_field
16595
6.84k
        if (p->error_indicator) {
16596
13
            p->level--;
16597
13
            return NULL;
16598
13
        }
16599
6.83k
        D(fprintf(stderr, "%*c> fstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16600
6.83k
        expr_ty fstring_replacement_field_var;
16601
6.83k
        if (
16602
6.83k
            (fstring_replacement_field_var = fstring_replacement_field_rule(p))  // fstring_replacement_field
16603
6.83k
        )
16604
3.28k
        {
16605
3.28k
            D(fprintf(stderr, "%*c+ fstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring_replacement_field"));
16606
3.28k
            _res = fstring_replacement_field_var;
16607
3.28k
            goto done;
16608
3.28k
        }
16609
3.54k
        p->mark = _mark;
16610
3.54k
        D(fprintf(stderr, "%*c%s fstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16611
3.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_replacement_field"));
16612
3.54k
    }
16613
3.54k
    _res = NULL;
16614
12.8k
  done:
16615
12.8k
    p->level--;
16616
12.8k
    return _res;
16617
3.54k
}
16618
16619
// fstring: FSTRING_START fstring_middle* FSTRING_END
16620
static expr_ty
16621
fstring_rule(Parser *p)
16622
217k
{
16623
217k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16624
1
        _Pypegen_stack_overflow(p);
16625
1
    }
16626
217k
    if (p->error_indicator) {
16627
1
        p->level--;
16628
1
        return NULL;
16629
1
    }
16630
217k
    expr_ty _res = NULL;
16631
217k
    int _mark = p->mark;
16632
217k
    { // FSTRING_START fstring_middle* FSTRING_END
16633
217k
        if (p->error_indicator) {
16634
0
            p->level--;
16635
0
            return NULL;
16636
0
        }
16637
217k
        D(fprintf(stderr, "%*c> fstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16638
217k
        Token * a;
16639
217k
        asdl_seq * b;
16640
217k
        Token * c;
16641
217k
        if (
16642
217k
            (a = _PyPegen_expect_token(p, FSTRING_START))  // token='FSTRING_START'
16643
17.0k
            &&
16644
17.0k
            (b = _loop0_77_rule(p))  // fstring_middle*
16645
17.0k
            &&
16646
17.0k
            (c = _PyPegen_expect_token(p, FSTRING_END))  // token='FSTRING_END'
16647
217k
        )
16648
13.3k
        {
16649
13.3k
            D(fprintf(stderr, "%*c+ fstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16650
13.3k
            _res = _PyPegen_joined_str ( p , a , ( asdl_expr_seq* ) b , c );
16651
13.3k
            if (_res == NULL && PyErr_Occurred()) {
16652
0
                p->error_indicator = 1;
16653
0
                p->level--;
16654
0
                return NULL;
16655
0
            }
16656
13.3k
            goto done;
16657
13.3k
        }
16658
203k
        p->mark = _mark;
16659
203k
        D(fprintf(stderr, "%*c%s fstring[%d-%d]: %s failed!\n", p->level, ' ',
16660
203k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_START fstring_middle* FSTRING_END"));
16661
203k
    }
16662
203k
    _res = NULL;
16663
217k
  done:
16664
217k
    p->level--;
16665
217k
    return _res;
16666
203k
}
16667
16668
// tstring_format_spec_replacement_field:
16669
//     | '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16670
//     | invalid_tstring_replacement_field
16671
static expr_ty
16672
tstring_format_spec_replacement_field_rule(Parser *p)
16673
3.68k
{
16674
3.68k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16675
0
        _Pypegen_stack_overflow(p);
16676
0
    }
16677
3.68k
    if (p->error_indicator) {
16678
0
        p->level--;
16679
0
        return NULL;
16680
0
    }
16681
3.68k
    expr_ty _res = NULL;
16682
3.68k
    int _mark = p->mark;
16683
3.68k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16684
0
        p->error_indicator = 1;
16685
0
        p->level--;
16686
0
        return NULL;
16687
0
    }
16688
3.68k
    int _start_lineno = p->tokens[_mark]->lineno;
16689
3.68k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16690
3.68k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16691
3.68k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16692
3.68k
    { // '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16693
3.68k
        if (p->error_indicator) {
16694
0
            p->level--;
16695
0
            return NULL;
16696
0
        }
16697
3.68k
        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? '}'"));
16698
3.68k
        Token * _literal;
16699
3.68k
        expr_ty a;
16700
3.68k
        void *conversion;
16701
3.68k
        void *debug_expr;
16702
3.68k
        void *format;
16703
3.68k
        Token * rbrace;
16704
3.68k
        if (
16705
3.68k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16706
2.12k
            &&
16707
2.12k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16708
1.33k
            &&
16709
1.33k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16710
1.33k
            &&
16711
1.33k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16712
1.33k
            &&
16713
1.33k
            (format = tstring_full_format_spec_rule(p), !p->error_indicator)  // tstring_full_format_spec?
16714
1.14k
            &&
16715
1.14k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16716
3.68k
        )
16717
902
        {
16718
902
            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? '}'"));
16719
902
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16720
902
            if (_token == NULL) {
16721
0
                p->level--;
16722
0
                return NULL;
16723
0
            }
16724
902
            int _end_lineno = _token->end_lineno;
16725
902
            UNUSED(_end_lineno); // Only used by EXTRA macro
16726
902
            int _end_col_offset = _token->end_col_offset;
16727
902
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16728
902
            _res = _PyPegen_formatted_value ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16729
902
            if (_res == NULL && PyErr_Occurred()) {
16730
1
                p->error_indicator = 1;
16731
1
                p->level--;
16732
1
                return NULL;
16733
1
            }
16734
901
            goto done;
16735
902
        }
16736
2.78k
        p->mark = _mark;
16737
2.78k
        D(fprintf(stderr, "%*c%s tstring_format_spec_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16738
2.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16739
2.78k
    }
16740
2.78k
    if (p->call_invalid_rules) { // invalid_tstring_replacement_field
16741
1.11k
        if (p->error_indicator) {
16742
430
            p->level--;
16743
430
            return NULL;
16744
430
        }
16745
680
        D(fprintf(stderr, "%*c> tstring_format_spec_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16746
680
        void *invalid_tstring_replacement_field_var;
16747
680
        if (
16748
680
            (invalid_tstring_replacement_field_var = invalid_tstring_replacement_field_rule(p))  // invalid_tstring_replacement_field
16749
680
        )
16750
0
        {
16751
0
            D(fprintf(stderr, "%*c+ tstring_format_spec_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16752
0
            _res = invalid_tstring_replacement_field_var;
16753
0
            goto done;
16754
0
        }
16755
680
        p->mark = _mark;
16756
680
        D(fprintf(stderr, "%*c%s tstring_format_spec_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16757
680
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_tstring_replacement_field"));
16758
680
    }
16759
2.35k
    _res = NULL;
16760
3.25k
  done:
16761
3.25k
    p->level--;
16762
3.25k
    return _res;
16763
2.35k
}
16764
16765
// tstring_format_spec: TSTRING_MIDDLE | tstring_format_spec_replacement_field
16766
static expr_ty
16767
tstring_format_spec_rule(Parser *p)
16768
5.89k
{
16769
5.89k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16770
0
        _Pypegen_stack_overflow(p);
16771
0
    }
16772
5.89k
    if (p->error_indicator) {
16773
0
        p->level--;
16774
0
        return NULL;
16775
0
    }
16776
5.89k
    expr_ty _res = NULL;
16777
5.89k
    int _mark = p->mark;
16778
5.89k
    { // TSTRING_MIDDLE
16779
5.89k
        if (p->error_indicator) {
16780
0
            p->level--;
16781
0
            return NULL;
16782
0
        }
16783
5.89k
        D(fprintf(stderr, "%*c> tstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
16784
5.89k
        Token * t;
16785
5.89k
        if (
16786
5.89k
            (t = _PyPegen_expect_token(p, TSTRING_MIDDLE))  // token='TSTRING_MIDDLE'
16787
5.89k
        )
16788
2.20k
        {
16789
2.20k
            D(fprintf(stderr, "%*c+ tstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
16790
2.20k
            _res = _PyPegen_decoded_constant_from_token ( p , t );
16791
2.20k
            if (_res == NULL && PyErr_Occurred()) {
16792
2
                p->error_indicator = 1;
16793
2
                p->level--;
16794
2
                return NULL;
16795
2
            }
16796
2.19k
            goto done;
16797
2.20k
        }
16798
3.69k
        p->mark = _mark;
16799
3.69k
        D(fprintf(stderr, "%*c%s tstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16800
3.69k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_MIDDLE"));
16801
3.69k
    }
16802
0
    { // tstring_format_spec_replacement_field
16803
3.69k
        if (p->error_indicator) {
16804
9
            p->level--;
16805
9
            return NULL;
16806
9
        }
16807
3.68k
        D(fprintf(stderr, "%*c> tstring_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_format_spec_replacement_field"));
16808
3.68k
        expr_ty tstring_format_spec_replacement_field_var;
16809
3.68k
        if (
16810
3.68k
            (tstring_format_spec_replacement_field_var = tstring_format_spec_replacement_field_rule(p))  // tstring_format_spec_replacement_field
16811
3.68k
        )
16812
901
        {
16813
901
            D(fprintf(stderr, "%*c+ tstring_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring_format_spec_replacement_field"));
16814
901
            _res = tstring_format_spec_replacement_field_var;
16815
901
            goto done;
16816
901
        }
16817
2.78k
        p->mark = _mark;
16818
2.78k
        D(fprintf(stderr, "%*c%s tstring_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16819
2.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_format_spec_replacement_field"));
16820
2.78k
    }
16821
2.78k
    _res = NULL;
16822
5.88k
  done:
16823
5.88k
    p->level--;
16824
5.88k
    return _res;
16825
2.78k
}
16826
16827
// tstring_full_format_spec: ':' tstring_format_spec*
16828
static ResultTokenWithMetadata*
16829
tstring_full_format_spec_rule(Parser *p)
16830
7.80k
{
16831
7.80k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16832
0
        _Pypegen_stack_overflow(p);
16833
0
    }
16834
7.80k
    if (p->error_indicator) {
16835
0
        p->level--;
16836
0
        return NULL;
16837
0
    }
16838
7.80k
    ResultTokenWithMetadata* _res = NULL;
16839
7.80k
    int _mark = p->mark;
16840
7.80k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16841
1
        p->error_indicator = 1;
16842
1
        p->level--;
16843
1
        return NULL;
16844
1
    }
16845
7.80k
    int _start_lineno = p->tokens[_mark]->lineno;
16846
7.80k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16847
7.80k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16848
7.80k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16849
7.80k
    { // ':' tstring_format_spec*
16850
7.80k
        if (p->error_indicator) {
16851
0
            p->level--;
16852
0
            return NULL;
16853
0
        }
16854
7.80k
        D(fprintf(stderr, "%*c> tstring_full_format_spec[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' tstring_format_spec*"));
16855
7.80k
        Token * colon;
16856
7.80k
        asdl_seq * spec;
16857
7.80k
        if (
16858
7.80k
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
16859
2.79k
            &&
16860
2.79k
            (spec = _loop0_78_rule(p))  // tstring_format_spec*
16861
7.80k
        )
16862
2.79k
        {
16863
2.79k
            D(fprintf(stderr, "%*c+ tstring_full_format_spec[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' tstring_format_spec*"));
16864
2.79k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16865
2.79k
            if (_token == NULL) {
16866
0
                p->level--;
16867
0
                return NULL;
16868
0
            }
16869
2.79k
            int _end_lineno = _token->end_lineno;
16870
2.79k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16871
2.79k
            int _end_col_offset = _token->end_col_offset;
16872
2.79k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16873
2.79k
            _res = _PyPegen_setup_full_format_spec ( p , colon , ( asdl_expr_seq* ) spec , EXTRA );
16874
2.79k
            if (_res == NULL && PyErr_Occurred()) {
16875
0
                p->error_indicator = 1;
16876
0
                p->level--;
16877
0
                return NULL;
16878
0
            }
16879
2.79k
            goto done;
16880
2.79k
        }
16881
5.01k
        p->mark = _mark;
16882
5.01k
        D(fprintf(stderr, "%*c%s tstring_full_format_spec[%d-%d]: %s failed!\n", p->level, ' ',
16883
5.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' tstring_format_spec*"));
16884
5.01k
    }
16885
5.01k
    _res = NULL;
16886
7.80k
  done:
16887
7.80k
    p->level--;
16888
7.80k
    return _res;
16889
5.01k
}
16890
16891
// tstring_replacement_field:
16892
//     | '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16893
//     | invalid_tstring_replacement_field
16894
static expr_ty
16895
tstring_replacement_field_rule(Parser *p)
16896
18.3k
{
16897
18.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16898
1
        _Pypegen_stack_overflow(p);
16899
1
    }
16900
18.3k
    if (p->error_indicator) {
16901
1
        p->level--;
16902
1
        return NULL;
16903
1
    }
16904
18.3k
    expr_ty _res = NULL;
16905
18.3k
    int _mark = p->mark;
16906
18.3k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16907
171
        p->error_indicator = 1;
16908
171
        p->level--;
16909
171
        return NULL;
16910
171
    }
16911
18.1k
    int _start_lineno = p->tokens[_mark]->lineno;
16912
18.1k
    UNUSED(_start_lineno); // Only used by EXTRA macro
16913
18.1k
    int _start_col_offset = p->tokens[_mark]->col_offset;
16914
18.1k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
16915
18.1k
    { // '{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'
16916
18.1k
        if (p->error_indicator) {
16917
0
            p->level--;
16918
0
            return NULL;
16919
0
        }
16920
18.1k
        D(fprintf(stderr, "%*c> tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16921
18.1k
        Token * _literal;
16922
18.1k
        expr_ty a;
16923
18.1k
        void *conversion;
16924
18.1k
        void *debug_expr;
16925
18.1k
        void *format;
16926
18.1k
        Token * rbrace;
16927
18.1k
        if (
16928
18.1k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16929
7.72k
            &&
16930
7.72k
            (a = annotated_rhs_rule(p))  // annotated_rhs
16931
6.47k
            &&
16932
6.47k
            (debug_expr = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
16933
6.47k
            &&
16934
6.47k
            (conversion = fstring_conversion_rule(p), !p->error_indicator)  // fstring_conversion?
16935
6.47k
            &&
16936
6.47k
            (format = tstring_full_format_spec_rule(p), !p->error_indicator)  // tstring_full_format_spec?
16937
6.06k
            &&
16938
6.06k
            (rbrace = _PyPegen_expect_token(p, 26))  // token='}'
16939
18.1k
        )
16940
5.40k
        {
16941
5.40k
            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? '}'"));
16942
5.40k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16943
5.40k
            if (_token == NULL) {
16944
0
                p->level--;
16945
0
                return NULL;
16946
0
            }
16947
5.40k
            int _end_lineno = _token->end_lineno;
16948
5.40k
            UNUSED(_end_lineno); // Only used by EXTRA macro
16949
5.40k
            int _end_col_offset = _token->end_col_offset;
16950
5.40k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
16951
5.40k
            _res = _PyPegen_interpolation ( p , a , debug_expr , conversion , format , rbrace , EXTRA );
16952
5.40k
            if (_res == NULL && PyErr_Occurred()) {
16953
0
                p->error_indicator = 1;
16954
0
                p->level--;
16955
0
                return NULL;
16956
0
            }
16957
5.40k
            goto done;
16958
5.40k
        }
16959
12.7k
        p->mark = _mark;
16960
12.7k
        D(fprintf(stderr, "%*c%s tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16961
12.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? fstring_conversion? tstring_full_format_spec? '}'"));
16962
12.7k
    }
16963
12.7k
    if (p->call_invalid_rules) { // invalid_tstring_replacement_field
16964
5.18k
        if (p->error_indicator) {
16965
1.09k
            p->level--;
16966
1.09k
            return NULL;
16967
1.09k
        }
16968
4.09k
        D(fprintf(stderr, "%*c> tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16969
4.09k
        void *invalid_tstring_replacement_field_var;
16970
4.09k
        if (
16971
4.09k
            (invalid_tstring_replacement_field_var = invalid_tstring_replacement_field_rule(p))  // invalid_tstring_replacement_field
16972
4.09k
        )
16973
0
        {
16974
0
            D(fprintf(stderr, "%*c+ tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_tstring_replacement_field"));
16975
0
            _res = invalid_tstring_replacement_field_var;
16976
0
            goto done;
16977
0
        }
16978
4.09k
        p->mark = _mark;
16979
4.09k
        D(fprintf(stderr, "%*c%s tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
16980
4.09k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_tstring_replacement_field"));
16981
4.09k
    }
16982
11.6k
    _res = NULL;
16983
17.0k
  done:
16984
17.0k
    p->level--;
16985
17.0k
    return _res;
16986
11.6k
}
16987
16988
// tstring_middle: tstring_replacement_field | TSTRING_MIDDLE
16989
static expr_ty
16990
tstring_middle_rule(Parser *p)
16991
18.3k
{
16992
18.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
16993
1
        _Pypegen_stack_overflow(p);
16994
1
    }
16995
18.3k
    if (p->error_indicator) {
16996
1
        p->level--;
16997
1
        return NULL;
16998
1
    }
16999
18.3k
    expr_ty _res = NULL;
17000
18.3k
    int _mark = p->mark;
17001
18.3k
    { // tstring_replacement_field
17002
18.3k
        if (p->error_indicator) {
17003
0
            p->level--;
17004
0
            return NULL;
17005
0
        }
17006
18.3k
        D(fprintf(stderr, "%*c> tstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_replacement_field"));
17007
18.3k
        expr_ty tstring_replacement_field_var;
17008
18.3k
        if (
17009
18.3k
            (tstring_replacement_field_var = tstring_replacement_field_rule(p))  // tstring_replacement_field
17010
18.3k
        )
17011
5.40k
        {
17012
5.40k
            D(fprintf(stderr, "%*c+ tstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring_replacement_field"));
17013
5.40k
            _res = tstring_replacement_field_var;
17014
5.40k
            goto done;
17015
5.40k
        }
17016
12.9k
        p->mark = _mark;
17017
12.9k
        D(fprintf(stderr, "%*c%s tstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
17018
12.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_replacement_field"));
17019
12.9k
    }
17020
0
    { // TSTRING_MIDDLE
17021
12.9k
        if (p->error_indicator) {
17022
1.56k
            p->level--;
17023
1.56k
            return NULL;
17024
1.56k
        }
17025
11.3k
        D(fprintf(stderr, "%*c> tstring_middle[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
17026
11.3k
        Token * t;
17027
11.3k
        if (
17028
11.3k
            (t = _PyPegen_expect_token(p, TSTRING_MIDDLE))  // token='TSTRING_MIDDLE'
17029
11.3k
        )
17030
6.62k
        {
17031
6.62k
            D(fprintf(stderr, "%*c+ tstring_middle[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_MIDDLE"));
17032
6.62k
            _res = _PyPegen_constant_from_token ( p , t );
17033
6.62k
            if (_res == NULL && PyErr_Occurred()) {
17034
2
                p->error_indicator = 1;
17035
2
                p->level--;
17036
2
                return NULL;
17037
2
            }
17038
6.62k
            goto done;
17039
6.62k
        }
17040
4.70k
        p->mark = _mark;
17041
4.70k
        D(fprintf(stderr, "%*c%s tstring_middle[%d-%d]: %s failed!\n", p->level, ' ',
17042
4.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_MIDDLE"));
17043
4.70k
    }
17044
4.70k
    _res = NULL;
17045
16.7k
  done:
17046
16.7k
    p->level--;
17047
16.7k
    return _res;
17048
4.70k
}
17049
17050
// tstring: TSTRING_START tstring_middle* TSTRING_END
17051
static expr_ty
17052
tstring_rule(Parser *p)
17053
89.1k
{
17054
89.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17055
0
        _Pypegen_stack_overflow(p);
17056
0
    }
17057
89.1k
    if (p->error_indicator) {
17058
3
        p->level--;
17059
3
        return NULL;
17060
3
    }
17061
89.1k
    expr_ty _res = NULL;
17062
89.1k
    if (_PyPegen_is_memoized(p, tstring_type, &_res)) {
17063
21.1k
        p->level--;
17064
21.1k
        return _res;
17065
21.1k
    }
17066
68.0k
    int _mark = p->mark;
17067
68.0k
    { // TSTRING_START tstring_middle* TSTRING_END
17068
68.0k
        if (p->error_indicator) {
17069
0
            p->level--;
17070
0
            return NULL;
17071
0
        }
17072
68.0k
        D(fprintf(stderr, "%*c> tstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17073
68.0k
        Token * a;
17074
68.0k
        asdl_seq * b;
17075
68.0k
        Token * c;
17076
68.0k
        if (
17077
68.0k
            (a = _PyPegen_expect_token(p, TSTRING_START))  // token='TSTRING_START'
17078
6.27k
            &&
17079
6.27k
            (b = _loop0_79_rule(p))  // tstring_middle*
17080
6.27k
            &&
17081
6.27k
            (c = _PyPegen_expect_token(p, TSTRING_END))  // token='TSTRING_END'
17082
68.0k
        )
17083
3.77k
        {
17084
3.77k
            D(fprintf(stderr, "%*c+ tstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17085
3.77k
            _res = CHECK_VERSION ( expr_ty , 14 , "t-strings are" , _PyPegen_template_str ( p , a , ( asdl_expr_seq* ) b , c ) );
17086
3.77k
            if (_res == NULL && PyErr_Occurred()) {
17087
0
                p->error_indicator = 1;
17088
0
                p->level--;
17089
0
                return NULL;
17090
0
            }
17091
3.77k
            goto done;
17092
3.77k
        }
17093
64.2k
        p->mark = _mark;
17094
64.2k
        D(fprintf(stderr, "%*c%s tstring[%d-%d]: %s failed!\n", p->level, ' ',
17095
64.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_START tstring_middle* TSTRING_END"));
17096
64.2k
    }
17097
64.2k
    _res = NULL;
17098
68.0k
  done:
17099
68.0k
    _PyPegen_insert_memo(p, _mark, tstring_type, _res);
17100
68.0k
    p->level--;
17101
68.0k
    return _res;
17102
64.2k
}
17103
17104
// string: STRING
17105
static expr_ty
17106
string_rule(Parser *p)
17107
201k
{
17108
201k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17109
0
        _Pypegen_stack_overflow(p);
17110
0
    }
17111
201k
    if (p->error_indicator) {
17112
0
        p->level--;
17113
0
        return NULL;
17114
0
    }
17115
201k
    expr_ty _res = NULL;
17116
201k
    int _mark = p->mark;
17117
201k
    { // STRING
17118
201k
        if (p->error_indicator) {
17119
0
            p->level--;
17120
0
            return NULL;
17121
0
        }
17122
201k
        D(fprintf(stderr, "%*c> string[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
17123
201k
        Token* s;
17124
201k
        if (
17125
201k
            (s = (Token*)_PyPegen_string_token(p))  // STRING
17126
201k
        )
17127
72.7k
        {
17128
72.7k
            D(fprintf(stderr, "%*c+ string[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING"));
17129
72.7k
            _res = _PyPegen_constant_from_string ( p , s );
17130
72.7k
            if (_res == NULL && PyErr_Occurred()) {
17131
363
                p->error_indicator = 1;
17132
363
                p->level--;
17133
363
                return NULL;
17134
363
            }
17135
72.3k
            goto done;
17136
72.7k
        }
17137
128k
        p->mark = _mark;
17138
128k
        D(fprintf(stderr, "%*c%s string[%d-%d]: %s failed!\n", p->level, ' ',
17139
128k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
17140
128k
    }
17141
128k
    _res = NULL;
17142
201k
  done:
17143
201k
    p->level--;
17144
201k
    return _res;
17145
128k
}
17146
17147
// strings: invalid_string_tstring_concat | ((fstring | string))+ | tstring+
17148
static expr_ty
17149
strings_rule(Parser *p)
17150
167k
{
17151
167k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17152
0
        _Pypegen_stack_overflow(p);
17153
0
    }
17154
167k
    if (p->error_indicator) {
17155
0
        p->level--;
17156
0
        return NULL;
17157
0
    }
17158
167k
    expr_ty _res = NULL;
17159
167k
    if (_PyPegen_is_memoized(p, strings_type, &_res)) {
17160
62.0k
        p->level--;
17161
62.0k
        return _res;
17162
62.0k
    }
17163
105k
    int _mark = p->mark;
17164
105k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17165
0
        p->error_indicator = 1;
17166
0
        p->level--;
17167
0
        return NULL;
17168
0
    }
17169
105k
    int _start_lineno = p->tokens[_mark]->lineno;
17170
105k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17171
105k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17172
105k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17173
105k
    if (p->call_invalid_rules) { // invalid_string_tstring_concat
17174
27.3k
        if (p->error_indicator) {
17175
0
            p->level--;
17176
0
            return NULL;
17177
0
        }
17178
27.3k
        D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_string_tstring_concat"));
17179
27.3k
        void *invalid_string_tstring_concat_var;
17180
27.3k
        if (
17181
27.3k
            (invalid_string_tstring_concat_var = invalid_string_tstring_concat_rule(p))  // invalid_string_tstring_concat
17182
27.3k
        )
17183
0
        {
17184
0
            D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_string_tstring_concat"));
17185
0
            _res = invalid_string_tstring_concat_var;
17186
0
            goto done;
17187
0
        }
17188
27.3k
        p->mark = _mark;
17189
27.3k
        D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
17190
27.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_string_tstring_concat"));
17191
27.3k
    }
17192
105k
    { // ((fstring | string))+
17193
105k
        if (p->error_indicator) {
17194
2.72k
            p->level--;
17195
2.72k
            return NULL;
17196
2.72k
        }
17197
102k
        D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((fstring | string))+"));
17198
102k
        asdl_expr_seq* a;
17199
102k
        if (
17200
102k
            (a = (asdl_expr_seq*)_loop1_80_rule(p))  // ((fstring | string))+
17201
102k
        )
17202
48.5k
        {
17203
48.5k
            D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((fstring | string))+"));
17204
48.5k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17205
48.5k
            if (_token == NULL) {
17206
0
                p->level--;
17207
0
                return NULL;
17208
0
            }
17209
48.5k
            int _end_lineno = _token->end_lineno;
17210
48.5k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17211
48.5k
            int _end_col_offset = _token->end_col_offset;
17212
48.5k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17213
48.5k
            _res = _PyPegen_concatenate_strings ( p , a , EXTRA );
17214
48.5k
            if (_res == NULL && PyErr_Occurred()) {
17215
3
                p->error_indicator = 1;
17216
3
                p->level--;
17217
3
                return NULL;
17218
3
            }
17219
48.5k
            goto done;
17220
48.5k
        }
17221
54.2k
        p->mark = _mark;
17222
54.2k
        D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
17223
54.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((fstring | string))+"));
17224
54.2k
    }
17225
0
    { // tstring+
17226
54.2k
        if (p->error_indicator) {
17227
1.29k
            p->level--;
17228
1.29k
            return NULL;
17229
1.29k
        }
17230
52.9k
        D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring+"));
17231
52.9k
        asdl_expr_seq* a;
17232
52.9k
        if (
17233
52.9k
            (a = (asdl_expr_seq*)_loop1_81_rule(p))  // tstring+
17234
52.9k
        )
17235
2.96k
        {
17236
2.96k
            D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring+"));
17237
2.96k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17238
2.96k
            if (_token == NULL) {
17239
0
                p->level--;
17240
0
                return NULL;
17241
0
            }
17242
2.96k
            int _end_lineno = _token->end_lineno;
17243
2.96k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17244
2.96k
            int _end_col_offset = _token->end_col_offset;
17245
2.96k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17246
2.96k
            _res = _PyPegen_concatenate_tstrings ( p , a , EXTRA );
17247
2.96k
            if (_res == NULL && PyErr_Occurred()) {
17248
0
                p->error_indicator = 1;
17249
0
                p->level--;
17250
0
                return NULL;
17251
0
            }
17252
2.96k
            goto done;
17253
2.96k
        }
17254
49.9k
        p->mark = _mark;
17255
49.9k
        D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
17256
49.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring+"));
17257
49.9k
    }
17258
49.9k
    _res = NULL;
17259
101k
  done:
17260
101k
    _PyPegen_insert_memo(p, _mark, strings_type, _res);
17261
101k
    p->level--;
17262
101k
    return _res;
17263
49.9k
}
17264
17265
// list: '[' star_named_expressions? ']'
17266
static expr_ty
17267
list_rule(Parser *p)
17268
191k
{
17269
191k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17270
1
        _Pypegen_stack_overflow(p);
17271
1
    }
17272
191k
    if (p->error_indicator) {
17273
1
        p->level--;
17274
1
        return NULL;
17275
1
    }
17276
191k
    expr_ty _res = NULL;
17277
191k
    int _mark = p->mark;
17278
191k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17279
0
        p->error_indicator = 1;
17280
0
        p->level--;
17281
0
        return NULL;
17282
0
    }
17283
191k
    int _start_lineno = p->tokens[_mark]->lineno;
17284
191k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17285
191k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17286
191k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17287
191k
    { // '[' star_named_expressions? ']'
17288
191k
        if (p->error_indicator) {
17289
0
            p->level--;
17290
0
            return NULL;
17291
0
        }
17292
191k
        D(fprintf(stderr, "%*c> list[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
17293
191k
        Token * _literal;
17294
191k
        Token * _literal_1;
17295
191k
        void *a;
17296
191k
        if (
17297
191k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
17298
68.7k
            &&
17299
68.7k
            (a = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
17300
55.6k
            &&
17301
55.6k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17302
191k
        )
17303
17.2k
        {
17304
17.2k
            D(fprintf(stderr, "%*c+ list[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
17305
17.2k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17306
17.2k
            if (_token == NULL) {
17307
0
                p->level--;
17308
0
                return NULL;
17309
0
            }
17310
17.2k
            int _end_lineno = _token->end_lineno;
17311
17.2k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17312
17.2k
            int _end_col_offset = _token->end_col_offset;
17313
17.2k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17314
17.2k
            _res = _PyAST_List ( a , Load , EXTRA );
17315
17.2k
            if (_res == NULL && PyErr_Occurred()) {
17316
0
                p->error_indicator = 1;
17317
0
                p->level--;
17318
0
                return NULL;
17319
0
            }
17320
17.2k
            goto done;
17321
17.2k
        }
17322
173k
        p->mark = _mark;
17323
173k
        D(fprintf(stderr, "%*c%s list[%d-%d]: %s failed!\n", p->level, ' ',
17324
173k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_named_expressions? ']'"));
17325
173k
    }
17326
173k
    _res = NULL;
17327
191k
  done:
17328
191k
    p->level--;
17329
191k
    return _res;
17330
173k
}
17331
17332
// tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
17333
static expr_ty
17334
tuple_rule(Parser *p)
17335
209k
{
17336
209k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17337
1
        _Pypegen_stack_overflow(p);
17338
1
    }
17339
209k
    if (p->error_indicator) {
17340
1
        p->level--;
17341
1
        return NULL;
17342
1
    }
17343
209k
    expr_ty _res = NULL;
17344
209k
    int _mark = p->mark;
17345
209k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17346
0
        p->error_indicator = 1;
17347
0
        p->level--;
17348
0
        return NULL;
17349
0
    }
17350
209k
    int _start_lineno = p->tokens[_mark]->lineno;
17351
209k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17352
209k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17353
209k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17354
209k
    { // '(' [star_named_expression ',' star_named_expressions?] ')'
17355
209k
        if (p->error_indicator) {
17356
0
            p->level--;
17357
0
            return NULL;
17358
0
        }
17359
209k
        D(fprintf(stderr, "%*c> tuple[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
17360
209k
        Token * _literal;
17361
209k
        Token * _literal_1;
17362
209k
        void *a;
17363
209k
        if (
17364
209k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
17365
91.4k
            &&
17366
91.4k
            (a = _tmp_82_rule(p), !p->error_indicator)  // [star_named_expression ',' star_named_expressions?]
17367
85.1k
            &&
17368
85.1k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17369
209k
        )
17370
45.6k
        {
17371
45.6k
            D(fprintf(stderr, "%*c+ tuple[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
17372
45.6k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17373
45.6k
            if (_token == NULL) {
17374
0
                p->level--;
17375
0
                return NULL;
17376
0
            }
17377
45.6k
            int _end_lineno = _token->end_lineno;
17378
45.6k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17379
45.6k
            int _end_col_offset = _token->end_col_offset;
17380
45.6k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17381
45.6k
            _res = _PyAST_Tuple ( a , Load , EXTRA );
17382
45.6k
            if (_res == NULL && PyErr_Occurred()) {
17383
0
                p->error_indicator = 1;
17384
0
                p->level--;
17385
0
                return NULL;
17386
0
            }
17387
45.6k
            goto done;
17388
45.6k
        }
17389
164k
        p->mark = _mark;
17390
164k
        D(fprintf(stderr, "%*c%s tuple[%d-%d]: %s failed!\n", p->level, ' ',
17391
164k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
17392
164k
    }
17393
164k
    _res = NULL;
17394
209k
  done:
17395
209k
    p->level--;
17396
209k
    return _res;
17397
164k
}
17398
17399
// set: '{' star_named_expressions '}'
17400
static expr_ty
17401
set_rule(Parser *p)
17402
14.7k
{
17403
14.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17404
0
        _Pypegen_stack_overflow(p);
17405
0
    }
17406
14.7k
    if (p->error_indicator) {
17407
0
        p->level--;
17408
0
        return NULL;
17409
0
    }
17410
14.7k
    expr_ty _res = NULL;
17411
14.7k
    int _mark = p->mark;
17412
14.7k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17413
0
        p->error_indicator = 1;
17414
0
        p->level--;
17415
0
        return NULL;
17416
0
    }
17417
14.7k
    int _start_lineno = p->tokens[_mark]->lineno;
17418
14.7k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17419
14.7k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17420
14.7k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17421
14.7k
    { // '{' star_named_expressions '}'
17422
14.7k
        if (p->error_indicator) {
17423
0
            p->level--;
17424
0
            return NULL;
17425
0
        }
17426
14.7k
        D(fprintf(stderr, "%*c> set[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
17427
14.7k
        Token * _literal;
17428
14.7k
        Token * _literal_1;
17429
14.7k
        asdl_expr_seq* a;
17430
14.7k
        if (
17431
14.7k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17432
14.7k
            &&
17433
14.7k
            (a = star_named_expressions_rule(p))  // star_named_expressions
17434
7.83k
            &&
17435
7.83k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17436
14.7k
        )
17437
1.53k
        {
17438
1.53k
            D(fprintf(stderr, "%*c+ set[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
17439
1.53k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17440
1.53k
            if (_token == NULL) {
17441
0
                p->level--;
17442
0
                return NULL;
17443
0
            }
17444
1.53k
            int _end_lineno = _token->end_lineno;
17445
1.53k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17446
1.53k
            int _end_col_offset = _token->end_col_offset;
17447
1.53k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17448
1.53k
            _res = _PyAST_Set ( a , EXTRA );
17449
1.53k
            if (_res == NULL && PyErr_Occurred()) {
17450
0
                p->error_indicator = 1;
17451
0
                p->level--;
17452
0
                return NULL;
17453
0
            }
17454
1.53k
            goto done;
17455
1.53k
        }
17456
13.1k
        p->mark = _mark;
17457
13.1k
        D(fprintf(stderr, "%*c%s set[%d-%d]: %s failed!\n", p->level, ' ',
17458
13.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' star_named_expressions '}'"));
17459
13.1k
    }
17460
13.1k
    _res = NULL;
17461
14.7k
  done:
17462
14.7k
    p->level--;
17463
14.7k
    return _res;
17464
13.1k
}
17465
17466
// dict: '{' double_starred_kvpairs? '}' | '{' invalid_double_starred_kvpairs '}'
17467
static expr_ty
17468
dict_rule(Parser *p)
17469
28.5k
{
17470
28.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17471
1
        _Pypegen_stack_overflow(p);
17472
1
    }
17473
28.5k
    if (p->error_indicator) {
17474
1
        p->level--;
17475
1
        return NULL;
17476
1
    }
17477
28.5k
    expr_ty _res = NULL;
17478
28.5k
    int _mark = p->mark;
17479
28.5k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17480
0
        p->error_indicator = 1;
17481
0
        p->level--;
17482
0
        return NULL;
17483
0
    }
17484
28.5k
    int _start_lineno = p->tokens[_mark]->lineno;
17485
28.5k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17486
28.5k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17487
28.5k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17488
28.5k
    { // '{' double_starred_kvpairs? '}'
17489
28.5k
        if (p->error_indicator) {
17490
0
            p->level--;
17491
0
            return NULL;
17492
0
        }
17493
28.5k
        D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17494
28.5k
        Token * _literal;
17495
28.5k
        Token * _literal_1;
17496
28.5k
        void *a;
17497
28.5k
        if (
17498
28.5k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17499
28.5k
            &&
17500
28.5k
            (a = double_starred_kvpairs_rule(p), !p->error_indicator)  // double_starred_kvpairs?
17501
19.7k
            &&
17502
19.7k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17503
28.5k
        )
17504
4.73k
        {
17505
4.73k
            D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17506
4.73k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17507
4.73k
            if (_token == NULL) {
17508
0
                p->level--;
17509
0
                return NULL;
17510
0
            }
17511
4.73k
            int _end_lineno = _token->end_lineno;
17512
4.73k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17513
4.73k
            int _end_col_offset = _token->end_col_offset;
17514
4.73k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17515
4.73k
            _res = _PyAST_Dict ( CHECK ( asdl_expr_seq* , _PyPegen_get_keys ( p , a ) ) , CHECK ( asdl_expr_seq* , _PyPegen_get_values ( p , a ) ) , EXTRA );
17516
4.73k
            if (_res == NULL && PyErr_Occurred()) {
17517
0
                p->error_indicator = 1;
17518
0
                p->level--;
17519
0
                return NULL;
17520
0
            }
17521
4.73k
            goto done;
17522
4.73k
        }
17523
23.7k
        p->mark = _mark;
17524
23.7k
        D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
17525
23.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
17526
23.7k
    }
17527
0
    { // '{' invalid_double_starred_kvpairs '}'
17528
23.7k
        if (p->error_indicator) {
17529
8.71k
            p->level--;
17530
8.71k
            return NULL;
17531
8.71k
        }
17532
15.0k
        D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
17533
15.0k
        Token * _literal;
17534
15.0k
        Token * _literal_1;
17535
15.0k
        void *invalid_double_starred_kvpairs_var;
17536
15.0k
        if (
17537
15.0k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
17538
15.0k
            &&
17539
15.0k
            (invalid_double_starred_kvpairs_var = invalid_double_starred_kvpairs_rule(p))  // invalid_double_starred_kvpairs
17540
0
            &&
17541
0
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
17542
15.0k
        )
17543
0
        {
17544
0
            D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
17545
0
            _res = _PyPegen_dummy_name(p, _literal, invalid_double_starred_kvpairs_var, _literal_1);
17546
0
            goto done;
17547
0
        }
17548
15.0k
        p->mark = _mark;
17549
15.0k
        D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
17550
15.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
17551
15.0k
    }
17552
15.0k
    _res = NULL;
17553
19.7k
  done:
17554
19.7k
    p->level--;
17555
19.7k
    return _res;
17556
15.0k
}
17557
17558
// double_starred_kvpairs: ','.double_starred_kvpair+ ','?
17559
static asdl_seq*
17560
double_starred_kvpairs_rule(Parser *p)
17561
28.5k
{
17562
28.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17563
1
        _Pypegen_stack_overflow(p);
17564
1
    }
17565
28.5k
    if (p->error_indicator) {
17566
1
        p->level--;
17567
1
        return NULL;
17568
1
    }
17569
28.5k
    asdl_seq* _res = NULL;
17570
28.5k
    int _mark = p->mark;
17571
28.5k
    { // ','.double_starred_kvpair+ ','?
17572
28.5k
        if (p->error_indicator) {
17573
0
            p->level--;
17574
0
            return NULL;
17575
0
        }
17576
28.5k
        D(fprintf(stderr, "%*c> double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17577
28.5k
        void *_opt_var;
17578
28.5k
        UNUSED(_opt_var); // Silence compiler warnings
17579
28.5k
        asdl_seq * a;
17580
28.5k
        if (
17581
28.5k
            (a = _gather_84_rule(p))  // ','.double_starred_kvpair+
17582
6.08k
            &&
17583
6.08k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
17584
28.5k
        )
17585
5.88k
        {
17586
5.88k
            D(fprintf(stderr, "%*c+ double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17587
5.88k
            _res = a;
17588
5.88k
            if (_res == NULL && PyErr_Occurred()) {
17589
0
                p->error_indicator = 1;
17590
0
                p->level--;
17591
0
                return NULL;
17592
0
            }
17593
5.88k
            goto done;
17594
5.88k
        }
17595
22.6k
        p->mark = _mark;
17596
22.6k
        D(fprintf(stderr, "%*c%s double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
17597
22.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ','?"));
17598
22.6k
    }
17599
22.6k
    _res = NULL;
17600
28.5k
  done:
17601
28.5k
    p->level--;
17602
28.5k
    return _res;
17603
22.6k
}
17604
17605
// double_starred_kvpair: '**' bitwise_or | kvpair
17606
static KeyValuePair*
17607
double_starred_kvpair_rule(Parser *p)
17608
81.6k
{
17609
81.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17610
1
        _Pypegen_stack_overflow(p);
17611
1
    }
17612
81.6k
    if (p->error_indicator) {
17613
1
        p->level--;
17614
1
        return NULL;
17615
1
    }
17616
81.6k
    KeyValuePair* _res = NULL;
17617
81.6k
    int _mark = p->mark;
17618
81.6k
    { // '**' bitwise_or
17619
81.6k
        if (p->error_indicator) {
17620
0
            p->level--;
17621
0
            return NULL;
17622
0
        }
17623
81.6k
        D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
17624
81.6k
        Token * _literal;
17625
81.6k
        expr_ty a;
17626
81.6k
        if (
17627
81.6k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
17628
2.68k
            &&
17629
2.68k
            (a = bitwise_or_rule(p))  // bitwise_or
17630
81.6k
        )
17631
1.35k
        {
17632
1.35k
            D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
17633
1.35k
            _res = _PyPegen_key_value_pair ( p , NULL , a );
17634
1.35k
            if (_res == NULL && PyErr_Occurred()) {
17635
0
                p->error_indicator = 1;
17636
0
                p->level--;
17637
0
                return NULL;
17638
0
            }
17639
1.35k
            goto done;
17640
1.35k
        }
17641
80.2k
        p->mark = _mark;
17642
80.2k
        D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17643
80.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' bitwise_or"));
17644
80.2k
    }
17645
0
    { // kvpair
17646
80.2k
        if (p->error_indicator) {
17647
475
            p->level--;
17648
475
            return NULL;
17649
475
        }
17650
79.7k
        D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kvpair"));
17651
79.7k
        KeyValuePair* kvpair_var;
17652
79.7k
        if (
17653
79.7k
            (kvpair_var = kvpair_rule(p))  // kvpair
17654
79.7k
        )
17655
43.3k
        {
17656
43.3k
            D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kvpair"));
17657
43.3k
            _res = kvpair_var;
17658
43.3k
            goto done;
17659
43.3k
        }
17660
36.4k
        p->mark = _mark;
17661
36.4k
        D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17662
36.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kvpair"));
17663
36.4k
    }
17664
36.4k
    _res = NULL;
17665
81.1k
  done:
17666
81.1k
    p->level--;
17667
81.1k
    return _res;
17668
36.4k
}
17669
17670
// kvpair: expression ':' expression
17671
static KeyValuePair*
17672
kvpair_rule(Parser *p)
17673
92.6k
{
17674
92.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17675
1
        _Pypegen_stack_overflow(p);
17676
1
    }
17677
92.6k
    if (p->error_indicator) {
17678
1
        p->level--;
17679
1
        return NULL;
17680
1
    }
17681
92.6k
    KeyValuePair* _res = NULL;
17682
92.6k
    int _mark = p->mark;
17683
92.6k
    { // expression ':' expression
17684
92.6k
        if (p->error_indicator) {
17685
0
            p->level--;
17686
0
            return NULL;
17687
0
        }
17688
92.6k
        D(fprintf(stderr, "%*c> kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
17689
92.6k
        Token * _literal;
17690
92.6k
        expr_ty a;
17691
92.6k
        expr_ty b;
17692
92.6k
        if (
17693
92.6k
            (a = expression_rule(p))  // expression
17694
61.0k
            &&
17695
61.0k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
17696
49.5k
            &&
17697
49.5k
            (b = expression_rule(p))  // expression
17698
92.6k
        )
17699
46.1k
        {
17700
46.1k
            D(fprintf(stderr, "%*c+ kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
17701
46.1k
            _res = _PyPegen_key_value_pair ( p , a , b );
17702
46.1k
            if (_res == NULL && PyErr_Occurred()) {
17703
0
                p->error_indicator = 1;
17704
0
                p->level--;
17705
0
                return NULL;
17706
0
            }
17707
46.1k
            goto done;
17708
46.1k
        }
17709
46.5k
        p->mark = _mark;
17710
46.5k
        D(fprintf(stderr, "%*c%s kvpair[%d-%d]: %s failed!\n", p->level, ' ',
17711
46.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
17712
46.5k
    }
17713
46.5k
    _res = NULL;
17714
92.6k
  done:
17715
92.6k
    p->level--;
17716
92.6k
    return _res;
17717
46.5k
}
17718
17719
// for_if_clauses: for_if_clause+
17720
static asdl_comprehension_seq*
17721
for_if_clauses_rule(Parser *p)
17722
99.1k
{
17723
99.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17724
0
        _Pypegen_stack_overflow(p);
17725
0
    }
17726
99.1k
    if (p->error_indicator) {
17727
0
        p->level--;
17728
0
        return NULL;
17729
0
    }
17730
99.1k
    asdl_comprehension_seq* _res = NULL;
17731
99.1k
    int _mark = p->mark;
17732
99.1k
    { // for_if_clause+
17733
99.1k
        if (p->error_indicator) {
17734
0
            p->level--;
17735
0
            return NULL;
17736
0
        }
17737
99.1k
        D(fprintf(stderr, "%*c> for_if_clauses[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
17738
99.1k
        asdl_comprehension_seq* a;
17739
99.1k
        if (
17740
99.1k
            (a = (asdl_comprehension_seq*)_loop1_85_rule(p))  // for_if_clause+
17741
99.1k
        )
17742
10.0k
        {
17743
10.0k
            D(fprintf(stderr, "%*c+ for_if_clauses[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
17744
10.0k
            _res = a;
17745
10.0k
            if (_res == NULL && PyErr_Occurred()) {
17746
0
                p->error_indicator = 1;
17747
0
                p->level--;
17748
0
                return NULL;
17749
0
            }
17750
10.0k
            goto done;
17751
10.0k
        }
17752
89.0k
        p->mark = _mark;
17753
89.0k
        D(fprintf(stderr, "%*c%s for_if_clauses[%d-%d]: %s failed!\n", p->level, ' ',
17754
89.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause+"));
17755
89.0k
    }
17756
89.0k
    _res = NULL;
17757
99.1k
  done:
17758
99.1k
    p->level--;
17759
99.1k
    return _res;
17760
89.0k
}
17761
17762
// for_if_clause:
17763
//     | 'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17764
//     | 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17765
//     | invalid_for_if_clause
17766
//     | invalid_for_target
17767
static comprehension_ty
17768
for_if_clause_rule(Parser *p)
17769
110k
{
17770
110k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17771
0
        _Pypegen_stack_overflow(p);
17772
0
    }
17773
110k
    if (p->error_indicator) {
17774
228
        p->level--;
17775
228
        return NULL;
17776
228
    }
17777
110k
    comprehension_ty _res = NULL;
17778
110k
    int _mark = p->mark;
17779
110k
    { // 'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17780
110k
        if (p->error_indicator) {
17781
0
            p->level--;
17782
0
            return NULL;
17783
0
        }
17784
110k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17785
110k
        int _cut_var = 0;
17786
110k
        Token * _keyword;
17787
110k
        Token * _keyword_1;
17788
110k
        Token * _keyword_2;
17789
110k
        expr_ty a;
17790
110k
        expr_ty b;
17791
110k
        asdl_expr_seq* c;
17792
110k
        if (
17793
110k
            (_keyword = _PyPegen_expect_token(p, 707))  // token='async'
17794
1.32k
            &&
17795
1.32k
            (_keyword_1 = _PyPegen_expect_token(p, 703))  // token='for'
17796
1.29k
            &&
17797
1.29k
            (a = star_targets_rule(p))  // star_targets
17798
542
            &&
17799
542
            (_keyword_2 = _PyPegen_expect_token(p, 704))  // token='in'
17800
464
            &&
17801
464
            (_cut_var = 1)
17802
464
            &&
17803
464
            (b = disjunction_rule(p))  // disjunction
17804
397
            &&
17805
397
            (c = (asdl_expr_seq*)_loop0_86_rule(p))  // (('if' disjunction))*
17806
110k
        )
17807
397
        {
17808
397
            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))*"));
17809
397
            _res = CHECK_VERSION ( comprehension_ty , 6 , "Async comprehensions are" , _PyAST_comprehension ( a , b , c , 1 , p -> arena ) );
17810
397
            if (_res == NULL && PyErr_Occurred()) {
17811
0
                p->error_indicator = 1;
17812
0
                p->level--;
17813
0
                return NULL;
17814
0
            }
17815
397
            goto done;
17816
397
        }
17817
109k
        p->mark = _mark;
17818
109k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17819
109k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async' 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17820
109k
        if (_cut_var) {
17821
67
            p->level--;
17822
67
            return NULL;
17823
67
        }
17824
109k
    }
17825
109k
    { // 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
17826
109k
        if (p->error_indicator) {
17827
195
            p->level--;
17828
195
            return NULL;
17829
195
        }
17830
109k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17831
109k
        int _cut_var = 0;
17832
109k
        Token * _keyword;
17833
109k
        Token * _keyword_1;
17834
109k
        expr_ty a;
17835
109k
        expr_ty b;
17836
109k
        asdl_expr_seq* c;
17837
109k
        if (
17838
109k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='for'
17839
16.1k
            &&
17840
16.1k
            (a = star_targets_rule(p))  // star_targets
17841
13.4k
            &&
17842
13.4k
            (_keyword_1 = _PyPegen_expect_token(p, 704))  // token='in'
17843
10.9k
            &&
17844
10.9k
            (_cut_var = 1)
17845
10.9k
            &&
17846
10.9k
            (b = disjunction_rule(p))  // disjunction
17847
10.6k
            &&
17848
10.6k
            (c = (asdl_expr_seq*)_loop0_86_rule(p))  // (('if' disjunction))*
17849
109k
        )
17850
10.6k
        {
17851
10.6k
            D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17852
10.6k
            _res = _PyAST_comprehension ( a , b , c , 0 , p -> arena );
17853
10.6k
            if (_res == NULL && PyErr_Occurred()) {
17854
0
                p->error_indicator = 1;
17855
0
                p->level--;
17856
0
                return NULL;
17857
0
            }
17858
10.6k
            goto done;
17859
10.6k
        }
17860
98.6k
        p->mark = _mark;
17861
98.6k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17862
98.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
17863
98.6k
        if (_cut_var) {
17864
216
            p->level--;
17865
216
            return NULL;
17866
216
        }
17867
98.6k
    }
17868
98.4k
    if (p->call_invalid_rules) { // invalid_for_if_clause
17869
48.1k
        if (p->error_indicator) {
17870
626
            p->level--;
17871
626
            return NULL;
17872
626
        }
17873
47.5k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_if_clause"));
17874
47.5k
        void *invalid_for_if_clause_var;
17875
47.5k
        if (
17876
47.5k
            (invalid_for_if_clause_var = invalid_for_if_clause_rule(p))  // invalid_for_if_clause
17877
47.5k
        )
17878
0
        {
17879
0
            D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_if_clause"));
17880
0
            _res = invalid_for_if_clause_var;
17881
0
            goto done;
17882
0
        }
17883
47.5k
        p->mark = _mark;
17884
47.5k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17885
47.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_if_clause"));
17886
47.5k
    }
17887
97.8k
    if (p->call_invalid_rules) { // invalid_for_target
17888
47.5k
        if (p->error_indicator) {
17889
654
            p->level--;
17890
654
            return NULL;
17891
654
        }
17892
46.8k
        D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
17893
46.8k
        void *invalid_for_target_var;
17894
46.8k
        if (
17895
46.8k
            (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
17896
46.8k
        )
17897
0
        {
17898
0
            D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
17899
0
            _res = invalid_for_target_var;
17900
0
            goto done;
17901
0
        }
17902
46.8k
        p->mark = _mark;
17903
46.8k
        D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
17904
46.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
17905
46.8k
    }
17906
97.1k
    _res = NULL;
17907
108k
  done:
17908
108k
    p->level--;
17909
108k
    return _res;
17910
97.1k
}
17911
17912
// listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
17913
static expr_ty
17914
listcomp_rule(Parser *p)
17915
32.8k
{
17916
32.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
17917
0
        _Pypegen_stack_overflow(p);
17918
0
    }
17919
32.8k
    if (p->error_indicator) {
17920
0
        p->level--;
17921
0
        return NULL;
17922
0
    }
17923
32.8k
    expr_ty _res = NULL;
17924
32.8k
    int _mark = p->mark;
17925
32.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17926
0
        p->error_indicator = 1;
17927
0
        p->level--;
17928
0
        return NULL;
17929
0
    }
17930
32.8k
    int _start_lineno = p->tokens[_mark]->lineno;
17931
32.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
17932
32.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
17933
32.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
17934
32.8k
    { // '[' named_expression for_if_clauses ']'
17935
32.8k
        if (p->error_indicator) {
17936
0
            p->level--;
17937
0
            return NULL;
17938
0
        }
17939
32.8k
        D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
17940
32.8k
        Token * _literal;
17941
32.8k
        Token * _literal_1;
17942
32.8k
        expr_ty a;
17943
32.8k
        asdl_comprehension_seq* b;
17944
32.8k
        if (
17945
32.8k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
17946
32.8k
            &&
17947
32.8k
            (a = named_expression_rule(p))  // named_expression
17948
7.75k
            &&
17949
7.75k
            (b = for_if_clauses_rule(p))  // for_if_clauses
17950
1.76k
            &&
17951
1.76k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17952
32.8k
        )
17953
1.56k
        {
17954
1.56k
            D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
17955
1.56k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17956
1.56k
            if (_token == NULL) {
17957
0
                p->level--;
17958
0
                return NULL;
17959
0
            }
17960
1.56k
            int _end_lineno = _token->end_lineno;
17961
1.56k
            UNUSED(_end_lineno); // Only used by EXTRA macro
17962
1.56k
            int _end_col_offset = _token->end_col_offset;
17963
1.56k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
17964
1.56k
            _res = _PyAST_ListComp ( a , b , EXTRA );
17965
1.56k
            if (_res == NULL && PyErr_Occurred()) {
17966
0
                p->error_indicator = 1;
17967
0
                p->level--;
17968
0
                return NULL;
17969
0
            }
17970
1.56k
            goto done;
17971
1.56k
        }
17972
31.2k
        p->mark = _mark;
17973
31.2k
        D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
17974
31.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
17975
31.2k
    }
17976
31.2k
    if (p->call_invalid_rules) { // invalid_comprehension
17977
10.2k
        if (p->error_indicator) {
17978
359
            p->level--;
17979
359
            return NULL;
17980
359
        }
17981
9.87k
        D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
17982
9.87k
        void *invalid_comprehension_var;
17983
9.87k
        if (
17984
9.87k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
17985
9.87k
        )
17986
0
        {
17987
0
            D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
17988
0
            _res = invalid_comprehension_var;
17989
0
            goto done;
17990
0
        }
17991
9.87k
        p->mark = _mark;
17992
9.87k
        D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
17993
9.87k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
17994
9.87k
    }
17995
30.9k
    _res = NULL;
17996
32.4k
  done:
17997
32.4k
    p->level--;
17998
32.4k
    return _res;
17999
30.9k
}
18000
18001
// setcomp: '{' named_expression for_if_clauses '}' | invalid_comprehension
18002
static expr_ty
18003
setcomp_rule(Parser *p)
18004
11.2k
{
18005
11.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18006
0
        _Pypegen_stack_overflow(p);
18007
0
    }
18008
11.2k
    if (p->error_indicator) {
18009
0
        p->level--;
18010
0
        return NULL;
18011
0
    }
18012
11.2k
    expr_ty _res = NULL;
18013
11.2k
    int _mark = p->mark;
18014
11.2k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18015
0
        p->error_indicator = 1;
18016
0
        p->level--;
18017
0
        return NULL;
18018
0
    }
18019
11.2k
    int _start_lineno = p->tokens[_mark]->lineno;
18020
11.2k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18021
11.2k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18022
11.2k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18023
11.2k
    { // '{' named_expression for_if_clauses '}'
18024
11.2k
        if (p->error_indicator) {
18025
0
            p->level--;
18026
0
            return NULL;
18027
0
        }
18028
11.2k
        D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
18029
11.2k
        Token * _literal;
18030
11.2k
        Token * _literal_1;
18031
11.2k
        expr_ty a;
18032
11.2k
        asdl_comprehension_seq* b;
18033
11.2k
        if (
18034
11.2k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
18035
11.2k
            &&
18036
11.2k
            (a = named_expression_rule(p))  // named_expression
18037
4.56k
            &&
18038
4.56k
            (b = for_if_clauses_rule(p))  // for_if_clauses
18039
595
            &&
18040
595
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
18041
11.2k
        )
18042
495
        {
18043
495
            D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
18044
495
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18045
495
            if (_token == NULL) {
18046
0
                p->level--;
18047
0
                return NULL;
18048
0
            }
18049
495
            int _end_lineno = _token->end_lineno;
18050
495
            UNUSED(_end_lineno); // Only used by EXTRA macro
18051
495
            int _end_col_offset = _token->end_col_offset;
18052
495
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18053
495
            _res = _PyAST_SetComp ( a , b , EXTRA );
18054
495
            if (_res == NULL && PyErr_Occurred()) {
18055
0
                p->error_indicator = 1;
18056
0
                p->level--;
18057
0
                return NULL;
18058
0
            }
18059
495
            goto done;
18060
495
        }
18061
10.7k
        p->mark = _mark;
18062
10.7k
        D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
18063
10.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
18064
10.7k
    }
18065
10.7k
    if (p->call_invalid_rules) { // invalid_comprehension
18066
4.55k
        if (p->error_indicator) {
18067
79
            p->level--;
18068
79
            return NULL;
18069
79
        }
18070
4.47k
        D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18071
4.47k
        void *invalid_comprehension_var;
18072
4.47k
        if (
18073
4.47k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
18074
4.47k
        )
18075
0
        {
18076
0
            D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18077
0
            _res = invalid_comprehension_var;
18078
0
            goto done;
18079
0
        }
18080
4.47k
        p->mark = _mark;
18081
4.47k
        D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
18082
4.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
18083
4.47k
    }
18084
10.6k
    _res = NULL;
18085
11.1k
  done:
18086
11.1k
    p->level--;
18087
11.1k
    return _res;
18088
10.6k
}
18089
18090
// genexp:
18091
//     | '(' (assignment_expression | expression !':=') for_if_clauses ')'
18092
//     | invalid_comprehension
18093
static expr_ty
18094
genexp_rule(Parser *p)
18095
661k
{
18096
661k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18097
0
        _Pypegen_stack_overflow(p);
18098
0
    }
18099
661k
    if (p->error_indicator) {
18100
0
        p->level--;
18101
0
        return NULL;
18102
0
    }
18103
661k
    expr_ty _res = NULL;
18104
661k
    int _mark = p->mark;
18105
661k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18106
0
        p->error_indicator = 1;
18107
0
        p->level--;
18108
0
        return NULL;
18109
0
    }
18110
661k
    int _start_lineno = p->tokens[_mark]->lineno;
18111
661k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18112
661k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18113
661k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18114
661k
    { // '(' (assignment_expression | expression !':=') for_if_clauses ')'
18115
661k
        if (p->error_indicator) {
18116
0
            p->level--;
18117
0
            return NULL;
18118
0
        }
18119
661k
        D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
18120
661k
        Token * _literal;
18121
661k
        Token * _literal_1;
18122
661k
        void *a;
18123
661k
        asdl_comprehension_seq* b;
18124
661k
        if (
18125
661k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
18126
92.9k
            &&
18127
92.9k
            (a = _tmp_87_rule(p))  // assignment_expression | expression !':='
18128
52.7k
            &&
18129
52.7k
            (b = for_if_clauses_rule(p))  // for_if_clauses
18130
5.36k
            &&
18131
5.36k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
18132
661k
        )
18133
4.51k
        {
18134
4.51k
            D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
18135
4.51k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18136
4.51k
            if (_token == NULL) {
18137
0
                p->level--;
18138
0
                return NULL;
18139
0
            }
18140
4.51k
            int _end_lineno = _token->end_lineno;
18141
4.51k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18142
4.51k
            int _end_col_offset = _token->end_col_offset;
18143
4.51k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18144
4.51k
            _res = _PyAST_GeneratorExp ( a , b , EXTRA );
18145
4.51k
            if (_res == NULL && PyErr_Occurred()) {
18146
0
                p->error_indicator = 1;
18147
0
                p->level--;
18148
0
                return NULL;
18149
0
            }
18150
4.51k
            goto done;
18151
4.51k
        }
18152
657k
        p->mark = _mark;
18153
657k
        D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
18154
657k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
18155
657k
    }
18156
657k
    if (p->call_invalid_rules) { // invalid_comprehension
18157
215k
        if (p->error_indicator) {
18158
2.17k
            p->level--;
18159
2.17k
            return NULL;
18160
2.17k
        }
18161
213k
        D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18162
213k
        void *invalid_comprehension_var;
18163
213k
        if (
18164
213k
            (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
18165
213k
        )
18166
0
        {
18167
0
            D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
18168
0
            _res = invalid_comprehension_var;
18169
0
            goto done;
18170
0
        }
18171
213k
        p->mark = _mark;
18172
213k
        D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
18173
213k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
18174
213k
    }
18175
655k
    _res = NULL;
18176
659k
  done:
18177
659k
    p->level--;
18178
659k
    return _res;
18179
655k
}
18180
18181
// dictcomp: '{' kvpair for_if_clauses '}' | invalid_dict_comprehension
18182
static expr_ty
18183
dictcomp_rule(Parser *p)
18184
12.8k
{
18185
12.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18186
0
        _Pypegen_stack_overflow(p);
18187
0
    }
18188
12.8k
    if (p->error_indicator) {
18189
0
        p->level--;
18190
0
        return NULL;
18191
0
    }
18192
12.8k
    expr_ty _res = NULL;
18193
12.8k
    int _mark = p->mark;
18194
12.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18195
0
        p->error_indicator = 1;
18196
0
        p->level--;
18197
0
        return NULL;
18198
0
    }
18199
12.8k
    int _start_lineno = p->tokens[_mark]->lineno;
18200
12.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18201
12.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18202
12.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18203
12.8k
    { // '{' kvpair for_if_clauses '}'
18204
12.8k
        if (p->error_indicator) {
18205
0
            p->level--;
18206
0
            return NULL;
18207
0
        }
18208
12.8k
        D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
18209
12.8k
        Token * _literal;
18210
12.8k
        Token * _literal_1;
18211
12.8k
        KeyValuePair* a;
18212
12.8k
        asdl_comprehension_seq* b;
18213
12.8k
        if (
18214
12.8k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
18215
12.8k
            &&
18216
12.8k
            (a = kvpair_rule(p))  // kvpair
18217
2.73k
            &&
18218
2.73k
            (b = for_if_clauses_rule(p))  // for_if_clauses
18219
1.66k
            &&
18220
1.66k
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
18221
12.8k
        )
18222
1.46k
        {
18223
1.46k
            D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
18224
1.46k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18225
1.46k
            if (_token == NULL) {
18226
0
                p->level--;
18227
0
                return NULL;
18228
0
            }
18229
1.46k
            int _end_lineno = _token->end_lineno;
18230
1.46k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18231
1.46k
            int _end_col_offset = _token->end_col_offset;
18232
1.46k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18233
1.46k
            _res = _PyAST_DictComp ( a -> key , a -> value , b , EXTRA );
18234
1.46k
            if (_res == NULL && PyErr_Occurred()) {
18235
0
                p->error_indicator = 1;
18236
0
                p->level--;
18237
0
                return NULL;
18238
0
            }
18239
1.46k
            goto done;
18240
1.46k
        }
18241
11.4k
        p->mark = _mark;
18242
11.4k
        D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
18243
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
18244
11.4k
    }
18245
11.4k
    if (p->call_invalid_rules) { // invalid_dict_comprehension
18246
4.85k
        if (p->error_indicator) {
18247
208
            p->level--;
18248
208
            return NULL;
18249
208
        }
18250
4.65k
        D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
18251
4.65k
        void *invalid_dict_comprehension_var;
18252
4.65k
        if (
18253
4.65k
            (invalid_dict_comprehension_var = invalid_dict_comprehension_rule(p))  // invalid_dict_comprehension
18254
4.65k
        )
18255
0
        {
18256
0
            D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
18257
0
            _res = invalid_dict_comprehension_var;
18258
0
            goto done;
18259
0
        }
18260
4.65k
        p->mark = _mark;
18261
4.65k
        D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
18262
4.65k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_dict_comprehension"));
18263
4.65k
    }
18264
11.2k
    _res = NULL;
18265
12.6k
  done:
18266
12.6k
    p->level--;
18267
12.6k
    return _res;
18268
11.2k
}
18269
18270
// arguments: args ','? &')' | invalid_arguments
18271
static expr_ty
18272
arguments_rule(Parser *p)
18273
64.3k
{
18274
64.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18275
0
        _Pypegen_stack_overflow(p);
18276
0
    }
18277
64.3k
    if (p->error_indicator) {
18278
0
        p->level--;
18279
0
        return NULL;
18280
0
    }
18281
64.3k
    expr_ty _res = NULL;
18282
64.3k
    if (_PyPegen_is_memoized(p, arguments_type, &_res)) {
18283
16.8k
        p->level--;
18284
16.8k
        return _res;
18285
16.8k
    }
18286
47.4k
    int _mark = p->mark;
18287
47.4k
    { // args ','? &')'
18288
47.4k
        if (p->error_indicator) {
18289
0
            p->level--;
18290
0
            return NULL;
18291
0
        }
18292
47.4k
        D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
18293
47.4k
        void *_opt_var;
18294
47.4k
        UNUSED(_opt_var); // Silence compiler warnings
18295
47.4k
        expr_ty a;
18296
47.4k
        if (
18297
47.4k
            (a = args_rule(p))  // args
18298
29.7k
            &&
18299
29.7k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18300
29.4k
            &&
18301
29.4k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
18302
47.4k
        )
18303
21.3k
        {
18304
21.3k
            D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
18305
21.3k
            _res = a;
18306
21.3k
            if (_res == NULL && PyErr_Occurred()) {
18307
0
                p->error_indicator = 1;
18308
0
                p->level--;
18309
0
                return NULL;
18310
0
            }
18311
21.3k
            goto done;
18312
21.3k
        }
18313
26.1k
        p->mark = _mark;
18314
26.1k
        D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
18315
26.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','? &')'"));
18316
26.1k
    }
18317
26.1k
    if (p->call_invalid_rules) { // invalid_arguments
18318
8.96k
        if (p->error_indicator) {
18319
929
            p->level--;
18320
929
            return NULL;
18321
929
        }
18322
8.03k
        D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
18323
8.03k
        void *invalid_arguments_var;
18324
8.03k
        if (
18325
8.03k
            (invalid_arguments_var = invalid_arguments_rule(p))  // invalid_arguments
18326
8.03k
        )
18327
0
        {
18328
0
            D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
18329
0
            _res = invalid_arguments_var;
18330
0
            goto done;
18331
0
        }
18332
8.03k
        p->mark = _mark;
18333
8.03k
        D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
18334
8.03k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_arguments"));
18335
8.03k
    }
18336
25.2k
    _res = NULL;
18337
46.5k
  done:
18338
46.5k
    _PyPegen_insert_memo(p, _mark, arguments_type, _res);
18339
46.5k
    p->level--;
18340
46.5k
    return _res;
18341
25.2k
}
18342
18343
// args:
18344
//     | ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
18345
//     | kwargs
18346
static expr_ty
18347
args_rule(Parser *p)
18348
76.8k
{
18349
76.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18350
0
        _Pypegen_stack_overflow(p);
18351
0
    }
18352
76.8k
    if (p->error_indicator) {
18353
0
        p->level--;
18354
0
        return NULL;
18355
0
    }
18356
76.8k
    expr_ty _res = NULL;
18357
76.8k
    int _mark = p->mark;
18358
76.8k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18359
2
        p->error_indicator = 1;
18360
2
        p->level--;
18361
2
        return NULL;
18362
2
    }
18363
76.8k
    int _start_lineno = p->tokens[_mark]->lineno;
18364
76.8k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18365
76.8k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18366
76.8k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18367
76.8k
    { // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
18368
76.8k
        if (p->error_indicator) {
18369
0
            p->level--;
18370
0
            return NULL;
18371
0
        }
18372
76.8k
        D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
18373
76.8k
        asdl_expr_seq* a;
18374
76.8k
        void *b;
18375
76.8k
        if (
18376
76.8k
            (a = (asdl_expr_seq*)_gather_89_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+
18377
37.0k
            &&
18378
37.0k
            (b = _tmp_90_rule(p), !p->error_indicator)  // [',' kwargs]
18379
76.8k
        )
18380
36.3k
        {
18381
36.3k
            D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
18382
36.3k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18383
36.3k
            if (_token == NULL) {
18384
0
                p->level--;
18385
0
                return NULL;
18386
0
            }
18387
36.3k
            int _end_lineno = _token->end_lineno;
18388
36.3k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18389
36.3k
            int _end_col_offset = _token->end_col_offset;
18390
36.3k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18391
36.3k
            _res = _PyPegen_collect_call_seqs ( p , a , b , EXTRA );
18392
36.3k
            if (_res == NULL && PyErr_Occurred()) {
18393
0
                p->error_indicator = 1;
18394
0
                p->level--;
18395
0
                return NULL;
18396
0
            }
18397
36.3k
            goto done;
18398
36.3k
        }
18399
40.4k
        p->mark = _mark;
18400
40.4k
        D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
18401
40.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
18402
40.4k
    }
18403
0
    { // kwargs
18404
40.4k
        if (p->error_indicator) {
18405
1.00k
            p->level--;
18406
1.00k
            return NULL;
18407
1.00k
        }
18408
39.4k
        D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwargs"));
18409
39.4k
        asdl_seq* a;
18410
39.4k
        if (
18411
39.4k
            (a = kwargs_rule(p))  // kwargs
18412
39.4k
        )
18413
7.93k
        {
18414
7.93k
            D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwargs"));
18415
7.93k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18416
7.93k
            if (_token == NULL) {
18417
0
                p->level--;
18418
0
                return NULL;
18419
0
            }
18420
7.93k
            int _end_lineno = _token->end_lineno;
18421
7.93k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18422
7.93k
            int _end_col_offset = _token->end_col_offset;
18423
7.93k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18424
7.93k
            _res = _PyAST_Call ( _PyPegen_dummy_name ( p ) , CHECK_NULL_ALLOWED ( asdl_expr_seq* , _PyPegen_seq_extract_starred_exprs ( p , a ) ) , CHECK_NULL_ALLOWED ( asdl_keyword_seq* , _PyPegen_seq_delete_starred_exprs ( p , a ) ) , EXTRA );
18425
7.93k
            if (_res == NULL && PyErr_Occurred()) {
18426
0
                p->error_indicator = 1;
18427
0
                p->level--;
18428
0
                return NULL;
18429
0
            }
18430
7.93k
            goto done;
18431
7.93k
        }
18432
31.5k
        p->mark = _mark;
18433
31.5k
        D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
18434
31.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwargs"));
18435
31.5k
    }
18436
31.5k
    _res = NULL;
18437
75.8k
  done:
18438
75.8k
    p->level--;
18439
75.8k
    return _res;
18440
31.5k
}
18441
18442
// kwargs:
18443
//     | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
18444
//     | ','.kwarg_or_starred+
18445
//     | ','.kwarg_or_double_starred+
18446
static asdl_seq*
18447
kwargs_rule(Parser *p)
18448
51.9k
{
18449
51.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18450
0
        _Pypegen_stack_overflow(p);
18451
0
    }
18452
51.9k
    if (p->error_indicator) {
18453
0
        p->level--;
18454
0
        return NULL;
18455
0
    }
18456
51.9k
    asdl_seq* _res = NULL;
18457
51.9k
    int _mark = p->mark;
18458
51.9k
    { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
18459
51.9k
        if (p->error_indicator) {
18460
0
            p->level--;
18461
0
            return NULL;
18462
0
        }
18463
51.9k
        D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
18464
51.9k
        Token * _literal;
18465
51.9k
        asdl_seq * a;
18466
51.9k
        asdl_seq * b;
18467
51.9k
        if (
18468
51.9k
            (a = _gather_92_rule(p))  // ','.kwarg_or_starred+
18469
9.70k
            &&
18470
9.70k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
18471
4.15k
            &&
18472
4.15k
            (b = _gather_94_rule(p))  // ','.kwarg_or_double_starred+
18473
51.9k
        )
18474
370
        {
18475
370
            D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
18476
370
            _res = _PyPegen_join_sequences ( p , a , b );
18477
370
            if (_res == NULL && PyErr_Occurred()) {
18478
0
                p->error_indicator = 1;
18479
0
                p->level--;
18480
0
                return NULL;
18481
0
            }
18482
370
            goto done;
18483
370
        }
18484
51.6k
        p->mark = _mark;
18485
51.6k
        D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
18486
51.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
18487
51.6k
    }
18488
0
    { // ','.kwarg_or_starred+
18489
51.6k
        if (p->error_indicator) {
18490
815
            p->level--;
18491
815
            return NULL;
18492
815
        }
18493
50.7k
        D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
18494
50.7k
        asdl_seq * _gather_92_var;
18495
50.7k
        if (
18496
50.7k
            (_gather_92_var = _gather_92_rule(p))  // ','.kwarg_or_starred+
18497
50.7k
        )
18498
9.07k
        {
18499
9.07k
            D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
18500
9.07k
            _res = _gather_92_var;
18501
9.07k
            goto done;
18502
9.07k
        }
18503
41.7k
        p->mark = _mark;
18504
41.7k
        D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
18505
41.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+"));
18506
41.7k
    }
18507
0
    { // ','.kwarg_or_double_starred+
18508
41.7k
        if (p->error_indicator) {
18509
0
            p->level--;
18510
0
            return NULL;
18511
0
        }
18512
41.7k
        D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
18513
41.7k
        asdl_seq * _gather_94_var;
18514
41.7k
        if (
18515
41.7k
            (_gather_94_var = _gather_94_rule(p))  // ','.kwarg_or_double_starred+
18516
41.7k
        )
18517
3.85k
        {
18518
3.85k
            D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
18519
3.85k
            _res = _gather_94_var;
18520
3.85k
            goto done;
18521
3.85k
        }
18522
37.8k
        p->mark = _mark;
18523
37.8k
        D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
18524
37.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_double_starred+"));
18525
37.8k
    }
18526
37.8k
    _res = NULL;
18527
51.1k
  done:
18528
51.1k
    p->level--;
18529
51.1k
    return _res;
18530
37.8k
}
18531
18532
// starred_expression:
18533
//     | invalid_starred_expression_unpacking
18534
//     | '*' expression
18535
//     | invalid_starred_expression
18536
static expr_ty
18537
starred_expression_rule(Parser *p)
18538
263k
{
18539
263k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18540
0
        _Pypegen_stack_overflow(p);
18541
0
    }
18542
263k
    if (p->error_indicator) {
18543
0
        p->level--;
18544
0
        return NULL;
18545
0
    }
18546
263k
    expr_ty _res = NULL;
18547
263k
    int _mark = p->mark;
18548
263k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18549
203
        p->error_indicator = 1;
18550
203
        p->level--;
18551
203
        return NULL;
18552
203
    }
18553
263k
    int _start_lineno = p->tokens[_mark]->lineno;
18554
263k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18555
263k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18556
263k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18557
263k
    if (p->call_invalid_rules) { // invalid_starred_expression_unpacking
18558
183k
        if (p->error_indicator) {
18559
0
            p->level--;
18560
0
            return NULL;
18561
0
        }
18562
183k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression_unpacking"));
18563
183k
        void *invalid_starred_expression_unpacking_var;
18564
183k
        if (
18565
183k
            (invalid_starred_expression_unpacking_var = invalid_starred_expression_unpacking_rule(p))  // invalid_starred_expression_unpacking
18566
183k
        )
18567
0
        {
18568
0
            D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression_unpacking"));
18569
0
            _res = invalid_starred_expression_unpacking_var;
18570
0
            goto done;
18571
0
        }
18572
183k
        p->mark = _mark;
18573
183k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18574
183k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_starred_expression_unpacking"));
18575
183k
    }
18576
263k
    { // '*' expression
18577
263k
        if (p->error_indicator) {
18578
1.35k
            p->level--;
18579
1.35k
            return NULL;
18580
1.35k
        }
18581
262k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
18582
262k
        Token * _literal;
18583
262k
        expr_ty a;
18584
262k
        if (
18585
262k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
18586
13.7k
            &&
18587
13.7k
            (a = expression_rule(p))  // expression
18588
262k
        )
18589
13.1k
        {
18590
13.1k
            D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
18591
13.1k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18592
13.1k
            if (_token == NULL) {
18593
0
                p->level--;
18594
0
                return NULL;
18595
0
            }
18596
13.1k
            int _end_lineno = _token->end_lineno;
18597
13.1k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18598
13.1k
            int _end_col_offset = _token->end_col_offset;
18599
13.1k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18600
13.1k
            _res = _PyAST_Starred ( a , Load , EXTRA );
18601
13.1k
            if (_res == NULL && PyErr_Occurred()) {
18602
0
                p->error_indicator = 1;
18603
0
                p->level--;
18604
0
                return NULL;
18605
0
            }
18606
13.1k
            goto done;
18607
13.1k
        }
18608
249k
        p->mark = _mark;
18609
249k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18610
249k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
18611
249k
    }
18612
249k
    if (p->call_invalid_rules) { // invalid_starred_expression
18613
170k
        if (p->error_indicator) {
18614
0
            p->level--;
18615
0
            return NULL;
18616
0
        }
18617
170k
        D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression"));
18618
170k
        void *invalid_starred_expression_var;
18619
170k
        if (
18620
170k
            (invalid_starred_expression_var = invalid_starred_expression_rule(p))  // invalid_starred_expression
18621
170k
        )
18622
0
        {
18623
0
            D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_starred_expression"));
18624
0
            _res = invalid_starred_expression_var;
18625
0
            goto done;
18626
0
        }
18627
170k
        p->mark = _mark;
18628
170k
        D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
18629
170k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_starred_expression"));
18630
170k
    }
18631
249k
    _res = NULL;
18632
262k
  done:
18633
262k
    p->level--;
18634
262k
    return _res;
18635
249k
}
18636
18637
// kwarg_or_starred: invalid_kwarg | NAME '=' expression | starred_expression
18638
static KeywordOrStarred*
18639
kwarg_or_starred_rule(Parser *p)
18640
119k
{
18641
119k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18642
0
        _Pypegen_stack_overflow(p);
18643
0
    }
18644
119k
    if (p->error_indicator) {
18645
0
        p->level--;
18646
0
        return NULL;
18647
0
    }
18648
119k
    KeywordOrStarred* _res = NULL;
18649
119k
    int _mark = p->mark;
18650
119k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18651
13
        p->error_indicator = 1;
18652
13
        p->level--;
18653
13
        return NULL;
18654
13
    }
18655
119k
    int _start_lineno = p->tokens[_mark]->lineno;
18656
119k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18657
119k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18658
119k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18659
119k
    if (p->call_invalid_rules) { // invalid_kwarg
18660
84.3k
        if (p->error_indicator) {
18661
0
            p->level--;
18662
0
            return NULL;
18663
0
        }
18664
84.3k
        D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18665
84.3k
        void *invalid_kwarg_var;
18666
84.3k
        if (
18667
84.3k
            (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
18668
84.3k
        )
18669
0
        {
18670
0
            D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18671
0
            _res = invalid_kwarg_var;
18672
0
            goto done;
18673
0
        }
18674
84.3k
        p->mark = _mark;
18675
84.3k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18676
84.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
18677
84.3k
    }
18678
119k
    { // NAME '=' expression
18679
119k
        if (p->error_indicator) {
18680
596
            p->level--;
18681
596
            return NULL;
18682
596
        }
18683
119k
        D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18684
119k
        Token * _literal;
18685
119k
        expr_ty a;
18686
119k
        expr_ty b;
18687
119k
        if (
18688
119k
            (a = _PyPegen_name_token(p))  // NAME
18689
34.7k
            &&
18690
34.7k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
18691
25.6k
            &&
18692
25.6k
            (b = expression_rule(p))  // expression
18693
119k
        )
18694
23.4k
        {
18695
23.4k
            D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18696
23.4k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18697
23.4k
            if (_token == NULL) {
18698
0
                p->level--;
18699
0
                return NULL;
18700
0
            }
18701
23.4k
            int _end_lineno = _token->end_lineno;
18702
23.4k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18703
23.4k
            int _end_col_offset = _token->end_col_offset;
18704
23.4k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18705
23.4k
            _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
18706
23.4k
            if (_res == NULL && PyErr_Occurred()) {
18707
0
                p->error_indicator = 1;
18708
0
                p->level--;
18709
0
                return NULL;
18710
0
            }
18711
23.4k
            goto done;
18712
23.4k
        }
18713
95.8k
        p->mark = _mark;
18714
95.8k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18715
95.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
18716
95.8k
    }
18717
0
    { // starred_expression
18718
95.8k
        if (p->error_indicator) {
18719
200
            p->level--;
18720
200
            return NULL;
18721
200
        }
18722
95.6k
        D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
18723
95.6k
        expr_ty a;
18724
95.6k
        if (
18725
95.6k
            (a = starred_expression_rule(p))  // starred_expression
18726
95.6k
        )
18727
4.79k
        {
18728
4.79k
            D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
18729
4.79k
            _res = _PyPegen_keyword_or_starred ( p , a , 0 );
18730
4.79k
            if (_res == NULL && PyErr_Occurred()) {
18731
0
                p->error_indicator = 1;
18732
0
                p->level--;
18733
0
                return NULL;
18734
0
            }
18735
4.79k
            goto done;
18736
4.79k
        }
18737
90.8k
        p->mark = _mark;
18738
90.8k
        D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
18739
90.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
18740
90.8k
    }
18741
90.8k
    _res = NULL;
18742
119k
  done:
18743
119k
    p->level--;
18744
119k
    return _res;
18745
90.8k
}
18746
18747
// kwarg_or_double_starred: invalid_kwarg | NAME '=' expression | '**' expression
18748
static KeywordOrStarred*
18749
kwarg_or_double_starred_rule(Parser *p)
18750
54.4k
{
18751
54.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18752
0
        _Pypegen_stack_overflow(p);
18753
0
    }
18754
54.4k
    if (p->error_indicator) {
18755
0
        p->level--;
18756
0
        return NULL;
18757
0
    }
18758
54.4k
    KeywordOrStarred* _res = NULL;
18759
54.4k
    int _mark = p->mark;
18760
54.4k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18761
8
        p->error_indicator = 1;
18762
8
        p->level--;
18763
8
        return NULL;
18764
8
    }
18765
54.4k
    int _start_lineno = p->tokens[_mark]->lineno;
18766
54.4k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18767
54.4k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18768
54.4k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18769
54.4k
    if (p->call_invalid_rules) { // invalid_kwarg
18770
37.0k
        if (p->error_indicator) {
18771
0
            p->level--;
18772
0
            return NULL;
18773
0
        }
18774
37.0k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18775
37.0k
        void *invalid_kwarg_var;
18776
37.0k
        if (
18777
37.0k
            (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
18778
37.0k
        )
18779
0
        {
18780
0
            D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
18781
0
            _res = invalid_kwarg_var;
18782
0
            goto done;
18783
0
        }
18784
37.0k
        p->mark = _mark;
18785
37.0k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18786
37.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
18787
37.0k
    }
18788
54.4k
    { // NAME '=' expression
18789
54.4k
        if (p->error_indicator) {
18790
266
            p->level--;
18791
266
            return NULL;
18792
266
        }
18793
54.2k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18794
54.2k
        Token * _literal;
18795
54.2k
        expr_ty a;
18796
54.2k
        expr_ty b;
18797
54.2k
        if (
18798
54.2k
            (a = _PyPegen_name_token(p))  // NAME
18799
8.39k
            &&
18800
8.39k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
18801
3.66k
            &&
18802
3.66k
            (b = expression_rule(p))  // expression
18803
54.2k
        )
18804
2.61k
        {
18805
2.61k
            D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
18806
2.61k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18807
2.61k
            if (_token == NULL) {
18808
0
                p->level--;
18809
0
                return NULL;
18810
0
            }
18811
2.61k
            int _end_lineno = _token->end_lineno;
18812
2.61k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18813
2.61k
            int _end_col_offset = _token->end_col_offset;
18814
2.61k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18815
2.61k
            _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
18816
2.61k
            if (_res == NULL && PyErr_Occurred()) {
18817
0
                p->error_indicator = 1;
18818
0
                p->level--;
18819
0
                return NULL;
18820
0
            }
18821
2.61k
            goto done;
18822
2.61k
        }
18823
51.6k
        p->mark = _mark;
18824
51.6k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18825
51.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
18826
51.6k
    }
18827
0
    { // '**' expression
18828
51.6k
        if (p->error_indicator) {
18829
66
            p->level--;
18830
66
            return NULL;
18831
66
        }
18832
51.5k
        D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
18833
51.5k
        Token * _literal;
18834
51.5k
        expr_ty a;
18835
51.5k
        if (
18836
51.5k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
18837
8.87k
            &&
18838
8.87k
            (a = expression_rule(p))  // expression
18839
51.5k
        )
18840
8.44k
        {
18841
8.44k
            D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
18842
8.44k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18843
8.44k
            if (_token == NULL) {
18844
0
                p->level--;
18845
0
                return NULL;
18846
0
            }
18847
8.44k
            int _end_lineno = _token->end_lineno;
18848
8.44k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18849
8.44k
            int _end_col_offset = _token->end_col_offset;
18850
8.44k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18851
8.44k
            _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( NULL , a , EXTRA ) ) , 1 );
18852
8.44k
            if (_res == NULL && PyErr_Occurred()) {
18853
0
                p->error_indicator = 1;
18854
0
                p->level--;
18855
0
                return NULL;
18856
0
            }
18857
8.44k
            goto done;
18858
8.44k
        }
18859
43.0k
        p->mark = _mark;
18860
43.0k
        D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
18861
43.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
18862
43.0k
    }
18863
43.0k
    _res = NULL;
18864
54.1k
  done:
18865
54.1k
    p->level--;
18866
54.1k
    return _res;
18867
43.0k
}
18868
18869
// star_targets: star_target !',' | star_target ((',' star_target))* ','?
18870
static expr_ty
18871
star_targets_rule(Parser *p)
18872
300k
{
18873
300k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18874
0
        _Pypegen_stack_overflow(p);
18875
0
    }
18876
300k
    if (p->error_indicator) {
18877
0
        p->level--;
18878
0
        return NULL;
18879
0
    }
18880
300k
    expr_ty _res = NULL;
18881
300k
    int _mark = p->mark;
18882
300k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18883
38
        p->error_indicator = 1;
18884
38
        p->level--;
18885
38
        return NULL;
18886
38
    }
18887
300k
    int _start_lineno = p->tokens[_mark]->lineno;
18888
300k
    UNUSED(_start_lineno); // Only used by EXTRA macro
18889
300k
    int _start_col_offset = p->tokens[_mark]->col_offset;
18890
300k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
18891
300k
    { // star_target !','
18892
300k
        if (p->error_indicator) {
18893
0
            p->level--;
18894
0
            return NULL;
18895
0
        }
18896
300k
        D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target !','"));
18897
300k
        expr_ty a;
18898
300k
        if (
18899
300k
            (a = star_target_rule(p))  // star_target
18900
157k
            &&
18901
157k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
18902
300k
        )
18903
146k
        {
18904
146k
            D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target !','"));
18905
146k
            _res = a;
18906
146k
            if (_res == NULL && PyErr_Occurred()) {
18907
0
                p->error_indicator = 1;
18908
0
                p->level--;
18909
0
                return NULL;
18910
0
            }
18911
146k
            goto done;
18912
146k
        }
18913
153k
        p->mark = _mark;
18914
153k
        D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
18915
153k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target !','"));
18916
153k
    }
18917
0
    { // star_target ((',' star_target))* ','?
18918
153k
        if (p->error_indicator) {
18919
1.30k
            p->level--;
18920
1.30k
            return NULL;
18921
1.30k
        }
18922
152k
        D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
18923
152k
        void *_opt_var;
18924
152k
        UNUSED(_opt_var); // Silence compiler warnings
18925
152k
        expr_ty a;
18926
152k
        asdl_seq * b;
18927
152k
        if (
18928
152k
            (a = star_target_rule(p))  // star_target
18929
11.0k
            &&
18930
11.0k
            (b = _loop0_95_rule(p))  // ((',' star_target))*
18931
11.0k
            &&
18932
11.0k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18933
152k
        )
18934
10.9k
        {
18935
10.9k
            D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
18936
10.9k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18937
10.9k
            if (_token == NULL) {
18938
0
                p->level--;
18939
0
                return NULL;
18940
0
            }
18941
10.9k
            int _end_lineno = _token->end_lineno;
18942
10.9k
            UNUSED(_end_lineno); // Only used by EXTRA macro
18943
10.9k
            int _end_col_offset = _token->end_col_offset;
18944
10.9k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
18945
10.9k
            _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
18946
10.9k
            if (_res == NULL && PyErr_Occurred()) {
18947
0
                p->error_indicator = 1;
18948
0
                p->level--;
18949
0
                return NULL;
18950
0
            }
18951
10.9k
            goto done;
18952
10.9k
        }
18953
141k
        p->mark = _mark;
18954
141k
        D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
18955
141k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))* ','?"));
18956
141k
    }
18957
141k
    _res = NULL;
18958
298k
  done:
18959
298k
    p->level--;
18960
298k
    return _res;
18961
141k
}
18962
18963
// star_targets_list_seq: ','.star_target+ ','?
18964
static asdl_expr_seq*
18965
star_targets_list_seq_rule(Parser *p)
18966
10.6k
{
18967
10.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
18968
0
        _Pypegen_stack_overflow(p);
18969
0
    }
18970
10.6k
    if (p->error_indicator) {
18971
0
        p->level--;
18972
0
        return NULL;
18973
0
    }
18974
10.6k
    asdl_expr_seq* _res = NULL;
18975
10.6k
    int _mark = p->mark;
18976
10.6k
    { // ','.star_target+ ','?
18977
10.6k
        if (p->error_indicator) {
18978
0
            p->level--;
18979
0
            return NULL;
18980
0
        }
18981
10.6k
        D(fprintf(stderr, "%*c> star_targets_list_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
18982
10.6k
        void *_opt_var;
18983
10.6k
        UNUSED(_opt_var); // Silence compiler warnings
18984
10.6k
        asdl_expr_seq* a;
18985
10.6k
        if (
18986
10.6k
            (a = (asdl_expr_seq*)_gather_97_rule(p))  // ','.star_target+
18987
2.36k
            &&
18988
2.36k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18989
10.6k
        )
18990
2.36k
        {
18991
2.36k
            D(fprintf(stderr, "%*c+ star_targets_list_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
18992
2.36k
            _res = a;
18993
2.36k
            if (_res == NULL && PyErr_Occurred()) {
18994
0
                p->error_indicator = 1;
18995
0
                p->level--;
18996
0
                return NULL;
18997
0
            }
18998
2.36k
            goto done;
18999
2.36k
        }
19000
8.26k
        p->mark = _mark;
19001
8.26k
        D(fprintf(stderr, "%*c%s star_targets_list_seq[%d-%d]: %s failed!\n", p->level, ' ',
19002
8.26k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_target+ ','?"));
19003
8.26k
    }
19004
8.26k
    _res = NULL;
19005
10.6k
  done:
19006
10.6k
    p->level--;
19007
10.6k
    return _res;
19008
8.26k
}
19009
19010
// star_targets_tuple_seq: star_target ((',' star_target))+ ','? | star_target ','
19011
static asdl_expr_seq*
19012
star_targets_tuple_seq_rule(Parser *p)
19013
10.3k
{
19014
10.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19015
0
        _Pypegen_stack_overflow(p);
19016
0
    }
19017
10.3k
    if (p->error_indicator) {
19018
0
        p->level--;
19019
0
        return NULL;
19020
0
    }
19021
10.3k
    asdl_expr_seq* _res = NULL;
19022
10.3k
    int _mark = p->mark;
19023
10.3k
    { // star_target ((',' star_target))+ ','?
19024
10.3k
        if (p->error_indicator) {
19025
0
            p->level--;
19026
0
            return NULL;
19027
0
        }
19028
10.3k
        D(fprintf(stderr, "%*c> star_targets_tuple_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
19029
10.3k
        void *_opt_var;
19030
10.3k
        UNUSED(_opt_var); // Silence compiler warnings
19031
10.3k
        expr_ty a;
19032
10.3k
        asdl_seq * b;
19033
10.3k
        if (
19034
10.3k
            (a = star_target_rule(p))  // star_target
19035
3.25k
            &&
19036
3.25k
            (b = _loop1_98_rule(p))  // ((',' star_target))+
19037
463
            &&
19038
463
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
19039
10.3k
        )
19040
463
        {
19041
463
            D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
19042
463
            _res = ( asdl_expr_seq* ) _PyPegen_seq_insert_in_front ( p , a , b );
19043
463
            if (_res == NULL && PyErr_Occurred()) {
19044
0
                p->error_indicator = 1;
19045
0
                p->level--;
19046
0
                return NULL;
19047
0
            }
19048
463
            goto done;
19049
463
        }
19050
9.90k
        p->mark = _mark;
19051
9.90k
        D(fprintf(stderr, "%*c%s star_targets_tuple_seq[%d-%d]: %s failed!\n", p->level, ' ',
19052
9.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))+ ','?"));
19053
9.90k
    }
19054
0
    { // star_target ','
19055
9.90k
        if (p->error_indicator) {
19056
0
            p->level--;
19057
0
            return NULL;
19058
0
        }
19059
9.90k
        D(fprintf(stderr, "%*c> star_targets_tuple_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ','"));
19060
9.90k
        Token * _literal;
19061
9.90k
        expr_ty a;
19062
9.90k
        if (
19063
9.90k
            (a = star_target_rule(p))  // star_target
19064
2.79k
            &&
19065
2.79k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
19066
9.90k
        )
19067
960
        {
19068
960
            D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ','"));
19069
960
            _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
19070
960
            if (_res == NULL && PyErr_Occurred()) {
19071
0
                p->error_indicator = 1;
19072
0
                p->level--;
19073
0
                return NULL;
19074
0
            }
19075
960
            goto done;
19076
960
        }
19077
8.94k
        p->mark = _mark;
19078
8.94k
        D(fprintf(stderr, "%*c%s star_targets_tuple_seq[%d-%d]: %s failed!\n", p->level, ' ',
19079
8.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ','"));
19080
8.94k
    }
19081
8.94k
    _res = NULL;
19082
10.3k
  done:
19083
10.3k
    p->level--;
19084
10.3k
    return _res;
19085
8.94k
}
19086
19087
// star_target: '*' (!'*' star_target) | target_with_star_atom
19088
static expr_ty
19089
star_target_rule(Parser *p)
19090
509k
{
19091
509k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19092
0
        _Pypegen_stack_overflow(p);
19093
0
    }
19094
509k
    if (p->error_indicator) {
19095
10
        p->level--;
19096
10
        return NULL;
19097
10
    }
19098
509k
    expr_ty _res = NULL;
19099
509k
    if (_PyPegen_is_memoized(p, star_target_type, &_res)) {
19100
254k
        p->level--;
19101
254k
        return _res;
19102
254k
    }
19103
254k
    int _mark = p->mark;
19104
254k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19105
0
        p->error_indicator = 1;
19106
0
        p->level--;
19107
0
        return NULL;
19108
0
    }
19109
254k
    int _start_lineno = p->tokens[_mark]->lineno;
19110
254k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19111
254k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19112
254k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19113
254k
    { // '*' (!'*' star_target)
19114
254k
        if (p->error_indicator) {
19115
0
            p->level--;
19116
0
            return NULL;
19117
0
        }
19118
254k
        D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
19119
254k
        Token * _literal;
19120
254k
        void *a;
19121
254k
        if (
19122
254k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
19123
2.96k
            &&
19124
2.96k
            (a = _tmp_99_rule(p))  // !'*' star_target
19125
254k
        )
19126
1.78k
        {
19127
1.78k
            D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
19128
1.78k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19129
1.78k
            if (_token == NULL) {
19130
0
                p->level--;
19131
0
                return NULL;
19132
0
            }
19133
1.78k
            int _end_lineno = _token->end_lineno;
19134
1.78k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19135
1.78k
            int _end_col_offset = _token->end_col_offset;
19136
1.78k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19137
1.78k
            _res = _PyAST_Starred ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
19138
1.78k
            if (_res == NULL && PyErr_Occurred()) {
19139
0
                p->error_indicator = 1;
19140
0
                p->level--;
19141
0
                return NULL;
19142
0
            }
19143
1.78k
            goto done;
19144
1.78k
        }
19145
252k
        p->mark = _mark;
19146
252k
        D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
19147
252k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (!'*' star_target)"));
19148
252k
    }
19149
0
    { // target_with_star_atom
19150
252k
        if (p->error_indicator) {
19151
456
            p->level--;
19152
456
            return NULL;
19153
456
        }
19154
252k
        D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
19155
252k
        expr_ty target_with_star_atom_var;
19156
252k
        if (
19157
252k
            (target_with_star_atom_var = target_with_star_atom_rule(p))  // target_with_star_atom
19158
252k
        )
19159
123k
        {
19160
123k
            D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
19161
123k
            _res = target_with_star_atom_var;
19162
123k
            goto done;
19163
123k
        }
19164
129k
        p->mark = _mark;
19165
129k
        D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
19166
129k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target_with_star_atom"));
19167
129k
    }
19168
129k
    _res = NULL;
19169
254k
  done:
19170
254k
    _PyPegen_insert_memo(p, _mark, star_target_type, _res);
19171
254k
    p->level--;
19172
254k
    return _res;
19173
129k
}
19174
19175
// target_with_star_atom:
19176
//     | t_primary '.' NAME !t_lookahead
19177
//     | t_primary '[' slices ']' !t_lookahead
19178
//     | star_atom
19179
static expr_ty
19180
target_with_star_atom_rule(Parser *p)
19181
264k
{
19182
264k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19183
0
        _Pypegen_stack_overflow(p);
19184
0
    }
19185
264k
    if (p->error_indicator) {
19186
0
        p->level--;
19187
0
        return NULL;
19188
0
    }
19189
264k
    expr_ty _res = NULL;
19190
264k
    if (_PyPegen_is_memoized(p, target_with_star_atom_type, &_res)) {
19191
10.2k
        p->level--;
19192
10.2k
        return _res;
19193
10.2k
    }
19194
254k
    int _mark = p->mark;
19195
254k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19196
0
        p->error_indicator = 1;
19197
0
        p->level--;
19198
0
        return NULL;
19199
0
    }
19200
254k
    int _start_lineno = p->tokens[_mark]->lineno;
19201
254k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19202
254k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19203
254k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19204
254k
    { // t_primary '.' NAME !t_lookahead
19205
254k
        if (p->error_indicator) {
19206
0
            p->level--;
19207
0
            return NULL;
19208
0
        }
19209
254k
        D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19210
254k
        Token * _literal;
19211
254k
        expr_ty a;
19212
254k
        expr_ty b;
19213
254k
        if (
19214
254k
            (a = t_primary_rule(p))  // t_primary
19215
23.0k
            &&
19216
23.0k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19217
5.46k
            &&
19218
5.46k
            (b = _PyPegen_name_token(p))  // NAME
19219
4.91k
            &&
19220
4.91k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19221
254k
        )
19222
4.91k
        {
19223
4.91k
            D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19224
4.91k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19225
4.91k
            if (_token == NULL) {
19226
0
                p->level--;
19227
0
                return NULL;
19228
0
            }
19229
4.91k
            int _end_lineno = _token->end_lineno;
19230
4.91k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19231
4.91k
            int _end_col_offset = _token->end_col_offset;
19232
4.91k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19233
4.91k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
19234
4.91k
            if (_res == NULL && PyErr_Occurred()) {
19235
0
                p->error_indicator = 1;
19236
0
                p->level--;
19237
0
                return NULL;
19238
0
            }
19239
4.91k
            goto done;
19240
4.91k
        }
19241
249k
        p->mark = _mark;
19242
249k
        D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19243
249k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19244
249k
    }
19245
0
    { // t_primary '[' slices ']' !t_lookahead
19246
249k
        if (p->error_indicator) {
19247
1.36k
            p->level--;
19248
1.36k
            return NULL;
19249
1.36k
        }
19250
248k
        D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19251
248k
        Token * _literal;
19252
248k
        Token * _literal_1;
19253
248k
        expr_ty a;
19254
248k
        expr_ty b;
19255
248k
        if (
19256
248k
            (a = t_primary_rule(p))  // t_primary
19257
18.1k
            &&
19258
18.1k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19259
3.04k
            &&
19260
3.04k
            (b = slices_rule(p))  // slices
19261
2.70k
            &&
19262
2.70k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19263
2.25k
            &&
19264
2.25k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19265
248k
        )
19266
2.25k
        {
19267
2.25k
            D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19268
2.25k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19269
2.25k
            if (_token == NULL) {
19270
0
                p->level--;
19271
0
                return NULL;
19272
0
            }
19273
2.25k
            int _end_lineno = _token->end_lineno;
19274
2.25k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19275
2.25k
            int _end_col_offset = _token->end_col_offset;
19276
2.25k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19277
2.25k
            _res = _PyAST_Subscript ( a , b , Store , EXTRA );
19278
2.25k
            if (_res == NULL && PyErr_Occurred()) {
19279
0
                p->error_indicator = 1;
19280
0
                p->level--;
19281
0
                return NULL;
19282
0
            }
19283
2.25k
            goto done;
19284
2.25k
        }
19285
246k
        p->mark = _mark;
19286
246k
        D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19287
246k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19288
246k
    }
19289
0
    { // star_atom
19290
246k
        if (p->error_indicator) {
19291
0
            p->level--;
19292
0
            return NULL;
19293
0
        }
19294
246k
        D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_atom"));
19295
246k
        expr_ty star_atom_var;
19296
246k
        if (
19297
246k
            (star_atom_var = star_atom_rule(p))  // star_atom
19298
246k
        )
19299
118k
        {
19300
118k
            D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_atom"));
19301
118k
            _res = star_atom_var;
19302
118k
            goto done;
19303
118k
        }
19304
127k
        p->mark = _mark;
19305
127k
        D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19306
127k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_atom"));
19307
127k
    }
19308
127k
    _res = NULL;
19309
253k
  done:
19310
253k
    _PyPegen_insert_memo(p, _mark, target_with_star_atom_type, _res);
19311
253k
    p->level--;
19312
253k
    return _res;
19313
127k
}
19314
19315
// star_atom:
19316
//     | NAME
19317
//     | '(' target_with_star_atom ')'
19318
//     | '(' star_targets_tuple_seq? ')'
19319
//     | '[' star_targets_list_seq? ']'
19320
static expr_ty
19321
star_atom_rule(Parser *p)
19322
246k
{
19323
246k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19324
0
        _Pypegen_stack_overflow(p);
19325
0
    }
19326
246k
    if (p->error_indicator) {
19327
0
        p->level--;
19328
0
        return NULL;
19329
0
    }
19330
246k
    expr_ty _res = NULL;
19331
246k
    int _mark = p->mark;
19332
246k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19333
0
        p->error_indicator = 1;
19334
0
        p->level--;
19335
0
        return NULL;
19336
0
    }
19337
246k
    int _start_lineno = p->tokens[_mark]->lineno;
19338
246k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19339
246k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19340
246k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19341
246k
    { // NAME
19342
246k
        if (p->error_indicator) {
19343
0
            p->level--;
19344
0
            return NULL;
19345
0
        }
19346
246k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
19347
246k
        expr_ty a;
19348
246k
        if (
19349
246k
            (a = _PyPegen_name_token(p))  // NAME
19350
246k
        )
19351
108k
        {
19352
108k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
19353
108k
            _res = _PyPegen_set_expr_context ( p , a , Store );
19354
108k
            if (_res == NULL && PyErr_Occurred()) {
19355
0
                p->error_indicator = 1;
19356
0
                p->level--;
19357
0
                return NULL;
19358
0
            }
19359
108k
            goto done;
19360
108k
        }
19361
137k
        p->mark = _mark;
19362
137k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19363
137k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
19364
137k
    }
19365
0
    { // '(' target_with_star_atom ')'
19366
137k
        if (p->error_indicator) {
19367
0
            p->level--;
19368
0
            return NULL;
19369
0
        }
19370
137k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' target_with_star_atom ')'"));
19371
137k
        Token * _literal;
19372
137k
        Token * _literal_1;
19373
137k
        expr_ty a;
19374
137k
        if (
19375
137k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19376
12.3k
            &&
19377
12.3k
            (a = target_with_star_atom_rule(p))  // target_with_star_atom
19378
5.08k
            &&
19379
5.08k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19380
137k
        )
19381
1.94k
        {
19382
1.94k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' target_with_star_atom ')'"));
19383
1.94k
            _res = _PyPegen_set_expr_context ( p , a , Store );
19384
1.94k
            if (_res == NULL && PyErr_Occurred()) {
19385
0
                p->error_indicator = 1;
19386
0
                p->level--;
19387
0
                return NULL;
19388
0
            }
19389
1.94k
            goto done;
19390
1.94k
        }
19391
135k
        p->mark = _mark;
19392
135k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19393
135k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' target_with_star_atom ')'"));
19394
135k
    }
19395
0
    { // '(' star_targets_tuple_seq? ')'
19396
135k
        if (p->error_indicator) {
19397
0
            p->level--;
19398
0
            return NULL;
19399
0
        }
19400
135k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
19401
135k
        Token * _literal;
19402
135k
        Token * _literal_1;
19403
135k
        void *a;
19404
135k
        if (
19405
135k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19406
10.3k
            &&
19407
10.3k
            (a = star_targets_tuple_seq_rule(p), !p->error_indicator)  // star_targets_tuple_seq?
19408
10.3k
            &&
19409
10.3k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19410
135k
        )
19411
5.34k
        {
19412
5.34k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
19413
5.34k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19414
5.34k
            if (_token == NULL) {
19415
0
                p->level--;
19416
0
                return NULL;
19417
0
            }
19418
5.34k
            int _end_lineno = _token->end_lineno;
19419
5.34k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19420
5.34k
            int _end_col_offset = _token->end_col_offset;
19421
5.34k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19422
5.34k
            _res = _PyAST_Tuple ( a , Store , EXTRA );
19423
5.34k
            if (_res == NULL && PyErr_Occurred()) {
19424
0
                p->error_indicator = 1;
19425
0
                p->level--;
19426
0
                return NULL;
19427
0
            }
19428
5.34k
            goto done;
19429
5.34k
        }
19430
130k
        p->mark = _mark;
19431
130k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19432
130k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
19433
130k
    }
19434
0
    { // '[' star_targets_list_seq? ']'
19435
130k
        if (p->error_indicator) {
19436
0
            p->level--;
19437
0
            return NULL;
19438
0
        }
19439
130k
        D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
19440
130k
        Token * _literal;
19441
130k
        Token * _literal_1;
19442
130k
        void *a;
19443
130k
        if (
19444
130k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19445
10.6k
            &&
19446
10.6k
            (a = star_targets_list_seq_rule(p), !p->error_indicator)  // star_targets_list_seq?
19447
10.6k
            &&
19448
10.6k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19449
130k
        )
19450
2.75k
        {
19451
2.75k
            D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
19452
2.75k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19453
2.75k
            if (_token == NULL) {
19454
0
                p->level--;
19455
0
                return NULL;
19456
0
            }
19457
2.75k
            int _end_lineno = _token->end_lineno;
19458
2.75k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19459
2.75k
            int _end_col_offset = _token->end_col_offset;
19460
2.75k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19461
2.75k
            _res = _PyAST_List ( a , Store , EXTRA );
19462
2.75k
            if (_res == NULL && PyErr_Occurred()) {
19463
0
                p->error_indicator = 1;
19464
0
                p->level--;
19465
0
                return NULL;
19466
0
            }
19467
2.75k
            goto done;
19468
2.75k
        }
19469
127k
        p->mark = _mark;
19470
127k
        D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
19471
127k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_targets_list_seq? ']'"));
19472
127k
    }
19473
127k
    _res = NULL;
19474
246k
  done:
19475
246k
    p->level--;
19476
246k
    return _res;
19477
127k
}
19478
19479
// single_target: single_subscript_attribute_target | NAME | '(' single_target ')'
19480
static expr_ty
19481
single_target_rule(Parser *p)
19482
179k
{
19483
179k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19484
0
        _Pypegen_stack_overflow(p);
19485
0
    }
19486
179k
    if (p->error_indicator) {
19487
0
        p->level--;
19488
0
        return NULL;
19489
0
    }
19490
179k
    expr_ty _res = NULL;
19491
179k
    int _mark = p->mark;
19492
179k
    { // single_subscript_attribute_target
19493
179k
        if (p->error_indicator) {
19494
0
            p->level--;
19495
0
            return NULL;
19496
0
        }
19497
179k
        D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
19498
179k
        expr_ty single_subscript_attribute_target_var;
19499
179k
        if (
19500
179k
            (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
19501
179k
        )
19502
1.68k
        {
19503
1.68k
            D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
19504
1.68k
            _res = single_subscript_attribute_target_var;
19505
1.68k
            goto done;
19506
1.68k
        }
19507
177k
        p->mark = _mark;
19508
177k
        D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
19509
177k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
19510
177k
    }
19511
0
    { // NAME
19512
177k
        if (p->error_indicator) {
19513
160
            p->level--;
19514
160
            return NULL;
19515
160
        }
19516
177k
        D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
19517
177k
        expr_ty a;
19518
177k
        if (
19519
177k
            (a = _PyPegen_name_token(p))  // NAME
19520
177k
        )
19521
69.8k
        {
19522
69.8k
            D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
19523
69.8k
            _res = _PyPegen_set_expr_context ( p , a , Store );
19524
69.8k
            if (_res == NULL && PyErr_Occurred()) {
19525
0
                p->error_indicator = 1;
19526
0
                p->level--;
19527
0
                return NULL;
19528
0
            }
19529
69.8k
            goto done;
19530
69.8k
        }
19531
107k
        p->mark = _mark;
19532
107k
        D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
19533
107k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
19534
107k
    }
19535
0
    { // '(' single_target ')'
19536
107k
        if (p->error_indicator) {
19537
0
            p->level--;
19538
0
            return NULL;
19539
0
        }
19540
107k
        D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
19541
107k
        Token * _literal;
19542
107k
        Token * _literal_1;
19543
107k
        expr_ty a;
19544
107k
        if (
19545
107k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19546
7.85k
            &&
19547
7.85k
            (a = single_target_rule(p))  // single_target
19548
2.27k
            &&
19549
2.27k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19550
107k
        )
19551
626
        {
19552
626
            D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
19553
626
            _res = a;
19554
626
            if (_res == NULL && PyErr_Occurred()) {
19555
0
                p->error_indicator = 1;
19556
0
                p->level--;
19557
0
                return NULL;
19558
0
            }
19559
626
            goto done;
19560
626
        }
19561
107k
        p->mark = _mark;
19562
107k
        D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
19563
107k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
19564
107k
    }
19565
107k
    _res = NULL;
19566
179k
  done:
19567
179k
    p->level--;
19568
179k
    return _res;
19569
107k
}
19570
19571
// single_subscript_attribute_target:
19572
//     | t_primary '.' NAME !t_lookahead
19573
//     | t_primary '[' slices ']' !t_lookahead
19574
static expr_ty
19575
single_subscript_attribute_target_rule(Parser *p)
19576
367k
{
19577
367k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19578
0
        _Pypegen_stack_overflow(p);
19579
0
    }
19580
367k
    if (p->error_indicator) {
19581
0
        p->level--;
19582
0
        return NULL;
19583
0
    }
19584
367k
    expr_ty _res = NULL;
19585
367k
    int _mark = p->mark;
19586
367k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19587
27
        p->error_indicator = 1;
19588
27
        p->level--;
19589
27
        return NULL;
19590
27
    }
19591
366k
    int _start_lineno = p->tokens[_mark]->lineno;
19592
366k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19593
366k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19594
366k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19595
366k
    { // t_primary '.' NAME !t_lookahead
19596
366k
        if (p->error_indicator) {
19597
0
            p->level--;
19598
0
            return NULL;
19599
0
        }
19600
366k
        D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19601
366k
        Token * _literal;
19602
366k
        expr_ty a;
19603
366k
        expr_ty b;
19604
366k
        if (
19605
366k
            (a = t_primary_rule(p))  // t_primary
19606
25.2k
            &&
19607
25.2k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19608
6.75k
            &&
19609
6.75k
            (b = _PyPegen_name_token(p))  // NAME
19610
5.70k
            &&
19611
5.70k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19612
366k
        )
19613
5.70k
        {
19614
5.70k
            D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19615
5.70k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19616
5.70k
            if (_token == NULL) {
19617
0
                p->level--;
19618
0
                return NULL;
19619
0
            }
19620
5.70k
            int _end_lineno = _token->end_lineno;
19621
5.70k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19622
5.70k
            int _end_col_offset = _token->end_col_offset;
19623
5.70k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19624
5.70k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
19625
5.70k
            if (_res == NULL && PyErr_Occurred()) {
19626
0
                p->error_indicator = 1;
19627
0
                p->level--;
19628
0
                return NULL;
19629
0
            }
19630
5.70k
            goto done;
19631
5.70k
        }
19632
361k
        p->mark = _mark;
19633
361k
        D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
19634
361k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
19635
361k
    }
19636
0
    { // t_primary '[' slices ']' !t_lookahead
19637
361k
        if (p->error_indicator) {
19638
2.77k
            p->level--;
19639
2.77k
            return NULL;
19640
2.77k
        }
19641
358k
        D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19642
358k
        Token * _literal;
19643
358k
        Token * _literal_1;
19644
358k
        expr_ty a;
19645
358k
        expr_ty b;
19646
358k
        if (
19647
358k
            (a = t_primary_rule(p))  // t_primary
19648
19.5k
            &&
19649
19.5k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19650
1.88k
            &&
19651
1.88k
            (b = slices_rule(p))  // slices
19652
1.57k
            &&
19653
1.57k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19654
1.22k
            &&
19655
1.22k
            _PyPegen_lookahead(0, t_lookahead_rule, p)
19656
358k
        )
19657
1.22k
        {
19658
1.22k
            D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19659
1.22k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19660
1.22k
            if (_token == NULL) {
19661
0
                p->level--;
19662
0
                return NULL;
19663
0
            }
19664
1.22k
            int _end_lineno = _token->end_lineno;
19665
1.22k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19666
1.22k
            int _end_col_offset = _token->end_col_offset;
19667
1.22k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19668
1.22k
            _res = _PyAST_Subscript ( a , b , Store , EXTRA );
19669
1.22k
            if (_res == NULL && PyErr_Occurred()) {
19670
0
                p->error_indicator = 1;
19671
0
                p->level--;
19672
0
                return NULL;
19673
0
            }
19674
1.22k
            goto done;
19675
1.22k
        }
19676
357k
        p->mark = _mark;
19677
357k
        D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
19678
357k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
19679
357k
    }
19680
357k
    _res = NULL;
19681
364k
  done:
19682
364k
    p->level--;
19683
364k
    return _res;
19684
357k
}
19685
19686
// Left-recursive
19687
// t_primary:
19688
//     | t_primary '.' NAME &t_lookahead
19689
//     | t_primary '[' slices ']' &t_lookahead
19690
//     | t_primary genexp &t_lookahead
19691
//     | t_primary '(' arguments? ')' &t_lookahead
19692
//     | atom &t_lookahead
19693
static expr_ty t_primary_raw(Parser *);
19694
static expr_ty
19695
t_primary_rule(Parser *p)
19696
2.44M
{
19697
2.44M
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19698
0
        _Pypegen_stack_overflow(p);
19699
0
    }
19700
2.44M
    expr_ty _res = NULL;
19701
2.44M
    if (_PyPegen_is_memoized(p, t_primary_type, &_res)) {
19702
2.17M
        p->level--;
19703
2.17M
        return _res;
19704
2.17M
    }
19705
267k
    int _mark = p->mark;
19706
267k
    int _resmark = p->mark;
19707
304k
    while (1) {
19708
304k
        int tmpvar_9 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
19709
304k
        if (tmpvar_9) {
19710
0
            p->level--;
19711
0
            return _res;
19712
0
        }
19713
304k
        p->mark = _mark;
19714
304k
        void *_raw = t_primary_raw(p);
19715
304k
        if (p->error_indicator) {
19716
4.25k
            p->level--;
19717
4.25k
            return NULL;
19718
4.25k
        }
19719
300k
        if (_raw == NULL || p->mark <= _resmark)
19720
263k
            break;
19721
36.8k
        _resmark = p->mark;
19722
36.8k
        _res = _raw;
19723
36.8k
    }
19724
263k
    p->mark = _resmark;
19725
263k
    p->level--;
19726
263k
    return _res;
19727
267k
}
19728
static expr_ty
19729
t_primary_raw(Parser *p)
19730
304k
{
19731
304k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19732
0
        _Pypegen_stack_overflow(p);
19733
0
    }
19734
304k
    if (p->error_indicator) {
19735
0
        p->level--;
19736
0
        return NULL;
19737
0
    }
19738
304k
    expr_ty _res = NULL;
19739
304k
    int _mark = p->mark;
19740
304k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19741
0
        p->error_indicator = 1;
19742
0
        p->level--;
19743
0
        return NULL;
19744
0
    }
19745
304k
    int _start_lineno = p->tokens[_mark]->lineno;
19746
304k
    UNUSED(_start_lineno); // Only used by EXTRA macro
19747
304k
    int _start_col_offset = p->tokens[_mark]->col_offset;
19748
304k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
19749
304k
    { // t_primary '.' NAME &t_lookahead
19750
304k
        if (p->error_indicator) {
19751
0
            p->level--;
19752
0
            return NULL;
19753
0
        }
19754
304k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
19755
304k
        Token * _literal;
19756
304k
        expr_ty a;
19757
304k
        expr_ty b;
19758
304k
        if (
19759
304k
            (a = t_primary_rule(p))  // t_primary
19760
36.8k
            &&
19761
36.8k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
19762
14.0k
            &&
19763
14.0k
            (b = _PyPegen_name_token(p))  // NAME
19764
13.4k
            &&
19765
13.4k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19766
304k
        )
19767
7.40k
        {
19768
7.40k
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
19769
7.40k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19770
7.40k
            if (_token == NULL) {
19771
0
                p->level--;
19772
0
                return NULL;
19773
0
            }
19774
7.40k
            int _end_lineno = _token->end_lineno;
19775
7.40k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19776
7.40k
            int _end_col_offset = _token->end_col_offset;
19777
7.40k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19778
7.40k
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
19779
7.40k
            if (_res == NULL && PyErr_Occurred()) {
19780
0
                p->error_indicator = 1;
19781
0
                p->level--;
19782
0
                return NULL;
19783
0
            }
19784
7.40k
            goto done;
19785
7.40k
        }
19786
297k
        p->mark = _mark;
19787
297k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19788
297k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
19789
297k
    }
19790
0
    { // t_primary '[' slices ']' &t_lookahead
19791
297k
        if (p->error_indicator) {
19792
14
            p->level--;
19793
14
            return NULL;
19794
14
        }
19795
297k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
19796
297k
        Token * _literal;
19797
297k
        Token * _literal_1;
19798
297k
        expr_ty a;
19799
297k
        expr_ty b;
19800
297k
        if (
19801
297k
            (a = t_primary_rule(p))  // t_primary
19802
29.4k
            &&
19803
29.4k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19804
4.30k
            &&
19805
4.30k
            (b = slices_rule(p))  // slices
19806
3.69k
            &&
19807
3.69k
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
19808
3.23k
            &&
19809
3.23k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19810
297k
        )
19811
807
        {
19812
807
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
19813
807
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19814
807
            if (_token == NULL) {
19815
0
                p->level--;
19816
0
                return NULL;
19817
0
            }
19818
807
            int _end_lineno = _token->end_lineno;
19819
807
            UNUSED(_end_lineno); // Only used by EXTRA macro
19820
807
            int _end_col_offset = _token->end_col_offset;
19821
807
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19822
807
            _res = _PyAST_Subscript ( a , b , Load , EXTRA );
19823
807
            if (_res == NULL && PyErr_Occurred()) {
19824
0
                p->error_indicator = 1;
19825
0
                p->level--;
19826
0
                return NULL;
19827
0
            }
19828
807
            goto done;
19829
807
        }
19830
296k
        p->mark = _mark;
19831
296k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19832
296k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
19833
296k
    }
19834
0
    { // t_primary genexp &t_lookahead
19835
296k
        if (p->error_indicator) {
19836
246
            p->level--;
19837
246
            return NULL;
19838
246
        }
19839
296k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
19840
296k
        expr_ty a;
19841
296k
        expr_ty b;
19842
296k
        if (
19843
296k
            (a = t_primary_rule(p))  // t_primary
19844
28.4k
            &&
19845
28.4k
            (b = genexp_rule(p))  // genexp
19846
568
            &&
19847
568
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19848
296k
        )
19849
426
        {
19850
426
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
19851
426
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19852
426
            if (_token == NULL) {
19853
0
                p->level--;
19854
0
                return NULL;
19855
0
            }
19856
426
            int _end_lineno = _token->end_lineno;
19857
426
            UNUSED(_end_lineno); // Only used by EXTRA macro
19858
426
            int _end_col_offset = _token->end_col_offset;
19859
426
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19860
426
            _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq* , ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
19861
426
            if (_res == NULL && PyErr_Occurred()) {
19862
0
                p->error_indicator = 1;
19863
0
                p->level--;
19864
0
                return NULL;
19865
0
            }
19866
426
            goto done;
19867
426
        }
19868
295k
        p->mark = _mark;
19869
295k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19870
295k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary genexp &t_lookahead"));
19871
295k
    }
19872
0
    { // t_primary '(' arguments? ')' &t_lookahead
19873
295k
        if (p->error_indicator) {
19874
352
            p->level--;
19875
352
            return NULL;
19876
352
        }
19877
295k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
19878
295k
        Token * _literal;
19879
295k
        Token * _literal_1;
19880
295k
        expr_ty a;
19881
295k
        void *b;
19882
295k
        if (
19883
295k
            (a = t_primary_rule(p))  // t_primary
19884
27.6k
            &&
19885
27.6k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19886
17.8k
            &&
19887
17.8k
            (b = arguments_rule(p), !p->error_indicator)  // arguments?
19888
17.4k
            &&
19889
17.4k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19890
15.4k
            &&
19891
15.4k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19892
295k
        )
19893
2.74k
        {
19894
2.74k
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
19895
2.74k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19896
2.74k
            if (_token == NULL) {
19897
0
                p->level--;
19898
0
                return NULL;
19899
0
            }
19900
2.74k
            int _end_lineno = _token->end_lineno;
19901
2.74k
            UNUSED(_end_lineno); // Only used by EXTRA macro
19902
2.74k
            int _end_col_offset = _token->end_col_offset;
19903
2.74k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
19904
2.74k
            _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
19905
2.74k
            if (_res == NULL && PyErr_Occurred()) {
19906
0
                p->error_indicator = 1;
19907
0
                p->level--;
19908
0
                return NULL;
19909
0
            }
19910
2.74k
            goto done;
19911
2.74k
        }
19912
292k
        p->mark = _mark;
19913
292k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19914
292k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
19915
292k
    }
19916
0
    { // atom &t_lookahead
19917
292k
        if (p->error_indicator) {
19918
378
            p->level--;
19919
378
            return NULL;
19920
378
        }
19921
292k
        D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
19922
292k
        expr_ty a;
19923
292k
        if (
19924
292k
            (a = atom_rule(p))  // atom
19925
192k
            &&
19926
192k
            _PyPegen_lookahead(1, t_lookahead_rule, p)
19927
292k
        )
19928
50.0k
        {
19929
50.0k
            D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
19930
50.0k
            _res = a;
19931
50.0k
            if (_res == NULL && PyErr_Occurred()) {
19932
0
                p->error_indicator = 1;
19933
0
                p->level--;
19934
0
                return NULL;
19935
0
            }
19936
50.0k
            goto done;
19937
50.0k
        }
19938
242k
        p->mark = _mark;
19939
242k
        D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
19940
242k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom &t_lookahead"));
19941
242k
    }
19942
242k
    _res = NULL;
19943
303k
  done:
19944
303k
    p->level--;
19945
303k
    return _res;
19946
242k
}
19947
19948
// t_lookahead: '(' | '[' | '.'
19949
static void *
19950
t_lookahead_rule(Parser *p)
19951
239k
{
19952
239k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
19953
0
        _Pypegen_stack_overflow(p);
19954
0
    }
19955
239k
    if (p->error_indicator) {
19956
0
        p->level--;
19957
0
        return NULL;
19958
0
    }
19959
239k
    void * _res = NULL;
19960
239k
    int _mark = p->mark;
19961
239k
    { // '('
19962
239k
        if (p->error_indicator) {
19963
0
            p->level--;
19964
0
            return NULL;
19965
0
        }
19966
239k
        D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
19967
239k
        Token * _literal;
19968
239k
        if (
19969
239k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
19970
239k
        )
19971
28.3k
        {
19972
28.3k
            D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
19973
28.3k
            _res = _literal;
19974
28.3k
            goto done;
19975
28.3k
        }
19976
211k
        p->mark = _mark;
19977
211k
        D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
19978
211k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
19979
211k
    }
19980
0
    { // '['
19981
211k
        if (p->error_indicator) {
19982
210
            p->level--;
19983
210
            return NULL;
19984
210
        }
19985
211k
        D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
19986
211k
        Token * _literal;
19987
211k
        if (
19988
211k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
19989
211k
        )
19990
7.41k
        {
19991
7.41k
            D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
19992
7.41k
            _res = _literal;
19993
7.41k
            goto done;
19994
7.41k
        }
19995
204k
        p->mark = _mark;
19996
204k
        D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
19997
204k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
19998
204k
    }
19999
0
    { // '.'
20000
204k
        if (p->error_indicator) {
20001
0
            p->level--;
20002
0
            return NULL;
20003
0
        }
20004
204k
        D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
20005
204k
        Token * _literal;
20006
204k
        if (
20007
204k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
20008
204k
        )
20009
25.6k
        {
20010
25.6k
            D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
20011
25.6k
            _res = _literal;
20012
25.6k
            goto done;
20013
25.6k
        }
20014
178k
        p->mark = _mark;
20015
178k
        D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
20016
178k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
20017
178k
    }
20018
178k
    _res = NULL;
20019
239k
  done:
20020
239k
    p->level--;
20021
239k
    return _res;
20022
178k
}
20023
20024
// del_targets: ','.del_target+ ','?
20025
static asdl_expr_seq*
20026
del_targets_rule(Parser *p)
20027
5.11k
{
20028
5.11k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20029
0
        _Pypegen_stack_overflow(p);
20030
0
    }
20031
5.11k
    if (p->error_indicator) {
20032
0
        p->level--;
20033
0
        return NULL;
20034
0
    }
20035
5.11k
    asdl_expr_seq* _res = NULL;
20036
5.11k
    int _mark = p->mark;
20037
5.11k
    { // ','.del_target+ ','?
20038
5.11k
        if (p->error_indicator) {
20039
0
            p->level--;
20040
0
            return NULL;
20041
0
        }
20042
5.11k
        D(fprintf(stderr, "%*c> del_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
20043
5.11k
        void *_opt_var;
20044
5.11k
        UNUSED(_opt_var); // Silence compiler warnings
20045
5.11k
        asdl_expr_seq* a;
20046
5.11k
        if (
20047
5.11k
            (a = (asdl_expr_seq*)_gather_101_rule(p))  // ','.del_target+
20048
2.69k
            &&
20049
2.69k
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
20050
5.11k
        )
20051
2.65k
        {
20052
2.65k
            D(fprintf(stderr, "%*c+ del_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
20053
2.65k
            _res = a;
20054
2.65k
            if (_res == NULL && PyErr_Occurred()) {
20055
0
                p->error_indicator = 1;
20056
0
                p->level--;
20057
0
                return NULL;
20058
0
            }
20059
2.65k
            goto done;
20060
2.65k
        }
20061
2.45k
        p->mark = _mark;
20062
2.45k
        D(fprintf(stderr, "%*c%s del_targets[%d-%d]: %s failed!\n", p->level, ' ',
20063
2.45k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.del_target+ ','?"));
20064
2.45k
    }
20065
2.45k
    _res = NULL;
20066
5.11k
  done:
20067
5.11k
    p->level--;
20068
5.11k
    return _res;
20069
2.45k
}
20070
20071
// del_target:
20072
//     | t_primary '.' NAME !t_lookahead
20073
//     | t_primary '[' slices ']' !t_lookahead
20074
//     | del_t_atom
20075
static expr_ty
20076
del_target_rule(Parser *p)
20077
11.7k
{
20078
11.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20079
0
        _Pypegen_stack_overflow(p);
20080
0
    }
20081
11.7k
    if (p->error_indicator) {
20082
0
        p->level--;
20083
0
        return NULL;
20084
0
    }
20085
11.7k
    expr_ty _res = NULL;
20086
11.7k
    if (_PyPegen_is_memoized(p, del_target_type, &_res)) {
20087
2.71k
        p->level--;
20088
2.71k
        return _res;
20089
2.71k
    }
20090
9.02k
    int _mark = p->mark;
20091
9.02k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
20092
0
        p->error_indicator = 1;
20093
0
        p->level--;
20094
0
        return NULL;
20095
0
    }
20096
9.02k
    int _start_lineno = p->tokens[_mark]->lineno;
20097
9.02k
    UNUSED(_start_lineno); // Only used by EXTRA macro
20098
9.02k
    int _start_col_offset = p->tokens[_mark]->col_offset;
20099
9.02k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
20100
9.02k
    { // t_primary '.' NAME !t_lookahead
20101
9.02k
        if (p->error_indicator) {
20102
0
            p->level--;
20103
0
            return NULL;
20104
0
        }
20105
9.02k
        D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
20106
9.02k
        Token * _literal;
20107
9.02k
        expr_ty a;
20108
9.02k
        expr_ty b;
20109
9.02k
        if (
20110
9.02k
            (a = t_primary_rule(p))  // t_primary
20111
526
            &&
20112
526
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
20113
238
            &&
20114
238
            (b = _PyPegen_name_token(p))  // NAME
20115
217
            &&
20116
217
            _PyPegen_lookahead(0, t_lookahead_rule, p)
20117
9.02k
        )
20118
217
        {
20119
217
            D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
20120
217
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20121
217
            if (_token == NULL) {
20122
0
                p->level--;
20123
0
                return NULL;
20124
0
            }
20125
217
            int _end_lineno = _token->end_lineno;
20126
217
            UNUSED(_end_lineno); // Only used by EXTRA macro
20127
217
            int _end_col_offset = _token->end_col_offset;
20128
217
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20129
217
            _res = _PyAST_Attribute ( a , b -> v . Name . id , Del , EXTRA );
20130
217
            if (_res == NULL && PyErr_Occurred()) {
20131
0
                p->error_indicator = 1;
20132
0
                p->level--;
20133
0
                return NULL;
20134
0
            }
20135
217
            goto done;
20136
217
        }
20137
8.81k
        p->mark = _mark;
20138
8.81k
        D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
20139
8.81k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
20140
8.81k
    }
20141
0
    { // t_primary '[' slices ']' !t_lookahead
20142
8.81k
        if (p->error_indicator) {
20143
105
            p->level--;
20144
105
            return NULL;
20145
105
        }
20146
8.70k
        D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
20147
8.70k
        Token * _literal;
20148
8.70k
        Token * _literal_1;
20149
8.70k
        expr_ty a;
20150
8.70k
        expr_ty b;
20151
8.70k
        if (
20152
8.70k
            (a = t_primary_rule(p))  // t_primary
20153
309
            &&
20154
309
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
20155
187
            &&
20156
187
            (b = slices_rule(p))  // slices
20157
173
            &&
20158
173
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
20159
161
            &&
20160
161
            _PyPegen_lookahead(0, t_lookahead_rule, p)
20161
8.70k
        )
20162
161
        {
20163
161
            D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
20164
161
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20165
161
            if (_token == NULL) {
20166
0
                p->level--;
20167
0
                return NULL;
20168
0
            }
20169
161
            int _end_lineno = _token->end_lineno;
20170
161
            UNUSED(_end_lineno); // Only used by EXTRA macro
20171
161
            int _end_col_offset = _token->end_col_offset;
20172
161
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20173
161
            _res = _PyAST_Subscript ( a , b , Del , EXTRA );
20174
161
            if (_res == NULL && PyErr_Occurred()) {
20175
0
                p->error_indicator = 1;
20176
0
                p->level--;
20177
0
                return NULL;
20178
0
            }
20179
161
            goto done;
20180
161
        }
20181
8.54k
        p->mark = _mark;
20182
8.54k
        D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
20183
8.54k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
20184
8.54k
    }
20185
0
    { // del_t_atom
20186
8.54k
        if (p->error_indicator) {
20187
0
            p->level--;
20188
0
            return NULL;
20189
0
        }
20190
8.54k
        D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
20191
8.54k
        expr_ty del_t_atom_var;
20192
8.54k
        if (
20193
8.54k
            (del_t_atom_var = del_t_atom_rule(p))  // del_t_atom
20194
8.54k
        )
20195
5.52k
        {
20196
5.52k
            D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
20197
5.52k
            _res = del_t_atom_var;
20198
5.52k
            goto done;
20199
5.52k
        }
20200
3.02k
        p->mark = _mark;
20201
3.02k
        D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
20202
3.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_t_atom"));
20203
3.02k
    }
20204
3.02k
    _res = NULL;
20205
8.92k
  done:
20206
8.92k
    _PyPegen_insert_memo(p, _mark, del_target_type, _res);
20207
8.92k
    p->level--;
20208
8.92k
    return _res;
20209
3.02k
}
20210
20211
// del_t_atom: NAME | '(' del_target ')' | '(' del_targets? ')' | '[' del_targets? ']'
20212
static expr_ty
20213
del_t_atom_rule(Parser *p)
20214
8.54k
{
20215
8.54k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20216
0
        _Pypegen_stack_overflow(p);
20217
0
    }
20218
8.54k
    if (p->error_indicator) {
20219
0
        p->level--;
20220
0
        return NULL;
20221
0
    }
20222
8.54k
    expr_ty _res = NULL;
20223
8.54k
    int _mark = p->mark;
20224
8.54k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
20225
0
        p->error_indicator = 1;
20226
0
        p->level--;
20227
0
        return NULL;
20228
0
    }
20229
8.54k
    int _start_lineno = p->tokens[_mark]->lineno;
20230
8.54k
    UNUSED(_start_lineno); // Only used by EXTRA macro
20231
8.54k
    int _start_col_offset = p->tokens[_mark]->col_offset;
20232
8.54k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
20233
8.54k
    { // NAME
20234
8.54k
        if (p->error_indicator) {
20235
0
            p->level--;
20236
0
            return NULL;
20237
0
        }
20238
8.54k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
20239
8.54k
        expr_ty a;
20240
8.54k
        if (
20241
8.54k
            (a = _PyPegen_name_token(p))  // NAME
20242
8.54k
        )
20243
2.90k
        {
20244
2.90k
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
20245
2.90k
            _res = _PyPegen_set_expr_context ( p , a , Del );
20246
2.90k
            if (_res == NULL && PyErr_Occurred()) {
20247
0
                p->error_indicator = 1;
20248
0
                p->level--;
20249
0
                return NULL;
20250
0
            }
20251
2.90k
            goto done;
20252
2.90k
        }
20253
5.63k
        p->mark = _mark;
20254
5.63k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20255
5.63k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
20256
5.63k
    }
20257
0
    { // '(' del_target ')'
20258
5.63k
        if (p->error_indicator) {
20259
0
            p->level--;
20260
0
            return NULL;
20261
0
        }
20262
5.63k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
20263
5.63k
        Token * _literal;
20264
5.63k
        Token * _literal_1;
20265
5.63k
        expr_ty a;
20266
5.63k
        if (
20267
5.63k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
20268
2.88k
            &&
20269
2.88k
            (a = del_target_rule(p))  // del_target
20270
1.22k
            &&
20271
1.22k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
20272
5.63k
        )
20273
173
        {
20274
173
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
20275
173
            _res = _PyPegen_set_expr_context ( p , a , Del );
20276
173
            if (_res == NULL && PyErr_Occurred()) {
20277
0
                p->error_indicator = 1;
20278
0
                p->level--;
20279
0
                return NULL;
20280
0
            }
20281
173
            goto done;
20282
173
        }
20283
5.46k
        p->mark = _mark;
20284
5.46k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20285
5.46k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_target ')'"));
20286
5.46k
    }
20287
0
    { // '(' del_targets? ')'
20288
5.46k
        if (p->error_indicator) {
20289
0
            p->level--;
20290
0
            return NULL;
20291
0
        }
20292
5.46k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
20293
5.46k
        Token * _literal;
20294
5.46k
        Token * _literal_1;
20295
5.46k
        void *a;
20296
5.46k
        if (
20297
5.46k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
20298
2.71k
            &&
20299
2.71k
            (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
20300
2.71k
            &&
20301
2.71k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
20302
5.46k
        )
20303
2.05k
        {
20304
2.05k
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
20305
2.05k
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20306
2.05k
            if (_token == NULL) {
20307
0
                p->level--;
20308
0
                return NULL;
20309
0
            }
20310
2.05k
            int _end_lineno = _token->end_lineno;
20311
2.05k
            UNUSED(_end_lineno); // Only used by EXTRA macro
20312
2.05k
            int _end_col_offset = _token->end_col_offset;
20313
2.05k
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20314
2.05k
            _res = _PyAST_Tuple ( a , Del , EXTRA );
20315
2.05k
            if (_res == NULL && PyErr_Occurred()) {
20316
0
                p->error_indicator = 1;
20317
0
                p->level--;
20318
0
                return NULL;
20319
0
            }
20320
2.05k
            goto done;
20321
2.05k
        }
20322
3.41k
        p->mark = _mark;
20323
3.41k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20324
3.41k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_targets? ')'"));
20325
3.41k
    }
20326
0
    { // '[' del_targets? ']'
20327
3.41k
        if (p->error_indicator) {
20328
0
            p->level--;
20329
0
            return NULL;
20330
0
        }
20331
3.41k
        D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
20332
3.41k
        Token * _literal;
20333
3.41k
        Token * _literal_1;
20334
3.41k
        void *a;
20335
3.41k
        if (
20336
3.41k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
20337
761
            &&
20338
761
            (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
20339
761
            &&
20340
761
            (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
20341
3.41k
        )
20342
389
        {
20343
389
            D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
20344
389
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
20345
389
            if (_token == NULL) {
20346
0
                p->level--;
20347
0
                return NULL;
20348
0
            }
20349
389
            int _end_lineno = _token->end_lineno;
20350
389
            UNUSED(_end_lineno); // Only used by EXTRA macro
20351
389
            int _end_col_offset = _token->end_col_offset;
20352
389
            UNUSED(_end_col_offset); // Only used by EXTRA macro
20353
389
            _res = _PyAST_List ( a , Del , EXTRA );
20354
389
            if (_res == NULL && PyErr_Occurred()) {
20355
0
                p->error_indicator = 1;
20356
0
                p->level--;
20357
0
                return NULL;
20358
0
            }
20359
389
            goto done;
20360
389
        }
20361
3.02k
        p->mark = _mark;
20362
3.02k
        D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
20363
3.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' del_targets? ']'"));
20364
3.02k
    }
20365
3.02k
    _res = NULL;
20366
8.54k
  done:
20367
8.54k
    p->level--;
20368
8.54k
    return _res;
20369
3.02k
}
20370
20371
// type_expressions:
20372
//     | ','.expression+ ',' '*' expression ',' '**' expression
20373
//     | ','.expression+ ',' '*' expression
20374
//     | ','.expression+ ',' '**' expression
20375
//     | '*' expression ',' '**' expression
20376
//     | '*' expression
20377
//     | '**' expression
20378
//     | ','.expression+
20379
static asdl_expr_seq*
20380
type_expressions_rule(Parser *p)
20381
0
{
20382
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20383
0
        _Pypegen_stack_overflow(p);
20384
0
    }
20385
0
    if (p->error_indicator) {
20386
0
        p->level--;
20387
0
        return NULL;
20388
0
    }
20389
0
    asdl_expr_seq* _res = NULL;
20390
0
    int _mark = p->mark;
20391
0
    { // ','.expression+ ',' '*' expression ',' '**' expression
20392
0
        if (p->error_indicator) {
20393
0
            p->level--;
20394
0
            return NULL;
20395
0
        }
20396
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
20397
0
        Token * _literal;
20398
0
        Token * _literal_1;
20399
0
        Token * _literal_2;
20400
0
        Token * _literal_3;
20401
0
        asdl_seq * a;
20402
0
        expr_ty b;
20403
0
        expr_ty c;
20404
0
        if (
20405
0
            (a = _gather_103_rule(p))  // ','.expression+
20406
0
            &&
20407
0
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20408
0
            &&
20409
0
            (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
20410
0
            &&
20411
0
            (b = expression_rule(p))  // expression
20412
0
            &&
20413
0
            (_literal_2 = _PyPegen_expect_token(p, 12))  // token=','
20414
0
            &&
20415
0
            (_literal_3 = _PyPegen_expect_token(p, 35))  // token='**'
20416
0
            &&
20417
0
            (c = expression_rule(p))  // expression
20418
0
        )
20419
0
        {
20420
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
20421
0
            _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , CHECK ( asdl_seq* , _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
20422
0
            if (_res == NULL && PyErr_Occurred()) {
20423
0
                p->error_indicator = 1;
20424
0
                p->level--;
20425
0
                return NULL;
20426
0
            }
20427
0
            goto done;
20428
0
        }
20429
0
        p->mark = _mark;
20430
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20431
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
20432
0
    }
20433
0
    { // ','.expression+ ',' '*' expression
20434
0
        if (p->error_indicator) {
20435
0
            p->level--;
20436
0
            return NULL;
20437
0
        }
20438
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
20439
0
        Token * _literal;
20440
0
        Token * _literal_1;
20441
0
        asdl_seq * a;
20442
0
        expr_ty b;
20443
0
        if (
20444
0
            (a = _gather_103_rule(p))  // ','.expression+
20445
0
            &&
20446
0
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20447
0
            &&
20448
0
            (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
20449
0
            &&
20450
0
            (b = expression_rule(p))  // expression
20451
0
        )
20452
0
        {
20453
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
20454
0
            _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , a , b );
20455
0
            if (_res == NULL && PyErr_Occurred()) {
20456
0
                p->error_indicator = 1;
20457
0
                p->level--;
20458
0
                return NULL;
20459
0
            }
20460
0
            goto done;
20461
0
        }
20462
0
        p->mark = _mark;
20463
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20464
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression"));
20465
0
    }
20466
0
    { // ','.expression+ ',' '**' expression
20467
0
        if (p->error_indicator) {
20468
0
            p->level--;
20469
0
            return NULL;
20470
0
        }
20471
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
20472
0
        Token * _literal;
20473
0
        Token * _literal_1;
20474
0
        asdl_seq * a;
20475
0
        expr_ty b;
20476
0
        if (
20477
0
            (a = _gather_103_rule(p))  // ','.expression+
20478
0
            &&
20479
0
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20480
0
            &&
20481
0
            (_literal_1 = _PyPegen_expect_token(p, 35))  // token='**'
20482
0
            &&
20483
0
            (b = expression_rule(p))  // expression
20484
0
        )
20485
0
        {
20486
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
20487
0
            _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , a , b );
20488
0
            if (_res == NULL && PyErr_Occurred()) {
20489
0
                p->error_indicator = 1;
20490
0
                p->level--;
20491
0
                return NULL;
20492
0
            }
20493
0
            goto done;
20494
0
        }
20495
0
        p->mark = _mark;
20496
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20497
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '**' expression"));
20498
0
    }
20499
0
    { // '*' expression ',' '**' expression
20500
0
        if (p->error_indicator) {
20501
0
            p->level--;
20502
0
            return NULL;
20503
0
        }
20504
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
20505
0
        Token * _literal;
20506
0
        Token * _literal_1;
20507
0
        Token * _literal_2;
20508
0
        expr_ty a;
20509
0
        expr_ty b;
20510
0
        if (
20511
0
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
20512
0
            &&
20513
0
            (a = expression_rule(p))  // expression
20514
0
            &&
20515
0
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
20516
0
            &&
20517
0
            (_literal_2 = _PyPegen_expect_token(p, 35))  // token='**'
20518
0
            &&
20519
0
            (b = expression_rule(p))  // expression
20520
0
        )
20521
0
        {
20522
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
20523
0
            _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , CHECK ( asdl_seq* , _PyPegen_singleton_seq ( p , a ) ) , b );
20524
0
            if (_res == NULL && PyErr_Occurred()) {
20525
0
                p->error_indicator = 1;
20526
0
                p->level--;
20527
0
                return NULL;
20528
0
            }
20529
0
            goto done;
20530
0
        }
20531
0
        p->mark = _mark;
20532
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20533
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression ',' '**' expression"));
20534
0
    }
20535
0
    { // '*' expression
20536
0
        if (p->error_indicator) {
20537
0
            p->level--;
20538
0
            return NULL;
20539
0
        }
20540
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
20541
0
        Token * _literal;
20542
0
        expr_ty a;
20543
0
        if (
20544
0
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
20545
0
            &&
20546
0
            (a = expression_rule(p))  // expression
20547
0
        )
20548
0
        {
20549
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
20550
0
            _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
20551
0
            if (_res == NULL && PyErr_Occurred()) {
20552
0
                p->error_indicator = 1;
20553
0
                p->level--;
20554
0
                return NULL;
20555
0
            }
20556
0
            goto done;
20557
0
        }
20558
0
        p->mark = _mark;
20559
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20560
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
20561
0
    }
20562
0
    { // '**' expression
20563
0
        if (p->error_indicator) {
20564
0
            p->level--;
20565
0
            return NULL;
20566
0
        }
20567
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
20568
0
        Token * _literal;
20569
0
        expr_ty a;
20570
0
        if (
20571
0
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
20572
0
            &&
20573
0
            (a = expression_rule(p))  // expression
20574
0
        )
20575
0
        {
20576
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
20577
0
            _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
20578
0
            if (_res == NULL && PyErr_Occurred()) {
20579
0
                p->error_indicator = 1;
20580
0
                p->level--;
20581
0
                return NULL;
20582
0
            }
20583
0
            goto done;
20584
0
        }
20585
0
        p->mark = _mark;
20586
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20587
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
20588
0
    }
20589
0
    { // ','.expression+
20590
0
        if (p->error_indicator) {
20591
0
            p->level--;
20592
0
            return NULL;
20593
0
        }
20594
0
        D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+"));
20595
0
        asdl_expr_seq* a;
20596
0
        if (
20597
0
            (a = (asdl_expr_seq*)_gather_103_rule(p))  // ','.expression+
20598
0
        )
20599
0
        {
20600
0
            D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+"));
20601
0
            _res = a;
20602
0
            if (_res == NULL && PyErr_Occurred()) {
20603
0
                p->error_indicator = 1;
20604
0
                p->level--;
20605
0
                return NULL;
20606
0
            }
20607
0
            goto done;
20608
0
        }
20609
0
        p->mark = _mark;
20610
0
        D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
20611
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+"));
20612
0
    }
20613
0
    _res = NULL;
20614
0
  done:
20615
0
    p->level--;
20616
0
    return _res;
20617
0
}
20618
20619
// func_type_comment:
20620
//     | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
20621
//     | invalid_double_type_comments
20622
//     | TYPE_COMMENT
20623
static Token*
20624
func_type_comment_rule(Parser *p)
20625
11.7k
{
20626
11.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20627
0
        _Pypegen_stack_overflow(p);
20628
0
    }
20629
11.7k
    if (p->error_indicator) {
20630
0
        p->level--;
20631
0
        return NULL;
20632
0
    }
20633
11.7k
    Token* _res = NULL;
20634
11.7k
    int _mark = p->mark;
20635
11.7k
    { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
20636
11.7k
        if (p->error_indicator) {
20637
0
            p->level--;
20638
0
            return NULL;
20639
0
        }
20640
11.7k
        D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
20641
11.7k
        Token * newline_var;
20642
11.7k
        Token * t;
20643
11.7k
        if (
20644
11.7k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20645
5.74k
            &&
20646
5.74k
            (t = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
20647
0
            &&
20648
0
            _PyPegen_lookahead(1, _tmp_104_rule, p)
20649
11.7k
        )
20650
0
        {
20651
0
            D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
20652
0
            _res = t;
20653
0
            if (_res == NULL && PyErr_Occurred()) {
20654
0
                p->error_indicator = 1;
20655
0
                p->level--;
20656
0
                return NULL;
20657
0
            }
20658
0
            goto done;
20659
0
        }
20660
11.7k
        p->mark = _mark;
20661
11.7k
        D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
20662
11.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
20663
11.7k
    }
20664
11.7k
    if (p->call_invalid_rules) { // invalid_double_type_comments
20665
2.28k
        if (p->error_indicator) {
20666
0
            p->level--;
20667
0
            return NULL;
20668
0
        }
20669
2.28k
        D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
20670
2.28k
        void *invalid_double_type_comments_var;
20671
2.28k
        if (
20672
2.28k
            (invalid_double_type_comments_var = invalid_double_type_comments_rule(p))  // invalid_double_type_comments
20673
2.28k
        )
20674
0
        {
20675
0
            D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
20676
0
            _res = invalid_double_type_comments_var;
20677
0
            goto done;
20678
0
        }
20679
2.28k
        p->mark = _mark;
20680
2.28k
        D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
20681
2.28k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_double_type_comments"));
20682
2.28k
    }
20683
11.7k
    { // TYPE_COMMENT
20684
11.7k
        if (p->error_indicator) {
20685
2
            p->level--;
20686
2
            return NULL;
20687
2
        }
20688
11.7k
        D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
20689
11.7k
        Token * type_comment_var;
20690
11.7k
        if (
20691
11.7k
            (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
20692
11.7k
        )
20693
0
        {
20694
0
            D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
20695
0
            _res = type_comment_var;
20696
0
            goto done;
20697
0
        }
20698
11.7k
        p->mark = _mark;
20699
11.7k
        D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
20700
11.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT"));
20701
11.7k
    }
20702
11.7k
    _res = NULL;
20703
11.7k
  done:
20704
11.7k
    p->level--;
20705
11.7k
    return _res;
20706
11.7k
}
20707
20708
// invalid_arguments:
20709
//     | ((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+
20710
//     | expression for_if_clauses ',' [args | expression for_if_clauses]
20711
//     | NAME '=' expression for_if_clauses
20712
//     | [(args ',')] NAME '=' &(',' | ')')
20713
//     | args for_if_clauses
20714
//     | args ',' expression for_if_clauses
20715
//     | args ',' args
20716
static void *
20717
invalid_arguments_rule(Parser *p)
20718
8.03k
{
20719
8.03k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20720
0
        _Pypegen_stack_overflow(p);
20721
0
    }
20722
8.03k
    if (p->error_indicator) {
20723
0
        p->level--;
20724
0
        return NULL;
20725
0
    }
20726
8.03k
    void * _res = NULL;
20727
8.03k
    int _mark = p->mark;
20728
8.03k
    { // ((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+
20729
8.03k
        if (p->error_indicator) {
20730
0
            p->level--;
20731
0
            return NULL;
20732
0
        }
20733
8.03k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+"));
20734
8.03k
        asdl_seq * _gather_107_var;
20735
8.03k
        void *_tmp_105_var;
20736
8.03k
        Token * a;
20737
8.03k
        if (
20738
8.03k
            (_tmp_105_var = _tmp_105_rule(p))  // (','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs
20739
2.78k
            &&
20740
2.78k
            (a = _PyPegen_expect_token(p, 12))  // token=','
20741
1.55k
            &&
20742
1.55k
            (_gather_107_var = _gather_107_rule(p))  // ','.(starred_expression !'=')+
20743
8.03k
        )
20744
421
        {
20745
421
            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 !'=')+"));
20746
421
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "iterable argument unpacking follows keyword argument unpacking" );
20747
421
            if (_res == NULL && PyErr_Occurred()) {
20748
421
                p->error_indicator = 1;
20749
421
                p->level--;
20750
421
                return NULL;
20751
421
            }
20752
0
            goto done;
20753
421
        }
20754
7.61k
        p->mark = _mark;
20755
7.61k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20756
7.61k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs) | kwargs) ',' ','.(starred_expression !'=')+"));
20757
7.61k
    }
20758
0
    { // expression for_if_clauses ',' [args | expression for_if_clauses]
20759
7.61k
        if (p->error_indicator) {
20760
203
            p->level--;
20761
203
            return NULL;
20762
203
        }
20763
7.40k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
20764
7.40k
        Token * _literal;
20765
7.40k
        void *_opt_var;
20766
7.40k
        UNUSED(_opt_var); // Silence compiler warnings
20767
7.40k
        expr_ty a;
20768
7.40k
        asdl_comprehension_seq* b;
20769
7.40k
        if (
20770
7.40k
            (a = expression_rule(p))  // expression
20771
3.18k
            &&
20772
3.18k
            (b = for_if_clauses_rule(p))  // for_if_clauses
20773
306
            &&
20774
306
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20775
75
            &&
20776
75
            (_opt_var = _tmp_108_rule(p), !p->error_indicator)  // [args | expression for_if_clauses]
20777
7.40k
        )
20778
4
        {
20779
4
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
20780
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , _PyPegen_get_last_comprehension_item ( PyPegen_last_item ( b , comprehension_ty ) ) , "Generator expression must be parenthesized" );
20781
4
            if (_res == NULL && PyErr_Occurred()) {
20782
4
                p->error_indicator = 1;
20783
4
                p->level--;
20784
4
                return NULL;
20785
4
            }
20786
0
            goto done;
20787
4
        }
20788
7.40k
        p->mark = _mark;
20789
7.40k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20790
7.40k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
20791
7.40k
    }
20792
0
    { // NAME '=' expression for_if_clauses
20793
7.40k
        if (p->error_indicator) {
20794
71
            p->level--;
20795
71
            return NULL;
20796
71
        }
20797
7.33k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
20798
7.33k
        expr_ty a;
20799
7.33k
        Token * b;
20800
7.33k
        expr_ty expression_var;
20801
7.33k
        asdl_comprehension_seq* for_if_clauses_var;
20802
7.33k
        if (
20803
7.33k
            (a = _PyPegen_name_token(p))  // NAME
20804
2.52k
            &&
20805
2.52k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20806
1.03k
            &&
20807
1.03k
            (expression_var = expression_rule(p))  // expression
20808
901
            &&
20809
901
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
20810
7.33k
        )
20811
0
        {
20812
0
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
20813
0
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
20814
0
            if (_res == NULL && PyErr_Occurred()) {
20815
0
                p->error_indicator = 1;
20816
0
                p->level--;
20817
0
                return NULL;
20818
0
            }
20819
0
            goto done;
20820
0
        }
20821
7.33k
        p->mark = _mark;
20822
7.33k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20823
7.33k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
20824
7.33k
    }
20825
0
    { // [(args ',')] NAME '=' &(',' | ')')
20826
7.33k
        if (p->error_indicator) {
20827
0
            p->level--;
20828
0
            return NULL;
20829
0
        }
20830
7.33k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[(args ',')] NAME '=' &(',' | ')')"));
20831
7.33k
        void *_opt_var;
20832
7.33k
        UNUSED(_opt_var); // Silence compiler warnings
20833
7.33k
        expr_ty a;
20834
7.33k
        Token * b;
20835
7.33k
        if (
20836
7.33k
            (_opt_var = _tmp_109_rule(p), !p->error_indicator)  // [(args ',')]
20837
7.33k
            &&
20838
7.33k
            (a = _PyPegen_name_token(p))  // NAME
20839
2.33k
            &&
20840
2.33k
            (b = _PyPegen_expect_token(p, 22))  // token='='
20841
557
            &&
20842
557
            _PyPegen_lookahead(1, _tmp_110_rule, p)
20843
7.33k
        )
20844
13
        {
20845
13
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[(args ',')] NAME '=' &(',' | ')')"));
20846
13
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expected argument value expression" );
20847
13
            if (_res == NULL && PyErr_Occurred()) {
20848
13
                p->error_indicator = 1;
20849
13
                p->level--;
20850
13
                return NULL;
20851
13
            }
20852
0
            goto done;
20853
13
        }
20854
7.31k
        p->mark = _mark;
20855
7.31k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20856
7.31k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[(args ',')] NAME '=' &(',' | ')')"));
20857
7.31k
    }
20858
0
    { // args for_if_clauses
20859
7.31k
        if (p->error_indicator) {
20860
0
            p->level--;
20861
0
            return NULL;
20862
0
        }
20863
7.31k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
20864
7.31k
        expr_ty a;
20865
7.31k
        asdl_comprehension_seq* b;
20866
7.31k
        if (
20867
7.31k
            (a = args_rule(p))  // args
20868
3.82k
            &&
20869
3.82k
            (b = for_if_clauses_rule(p))  // for_if_clauses
20870
7.31k
        )
20871
300
        {
20872
300
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
20873
300
            _res = _PyPegen_nonparen_genexp_in_call ( p , a , b );
20874
300
            if (_res == NULL && PyErr_Occurred()) {
20875
3
                p->error_indicator = 1;
20876
3
                p->level--;
20877
3
                return NULL;
20878
3
            }
20879
297
            goto done;
20880
300
        }
20881
7.01k
        p->mark = _mark;
20882
7.01k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20883
7.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args for_if_clauses"));
20884
7.01k
    }
20885
0
    { // args ',' expression for_if_clauses
20886
7.01k
        if (p->error_indicator) {
20887
68
            p->level--;
20888
68
            return NULL;
20889
68
        }
20890
6.95k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
20891
6.95k
        Token * _literal;
20892
6.95k
        expr_ty a;
20893
6.95k
        expr_ty args_var;
20894
6.95k
        asdl_comprehension_seq* b;
20895
6.95k
        if (
20896
6.95k
            (args_var = args_rule(p))  // args
20897
3.45k
            &&
20898
3.45k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20899
833
            &&
20900
833
            (a = expression_rule(p))  // expression
20901
537
            &&
20902
537
            (b = for_if_clauses_rule(p))  // for_if_clauses
20903
6.95k
        )
20904
1
        {
20905
1
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
20906
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , _PyPegen_get_last_comprehension_item ( PyPegen_last_item ( b , comprehension_ty ) ) , "Generator expression must be parenthesized" );
20907
1
            if (_res == NULL && PyErr_Occurred()) {
20908
1
                p->error_indicator = 1;
20909
1
                p->level--;
20910
1
                return NULL;
20911
1
            }
20912
0
            goto done;
20913
1
        }
20914
6.95k
        p->mark = _mark;
20915
6.95k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20916
6.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' expression for_if_clauses"));
20917
6.95k
    }
20918
0
    { // args ',' args
20919
6.95k
        if (p->error_indicator) {
20920
66
            p->level--;
20921
66
            return NULL;
20922
66
        }
20923
6.88k
        D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' args"));
20924
6.88k
        Token * _literal;
20925
6.88k
        expr_ty a;
20926
6.88k
        expr_ty args_var;
20927
6.88k
        if (
20928
6.88k
            (a = args_rule(p))  // args
20929
3.38k
            &&
20930
3.38k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
20931
766
            &&
20932
766
            (args_var = args_rule(p))  // args
20933
6.88k
        )
20934
32
        {
20935
32
            D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' args"));
20936
32
            _res = _PyPegen_arguments_parsing_error ( p , a );
20937
32
            if (_res == NULL && PyErr_Occurred()) {
20938
32
                p->error_indicator = 1;
20939
32
                p->level--;
20940
32
                return NULL;
20941
32
            }
20942
0
            goto done;
20943
32
        }
20944
6.85k
        p->mark = _mark;
20945
6.85k
        D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
20946
6.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' args"));
20947
6.85k
    }
20948
6.85k
    _res = NULL;
20949
7.14k
  done:
20950
7.14k
    p->level--;
20951
7.14k
    return _res;
20952
6.85k
}
20953
20954
// invalid_kwarg:
20955
//     | ('True' | 'False' | 'None') '='
20956
//     | NAME '=' expression for_if_clauses
20957
//     | !(NAME '=') expression '='
20958
//     | '**' expression '=' expression
20959
static void *
20960
invalid_kwarg_rule(Parser *p)
20961
121k
{
20962
121k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
20963
0
        _Pypegen_stack_overflow(p);
20964
0
    }
20965
121k
    if (p->error_indicator) {
20966
0
        p->level--;
20967
0
        return NULL;
20968
0
    }
20969
121k
    void * _res = NULL;
20970
121k
    int _mark = p->mark;
20971
121k
    { // ('True' | 'False' | 'None') '='
20972
121k
        if (p->error_indicator) {
20973
0
            p->level--;
20974
0
            return NULL;
20975
0
        }
20976
121k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('True' | 'False' | 'None') '='"));
20977
121k
        Token* a;
20978
121k
        Token * b;
20979
121k
        if (
20980
121k
            (a = (Token*)_tmp_111_rule(p))  // 'True' | 'False' | 'None'
20981
502
            &&
20982
502
            (b = _PyPegen_expect_token(p, 22))  // token='='
20983
121k
        )
20984
4
        {
20985
4
            D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('True' | 'False' | 'None') '='"));
20986
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to %s" , PyBytes_AS_STRING ( a -> bytes ) );
20987
4
            if (_res == NULL && PyErr_Occurred()) {
20988
4
                p->error_indicator = 1;
20989
4
                p->level--;
20990
4
                return NULL;
20991
4
            }
20992
0
            goto done;
20993
4
        }
20994
121k
        p->mark = _mark;
20995
121k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
20996
121k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('True' | 'False' | 'None') '='"));
20997
121k
    }
20998
0
    { // NAME '=' expression for_if_clauses
20999
121k
        if (p->error_indicator) {
21000
3
            p->level--;
21001
3
            return NULL;
21002
3
        }
21003
121k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
21004
121k
        expr_ty a;
21005
121k
        Token * b;
21006
121k
        expr_ty expression_var;
21007
121k
        asdl_comprehension_seq* for_if_clauses_var;
21008
121k
        if (
21009
121k
            (a = _PyPegen_name_token(p))  // NAME
21010
35.3k
            &&
21011
35.3k
            (b = _PyPegen_expect_token(p, 22))  // token='='
21012
21.4k
            &&
21013
21.4k
            (expression_var = expression_rule(p))  // expression
21014
18.6k
            &&
21015
18.6k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
21016
121k
        )
21017
1
        {
21018
1
            D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
21019
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
21020
1
            if (_res == NULL && PyErr_Occurred()) {
21021
1
                p->error_indicator = 1;
21022
1
                p->level--;
21023
1
                return NULL;
21024
1
            }
21025
0
            goto done;
21026
1
        }
21027
121k
        p->mark = _mark;
21028
121k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
21029
121k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
21030
121k
    }
21031
0
    { // !(NAME '=') expression '='
21032
121k
        if (p->error_indicator) {
21033
262
            p->level--;
21034
262
            return NULL;
21035
262
        }
21036
121k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
21037
121k
        expr_ty a;
21038
121k
        Token * b;
21039
121k
        if (
21040
121k
            _PyPegen_lookahead(0, _tmp_112_rule, p)
21041
99.9k
            &&
21042
99.9k
            (a = expression_rule(p))  // expression
21043
16.7k
            &&
21044
16.7k
            (b = _PyPegen_expect_token(p, 22))  // token='='
21045
121k
        )
21046
8
        {
21047
8
            D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
21048
8
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expression cannot contain assignment, perhaps you meant \"==\"?" );
21049
8
            if (_res == NULL && PyErr_Occurred()) {
21050
8
                p->error_indicator = 1;
21051
8
                p->level--;
21052
8
                return NULL;
21053
8
            }
21054
0
            goto done;
21055
8
        }
21056
121k
        p->mark = _mark;
21057
121k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
21058
121k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME '=') expression '='"));
21059
121k
    }
21060
0
    { // '**' expression '=' expression
21061
121k
        if (p->error_indicator) {
21062
451
            p->level--;
21063
451
            return NULL;
21064
451
        }
21065
120k
        D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression '=' expression"));
21066
120k
        Token * _literal;
21067
120k
        Token * a;
21068
120k
        expr_ty b;
21069
120k
        expr_ty expression_var;
21070
120k
        if (
21071
120k
            (a = _PyPegen_expect_token(p, 35))  // token='**'
21072
13.1k
            &&
21073
13.1k
            (expression_var = expression_rule(p))  // expression
21074
11.8k
            &&
21075
11.8k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
21076
230
            &&
21077
230
            (b = expression_rule(p))  // expression
21078
120k
        )
21079
1
        {
21080
1
            D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression '=' expression"));
21081
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to keyword argument unpacking" );
21082
1
            if (_res == NULL && PyErr_Occurred()) {
21083
1
                p->error_indicator = 1;
21084
1
                p->level--;
21085
1
                return NULL;
21086
1
            }
21087
0
            goto done;
21088
1
        }
21089
120k
        p->mark = _mark;
21090
120k
        D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
21091
120k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression '=' expression"));
21092
120k
    }
21093
120k
    _res = NULL;
21094
120k
  done:
21095
120k
    p->level--;
21096
120k
    return _res;
21097
120k
}
21098
21099
// expression_without_invalid:
21100
//     | disjunction 'if' disjunction 'else' expression
21101
//     | disjunction
21102
//     | lambdef
21103
static expr_ty
21104
expression_without_invalid_rule(Parser *p)
21105
95.4k
{
21106
95.4k
    int _prev_call_invalid = p->call_invalid_rules;
21107
95.4k
    p->call_invalid_rules = 0;
21108
95.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21109
1
        _Pypegen_stack_overflow(p);
21110
1
    }
21111
95.4k
    if (p->error_indicator) {
21112
21
        p->call_invalid_rules = _prev_call_invalid;
21113
21
        p->level--;
21114
21
        return NULL;
21115
21
    }
21116
95.3k
    expr_ty _res = NULL;
21117
95.3k
    int _mark = p->mark;
21118
95.3k
    if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
21119
0
        p->error_indicator = 1;
21120
0
        p->call_invalid_rules = _prev_call_invalid;
21121
0
        p->level--;
21122
0
        return NULL;
21123
0
    }
21124
95.3k
    int _start_lineno = p->tokens[_mark]->lineno;
21125
95.3k
    UNUSED(_start_lineno); // Only used by EXTRA macro
21126
95.3k
    int _start_col_offset = p->tokens[_mark]->col_offset;
21127
95.3k
    UNUSED(_start_col_offset); // Only used by EXTRA macro
21128
95.3k
    { // disjunction 'if' disjunction 'else' expression
21129
95.3k
        if (p->error_indicator) {
21130
0
            p->call_invalid_rules = _prev_call_invalid;
21131
0
            p->level--;
21132
0
            return NULL;
21133
0
        }
21134
95.3k
        D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
21135
95.3k
        Token * _keyword;
21136
95.3k
        Token * _keyword_1;
21137
95.3k
        expr_ty a;
21138
95.3k
        expr_ty b;
21139
95.3k
        expr_ty c;
21140
95.3k
        if (
21141
95.3k
            (a = disjunction_rule(p))  // disjunction
21142
7.96k
            &&
21143
7.96k
            (_keyword = _PyPegen_expect_token(p, 691))  // token='if'
21144
87
            &&
21145
87
            (b = disjunction_rule(p))  // disjunction
21146
81
            &&
21147
81
            (_keyword_1 = _PyPegen_expect_token(p, 695))  // token='else'
21148
72
            &&
21149
72
            (c = expression_rule(p))  // expression
21150
95.3k
        )
21151
66
        {
21152
66
            D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
21153
66
            Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
21154
66
            if (_token == NULL) {
21155
0
                p->call_invalid_rules = _prev_call_invalid;
21156
0
                p->level--;
21157
0
                return NULL;
21158
0
            }
21159
66
            int _end_lineno = _token->end_lineno;
21160
66
            UNUSED(_end_lineno); // Only used by EXTRA macro
21161
66
            int _end_col_offset = _token->end_col_offset;
21162
66
            UNUSED(_end_col_offset); // Only used by EXTRA macro
21163
66
            _res = _PyAST_IfExp ( b , a , c , EXTRA );
21164
66
            if (_res == NULL && PyErr_Occurred()) {
21165
0
                p->error_indicator = 1;
21166
0
                p->call_invalid_rules = _prev_call_invalid;
21167
0
                p->level--;
21168
0
                return NULL;
21169
0
            }
21170
66
            goto done;
21171
66
        }
21172
95.3k
        p->mark = _mark;
21173
95.3k
        D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
21174
95.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
21175
95.3k
    }
21176
0
    { // disjunction
21177
95.3k
        if (p->error_indicator) {
21178
339
            p->call_invalid_rules = _prev_call_invalid;
21179
339
            p->level--;
21180
339
            return NULL;
21181
339
        }
21182
94.9k
        D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
21183
94.9k
        expr_ty disjunction_var;
21184
94.9k
        if (
21185
94.9k
            (disjunction_var = disjunction_rule(p))  // disjunction
21186
94.9k
        )
21187
7.90k
        {
21188
7.90k
            D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
21189
7.90k
            _res = disjunction_var;
21190
7.90k
            goto done;
21191
7.90k
        }
21192
87.0k
        p->mark = _mark;
21193
87.0k
        D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
21194
87.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
21195
87.0k
    }
21196
0
    { // lambdef
21197
87.0k
        if (p->error_indicator) {
21198
0
            p->call_invalid_rules = _prev_call_invalid;
21199
0
            p->level--;
21200
0
            return NULL;
21201
0
        }
21202
87.0k
        D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
21203
87.0k
        expr_ty lambdef_var;
21204
87.0k
        if (
21205
87.0k
            (lambdef_var = lambdef_rule(p))  // lambdef
21206
87.0k
        )
21207
77
        {
21208
77
            D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
21209
77
            _res = lambdef_var;
21210
77
            goto done;
21211
77
        }
21212
87.0k
        p->mark = _mark;
21213
87.0k
        D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
21214
87.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
21215
87.0k
    }
21216
87.0k
    _res = NULL;
21217
95.0k
  done:
21218
95.0k
    p->call_invalid_rules = _prev_call_invalid;
21219
95.0k
    p->level--;
21220
95.0k
    return _res;
21221
87.0k
}
21222
21223
// invalid_legacy_expression: NAME !'(' star_expressions
21224
static void *
21225
invalid_legacy_expression_rule(Parser *p)
21226
195k
{
21227
195k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21228
0
        _Pypegen_stack_overflow(p);
21229
0
    }
21230
195k
    if (p->error_indicator) {
21231
0
        p->level--;
21232
0
        return NULL;
21233
0
    }
21234
195k
    void * _res = NULL;
21235
195k
    int _mark = p->mark;
21236
195k
    { // NAME !'(' star_expressions
21237
195k
        if (p->error_indicator) {
21238
0
            p->level--;
21239
0
            return NULL;
21240
0
        }
21241
195k
        D(fprintf(stderr, "%*c> invalid_legacy_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
21242
195k
        expr_ty a;
21243
195k
        expr_ty b;
21244
195k
        if (
21245
195k
            (a = _PyPegen_name_token(p))  // NAME
21246
62.8k
            &&
21247
62.8k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 7)  // token='('
21248
58.7k
            &&
21249
58.7k
            (b = star_expressions_rule(p))  // star_expressions
21250
195k
        )
21251
4.09k
        {
21252
4.09k
            D(fprintf(stderr, "%*c+ invalid_legacy_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
21253
4.09k
            _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;
21254
4.09k
            if (_res == NULL && PyErr_Occurred()) {
21255
12
                p->error_indicator = 1;
21256
12
                p->level--;
21257
12
                return NULL;
21258
12
            }
21259
4.08k
            goto done;
21260
4.09k
        }
21261
191k
        p->mark = _mark;
21262
191k
        D(fprintf(stderr, "%*c%s invalid_legacy_expression[%d-%d]: %s failed!\n", p->level, ' ',
21263
191k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME !'(' star_expressions"));
21264
191k
    }
21265
191k
    _res = NULL;
21266
195k
  done:
21267
195k
    p->level--;
21268
195k
    return _res;
21269
191k
}
21270
21271
// invalid_type_param: '*' NAME ':' expression | '**' NAME ':' expression
21272
static void *
21273
invalid_type_param_rule(Parser *p)
21274
901
{
21275
901
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21276
0
        _Pypegen_stack_overflow(p);
21277
0
    }
21278
901
    if (p->error_indicator) {
21279
0
        p->level--;
21280
0
        return NULL;
21281
0
    }
21282
901
    void * _res = NULL;
21283
901
    int _mark = p->mark;
21284
901
    { // '*' NAME ':' expression
21285
901
        if (p->error_indicator) {
21286
0
            p->level--;
21287
0
            return NULL;
21288
0
        }
21289
901
        D(fprintf(stderr, "%*c> invalid_type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' NAME ':' expression"));
21290
901
        Token * _literal;
21291
901
        expr_ty a;
21292
901
        Token * colon;
21293
901
        expr_ty e;
21294
901
        if (
21295
901
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
21296
411
            &&
21297
411
            (a = _PyPegen_name_token(p))  // NAME
21298
409
            &&
21299
409
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
21300
3
            &&
21301
3
            (e = expression_rule(p))  // expression
21302
901
        )
21303
1
        {
21304
1
            D(fprintf(stderr, "%*c+ invalid_type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' NAME ':' expression"));
21305
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( colon , e -> kind == Tuple_kind ? "cannot use constraints with TypeVarTuple" : "cannot use bound with TypeVarTuple" );
21306
1
            if (_res == NULL && PyErr_Occurred()) {
21307
1
                p->error_indicator = 1;
21308
1
                p->level--;
21309
1
                return NULL;
21310
1
            }
21311
0
            goto done;
21312
1
        }
21313
900
        p->mark = _mark;
21314
900
        D(fprintf(stderr, "%*c%s invalid_type_param[%d-%d]: %s failed!\n", p->level, ' ',
21315
900
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' NAME ':' expression"));
21316
900
    }
21317
0
    { // '**' NAME ':' expression
21318
900
        if (p->error_indicator) {
21319
2
            p->level--;
21320
2
            return NULL;
21321
2
        }
21322
898
        D(fprintf(stderr, "%*c> invalid_type_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' NAME ':' expression"));
21323
898
        Token * _literal;
21324
898
        expr_ty a;
21325
898
        Token * colon;
21326
898
        expr_ty e;
21327
898
        if (
21328
898
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
21329
271
            &&
21330
271
            (a = _PyPegen_name_token(p))  // NAME
21331
270
            &&
21332
270
            (colon = _PyPegen_expect_token(p, 11))  // token=':'
21333
3
            &&
21334
3
            (e = expression_rule(p))  // expression
21335
898
        )
21336
1
        {
21337
1
            D(fprintf(stderr, "%*c+ invalid_type_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' NAME ':' expression"));
21338
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( colon , e -> kind == Tuple_kind ? "cannot use constraints with ParamSpec" : "cannot use bound with ParamSpec" );
21339
1
            if (_res == NULL && PyErr_Occurred()) {
21340
1
                p->error_indicator = 1;
21341
1
                p->level--;
21342
1
                return NULL;
21343
1
            }
21344
0
            goto done;
21345
1
        }
21346
897
        p->mark = _mark;
21347
897
        D(fprintf(stderr, "%*c%s invalid_type_param[%d-%d]: %s failed!\n", p->level, ' ',
21348
897
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' NAME ':' expression"));
21349
897
    }
21350
897
    _res = NULL;
21351
897
  done:
21352
897
    p->level--;
21353
897
    return _res;
21354
897
}
21355
21356
// invalid_expression:
21357
//     | STRING ((!STRING expression_without_invalid))+ STRING
21358
//     | !(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid
21359
//     | disjunction 'if' disjunction !('else' | ':')
21360
//     | disjunction 'if' disjunction 'else' !expression
21361
//     | (pass_stmt | break_stmt | continue_stmt) 'if' disjunction 'else' simple_stmt
21362
//     | 'lambda' lambda_params? ':' &FSTRING_MIDDLE
21363
//     | 'lambda' lambda_params? ':' &TSTRING_MIDDLE
21364
static void *
21365
invalid_expression_rule(Parser *p)
21366
226k
{
21367
226k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21368
2
        _Pypegen_stack_overflow(p);
21369
2
    }
21370
226k
    if (p->error_indicator) {
21371
2
        p->level--;
21372
2
        return NULL;
21373
2
    }
21374
226k
    void * _res = NULL;
21375
226k
    int _mark = p->mark;
21376
226k
    { // STRING ((!STRING expression_without_invalid))+ STRING
21377
226k
        if (p->error_indicator) {
21378
0
            p->level--;
21379
0
            return NULL;
21380
0
        }
21381
226k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING ((!STRING expression_without_invalid))+ STRING"));
21382
226k
        asdl_seq * a;
21383
226k
        expr_ty string_var;
21384
226k
        expr_ty string_var_1;
21385
226k
        if (
21386
226k
            (string_var = _PyPegen_string_token(p))  // STRING
21387
3.50k
            &&
21388
3.50k
            (a = _loop1_113_rule(p))  // ((!STRING expression_without_invalid))+
21389
1.09k
            &&
21390
1.09k
            (string_var_1 = _PyPegen_string_token(p))  // STRING
21391
226k
        )
21392
11
        {
21393
11
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING ((!STRING expression_without_invalid))+ STRING"));
21394
11
            _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?" );
21395
11
            if (_res == NULL && PyErr_Occurred()) {
21396
11
                p->error_indicator = 1;
21397
11
                p->level--;
21398
11
                return NULL;
21399
11
            }
21400
0
            goto done;
21401
11
        }
21402
226k
        p->mark = _mark;
21403
226k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21404
226k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING ((!STRING expression_without_invalid))+ STRING"));
21405
226k
    }
21406
0
    { // !(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid
21407
226k
        if (p->error_indicator) {
21408
95
            p->level--;
21409
95
            return NULL;
21410
95
        }
21411
226k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
21412
226k
        expr_ty a;
21413
226k
        expr_ty b;
21414
226k
        if (
21415
226k
            _PyPegen_lookahead(0, _tmp_114_rule, p)
21416
221k
            &&
21417
221k
            (a = disjunction_rule(p))  // disjunction
21418
89.7k
            &&
21419
89.7k
            (b = expression_without_invalid_rule(p))  // expression_without_invalid
21420
226k
        )
21421
5.35k
        {
21422
5.35k
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
21423
5.35k
            _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?" );
21424
5.35k
            if (_res == NULL && PyErr_Occurred()) {
21425
108
                p->error_indicator = 1;
21426
108
                p->level--;
21427
108
                return NULL;
21428
108
            }
21429
5.24k
            goto done;
21430
5.35k
        }
21431
221k
        p->mark = _mark;
21432
221k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21433
221k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
21434
221k
    }
21435
0
    { // disjunction 'if' disjunction !('else' | ':')
21436
221k
        if (p->error_indicator) {
21437
28.3k
            p->level--;
21438
28.3k
            return NULL;
21439
28.3k
        }
21440
193k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
21441
193k
        Token * _keyword;
21442
193k
        expr_ty a;
21443
193k
        expr_ty b;
21444
193k
        if (
21445
193k
            (a = disjunction_rule(p))  // disjunction
21446
88.6k
            &&
21447
88.6k
            (_keyword = _PyPegen_expect_token(p, 691))  // token='if'
21448
1.13k
            &&
21449
1.13k
            (b = disjunction_rule(p))  // disjunction
21450
679
            &&
21451
679
            _PyPegen_lookahead(0, _tmp_115_rule, p)
21452
193k
        )
21453
19
        {
21454
19
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
21455
19
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expected 'else' after 'if' expression" );
21456
19
            if (_res == NULL && PyErr_Occurred()) {
21457
19
                p->error_indicator = 1;
21458
19
                p->level--;
21459
19
                return NULL;
21460
19
            }
21461
0
            goto done;
21462
19
        }
21463
193k
        p->mark = _mark;
21464
193k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21465
193k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
21466
193k
    }
21467
0
    { // disjunction 'if' disjunction 'else' !expression
21468
193k
        if (p->error_indicator) {
21469
673
            p->level--;
21470
673
            return NULL;
21471
673
        }
21472
192k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' !expression"));
21473
192k
        Token * _keyword;
21474
192k
        Token * _keyword_1;
21475
192k
        expr_ty a;
21476
192k
        expr_ty b;
21477
192k
        if (
21478
192k
            (a = disjunction_rule(p))  // disjunction
21479
88.5k
            &&
21480
88.5k
            (_keyword = _PyPegen_expect_token(p, 691))  // token='if'
21481
944
            &&
21482
944
            (b = disjunction_rule(p))  // disjunction
21483
660
            &&
21484
660
            (_keyword_1 = _PyPegen_expect_token(p, 695))  // token='else'
21485
650
            &&
21486
650
            _PyPegen_lookahead_for_expr(0, expression_rule, p)
21487
192k
        )
21488
253
        {
21489
253
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' !expression"));
21490
253
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "expected expression after 'else', but statement is given" );
21491
253
            if (_res == NULL && PyErr_Occurred()) {
21492
253
                p->error_indicator = 1;
21493
253
                p->level--;
21494
253
                return NULL;
21495
253
            }
21496
0
            goto done;
21497
253
        }
21498
192k
        p->mark = _mark;
21499
192k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21500
192k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' !expression"));
21501
192k
    }
21502
0
    { // (pass_stmt | break_stmt | continue_stmt) 'if' disjunction 'else' simple_stmt
21503
192k
        if (p->error_indicator) {
21504
0
            p->level--;
21505
0
            return NULL;
21506
0
        }
21507
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"));
21508
192k
        Token * _keyword;
21509
192k
        Token * _keyword_1;
21510
192k
        stmt_ty a;
21511
192k
        expr_ty b;
21512
192k
        stmt_ty c;
21513
192k
        if (
21514
192k
            (a = (stmt_ty)_tmp_116_rule(p))  // pass_stmt | break_stmt | continue_stmt
21515
2.89k
            &&
21516
2.89k
            (_keyword = _PyPegen_expect_token(p, 691))  // token='if'
21517
1.77k
            &&
21518
1.77k
            (b = disjunction_rule(p))  // disjunction
21519
1.56k
            &&
21520
1.56k
            (_keyword_1 = _PyPegen_expect_token(p, 695))  // token='else'
21521
1.48k
            &&
21522
1.48k
            (c = simple_stmt_rule(p))  // simple_stmt
21523
192k
        )
21524
13
        {
21525
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"));
21526
13
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected expression before 'if', but statement is given" );
21527
13
            if (_res == NULL && PyErr_Occurred()) {
21528
13
                p->error_indicator = 1;
21529
13
                p->level--;
21530
13
                return NULL;
21531
13
            }
21532
0
            goto done;
21533
13
        }
21534
192k
        p->mark = _mark;
21535
192k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21536
192k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(pass_stmt | break_stmt | continue_stmt) 'if' disjunction 'else' simple_stmt"));
21537
192k
    }
21538
0
    { // 'lambda' lambda_params? ':' &FSTRING_MIDDLE
21539
192k
        if (p->error_indicator) {
21540
1.52k
            p->level--;
21541
1.52k
            return NULL;
21542
1.52k
        }
21543
190k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &FSTRING_MIDDLE"));
21544
190k
        void *_opt_var;
21545
190k
        UNUSED(_opt_var); // Silence compiler warnings
21546
190k
        Token * a;
21547
190k
        Token * b;
21548
190k
        if (
21549
190k
            (a = _PyPegen_expect_token(p, 622))  // token='lambda'
21550
3.30k
            &&
21551
3.30k
            (_opt_var = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
21552
2.60k
            &&
21553
2.60k
            (b = _PyPegen_expect_token(p, 11))  // token=':'
21554
1.41k
            &&
21555
1.41k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, FSTRING_MIDDLE)  // token=FSTRING_MIDDLE
21556
190k
        )
21557
1
        {
21558
1
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &FSTRING_MIDDLE"));
21559
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "f-string: lambda expressions are not allowed without parentheses" );
21560
1
            if (_res == NULL && PyErr_Occurred()) {
21561
1
                p->error_indicator = 1;
21562
1
                p->level--;
21563
1
                return NULL;
21564
1
            }
21565
0
            goto done;
21566
1
        }
21567
190k
        p->mark = _mark;
21568
190k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21569
190k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' &FSTRING_MIDDLE"));
21570
190k
    }
21571
0
    { // 'lambda' lambda_params? ':' &TSTRING_MIDDLE
21572
190k
        if (p->error_indicator) {
21573
711
            p->level--;
21574
711
            return NULL;
21575
711
        }
21576
189k
        D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &TSTRING_MIDDLE"));
21577
189k
        void *_opt_var;
21578
189k
        UNUSED(_opt_var); // Silence compiler warnings
21579
189k
        Token * a;
21580
189k
        Token * b;
21581
189k
        if (
21582
189k
            (a = _PyPegen_expect_token(p, 622))  // token='lambda'
21583
2.59k
            &&
21584
2.59k
            (_opt_var = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
21585
2.59k
            &&
21586
2.59k
            (b = _PyPegen_expect_token(p, 11))  // token=':'
21587
1.40k
            &&
21588
1.40k
            _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, TSTRING_MIDDLE)  // token=TSTRING_MIDDLE
21589
189k
        )
21590
8
        {
21591
8
            D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' &TSTRING_MIDDLE"));
21592
8
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "t-string: lambda expressions are not allowed without parentheses" );
21593
8
            if (_res == NULL && PyErr_Occurred()) {
21594
8
                p->error_indicator = 1;
21595
8
                p->level--;
21596
8
                return NULL;
21597
8
            }
21598
0
            goto done;
21599
8
        }
21600
189k
        p->mark = _mark;
21601
189k
        D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
21602
189k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' &TSTRING_MIDDLE"));
21603
189k
    }
21604
189k
    _res = NULL;
21605
195k
  done:
21606
195k
    p->level--;
21607
195k
    return _res;
21608
189k
}
21609
21610
// invalid_named_expression:
21611
//     | expression ':=' expression
21612
//     | NAME '=' bitwise_or !('=' | ':=')
21613
//     | !(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')
21614
static void *
21615
invalid_named_expression_rule(Parser *p)
21616
259k
{
21617
259k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21618
0
        _Pypegen_stack_overflow(p);
21619
0
    }
21620
259k
    if (p->error_indicator) {
21621
0
        p->level--;
21622
0
        return NULL;
21623
0
    }
21624
259k
    void * _res = NULL;
21625
259k
    if (_PyPegen_is_memoized(p, invalid_named_expression_type, &_res)) {
21626
154k
        p->level--;
21627
154k
        return _res;
21628
154k
    }
21629
104k
    int _mark = p->mark;
21630
104k
    { // expression ':=' expression
21631
104k
        if (p->error_indicator) {
21632
0
            p->level--;
21633
0
            return NULL;
21634
0
        }
21635
104k
        D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
21636
104k
        Token * _literal;
21637
104k
        expr_ty a;
21638
104k
        expr_ty expression_var;
21639
104k
        if (
21640
104k
            (a = expression_rule(p))  // expression
21641
55.3k
            &&
21642
55.3k
            (_literal = _PyPegen_expect_token(p, 53))  // token=':='
21643
245
            &&
21644
245
            (expression_var = expression_rule(p))  // expression
21645
104k
        )
21646
3
        {
21647
3
            D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
21648
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use assignment expressions with %s" , _PyPegen_get_expr_name ( a ) );
21649
3
            if (_res == NULL && PyErr_Occurred()) {
21650
3
                p->error_indicator = 1;
21651
3
                p->level--;
21652
3
                return NULL;
21653
3
            }
21654
0
            goto done;
21655
3
        }
21656
104k
        p->mark = _mark;
21657
104k
        D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
21658
104k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':=' expression"));
21659
104k
    }
21660
0
    { // NAME '=' bitwise_or !('=' | ':=')
21661
104k
        if (p->error_indicator) {
21662
15.9k
            p->level--;
21663
15.9k
            return NULL;
21664
15.9k
        }
21665
88.6k
        D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
21666
88.6k
        Token * _literal;
21667
88.6k
        expr_ty a;
21668
88.6k
        expr_ty b;
21669
88.6k
        if (
21670
88.6k
            (a = _PyPegen_name_token(p))  // NAME
21671
34.5k
            &&
21672
34.5k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
21673
544
            &&
21674
544
            (b = bitwise_or_rule(p))  // bitwise_or
21675
35
            &&
21676
35
            _PyPegen_lookahead(0, _tmp_117_rule, p)
21677
88.6k
        )
21678
6
        {
21679
6
            D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
21680
6
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
21681
6
            if (_res == NULL && PyErr_Occurred()) {
21682
6
                p->error_indicator = 1;
21683
6
                p->level--;
21684
6
                return NULL;
21685
6
            }
21686
0
            goto done;
21687
6
        }
21688
88.5k
        p->mark = _mark;
21689
88.5k
        D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
21690
88.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
21691
88.5k
    }
21692
0
    { // !(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')
21693
88.5k
        if (p->error_indicator) {
21694
266
            p->level--;
21695
266
            return NULL;
21696
266
        }
21697
88.3k
        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 !('=' | ':=')"));
21698
88.3k
        expr_ty a;
21699
88.3k
        Token * b;
21700
88.3k
        expr_ty bitwise_or_var;
21701
88.3k
        if (
21702
88.3k
            _PyPegen_lookahead(0, _tmp_118_rule, p)
21703
82.5k
            &&
21704
82.5k
            (a = bitwise_or_rule(p))  // bitwise_or
21705
49.0k
            &&
21706
49.0k
            (b = _PyPegen_expect_token(p, 22))  // token='='
21707
408
            &&
21708
408
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
21709
50
            &&
21710
50
            _PyPegen_lookahead(0, _tmp_117_rule, p)
21711
88.3k
        )
21712
16
        {
21713
16
            D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')"));
21714
16
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot assign to %s here. Maybe you meant '==' instead of '='?" , _PyPegen_get_expr_name ( a ) );
21715
16
            if (_res == NULL && PyErr_Occurred()) {
21716
16
                p->error_indicator = 1;
21717
16
                p->level--;
21718
16
                return NULL;
21719
16
            }
21720
0
            goto done;
21721
16
        }
21722
88.3k
        p->mark = _mark;
21723
88.3k
        D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
21724
88.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')"));
21725
88.3k
    }
21726
88.3k
    _res = NULL;
21727
88.3k
  done:
21728
88.3k
    _PyPegen_insert_memo(p, _mark, invalid_named_expression_type, _res);
21729
88.3k
    p->level--;
21730
88.3k
    return _res;
21731
88.3k
}
21732
21733
// invalid_assignment:
21734
//     | invalid_ann_assign_target ':' expression
21735
//     | star_named_expression ',' star_named_expressions* ':' expression
21736
//     | expression ':' expression
21737
//     | ((star_targets '='))* star_expressions '='
21738
//     | ((star_targets '='))* yield_expr '='
21739
//     | star_expressions augassign annotated_rhs
21740
static void *
21741
invalid_assignment_rule(Parser *p)
21742
39.3k
{
21743
39.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21744
0
        _Pypegen_stack_overflow(p);
21745
0
    }
21746
39.3k
    if (p->error_indicator) {
21747
0
        p->level--;
21748
0
        return NULL;
21749
0
    }
21750
39.3k
    void * _res = NULL;
21751
39.3k
    int _mark = p->mark;
21752
39.3k
    { // invalid_ann_assign_target ':' expression
21753
39.3k
        if (p->error_indicator) {
21754
0
            p->level--;
21755
0
            return NULL;
21756
0
        }
21757
39.3k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_ann_assign_target ':' expression"));
21758
39.3k
        Token * _literal;
21759
39.3k
        expr_ty a;
21760
39.3k
        expr_ty expression_var;
21761
39.3k
        if (
21762
39.3k
            (a = invalid_ann_assign_target_rule(p))  // invalid_ann_assign_target
21763
748
            &&
21764
748
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21765
112
            &&
21766
112
            (expression_var = expression_rule(p))  // expression
21767
39.3k
        )
21768
2
        {
21769
2
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_ann_assign_target ':' expression"));
21770
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not %s) can be annotated" , _PyPegen_get_expr_name ( a ) );
21771
2
            if (_res == NULL && PyErr_Occurred()) {
21772
2
                p->error_indicator = 1;
21773
2
                p->level--;
21774
2
                return NULL;
21775
2
            }
21776
0
            goto done;
21777
2
        }
21778
39.3k
        p->mark = _mark;
21779
39.3k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21780
39.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_ann_assign_target ':' expression"));
21781
39.3k
    }
21782
0
    { // star_named_expression ',' star_named_expressions* ':' expression
21783
39.3k
        if (p->error_indicator) {
21784
107
            p->level--;
21785
107
            return NULL;
21786
107
        }
21787
39.2k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
21788
39.2k
        Token * _literal;
21789
39.2k
        Token * _literal_1;
21790
39.2k
        asdl_seq * _loop0_119_var;
21791
39.2k
        expr_ty a;
21792
39.2k
        expr_ty expression_var;
21793
39.2k
        if (
21794
39.2k
            (a = star_named_expression_rule(p))  // star_named_expression
21795
27.1k
            &&
21796
27.1k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
21797
1.46k
            &&
21798
1.46k
            (_loop0_119_var = _loop0_119_rule(p))  // star_named_expressions*
21799
1.46k
            &&
21800
1.46k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
21801
54
            &&
21802
54
            (expression_var = expression_rule(p))  // expression
21803
39.2k
        )
21804
11
        {
21805
11
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
21806
11
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
21807
11
            if (_res == NULL && PyErr_Occurred()) {
21808
11
                p->error_indicator = 1;
21809
11
                p->level--;
21810
11
                return NULL;
21811
11
            }
21812
0
            goto done;
21813
11
        }
21814
39.2k
        p->mark = _mark;
21815
39.2k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21816
39.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
21817
39.2k
    }
21818
0
    { // expression ':' expression
21819
39.2k
        if (p->error_indicator) {
21820
784
            p->level--;
21821
784
            return NULL;
21822
784
        }
21823
38.4k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
21824
38.4k
        Token * _literal;
21825
38.4k
        expr_ty a;
21826
38.4k
        expr_ty expression_var;
21827
38.4k
        if (
21828
38.4k
            (a = expression_rule(p))  // expression
21829
26.9k
            &&
21830
26.9k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21831
573
            &&
21832
573
            (expression_var = expression_rule(p))  // expression
21833
38.4k
        )
21834
35
        {
21835
35
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
21836
35
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
21837
35
            if (_res == NULL && PyErr_Occurred()) {
21838
35
                p->error_indicator = 1;
21839
35
                p->level--;
21840
35
                return NULL;
21841
35
            }
21842
0
            goto done;
21843
35
        }
21844
38.4k
        p->mark = _mark;
21845
38.4k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21846
38.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
21847
38.4k
    }
21848
0
    { // ((star_targets '='))* star_expressions '='
21849
38.4k
        if (p->error_indicator) {
21850
124
            p->level--;
21851
124
            return NULL;
21852
124
        }
21853
38.3k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
21854
38.3k
        Token * _literal;
21855
38.3k
        asdl_seq * _loop0_120_var;
21856
38.3k
        expr_ty a;
21857
38.3k
        if (
21858
38.3k
            (_loop0_120_var = _loop0_120_rule(p))  // ((star_targets '='))*
21859
38.3k
            &&
21860
38.3k
            (a = star_expressions_rule(p))  // star_expressions
21861
26.7k
            &&
21862
26.7k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
21863
38.3k
        )
21864
107
        {
21865
107
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
21866
107
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( STAR_TARGETS , a );
21867
107
            if (_res == NULL && PyErr_Occurred()) {
21868
107
                p->error_indicator = 1;
21869
107
                p->level--;
21870
107
                return NULL;
21871
107
            }
21872
0
            goto done;
21873
107
        }
21874
38.2k
        p->mark = _mark;
21875
38.2k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21876
38.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* star_expressions '='"));
21877
38.2k
    }
21878
0
    { // ((star_targets '='))* yield_expr '='
21879
38.2k
        if (p->error_indicator) {
21880
0
            p->level--;
21881
0
            return NULL;
21882
0
        }
21883
38.2k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
21884
38.2k
        Token * _literal;
21885
38.2k
        asdl_seq * _loop0_120_var;
21886
38.2k
        expr_ty a;
21887
38.2k
        if (
21888
38.2k
            (_loop0_120_var = _loop0_120_rule(p))  // ((star_targets '='))*
21889
38.2k
            &&
21890
38.2k
            (a = yield_expr_rule(p))  // yield_expr
21891
401
            &&
21892
401
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
21893
38.2k
        )
21894
4
        {
21895
4
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
21896
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "assignment to yield expression not possible" );
21897
4
            if (_res == NULL && PyErr_Occurred()) {
21898
4
                p->error_indicator = 1;
21899
4
                p->level--;
21900
4
                return NULL;
21901
4
            }
21902
0
            goto done;
21903
4
        }
21904
38.2k
        p->mark = _mark;
21905
38.2k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21906
38.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* yield_expr '='"));
21907
38.2k
    }
21908
0
    { // star_expressions augassign annotated_rhs
21909
38.2k
        if (p->error_indicator) {
21910
66
            p->level--;
21911
66
            return NULL;
21912
66
        }
21913
38.1k
        D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions augassign annotated_rhs"));
21914
38.1k
        expr_ty a;
21915
38.1k
        expr_ty annotated_rhs_var;
21916
38.1k
        AugOperator* augassign_var;
21917
38.1k
        if (
21918
38.1k
            (a = star_expressions_rule(p))  // star_expressions
21919
26.7k
            &&
21920
26.7k
            (augassign_var = augassign_rule(p))  // augassign
21921
178
            &&
21922
178
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
21923
38.1k
        )
21924
17
        {
21925
17
            D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions augassign annotated_rhs"));
21926
17
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "'%s' is an illegal expression for augmented assignment" , _PyPegen_get_expr_name ( a ) );
21927
17
            if (_res == NULL && PyErr_Occurred()) {
21928
17
                p->error_indicator = 1;
21929
17
                p->level--;
21930
17
                return NULL;
21931
17
            }
21932
0
            goto done;
21933
17
        }
21934
38.1k
        p->mark = _mark;
21935
38.1k
        D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
21936
38.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions augassign annotated_rhs"));
21937
38.1k
    }
21938
38.1k
    _res = NULL;
21939
38.1k
  done:
21940
38.1k
    p->level--;
21941
38.1k
    return _res;
21942
38.1k
}
21943
21944
// invalid_ann_assign_target: list | tuple | '(' invalid_ann_assign_target ')'
21945
static expr_ty
21946
invalid_ann_assign_target_rule(Parser *p)
21947
41.2k
{
21948
41.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
21949
0
        _Pypegen_stack_overflow(p);
21950
0
    }
21951
41.2k
    if (p->error_indicator) {
21952
0
        p->level--;
21953
0
        return NULL;
21954
0
    }
21955
41.2k
    expr_ty _res = NULL;
21956
41.2k
    int _mark = p->mark;
21957
41.2k
    { // list
21958
41.2k
        if (p->error_indicator) {
21959
0
            p->level--;
21960
0
            return NULL;
21961
0
        }
21962
41.2k
        D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
21963
41.2k
        expr_ty list_var;
21964
41.2k
        if (
21965
41.2k
            (list_var = list_rule(p))  // list
21966
41.2k
        )
21967
227
        {
21968
227
            D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
21969
227
            _res = list_var;
21970
227
            goto done;
21971
227
        }
21972
40.9k
        p->mark = _mark;
21973
40.9k
        D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
21974
40.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
21975
40.9k
    }
21976
0
    { // tuple
21977
40.9k
        if (p->error_indicator) {
21978
0
            p->level--;
21979
0
            return NULL;
21980
0
        }
21981
40.9k
        D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
21982
40.9k
        expr_ty tuple_var;
21983
40.9k
        if (
21984
40.9k
            (tuple_var = tuple_rule(p))  // tuple
21985
40.9k
        )
21986
566
        {
21987
566
            D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
21988
566
            _res = tuple_var;
21989
566
            goto done;
21990
566
        }
21991
40.4k
        p->mark = _mark;
21992
40.4k
        D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
21993
40.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
21994
40.4k
    }
21995
0
    { // '(' invalid_ann_assign_target ')'
21996
40.4k
        if (p->error_indicator) {
21997
0
            p->level--;
21998
0
            return NULL;
21999
0
        }
22000
40.4k
        D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
22001
40.4k
        Token * _literal;
22002
40.4k
        Token * _literal_1;
22003
40.4k
        expr_ty a;
22004
40.4k
        if (
22005
40.4k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
22006
1.81k
            &&
22007
1.81k
            (a = invalid_ann_assign_target_rule(p))  // invalid_ann_assign_target
22008
430
            &&
22009
430
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
22010
40.4k
        )
22011
385
        {
22012
385
            D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
22013
385
            _res = a;
22014
385
            if (_res == NULL && PyErr_Occurred()) {
22015
0
                p->error_indicator = 1;
22016
0
                p->level--;
22017
0
                return NULL;
22018
0
            }
22019
385
            goto done;
22020
385
        }
22021
40.0k
        p->mark = _mark;
22022
40.0k
        D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
22023
40.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
22024
40.0k
    }
22025
40.0k
    _res = NULL;
22026
41.2k
  done:
22027
41.2k
    p->level--;
22028
41.2k
    return _res;
22029
40.0k
}
22030
22031
// invalid_raise_stmt: 'raise' 'from' | 'raise' expression 'from'
22032
static void *
22033
invalid_raise_stmt_rule(Parser *p)
22034
413
{
22035
413
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22036
0
        _Pypegen_stack_overflow(p);
22037
0
    }
22038
413
    if (p->error_indicator) {
22039
0
        p->level--;
22040
0
        return NULL;
22041
0
    }
22042
413
    void * _res = NULL;
22043
413
    int _mark = p->mark;
22044
413
    { // 'raise' 'from'
22045
413
        if (p->error_indicator) {
22046
0
            p->level--;
22047
0
            return NULL;
22048
0
        }
22049
413
        D(fprintf(stderr, "%*c> invalid_raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' 'from'"));
22050
413
        Token * a;
22051
413
        Token * b;
22052
413
        if (
22053
413
            (a = _PyPegen_expect_token(p, 628))  // token='raise'
22054
413
            &&
22055
413
            (b = _PyPegen_expect_token(p, 642))  // token='from'
22056
413
        )
22057
1
        {
22058
1
            D(fprintf(stderr, "%*c+ invalid_raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' 'from'"));
22059
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "did you forget an expression between 'raise' and 'from'?" );
22060
1
            if (_res == NULL && PyErr_Occurred()) {
22061
1
                p->error_indicator = 1;
22062
1
                p->level--;
22063
1
                return NULL;
22064
1
            }
22065
0
            goto done;
22066
1
        }
22067
412
        p->mark = _mark;
22068
412
        D(fprintf(stderr, "%*c%s invalid_raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22069
412
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' 'from'"));
22070
412
    }
22071
0
    { // 'raise' expression 'from'
22072
412
        if (p->error_indicator) {
22073
0
            p->level--;
22074
0
            return NULL;
22075
0
        }
22076
412
        D(fprintf(stderr, "%*c> invalid_raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from'"));
22077
412
        Token * _keyword;
22078
412
        Token * a;
22079
412
        expr_ty expression_var;
22080
412
        if (
22081
412
            (_keyword = _PyPegen_expect_token(p, 628))  // token='raise'
22082
412
            &&
22083
412
            (expression_var = expression_rule(p))  // expression
22084
153
            &&
22085
153
            (a = _PyPegen_expect_token(p, 642))  // token='from'
22086
412
        )
22087
2
        {
22088
2
            D(fprintf(stderr, "%*c+ invalid_raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression 'from'"));
22089
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "did you forget an expression after 'from'?" );
22090
2
            if (_res == NULL && PyErr_Occurred()) {
22091
2
                p->error_indicator = 1;
22092
2
                p->level--;
22093
2
                return NULL;
22094
2
            }
22095
0
            goto done;
22096
2
        }
22097
410
        p->mark = _mark;
22098
410
        D(fprintf(stderr, "%*c%s invalid_raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22099
410
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression 'from'"));
22100
410
    }
22101
410
    _res = NULL;
22102
410
  done:
22103
410
    p->level--;
22104
410
    return _res;
22105
410
}
22106
22107
// invalid_del_stmt: 'del' star_expressions
22108
static void *
22109
invalid_del_stmt_rule(Parser *p)
22110
306
{
22111
306
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22112
0
        _Pypegen_stack_overflow(p);
22113
0
    }
22114
306
    if (p->error_indicator) {
22115
0
        p->level--;
22116
0
        return NULL;
22117
0
    }
22118
306
    void * _res = NULL;
22119
306
    int _mark = p->mark;
22120
306
    { // 'del' star_expressions
22121
306
        if (p->error_indicator) {
22122
0
            p->level--;
22123
0
            return NULL;
22124
0
        }
22125
306
        D(fprintf(stderr, "%*c> invalid_del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' star_expressions"));
22126
306
        Token * _keyword;
22127
306
        expr_ty a;
22128
306
        if (
22129
306
            (_keyword = _PyPegen_expect_token(p, 630))  // token='del'
22130
306
            &&
22131
306
            (a = star_expressions_rule(p))  // star_expressions
22132
306
        )
22133
160
        {
22134
160
            D(fprintf(stderr, "%*c+ invalid_del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' star_expressions"));
22135
160
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( DEL_TARGETS , a );
22136
160
            if (_res == NULL && PyErr_Occurred()) {
22137
13
                p->error_indicator = 1;
22138
13
                p->level--;
22139
13
                return NULL;
22140
13
            }
22141
147
            goto done;
22142
160
        }
22143
146
        p->mark = _mark;
22144
146
        D(fprintf(stderr, "%*c%s invalid_del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22145
146
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' star_expressions"));
22146
146
    }
22147
146
    _res = NULL;
22148
293
  done:
22149
293
    p->level--;
22150
293
    return _res;
22151
146
}
22152
22153
// invalid_assert_stmt:
22154
//     | 'assert' expression '=' expression
22155
//     | 'assert' expression ',' expression '=' expression
22156
//     | 'assert' expression ':=' expression
22157
//     | 'assert' expression ',' expression ':=' expression
22158
static void *
22159
invalid_assert_stmt_rule(Parser *p)
22160
455
{
22161
455
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22162
0
        _Pypegen_stack_overflow(p);
22163
0
    }
22164
455
    if (p->error_indicator) {
22165
0
        p->level--;
22166
0
        return NULL;
22167
0
    }
22168
455
    void * _res = NULL;
22169
455
    int _mark = p->mark;
22170
455
    { // 'assert' expression '=' expression
22171
455
        if (p->error_indicator) {
22172
0
            p->level--;
22173
0
            return NULL;
22174
0
        }
22175
455
        D(fprintf(stderr, "%*c> invalid_assert_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'assert' expression '=' expression"));
22176
455
        Token * _keyword;
22177
455
        Token * _literal;
22178
455
        expr_ty a;
22179
455
        expr_ty b;
22180
455
        if (
22181
455
            (_keyword = _PyPegen_expect_token(p, 634))  // token='assert'
22182
455
            &&
22183
455
            (a = expression_rule(p))  // expression
22184
377
            &&
22185
377
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
22186
2
            &&
22187
2
            (b = expression_rule(p))  // expression
22188
455
        )
22189
1
        {
22190
1
            D(fprintf(stderr, "%*c+ invalid_assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression '=' expression"));
22191
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to %s here. Maybe you meant '==' instead of '='?" , _PyPegen_get_expr_name ( a ) );
22192
1
            if (_res == NULL && PyErr_Occurred()) {
22193
1
                p->error_indicator = 1;
22194
1
                p->level--;
22195
1
                return NULL;
22196
1
            }
22197
0
            goto done;
22198
1
        }
22199
454
        p->mark = _mark;
22200
454
        D(fprintf(stderr, "%*c%s invalid_assert_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22201
454
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'assert' expression '=' expression"));
22202
454
    }
22203
0
    { // 'assert' expression ',' expression '=' expression
22204
454
        if (p->error_indicator) {
22205
66
            p->level--;
22206
66
            return NULL;
22207
66
        }
22208
388
        D(fprintf(stderr, "%*c> invalid_assert_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'assert' expression ',' expression '=' expression"));
22209
388
        Token * _keyword;
22210
388
        Token * _literal;
22211
388
        Token * _literal_1;
22212
388
        expr_ty a;
22213
388
        expr_ty b;
22214
388
        expr_ty expression_var;
22215
388
        if (
22216
388
            (_keyword = _PyPegen_expect_token(p, 634))  // token='assert'
22217
388
            &&
22218
388
            (expression_var = expression_rule(p))  // expression
22219
376
            &&
22220
376
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22221
72
            &&
22222
72
            (a = expression_rule(p))  // expression
22223
70
            &&
22224
70
            (_literal_1 = _PyPegen_expect_token(p, 22))  // token='='
22225
2
            &&
22226
2
            (b = expression_rule(p))  // expression
22227
388
        )
22228
1
        {
22229
1
            D(fprintf(stderr, "%*c+ invalid_assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression ',' expression '=' expression"));
22230
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to %s here. Maybe you meant '==' instead of '='?" , _PyPegen_get_expr_name ( a ) );
22231
1
            if (_res == NULL && PyErr_Occurred()) {
22232
1
                p->error_indicator = 1;
22233
1
                p->level--;
22234
1
                return NULL;
22235
1
            }
22236
0
            goto done;
22237
1
        }
22238
387
        p->mark = _mark;
22239
387
        D(fprintf(stderr, "%*c%s invalid_assert_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22240
387
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'assert' expression ',' expression '=' expression"));
22241
387
    }
22242
0
    { // 'assert' expression ':=' expression
22243
387
        if (p->error_indicator) {
22244
1
            p->level--;
22245
1
            return NULL;
22246
1
        }
22247
386
        D(fprintf(stderr, "%*c> invalid_assert_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'assert' expression ':=' expression"));
22248
386
        Token * _keyword;
22249
386
        Token * _literal;
22250
386
        expr_ty a;
22251
386
        expr_ty b;
22252
386
        if (
22253
386
            (_keyword = _PyPegen_expect_token(p, 634))  // token='assert'
22254
386
            &&
22255
386
            (a = expression_rule(p))  // expression
22256
374
            &&
22257
374
            (_literal = _PyPegen_expect_token(p, 53))  // token=':='
22258
3
            &&
22259
3
            (b = expression_rule(p))  // expression
22260
386
        )
22261
1
        {
22262
1
            D(fprintf(stderr, "%*c+ invalid_assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression ':=' expression"));
22263
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot use named expression without parentheses here" );
22264
1
            if (_res == NULL && PyErr_Occurred()) {
22265
1
                p->error_indicator = 1;
22266
1
                p->level--;
22267
1
                return NULL;
22268
1
            }
22269
0
            goto done;
22270
1
        }
22271
385
        p->mark = _mark;
22272
385
        D(fprintf(stderr, "%*c%s invalid_assert_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22273
385
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'assert' expression ':=' expression"));
22274
385
    }
22275
0
    { // 'assert' expression ',' expression ':=' expression
22276
385
        if (p->error_indicator) {
22277
1
            p->level--;
22278
1
            return NULL;
22279
1
        }
22280
384
        D(fprintf(stderr, "%*c> invalid_assert_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'assert' expression ',' expression ':=' expression"));
22281
384
        Token * _keyword;
22282
384
        Token * _literal;
22283
384
        Token * _literal_1;
22284
384
        expr_ty a;
22285
384
        expr_ty b;
22286
384
        expr_ty expression_var;
22287
384
        if (
22288
384
            (_keyword = _PyPegen_expect_token(p, 634))  // token='assert'
22289
384
            &&
22290
384
            (expression_var = expression_rule(p))  // expression
22291
372
            &&
22292
372
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22293
70
            &&
22294
70
            (a = expression_rule(p))  // expression
22295
69
            &&
22296
69
            (_literal_1 = _PyPegen_expect_token(p, 53))  // token=':='
22297
2
            &&
22298
2
            (b = expression_rule(p))  // expression
22299
384
        )
22300
1
        {
22301
1
            D(fprintf(stderr, "%*c+ invalid_assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression ',' expression ':=' expression"));
22302
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot use named expression without parentheses here" );
22303
1
            if (_res == NULL && PyErr_Occurred()) {
22304
1
                p->error_indicator = 1;
22305
1
                p->level--;
22306
1
                return NULL;
22307
1
            }
22308
0
            goto done;
22309
1
        }
22310
383
        p->mark = _mark;
22311
383
        D(fprintf(stderr, "%*c%s invalid_assert_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22312
383
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'assert' expression ',' expression ':=' expression"));
22313
383
    }
22314
383
    _res = NULL;
22315
383
  done:
22316
383
    p->level--;
22317
383
    return _res;
22318
383
}
22319
22320
// invalid_block: NEWLINE !INDENT
22321
static void *
22322
invalid_block_rule(Parser *p)
22323
2.25k
{
22324
2.25k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22325
0
        _Pypegen_stack_overflow(p);
22326
0
    }
22327
2.25k
    if (p->error_indicator) {
22328
0
        p->level--;
22329
0
        return NULL;
22330
0
    }
22331
2.25k
    void * _res = NULL;
22332
2.25k
    int _mark = p->mark;
22333
2.25k
    { // NEWLINE !INDENT
22334
2.25k
        if (p->error_indicator) {
22335
0
            p->level--;
22336
0
            return NULL;
22337
0
        }
22338
2.25k
        D(fprintf(stderr, "%*c> invalid_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
22339
2.25k
        Token * newline_var;
22340
2.25k
        if (
22341
2.25k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22342
180
            &&
22343
180
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
22344
2.25k
        )
22345
4
        {
22346
4
            D(fprintf(stderr, "%*c+ invalid_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
22347
4
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
22348
4
            if (_res == NULL && PyErr_Occurred()) {
22349
4
                p->error_indicator = 1;
22350
4
                p->level--;
22351
4
                return NULL;
22352
4
            }
22353
0
            goto done;
22354
4
        }
22355
2.24k
        p->mark = _mark;
22356
2.24k
        D(fprintf(stderr, "%*c%s invalid_block[%d-%d]: %s failed!\n", p->level, ' ',
22357
2.24k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE !INDENT"));
22358
2.24k
    }
22359
2.24k
    _res = NULL;
22360
2.24k
  done:
22361
2.24k
    p->level--;
22362
2.24k
    return _res;
22363
2.24k
}
22364
22365
// invalid_comprehension:
22366
//     | ('[' | '(' | '{') starred_expression for_if_clauses
22367
//     | ('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses
22368
//     | ('[' | '{') star_named_expression ',' for_if_clauses
22369
static void *
22370
invalid_comprehension_rule(Parser *p)
22371
227k
{
22372
227k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22373
1
        _Pypegen_stack_overflow(p);
22374
1
    }
22375
227k
    if (p->error_indicator) {
22376
1
        p->level--;
22377
1
        return NULL;
22378
1
    }
22379
227k
    void * _res = NULL;
22380
227k
    int _mark = p->mark;
22381
227k
    { // ('[' | '(' | '{') starred_expression for_if_clauses
22382
227k
        if (p->error_indicator) {
22383
0
            p->level--;
22384
0
            return NULL;
22385
0
        }
22386
227k
        D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
22387
227k
        void *_tmp_121_var;
22388
227k
        expr_ty a;
22389
227k
        asdl_comprehension_seq* for_if_clauses_var;
22390
227k
        if (
22391
227k
            (_tmp_121_var = _tmp_121_rule(p))  // '[' | '(' | '{'
22392
48.8k
            &&
22393
48.8k
            (a = starred_expression_rule(p))  // starred_expression
22394
1.19k
            &&
22395
1.19k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22396
227k
        )
22397
1
        {
22398
1
            D(fprintf(stderr, "%*c+ invalid_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
22399
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable unpacking cannot be used in comprehension" );
22400
1
            if (_res == NULL && PyErr_Occurred()) {
22401
1
                p->error_indicator = 1;
22402
1
                p->level--;
22403
1
                return NULL;
22404
1
            }
22405
0
            goto done;
22406
1
        }
22407
227k
        p->mark = _mark;
22408
227k
        D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22409
227k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
22410
227k
    }
22411
0
    { // ('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses
22412
227k
        if (p->error_indicator) {
22413
677
            p->level--;
22414
677
            return NULL;
22415
677
        }
22416
227k
        D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses"));
22417
227k
        Token * _literal;
22418
227k
        void *_tmp_122_var;
22419
227k
        expr_ty a;
22420
227k
        asdl_expr_seq* b;
22421
227k
        asdl_comprehension_seq* for_if_clauses_var;
22422
227k
        if (
22423
227k
            (_tmp_122_var = _tmp_122_rule(p))  // '[' | '{'
22424
26.8k
            &&
22425
26.8k
            (a = star_named_expression_rule(p))  // star_named_expression
22426
7.08k
            &&
22427
7.08k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22428
1.69k
            &&
22429
1.69k
            (b = star_named_expressions_rule(p))  // star_named_expressions
22430
1.16k
            &&
22431
1.16k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22432
227k
        )
22433
1
        {
22434
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"));
22435
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , PyPegen_last_item ( b , expr_ty ) , "did you forget parentheses around the comprehension target?" );
22436
1
            if (_res == NULL && PyErr_Occurred()) {
22437
1
                p->error_indicator = 1;
22438
1
                p->level--;
22439
1
                return NULL;
22440
1
            }
22441
0
            goto done;
22442
1
        }
22443
227k
        p->mark = _mark;
22444
227k
        D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22445
227k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses"));
22446
227k
    }
22447
0
    { // ('[' | '{') star_named_expression ',' for_if_clauses
22448
227k
        if (p->error_indicator) {
22449
1.69k
            p->level--;
22450
1.69k
            return NULL;
22451
1.69k
        }
22452
225k
        D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
22453
225k
        void *_tmp_122_var;
22454
225k
        expr_ty a;
22455
225k
        Token * b;
22456
225k
        asdl_comprehension_seq* for_if_clauses_var;
22457
225k
        if (
22458
225k
            (_tmp_122_var = _tmp_122_rule(p))  // '[' | '{'
22459
25.1k
            &&
22460
25.1k
            (a = star_named_expression_rule(p))  // star_named_expression
22461
7.06k
            &&
22462
7.06k
            (b = _PyPegen_expect_token(p, 12))  // token=','
22463
1.67k
            &&
22464
1.67k
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22465
225k
        )
22466
1
        {
22467
1
            D(fprintf(stderr, "%*c+ invalid_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
22468
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "did you forget parentheses around the comprehension target?" );
22469
1
            if (_res == NULL && PyErr_Occurred()) {
22470
1
                p->error_indicator = 1;
22471
1
                p->level--;
22472
1
                return NULL;
22473
1
            }
22474
0
            goto done;
22475
1
        }
22476
225k
        p->mark = _mark;
22477
225k
        D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22478
225k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
22479
225k
    }
22480
225k
    _res = NULL;
22481
225k
  done:
22482
225k
    p->level--;
22483
225k
    return _res;
22484
225k
}
22485
22486
// invalid_dict_comprehension: '{' '**' bitwise_or for_if_clauses '}'
22487
static void *
22488
invalid_dict_comprehension_rule(Parser *p)
22489
4.65k
{
22490
4.65k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22491
0
        _Pypegen_stack_overflow(p);
22492
0
    }
22493
4.65k
    if (p->error_indicator) {
22494
0
        p->level--;
22495
0
        return NULL;
22496
0
    }
22497
4.65k
    void * _res = NULL;
22498
4.65k
    int _mark = p->mark;
22499
4.65k
    { // '{' '**' bitwise_or for_if_clauses '}'
22500
4.65k
        if (p->error_indicator) {
22501
0
            p->level--;
22502
0
            return NULL;
22503
0
        }
22504
4.65k
        D(fprintf(stderr, "%*c> invalid_dict_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
22505
4.65k
        Token * _literal;
22506
4.65k
        Token * _literal_1;
22507
4.65k
        Token * a;
22508
4.65k
        expr_ty bitwise_or_var;
22509
4.65k
        asdl_comprehension_seq* for_if_clauses_var;
22510
4.65k
        if (
22511
4.65k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
22512
4.65k
            &&
22513
4.65k
            (a = _PyPegen_expect_token(p, 35))  // token='**'
22514
445
            &&
22515
445
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
22516
211
            &&
22517
211
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
22518
67
            &&
22519
67
            (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
22520
4.65k
        )
22521
1
        {
22522
1
            D(fprintf(stderr, "%*c+ invalid_dict_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
22523
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "dict unpacking cannot be used in dict comprehension" );
22524
1
            if (_res == NULL && PyErr_Occurred()) {
22525
1
                p->error_indicator = 1;
22526
1
                p->level--;
22527
1
                return NULL;
22528
1
            }
22529
0
            goto done;
22530
1
        }
22531
4.65k
        p->mark = _mark;
22532
4.65k
        D(fprintf(stderr, "%*c%s invalid_dict_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
22533
4.65k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
22534
4.65k
    }
22535
4.65k
    _res = NULL;
22536
4.65k
  done:
22537
4.65k
    p->level--;
22538
4.65k
    return _res;
22539
4.65k
}
22540
22541
// invalid_parameters:
22542
//     | "/" ','
22543
//     | (slash_no_default | slash_with_default) param_maybe_default* '/'
22544
//     | slash_no_default? param_no_default* invalid_parameters_helper param_no_default
22545
//     | param_no_default* '(' param_no_default+ ','? ')'
22546
//     | [(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'
22547
//     | param_maybe_default+ '/' '*'
22548
static void *
22549
invalid_parameters_rule(Parser *p)
22550
5.09k
{
22551
5.09k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22552
0
        _Pypegen_stack_overflow(p);
22553
0
    }
22554
5.09k
    if (p->error_indicator) {
22555
0
        p->level--;
22556
0
        return NULL;
22557
0
    }
22558
5.09k
    void * _res = NULL;
22559
5.09k
    int _mark = p->mark;
22560
5.09k
    { // "/" ','
22561
5.09k
        if (p->error_indicator) {
22562
0
            p->level--;
22563
0
            return NULL;
22564
0
        }
22565
5.09k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
22566
5.09k
        Token * _literal;
22567
5.09k
        Token * a;
22568
5.09k
        if (
22569
5.09k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22570
8
            &&
22571
8
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
22572
5.09k
        )
22573
1
        {
22574
1
            D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
22575
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "at least one parameter must precede /" );
22576
1
            if (_res == NULL && PyErr_Occurred()) {
22577
1
                p->error_indicator = 1;
22578
1
                p->level--;
22579
1
                return NULL;
22580
1
            }
22581
0
            goto done;
22582
1
        }
22583
5.09k
        p->mark = _mark;
22584
5.09k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22585
5.09k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"/\" ','"));
22586
5.09k
    }
22587
0
    { // (slash_no_default | slash_with_default) param_maybe_default* '/'
22588
5.09k
        if (p->error_indicator) {
22589
1
            p->level--;
22590
1
            return NULL;
22591
1
        }
22592
5.09k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(slash_no_default | slash_with_default) param_maybe_default* '/'"));
22593
5.09k
        asdl_seq * _loop0_31_var;
22594
5.09k
        void *_tmp_123_var;
22595
5.09k
        Token * a;
22596
5.09k
        if (
22597
5.09k
            (_tmp_123_var = _tmp_123_rule(p))  // slash_no_default | slash_with_default
22598
941
            &&
22599
941
            (_loop0_31_var = _loop0_31_rule(p))  // param_maybe_default*
22600
941
            &&
22601
941
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22602
5.09k
        )
22603
2
        {
22604
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* '/'"));
22605
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ may appear only once" );
22606
2
            if (_res == NULL && PyErr_Occurred()) {
22607
2
                p->error_indicator = 1;
22608
2
                p->level--;
22609
2
                return NULL;
22610
2
            }
22611
0
            goto done;
22612
2
        }
22613
5.09k
        p->mark = _mark;
22614
5.09k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22615
5.09k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(slash_no_default | slash_with_default) param_maybe_default* '/'"));
22616
5.09k
    }
22617
0
    { // slash_no_default? param_no_default* invalid_parameters_helper param_no_default
22618
5.09k
        if (p->error_indicator) {
22619
6
            p->level--;
22620
6
            return NULL;
22621
6
        }
22622
5.08k
        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"));
22623
5.08k
        asdl_seq * _loop0_27_var;
22624
5.08k
        void *_opt_var;
22625
5.08k
        UNUSED(_opt_var); // Silence compiler warnings
22626
5.08k
        arg_ty a;
22627
5.08k
        void *invalid_parameters_helper_var;
22628
5.08k
        if (
22629
5.08k
            (_opt_var = slash_no_default_rule(p), !p->error_indicator)  // slash_no_default?
22630
5.08k
            &&
22631
5.08k
            (_loop0_27_var = _loop0_27_rule(p))  // param_no_default*
22632
5.08k
            &&
22633
5.08k
            (invalid_parameters_helper_var = invalid_parameters_helper_rule(p))  // invalid_parameters_helper
22634
956
            &&
22635
956
            (a = param_no_default_rule(p))  // param_no_default
22636
5.08k
        )
22637
4
        {
22638
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"));
22639
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameter without a default follows parameter with a default" );
22640
4
            if (_res == NULL && PyErr_Occurred()) {
22641
4
                p->error_indicator = 1;
22642
4
                p->level--;
22643
4
                return NULL;
22644
4
            }
22645
0
            goto done;
22646
4
        }
22647
5.08k
        p->mark = _mark;
22648
5.08k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22649
5.08k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default? param_no_default* invalid_parameters_helper param_no_default"));
22650
5.08k
    }
22651
0
    { // param_no_default* '(' param_no_default+ ','? ')'
22652
5.08k
        if (p->error_indicator) {
22653
1
            p->level--;
22654
1
            return NULL;
22655
1
        }
22656
5.08k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
22657
5.08k
        asdl_seq * _loop0_27_var;
22658
5.08k
        asdl_seq * _loop1_29_var;
22659
5.08k
        void *_opt_var;
22660
5.08k
        UNUSED(_opt_var); // Silence compiler warnings
22661
5.08k
        Token * a;
22662
5.08k
        Token * b;
22663
5.08k
        if (
22664
5.08k
            (_loop0_27_var = _loop0_27_rule(p))  // param_no_default*
22665
5.08k
            &&
22666
5.08k
            (a = _PyPegen_expect_token(p, 7))  // token='('
22667
15
            &&
22668
15
            (_loop1_29_var = _loop1_29_rule(p))  // param_no_default+
22669
6
            &&
22670
6
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
22671
6
            &&
22672
6
            (b = _PyPegen_expect_token(p, 8))  // token=')'
22673
5.08k
        )
22674
2
        {
22675
2
            D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
22676
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "Function parameters cannot be parenthesized" );
22677
2
            if (_res == NULL && PyErr_Occurred()) {
22678
2
                p->error_indicator = 1;
22679
2
                p->level--;
22680
2
                return NULL;
22681
2
            }
22682
0
            goto done;
22683
2
        }
22684
5.08k
        p->mark = _mark;
22685
5.08k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22686
5.08k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
22687
5.08k
    }
22688
0
    { // [(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'
22689
5.08k
        if (p->error_indicator) {
22690
4
            p->level--;
22691
4
            return NULL;
22692
4
        }
22693
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* '*' (',' | param_no_default) param_maybe_default* '/'"));
22694
5.07k
        Token * _literal;
22695
5.07k
        asdl_seq * _loop0_31_var;
22696
5.07k
        asdl_seq * _loop0_31_var_1;
22697
5.07k
        void *_opt_var;
22698
5.07k
        UNUSED(_opt_var); // Silence compiler warnings
22699
5.07k
        void *_tmp_124_var;
22700
5.07k
        Token * a;
22701
5.07k
        if (
22702
5.07k
            (_opt_var = _tmp_123_rule(p), !p->error_indicator)  // [(slash_no_default | slash_with_default)]
22703
5.07k
            &&
22704
5.07k
            (_loop0_31_var = _loop0_31_rule(p))  // param_maybe_default*
22705
5.07k
            &&
22706
5.07k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22707
1.47k
            &&
22708
1.47k
            (_tmp_124_var = _tmp_124_rule(p))  // ',' | param_no_default
22709
991
            &&
22710
991
            (_loop0_31_var_1 = _loop0_31_rule(p))  // param_maybe_default*
22711
991
            &&
22712
991
            (a = _PyPegen_expect_token(p, 17))  // token='/'
22713
5.07k
        )
22714
2
        {
22715
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* '/'"));
22716
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ must be ahead of *" );
22717
2
            if (_res == NULL && PyErr_Occurred()) {
22718
2
                p->error_indicator = 1;
22719
2
                p->level--;
22720
2
                return NULL;
22721
2
            }
22722
0
            goto done;
22723
2
        }
22724
5.07k
        p->mark = _mark;
22725
5.07k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22726
5.07k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'"));
22727
5.07k
    }
22728
0
    { // param_maybe_default+ '/' '*'
22729
5.07k
        if (p->error_indicator) {
22730
3
            p->level--;
22731
3
            return NULL;
22732
3
        }
22733
5.07k
        D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default+ '/' '*'"));
22734
5.07k
        Token * _literal;
22735
5.07k
        asdl_seq * _loop1_32_var;
22736
5.07k
        Token * a;
22737
5.07k
        if (
22738
5.07k
            (_loop1_32_var = _loop1_32_rule(p))  // param_maybe_default+
22739
2.12k
            &&
22740
2.12k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
22741
945
            &&
22742
945
            (a = _PyPegen_expect_token(p, 16))  // token='*'
22743
5.07k
        )
22744
2
        {
22745
2
            D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_maybe_default+ '/' '*'"));
22746
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected comma between / and *" );
22747
2
            if (_res == NULL && PyErr_Occurred()) {
22748
2
                p->error_indicator = 1;
22749
2
                p->level--;
22750
2
                return NULL;
22751
2
            }
22752
0
            goto done;
22753
2
        }
22754
5.06k
        p->mark = _mark;
22755
5.06k
        D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
22756
5.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default+ '/' '*'"));
22757
5.06k
    }
22758
5.06k
    _res = NULL;
22759
5.06k
  done:
22760
5.06k
    p->level--;
22761
5.06k
    return _res;
22762
5.06k
}
22763
22764
// invalid_default: '=' &(')' | ',')
22765
static void *
22766
invalid_default_rule(Parser *p)
22767
63.5k
{
22768
63.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22769
0
        _Pypegen_stack_overflow(p);
22770
0
    }
22771
63.5k
    if (p->error_indicator) {
22772
0
        p->level--;
22773
0
        return NULL;
22774
0
    }
22775
63.5k
    void * _res = NULL;
22776
63.5k
    int _mark = p->mark;
22777
63.5k
    { // '=' &(')' | ',')
22778
63.5k
        if (p->error_indicator) {
22779
0
            p->level--;
22780
0
            return NULL;
22781
0
        }
22782
63.5k
        D(fprintf(stderr, "%*c> invalid_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' &(')' | ',')"));
22783
63.5k
        Token * a;
22784
63.5k
        if (
22785
63.5k
            (a = _PyPegen_expect_token(p, 22))  // token='='
22786
26.7k
            &&
22787
26.7k
            _PyPegen_lookahead(1, _tmp_125_rule, p)
22788
63.5k
        )
22789
14
        {
22790
14
            D(fprintf(stderr, "%*c+ invalid_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' &(')' | ',')"));
22791
14
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected default value expression" );
22792
14
            if (_res == NULL && PyErr_Occurred()) {
22793
14
                p->error_indicator = 1;
22794
14
                p->level--;
22795
14
                return NULL;
22796
14
            }
22797
0
            goto done;
22798
14
        }
22799
63.5k
        p->mark = _mark;
22800
63.5k
        D(fprintf(stderr, "%*c%s invalid_default[%d-%d]: %s failed!\n", p->level, ' ',
22801
63.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' &(')' | ',')"));
22802
63.5k
    }
22803
63.5k
    _res = NULL;
22804
63.5k
  done:
22805
63.5k
    p->level--;
22806
63.5k
    return _res;
22807
63.5k
}
22808
22809
// invalid_star_etc:
22810
//     | '*' (')' | ',' (')' | '**'))
22811
//     | '*' ',' TYPE_COMMENT
22812
//     | '*' param '='
22813
//     | '*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')
22814
static void *
22815
invalid_star_etc_rule(Parser *p)
22816
5.06k
{
22817
5.06k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22818
0
        _Pypegen_stack_overflow(p);
22819
0
    }
22820
5.06k
    if (p->error_indicator) {
22821
0
        p->level--;
22822
0
        return NULL;
22823
0
    }
22824
5.06k
    void * _res = NULL;
22825
5.06k
    int _mark = p->mark;
22826
5.06k
    { // '*' (')' | ',' (')' | '**'))
22827
5.06k
        if (p->error_indicator) {
22828
0
            p->level--;
22829
0
            return NULL;
22830
0
        }
22831
5.06k
        D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
22832
5.06k
        void *_tmp_126_var;
22833
5.06k
        Token * a;
22834
5.06k
        if (
22835
5.06k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
22836
1.47k
            &&
22837
1.47k
            (_tmp_126_var = _tmp_126_rule(p))  // ')' | ',' (')' | '**')
22838
5.06k
        )
22839
3
        {
22840
3
            D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
22841
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "named parameters must follow bare *" );
22842
3
            if (_res == NULL && PyErr_Occurred()) {
22843
3
                p->error_indicator = 1;
22844
3
                p->level--;
22845
3
                return NULL;
22846
3
            }
22847
0
            goto done;
22848
3
        }
22849
5.06k
        p->mark = _mark;
22850
5.06k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22851
5.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
22852
5.06k
    }
22853
0
    { // '*' ',' TYPE_COMMENT
22854
5.06k
        if (p->error_indicator) {
22855
0
            p->level--;
22856
0
            return NULL;
22857
0
        }
22858
5.06k
        D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
22859
5.06k
        Token * _literal;
22860
5.06k
        Token * _literal_1;
22861
5.06k
        Token * type_comment_var;
22862
5.06k
        if (
22863
5.06k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22864
1.46k
            &&
22865
1.46k
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
22866
570
            &&
22867
570
            (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
22868
5.06k
        )
22869
0
        {
22870
0
            D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
22871
0
            _res = RAISE_SYNTAX_ERROR ( "bare * has associated type comment" );
22872
0
            if (_res == NULL && PyErr_Occurred()) {
22873
0
                p->error_indicator = 1;
22874
0
                p->level--;
22875
0
                return NULL;
22876
0
            }
22877
0
            goto done;
22878
0
        }
22879
5.06k
        p->mark = _mark;
22880
5.06k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22881
5.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' TYPE_COMMENT"));
22882
5.06k
    }
22883
0
    { // '*' param '='
22884
5.06k
        if (p->error_indicator) {
22885
0
            p->level--;
22886
0
            return NULL;
22887
0
        }
22888
5.06k
        D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param '='"));
22889
5.06k
        Token * _literal;
22890
5.06k
        Token * a;
22891
5.06k
        arg_ty param_var;
22892
5.06k
        if (
22893
5.06k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22894
1.46k
            &&
22895
1.46k
            (param_var = param_rule(p))  // param
22896
890
            &&
22897
890
            (a = _PyPegen_expect_token(p, 22))  // token='='
22898
5.06k
        )
22899
2
        {
22900
2
            D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param '='"));
22901
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-positional parameter cannot have default value" );
22902
2
            if (_res == NULL && PyErr_Occurred()) {
22903
2
                p->error_indicator = 1;
22904
2
                p->level--;
22905
2
                return NULL;
22906
2
            }
22907
0
            goto done;
22908
2
        }
22909
5.06k
        p->mark = _mark;
22910
5.06k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22911
5.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param '='"));
22912
5.06k
    }
22913
0
    { // '*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')
22914
5.06k
        if (p->error_indicator) {
22915
0
            p->level--;
22916
0
            return NULL;
22917
0
        }
22918
5.06k
        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 | ',')"));
22919
5.06k
        Token * _literal;
22920
5.06k
        asdl_seq * _loop0_31_var;
22921
5.06k
        void *_tmp_127_var;
22922
5.06k
        void *_tmp_127_var_1;
22923
5.06k
        Token * a;
22924
5.06k
        if (
22925
5.06k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22926
1.46k
            &&
22927
1.46k
            (_tmp_127_var = _tmp_127_rule(p))  // param_no_default | ','
22928
986
            &&
22929
986
            (_loop0_31_var = _loop0_31_rule(p))  // param_maybe_default*
22930
986
            &&
22931
986
            (a = _PyPegen_expect_token(p, 16))  // token='*'
22932
10
            &&
22933
10
            (_tmp_127_var_1 = _tmp_127_rule(p))  // param_no_default | ','
22934
5.06k
        )
22935
2
        {
22936
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 | ',')"));
22937
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "* may appear only once" );
22938
2
            if (_res == NULL && PyErr_Occurred()) {
22939
2
                p->error_indicator = 1;
22940
2
                p->level--;
22941
2
                return NULL;
22942
2
            }
22943
0
            goto done;
22944
2
        }
22945
5.06k
        p->mark = _mark;
22946
5.06k
        D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
22947
5.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')"));
22948
5.06k
    }
22949
5.06k
    _res = NULL;
22950
5.06k
  done:
22951
5.06k
    p->level--;
22952
5.06k
    return _res;
22953
5.06k
}
22954
22955
// invalid_kwds: '**' param '=' | '**' param ',' param | '**' param ',' ('*' | '**' | '/')
22956
static void *
22957
invalid_kwds_rule(Parser *p)
22958
5.05k
{
22959
5.05k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
22960
0
        _Pypegen_stack_overflow(p);
22961
0
    }
22962
5.05k
    if (p->error_indicator) {
22963
0
        p->level--;
22964
0
        return NULL;
22965
0
    }
22966
5.05k
    void * _res = NULL;
22967
5.05k
    int _mark = p->mark;
22968
5.05k
    { // '**' param '='
22969
5.05k
        if (p->error_indicator) {
22970
0
            p->level--;
22971
0
            return NULL;
22972
0
        }
22973
5.05k
        D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param '='"));
22974
5.05k
        Token * _literal;
22975
5.05k
        Token * a;
22976
5.05k
        arg_ty param_var;
22977
5.05k
        if (
22978
5.05k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
22979
324
            &&
22980
324
            (param_var = param_rule(p))  // param
22981
320
            &&
22982
320
            (a = _PyPegen_expect_token(p, 22))  // token='='
22983
5.05k
        )
22984
1
        {
22985
1
            D(fprintf(stderr, "%*c+ invalid_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param '='"));
22986
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-keyword parameter cannot have default value" );
22987
1
            if (_res == NULL && PyErr_Occurred()) {
22988
1
                p->error_indicator = 1;
22989
1
                p->level--;
22990
1
                return NULL;
22991
1
            }
22992
0
            goto done;
22993
1
        }
22994
5.05k
        p->mark = _mark;
22995
5.05k
        D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
22996
5.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param '='"));
22997
5.05k
    }
22998
0
    { // '**' param ',' param
22999
5.05k
        if (p->error_indicator) {
23000
1
            p->level--;
23001
1
            return NULL;
23002
1
        }
23003
5.05k
        D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param ',' param"));
23004
5.05k
        Token * _literal;
23005
5.05k
        Token * _literal_1;
23006
5.05k
        arg_ty a;
23007
5.05k
        arg_ty param_var;
23008
5.05k
        if (
23009
5.05k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
23010
322
            &&
23011
322
            (param_var = param_rule(p))  // param
23012
319
            &&
23013
319
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
23014
25
            &&
23015
25
            (a = param_rule(p))  // param
23016
5.05k
        )
23017
1
        {
23018
1
            D(fprintf(stderr, "%*c+ invalid_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param ',' param"));
23019
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameters cannot follow var-keyword parameter" );
23020
1
            if (_res == NULL && PyErr_Occurred()) {
23021
1
                p->error_indicator = 1;
23022
1
                p->level--;
23023
1
                return NULL;
23024
1
            }
23025
0
            goto done;
23026
1
        }
23027
5.05k
        p->mark = _mark;
23028
5.05k
        D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
23029
5.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param ',' param"));
23030
5.05k
    }
23031
0
    { // '**' param ',' ('*' | '**' | '/')
23032
5.05k
        if (p->error_indicator) {
23033
1
            p->level--;
23034
1
            return NULL;
23035
1
        }
23036
5.05k
        D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param ',' ('*' | '**' | '/')"));
23037
5.05k
        Token * _literal;
23038
5.05k
        Token * _literal_1;
23039
5.05k
        Token* a;
23040
5.05k
        arg_ty param_var;
23041
5.05k
        if (
23042
5.05k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
23043
320
            &&
23044
320
            (param_var = param_rule(p))  // param
23045
317
            &&
23046
317
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
23047
23
            &&
23048
23
            (a = (Token*)_tmp_128_rule(p))  // '*' | '**' | '/'
23049
5.05k
        )
23050
2
        {
23051
2
            D(fprintf(stderr, "%*c+ invalid_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param ',' ('*' | '**' | '/')"));
23052
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameters cannot follow var-keyword parameter" );
23053
2
            if (_res == NULL && PyErr_Occurred()) {
23054
2
                p->error_indicator = 1;
23055
2
                p->level--;
23056
2
                return NULL;
23057
2
            }
23058
0
            goto done;
23059
2
        }
23060
5.05k
        p->mark = _mark;
23061
5.05k
        D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
23062
5.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param ',' ('*' | '**' | '/')"));
23063
5.05k
    }
23064
5.05k
    _res = NULL;
23065
5.05k
  done:
23066
5.05k
    p->level--;
23067
5.05k
    return _res;
23068
5.05k
}
23069
23070
// invalid_parameters_helper: slash_with_default | param_with_default+
23071
static void *
23072
invalid_parameters_helper_rule(Parser *p)
23073
5.08k
{
23074
5.08k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23075
0
        _Pypegen_stack_overflow(p);
23076
0
    }
23077
5.08k
    if (p->error_indicator) {
23078
0
        p->level--;
23079
0
        return NULL;
23080
0
    }
23081
5.08k
    void * _res = NULL;
23082
5.08k
    int _mark = p->mark;
23083
5.08k
    { // slash_with_default
23084
5.08k
        if (p->error_indicator) {
23085
0
            p->level--;
23086
0
            return NULL;
23087
0
        }
23088
5.08k
        D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
23089
5.08k
        SlashWithDefault* a;
23090
5.08k
        if (
23091
5.08k
            (a = slash_with_default_rule(p))  // slash_with_default
23092
5.08k
        )
23093
430
        {
23094
430
            D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
23095
430
            _res = _PyPegen_singleton_seq ( p , a );
23096
430
            if (_res == NULL && PyErr_Occurred()) {
23097
0
                p->error_indicator = 1;
23098
0
                p->level--;
23099
0
                return NULL;
23100
0
            }
23101
430
            goto done;
23102
430
        }
23103
4.65k
        p->mark = _mark;
23104
4.65k
        D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
23105
4.65k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
23106
4.65k
    }
23107
0
    { // param_with_default+
23108
4.65k
        if (p->error_indicator) {
23109
0
            p->level--;
23110
0
            return NULL;
23111
0
        }
23112
4.65k
        D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
23113
4.65k
        asdl_seq * _loop1_30_var;
23114
4.65k
        if (
23115
4.65k
            (_loop1_30_var = _loop1_30_rule(p))  // param_with_default+
23116
4.65k
        )
23117
526
        {
23118
526
            D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
23119
526
            _res = _loop1_30_var;
23120
526
            goto done;
23121
526
        }
23122
4.13k
        p->mark = _mark;
23123
4.13k
        D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
23124
4.13k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+"));
23125
4.13k
    }
23126
4.13k
    _res = NULL;
23127
5.08k
  done:
23128
5.08k
    p->level--;
23129
5.08k
    return _res;
23130
4.13k
}
23131
23132
// invalid_lambda_parameters:
23133
//     | "/" ','
23134
//     | (lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'
23135
//     | lambda_slash_no_default? lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default
23136
//     | lambda_param_no_default* '(' ','.lambda_param+ ','? ')'
23137
//     | [(lambda_slash_no_default | lambda_slash_with_default)] lambda_param_maybe_default* '*' (',' | lambda_param_no_default) lambda_param_maybe_default* '/'
23138
//     | lambda_param_maybe_default+ '/' '*'
23139
static void *
23140
invalid_lambda_parameters_rule(Parser *p)
23141
8.49k
{
23142
8.49k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23143
0
        _Pypegen_stack_overflow(p);
23144
0
    }
23145
8.49k
    if (p->error_indicator) {
23146
0
        p->level--;
23147
0
        return NULL;
23148
0
    }
23149
8.49k
    void * _res = NULL;
23150
8.49k
    int _mark = p->mark;
23151
8.49k
    { // "/" ','
23152
8.49k
        if (p->error_indicator) {
23153
0
            p->level--;
23154
0
            return NULL;
23155
0
        }
23156
8.49k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
23157
8.49k
        Token * _literal;
23158
8.49k
        Token * a;
23159
8.49k
        if (
23160
8.49k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
23161
5
            &&
23162
5
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
23163
8.49k
        )
23164
1
        {
23165
1
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
23166
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "at least one parameter must precede /" );
23167
1
            if (_res == NULL && PyErr_Occurred()) {
23168
1
                p->error_indicator = 1;
23169
1
                p->level--;
23170
1
                return NULL;
23171
1
            }
23172
0
            goto done;
23173
1
        }
23174
8.49k
        p->mark = _mark;
23175
8.49k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23176
8.49k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"/\" ','"));
23177
8.49k
    }
23178
0
    { // (lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'
23179
8.49k
        if (p->error_indicator) {
23180
1
            p->level--;
23181
1
            return NULL;
23182
1
        }
23183
8.49k
        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* '/'"));
23184
8.49k
        asdl_seq * _loop0_74_var;
23185
8.49k
        void *_tmp_129_var;
23186
8.49k
        Token * a;
23187
8.49k
        if (
23188
8.49k
            (_tmp_129_var = _tmp_129_rule(p))  // lambda_slash_no_default | lambda_slash_with_default
23189
1.39k
            &&
23190
1.39k
            (_loop0_74_var = _loop0_74_rule(p))  // lambda_param_maybe_default*
23191
1.39k
            &&
23192
1.39k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
23193
8.49k
        )
23194
4
        {
23195
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* '/'"));
23196
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ may appear only once" );
23197
4
            if (_res == NULL && PyErr_Occurred()) {
23198
4
                p->error_indicator = 1;
23199
4
                p->level--;
23200
4
                return NULL;
23201
4
            }
23202
0
            goto done;
23203
4
        }
23204
8.48k
        p->mark = _mark;
23205
8.48k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23206
8.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'"));
23207
8.48k
    }
23208
0
    { // lambda_slash_no_default? lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default
23209
8.48k
        if (p->error_indicator) {
23210
435
            p->level--;
23211
435
            return NULL;
23212
435
        }
23213
8.05k
        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"));
23214
8.05k
        asdl_seq * _loop0_70_var;
23215
8.05k
        void *_opt_var;
23216
8.05k
        UNUSED(_opt_var); // Silence compiler warnings
23217
8.05k
        arg_ty a;
23218
8.05k
        void *invalid_lambda_parameters_helper_var;
23219
8.05k
        if (
23220
8.05k
            (_opt_var = lambda_slash_no_default_rule(p), !p->error_indicator)  // lambda_slash_no_default?
23221
8.05k
            &&
23222
8.05k
            (_loop0_70_var = _loop0_70_rule(p))  // lambda_param_no_default*
23223
8.05k
            &&
23224
8.05k
            (invalid_lambda_parameters_helper_var = invalid_lambda_parameters_helper_rule(p))  // invalid_lambda_parameters_helper
23225
2.21k
            &&
23226
2.21k
            (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
23227
8.05k
        )
23228
2
        {
23229
2
            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"));
23230
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameter without a default follows parameter with a default" );
23231
2
            if (_res == NULL && PyErr_Occurred()) {
23232
2
                p->error_indicator = 1;
23233
2
                p->level--;
23234
2
                return NULL;
23235
2
            }
23236
0
            goto done;
23237
2
        }
23238
8.05k
        p->mark = _mark;
23239
8.05k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23240
8.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default? lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default"));
23241
8.05k
    }
23242
0
    { // lambda_param_no_default* '(' ','.lambda_param+ ','? ')'
23243
8.05k
        if (p->error_indicator) {
23244
0
            p->level--;
23245
0
            return NULL;
23246
0
        }
23247
8.05k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
23248
8.05k
        asdl_seq * _gather_131_var;
23249
8.05k
        asdl_seq * _loop0_70_var;
23250
8.05k
        void *_opt_var;
23251
8.05k
        UNUSED(_opt_var); // Silence compiler warnings
23252
8.05k
        Token * a;
23253
8.05k
        Token * b;
23254
8.05k
        if (
23255
8.05k
            (_loop0_70_var = _loop0_70_rule(p))  // lambda_param_no_default*
23256
8.05k
            &&
23257
8.05k
            (a = _PyPegen_expect_token(p, 7))  // token='('
23258
58
            &&
23259
58
            (_gather_131_var = _gather_131_rule(p))  // ','.lambda_param+
23260
52
            &&
23261
52
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
23262
46
            &&
23263
46
            (b = _PyPegen_expect_token(p, 8))  // token=')'
23264
8.05k
        )
23265
1
        {
23266
1
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
23267
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "Lambda expression parameters cannot be parenthesized" );
23268
1
            if (_res == NULL && PyErr_Occurred()) {
23269
1
                p->error_indicator = 1;
23270
1
                p->level--;
23271
1
                return NULL;
23272
1
            }
23273
0
            goto done;
23274
1
        }
23275
8.05k
        p->mark = _mark;
23276
8.05k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23277
8.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
23278
8.05k
    }
23279
0
    { // [(lambda_slash_no_default | lambda_slash_with_default)] lambda_param_maybe_default* '*' (',' | lambda_param_no_default) lambda_param_maybe_default* '/'
23280
8.05k
        if (p->error_indicator) {
23281
9
            p->level--;
23282
9
            return NULL;
23283
9
        }
23284
8.04k
        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* '/'"));
23285
8.04k
        Token * _literal;
23286
8.04k
        asdl_seq * _loop0_74_var;
23287
8.04k
        asdl_seq * _loop0_74_var_1;
23288
8.04k
        void *_opt_var;
23289
8.04k
        UNUSED(_opt_var); // Silence compiler warnings
23290
8.04k
        void *_tmp_132_var;
23291
8.04k
        Token * a;
23292
8.04k
        if (
23293
8.04k
            (_opt_var = _tmp_129_rule(p), !p->error_indicator)  // [(lambda_slash_no_default | lambda_slash_with_default)]
23294
8.04k
            &&
23295
8.04k
            (_loop0_74_var = _loop0_74_rule(p))  // lambda_param_maybe_default*
23296
8.04k
            &&
23297
8.04k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23298
2.81k
            &&
23299
2.81k
            (_tmp_132_var = _tmp_132_rule(p))  // ',' | lambda_param_no_default
23300
2.41k
            &&
23301
2.41k
            (_loop0_74_var_1 = _loop0_74_rule(p))  // lambda_param_maybe_default*
23302
2.41k
            &&
23303
2.41k
            (a = _PyPegen_expect_token(p, 17))  // token='/'
23304
8.04k
        )
23305
3
        {
23306
3
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[(lambda_slash_no_default | lambda_slash_with_default)] lambda_param_maybe_default* '*' (',' | lambda_param_no_default) lambda_param_maybe_default* '/'"));
23307
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ must be ahead of *" );
23308
3
            if (_res == NULL && PyErr_Occurred()) {
23309
3
                p->error_indicator = 1;
23310
3
                p->level--;
23311
3
                return NULL;
23312
3
            }
23313
0
            goto done;
23314
3
        }
23315
8.03k
        p->mark = _mark;
23316
8.03k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23317
8.03k
                  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* '/'"));
23318
8.03k
    }
23319
0
    { // lambda_param_maybe_default+ '/' '*'
23320
8.03k
        if (p->error_indicator) {
23321
222
            p->level--;
23322
222
            return NULL;
23323
222
        }
23324
7.81k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default+ '/' '*'"));
23325
7.81k
        Token * _literal;
23326
7.81k
        asdl_seq * _loop1_75_var;
23327
7.81k
        Token * a;
23328
7.81k
        if (
23329
7.81k
            (_loop1_75_var = _loop1_75_rule(p))  // lambda_param_maybe_default+
23330
3.33k
            &&
23331
3.33k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
23332
1.27k
            &&
23333
1.27k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
23334
7.81k
        )
23335
4
        {
23336
4
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default+ '/' '*'"));
23337
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected comma between / and *" );
23338
4
            if (_res == NULL && PyErr_Occurred()) {
23339
4
                p->error_indicator = 1;
23340
4
                p->level--;
23341
4
                return NULL;
23342
4
            }
23343
0
            goto done;
23344
4
        }
23345
7.81k
        p->mark = _mark;
23346
7.81k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
23347
7.81k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default+ '/' '*'"));
23348
7.81k
    }
23349
7.81k
    _res = NULL;
23350
7.81k
  done:
23351
7.81k
    p->level--;
23352
7.81k
    return _res;
23353
7.81k
}
23354
23355
// invalid_lambda_parameters_helper:
23356
//     | lambda_slash_with_default
23357
//     | lambda_param_with_default+
23358
static void *
23359
invalid_lambda_parameters_helper_rule(Parser *p)
23360
8.05k
{
23361
8.05k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23362
0
        _Pypegen_stack_overflow(p);
23363
0
    }
23364
8.05k
    if (p->error_indicator) {
23365
0
        p->level--;
23366
0
        return NULL;
23367
0
    }
23368
8.05k
    void * _res = NULL;
23369
8.05k
    int _mark = p->mark;
23370
8.05k
    { // lambda_slash_with_default
23371
8.05k
        if (p->error_indicator) {
23372
0
            p->level--;
23373
0
            return NULL;
23374
0
        }
23375
8.05k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
23376
8.05k
        SlashWithDefault* a;
23377
8.05k
        if (
23378
8.05k
            (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
23379
8.05k
        )
23380
666
        {
23381
666
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
23382
666
            _res = _PyPegen_singleton_seq ( p , a );
23383
666
            if (_res == NULL && PyErr_Occurred()) {
23384
0
                p->error_indicator = 1;
23385
0
                p->level--;
23386
0
                return NULL;
23387
0
            }
23388
666
            goto done;
23389
666
        }
23390
7.38k
        p->mark = _mark;
23391
7.38k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
23392
7.38k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
23393
7.38k
    }
23394
0
    { // lambda_param_with_default+
23395
7.38k
        if (p->error_indicator) {
23396
0
            p->level--;
23397
0
            return NULL;
23398
0
        }
23399
7.38k
        D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
23400
7.38k
        asdl_seq * _loop1_73_var;
23401
7.38k
        if (
23402
7.38k
            (_loop1_73_var = _loop1_73_rule(p))  // lambda_param_with_default+
23403
7.38k
        )
23404
1.54k
        {
23405
1.54k
            D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
23406
1.54k
            _res = _loop1_73_var;
23407
1.54k
            goto done;
23408
1.54k
        }
23409
5.84k
        p->mark = _mark;
23410
5.84k
        D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
23411
5.84k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+"));
23412
5.84k
    }
23413
5.84k
    _res = NULL;
23414
8.05k
  done:
23415
8.05k
    p->level--;
23416
8.05k
    return _res;
23417
5.84k
}
23418
23419
// invalid_lambda_star_etc:
23420
//     | '*' (':' | ',' (':' | '**'))
23421
//     | '*' lambda_param '='
23422
//     | '*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')
23423
static void *
23424
invalid_lambda_star_etc_rule(Parser *p)
23425
7.81k
{
23426
7.81k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23427
0
        _Pypegen_stack_overflow(p);
23428
0
    }
23429
7.81k
    if (p->error_indicator) {
23430
0
        p->level--;
23431
0
        return NULL;
23432
0
    }
23433
7.81k
    void * _res = NULL;
23434
7.81k
    int _mark = p->mark;
23435
7.81k
    { // '*' (':' | ',' (':' | '**'))
23436
7.81k
        if (p->error_indicator) {
23437
0
            p->level--;
23438
0
            return NULL;
23439
0
        }
23440
7.81k
        D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
23441
7.81k
        Token * _literal;
23442
7.81k
        void *_tmp_133_var;
23443
7.81k
        if (
23444
7.81k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23445
2.59k
            &&
23446
2.59k
            (_tmp_133_var = _tmp_133_rule(p))  // ':' | ',' (':' | '**')
23447
7.81k
        )
23448
6
        {
23449
6
            D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
23450
6
            _res = RAISE_SYNTAX_ERROR ( "named parameters must follow bare *" );
23451
6
            if (_res == NULL && PyErr_Occurred()) {
23452
6
                p->error_indicator = 1;
23453
6
                p->level--;
23454
6
                return NULL;
23455
6
            }
23456
0
            goto done;
23457
6
        }
23458
7.80k
        p->mark = _mark;
23459
7.80k
        D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
23460
7.80k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
23461
7.80k
    }
23462
0
    { // '*' lambda_param '='
23463
7.80k
        if (p->error_indicator) {
23464
0
            p->level--;
23465
0
            return NULL;
23466
0
        }
23467
7.80k
        D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' lambda_param '='"));
23468
7.80k
        Token * _literal;
23469
7.80k
        Token * a;
23470
7.80k
        arg_ty lambda_param_var;
23471
7.80k
        if (
23472
7.80k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23473
2.58k
            &&
23474
2.58k
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23475
1.24k
            &&
23476
1.24k
            (a = _PyPegen_expect_token(p, 22))  // token='='
23477
7.80k
        )
23478
7
        {
23479
7
            D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' lambda_param '='"));
23480
7
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-positional parameter cannot have default value" );
23481
7
            if (_res == NULL && PyErr_Occurred()) {
23482
7
                p->error_indicator = 1;
23483
7
                p->level--;
23484
7
                return NULL;
23485
7
            }
23486
0
            goto done;
23487
7
        }
23488
7.80k
        p->mark = _mark;
23489
7.80k
        D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
23490
7.80k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param '='"));
23491
7.80k
    }
23492
0
    { // '*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')
23493
7.80k
        if (p->error_indicator) {
23494
0
            p->level--;
23495
0
            return NULL;
23496
0
        }
23497
7.80k
        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 | ',')"));
23498
7.80k
        Token * _literal;
23499
7.80k
        asdl_seq * _loop0_74_var;
23500
7.80k
        void *_tmp_134_var;
23501
7.80k
        void *_tmp_134_var_1;
23502
7.80k
        Token * a;
23503
7.80k
        if (
23504
7.80k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
23505
2.58k
            &&
23506
2.58k
            (_tmp_134_var = _tmp_134_rule(p))  // lambda_param_no_default | ','
23507
2.19k
            &&
23508
2.19k
            (_loop0_74_var = _loop0_74_rule(p))  // lambda_param_maybe_default*
23509
2.19k
            &&
23510
2.19k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
23511
163
            &&
23512
163
            (_tmp_134_var_1 = _tmp_134_rule(p))  // lambda_param_no_default | ','
23513
7.80k
        )
23514
2
        {
23515
2
            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 | ',')"));
23516
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "* may appear only once" );
23517
2
            if (_res == NULL && PyErr_Occurred()) {
23518
2
                p->error_indicator = 1;
23519
2
                p->level--;
23520
2
                return NULL;
23521
2
            }
23522
0
            goto done;
23523
2
        }
23524
7.79k
        p->mark = _mark;
23525
7.79k
        D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
23526
7.79k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')"));
23527
7.79k
    }
23528
7.79k
    _res = NULL;
23529
7.79k
  done:
23530
7.79k
    p->level--;
23531
7.79k
    return _res;
23532
7.79k
}
23533
23534
// invalid_lambda_kwds:
23535
//     | '**' lambda_param '='
23536
//     | '**' lambda_param ',' lambda_param
23537
//     | '**' lambda_param ',' ('*' | '**' | '/')
23538
static void *
23539
invalid_lambda_kwds_rule(Parser *p)
23540
7.79k
{
23541
7.79k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23542
0
        _Pypegen_stack_overflow(p);
23543
0
    }
23544
7.79k
    if (p->error_indicator) {
23545
0
        p->level--;
23546
0
        return NULL;
23547
0
    }
23548
7.79k
    void * _res = NULL;
23549
7.79k
    int _mark = p->mark;
23550
7.79k
    { // '**' lambda_param '='
23551
7.79k
        if (p->error_indicator) {
23552
0
            p->level--;
23553
0
            return NULL;
23554
0
        }
23555
7.79k
        D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param '='"));
23556
7.79k
        Token * _literal;
23557
7.79k
        Token * a;
23558
7.79k
        arg_ty lambda_param_var;
23559
7.79k
        if (
23560
7.79k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
23561
287
            &&
23562
287
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23563
274
            &&
23564
274
            (a = _PyPegen_expect_token(p, 22))  // token='='
23565
7.79k
        )
23566
1
        {
23567
1
            D(fprintf(stderr, "%*c+ invalid_lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param '='"));
23568
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-keyword parameter cannot have default value" );
23569
1
            if (_res == NULL && PyErr_Occurred()) {
23570
1
                p->error_indicator = 1;
23571
1
                p->level--;
23572
1
                return NULL;
23573
1
            }
23574
0
            goto done;
23575
1
        }
23576
7.79k
        p->mark = _mark;
23577
7.79k
        D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
23578
7.79k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param '='"));
23579
7.79k
    }
23580
0
    { // '**' lambda_param ',' lambda_param
23581
7.79k
        if (p->error_indicator) {
23582
1
            p->level--;
23583
1
            return NULL;
23584
1
        }
23585
7.79k
        D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' lambda_param"));
23586
7.79k
        Token * _literal;
23587
7.79k
        Token * _literal_1;
23588
7.79k
        arg_ty a;
23589
7.79k
        arg_ty lambda_param_var;
23590
7.79k
        if (
23591
7.79k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
23592
285
            &&
23593
285
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23594
273
            &&
23595
273
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
23596
15
            &&
23597
15
            (a = lambda_param_rule(p))  // lambda_param
23598
7.79k
        )
23599
1
        {
23600
1
            D(fprintf(stderr, "%*c+ invalid_lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' lambda_param"));
23601
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameters cannot follow var-keyword parameter" );
23602
1
            if (_res == NULL && PyErr_Occurred()) {
23603
1
                p->error_indicator = 1;
23604
1
                p->level--;
23605
1
                return NULL;
23606
1
            }
23607
0
            goto done;
23608
1
        }
23609
7.79k
        p->mark = _mark;
23610
7.79k
        D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
23611
7.79k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param ',' lambda_param"));
23612
7.79k
    }
23613
0
    { // '**' lambda_param ',' ('*' | '**' | '/')
23614
7.79k
        if (p->error_indicator) {
23615
1
            p->level--;
23616
1
            return NULL;
23617
1
        }
23618
7.79k
        D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')"));
23619
7.79k
        Token * _literal;
23620
7.79k
        Token * _literal_1;
23621
7.79k
        Token* a;
23622
7.79k
        arg_ty lambda_param_var;
23623
7.79k
        if (
23624
7.79k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
23625
283
            &&
23626
283
            (lambda_param_var = lambda_param_rule(p))  // lambda_param
23627
271
            &&
23628
271
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
23629
13
            &&
23630
13
            (a = (Token*)_tmp_128_rule(p))  // '*' | '**' | '/'
23631
7.79k
        )
23632
1
        {
23633
1
            D(fprintf(stderr, "%*c+ invalid_lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')"));
23634
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "parameters cannot follow var-keyword parameter" );
23635
1
            if (_res == NULL && PyErr_Occurred()) {
23636
1
                p->error_indicator = 1;
23637
1
                p->level--;
23638
1
                return NULL;
23639
1
            }
23640
0
            goto done;
23641
1
        }
23642
7.79k
        p->mark = _mark;
23643
7.79k
        D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
23644
7.79k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')"));
23645
7.79k
    }
23646
7.79k
    _res = NULL;
23647
7.79k
  done:
23648
7.79k
    p->level--;
23649
7.79k
    return _res;
23650
7.79k
}
23651
23652
// invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
23653
static void *
23654
invalid_double_type_comments_rule(Parser *p)
23655
2.28k
{
23656
2.28k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23657
0
        _Pypegen_stack_overflow(p);
23658
0
    }
23659
2.28k
    if (p->error_indicator) {
23660
0
        p->level--;
23661
0
        return NULL;
23662
0
    }
23663
2.28k
    void * _res = NULL;
23664
2.28k
    int _mark = p->mark;
23665
2.28k
    { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
23666
2.28k
        if (p->error_indicator) {
23667
0
            p->level--;
23668
0
            return NULL;
23669
0
        }
23670
2.28k
        D(fprintf(stderr, "%*c> invalid_double_type_comments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
23671
2.28k
        Token * indent_var;
23672
2.28k
        Token * newline_var;
23673
2.28k
        Token * newline_var_1;
23674
2.28k
        Token * type_comment_var;
23675
2.28k
        Token * type_comment_var_1;
23676
2.28k
        if (
23677
2.28k
            (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
23678
0
            &&
23679
0
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23680
0
            &&
23681
0
            (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
23682
0
            &&
23683
0
            (newline_var_1 = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23684
0
            &&
23685
0
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
23686
2.28k
        )
23687
0
        {
23688
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"));
23689
0
            _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
23690
0
            if (_res == NULL && PyErr_Occurred()) {
23691
0
                p->error_indicator = 1;
23692
0
                p->level--;
23693
0
                return NULL;
23694
0
            }
23695
0
            goto done;
23696
0
        }
23697
2.28k
        p->mark = _mark;
23698
2.28k
        D(fprintf(stderr, "%*c%s invalid_double_type_comments[%d-%d]: %s failed!\n", p->level, ' ',
23699
2.28k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
23700
2.28k
    }
23701
2.28k
    _res = NULL;
23702
2.28k
  done:
23703
2.28k
    p->level--;
23704
2.28k
    return _res;
23705
2.28k
}
23706
23707
// invalid_with_item: expression 'as' expression &(',' | ')' | ':')
23708
static void *
23709
invalid_with_item_rule(Parser *p)
23710
5.39k
{
23711
5.39k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23712
0
        _Pypegen_stack_overflow(p);
23713
0
    }
23714
5.39k
    if (p->error_indicator) {
23715
0
        p->level--;
23716
0
        return NULL;
23717
0
    }
23718
5.39k
    void * _res = NULL;
23719
5.39k
    int _mark = p->mark;
23720
5.39k
    { // expression 'as' expression &(',' | ')' | ':')
23721
5.39k
        if (p->error_indicator) {
23722
0
            p->level--;
23723
0
            return NULL;
23724
0
        }
23725
5.39k
        D(fprintf(stderr, "%*c> invalid_with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
23726
5.39k
        Token * _keyword;
23727
5.39k
        expr_ty a;
23728
5.39k
        expr_ty expression_var;
23729
5.39k
        if (
23730
5.39k
            (expression_var = expression_rule(p))  // expression
23731
4.49k
            &&
23732
4.49k
            (_keyword = _PyPegen_expect_token(p, 689))  // token='as'
23733
16
            &&
23734
16
            (a = expression_rule(p))  // expression
23735
8
            &&
23736
8
            _PyPegen_lookahead(1, _tmp_35_rule, p)
23737
5.39k
        )
23738
2
        {
23739
2
            D(fprintf(stderr, "%*c+ invalid_with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
23740
2
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( STAR_TARGETS , a );
23741
2
            if (_res == NULL && PyErr_Occurred()) {
23742
2
                p->error_indicator = 1;
23743
2
                p->level--;
23744
2
                return NULL;
23745
2
            }
23746
0
            goto done;
23747
2
        }
23748
5.39k
        p->mark = _mark;
23749
5.39k
        D(fprintf(stderr, "%*c%s invalid_with_item[%d-%d]: %s failed!\n", p->level, ' ',
23750
5.39k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
23751
5.39k
    }
23752
5.39k
    _res = NULL;
23753
5.39k
  done:
23754
5.39k
    p->level--;
23755
5.39k
    return _res;
23756
5.39k
}
23757
23758
// invalid_for_if_clause: 'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'
23759
static void *
23760
invalid_for_if_clause_rule(Parser *p)
23761
47.5k
{
23762
47.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23763
0
        _Pypegen_stack_overflow(p);
23764
0
    }
23765
47.5k
    if (p->error_indicator) {
23766
0
        p->level--;
23767
0
        return NULL;
23768
0
    }
23769
47.5k
    void * _res = NULL;
23770
47.5k
    int _mark = p->mark;
23771
47.5k
    { // 'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'
23772
47.5k
        if (p->error_indicator) {
23773
0
            p->level--;
23774
0
            return NULL;
23775
0
        }
23776
47.5k
        D(fprintf(stderr, "%*c> invalid_for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'"));
23777
47.5k
        Token * _keyword;
23778
47.5k
        void *_opt_var;
23779
47.5k
        UNUSED(_opt_var); // Silence compiler warnings
23780
47.5k
        void *_tmp_135_var;
23781
47.5k
        if (
23782
47.5k
            (_opt_var = _PyPegen_expect_token(p, 707), !p->error_indicator)  // 'async'?
23783
47.5k
            &&
23784
47.5k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='for'
23785
3.10k
            &&
23786
3.10k
            (_tmp_135_var = _tmp_135_rule(p))  // bitwise_or ((',' bitwise_or))* ','?
23787
111
            &&
23788
111
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 704)  // token='in'
23789
47.5k
        )
23790
27
        {
23791
27
            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'"));
23792
27
            _res = RAISE_SYNTAX_ERROR ( "'in' expected after for-loop variables" );
23793
27
            if (_res == NULL && PyErr_Occurred()) {
23794
27
                p->error_indicator = 1;
23795
27
                p->level--;
23796
27
                return NULL;
23797
27
            }
23798
0
            goto done;
23799
27
        }
23800
47.5k
        p->mark = _mark;
23801
47.5k
        D(fprintf(stderr, "%*c%s invalid_for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
23802
47.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' (bitwise_or ((',' bitwise_or))* ','?) !'in'"));
23803
47.5k
    }
23804
47.5k
    _res = NULL;
23805
47.5k
  done:
23806
47.5k
    p->level--;
23807
47.5k
    return _res;
23808
47.5k
}
23809
23810
// invalid_for_target: 'async'? 'for' star_expressions
23811
static void *
23812
invalid_for_target_rule(Parser *p)
23813
46.9k
{
23814
46.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23815
0
        _Pypegen_stack_overflow(p);
23816
0
    }
23817
46.9k
    if (p->error_indicator) {
23818
0
        p->level--;
23819
0
        return NULL;
23820
0
    }
23821
46.9k
    void * _res = NULL;
23822
46.9k
    int _mark = p->mark;
23823
46.9k
    { // 'async'? 'for' star_expressions
23824
46.9k
        if (p->error_indicator) {
23825
0
            p->level--;
23826
0
            return NULL;
23827
0
        }
23828
46.9k
        D(fprintf(stderr, "%*c> invalid_for_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_expressions"));
23829
46.9k
        Token * _keyword;
23830
46.9k
        void *_opt_var;
23831
46.9k
        UNUSED(_opt_var); // Silence compiler warnings
23832
46.9k
        expr_ty a;
23833
46.9k
        if (
23834
46.9k
            (_opt_var = _PyPegen_expect_token(p, 707), !p->error_indicator)  // 'async'?
23835
46.9k
            &&
23836
46.9k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='for'
23837
2.48k
            &&
23838
2.48k
            (a = star_expressions_rule(p))  // star_expressions
23839
46.9k
        )
23840
1.74k
        {
23841
1.74k
            D(fprintf(stderr, "%*c+ invalid_for_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_expressions"));
23842
1.74k
            _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( FOR_TARGETS , a );
23843
1.74k
            if (_res == NULL && PyErr_Occurred()) {
23844
6
                p->error_indicator = 1;
23845
6
                p->level--;
23846
6
                return NULL;
23847
6
            }
23848
1.74k
            goto done;
23849
1.74k
        }
23850
45.2k
        p->mark = _mark;
23851
45.2k
        D(fprintf(stderr, "%*c%s invalid_for_target[%d-%d]: %s failed!\n", p->level, ' ',
23852
45.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' star_expressions"));
23853
45.2k
    }
23854
45.2k
    _res = NULL;
23855
46.9k
  done:
23856
46.9k
    p->level--;
23857
46.9k
    return _res;
23858
45.2k
}
23859
23860
// invalid_group: '(' starred_expression ')' | '(' '**' expression ')'
23861
static void *
23862
invalid_group_rule(Parser *p)
23863
8.67k
{
23864
8.67k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23865
0
        _Pypegen_stack_overflow(p);
23866
0
    }
23867
8.67k
    if (p->error_indicator) {
23868
0
        p->level--;
23869
0
        return NULL;
23870
0
    }
23871
8.67k
    void * _res = NULL;
23872
8.67k
    int _mark = p->mark;
23873
8.67k
    { // '(' starred_expression ')'
23874
8.67k
        if (p->error_indicator) {
23875
0
            p->level--;
23876
0
            return NULL;
23877
0
        }
23878
8.67k
        D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' starred_expression ')'"));
23879
8.67k
        Token * _literal;
23880
8.67k
        Token * _literal_1;
23881
8.67k
        expr_ty a;
23882
8.67k
        if (
23883
8.67k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
23884
8.67k
            &&
23885
8.67k
            (a = starred_expression_rule(p))  // starred_expression
23886
268
            &&
23887
268
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
23888
8.67k
        )
23889
2
        {
23890
2
            D(fprintf(stderr, "%*c+ invalid_group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' starred_expression ')'"));
23891
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use starred expression here" );
23892
2
            if (_res == NULL && PyErr_Occurred()) {
23893
2
                p->error_indicator = 1;
23894
2
                p->level--;
23895
2
                return NULL;
23896
2
            }
23897
0
            goto done;
23898
2
        }
23899
8.67k
        p->mark = _mark;
23900
8.67k
        D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
23901
8.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' starred_expression ')'"));
23902
8.67k
    }
23903
0
    { // '(' '**' expression ')'
23904
8.67k
        if (p->error_indicator) {
23905
296
            p->level--;
23906
296
            return NULL;
23907
296
        }
23908
8.37k
        D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' '**' expression ')'"));
23909
8.37k
        Token * _literal;
23910
8.37k
        Token * _literal_1;
23911
8.37k
        Token * a;
23912
8.37k
        expr_ty expression_var;
23913
8.37k
        if (
23914
8.37k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
23915
8.37k
            &&
23916
8.37k
            (a = _PyPegen_expect_token(p, 35))  // token='**'
23917
197
            &&
23918
197
            (expression_var = expression_rule(p))  // expression
23919
106
            &&
23920
106
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
23921
8.37k
        )
23922
1
        {
23923
1
            D(fprintf(stderr, "%*c+ invalid_group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' '**' expression ')'"));
23924
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use double starred expression here" );
23925
1
            if (_res == NULL && PyErr_Occurred()) {
23926
1
                p->error_indicator = 1;
23927
1
                p->level--;
23928
1
                return NULL;
23929
1
            }
23930
0
            goto done;
23931
1
        }
23932
8.37k
        p->mark = _mark;
23933
8.37k
        D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
23934
8.37k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' '**' expression ')'"));
23935
8.37k
    }
23936
8.37k
    _res = NULL;
23937
8.37k
  done:
23938
8.37k
    p->level--;
23939
8.37k
    return _res;
23940
8.37k
}
23941
23942
// invalid_import: 'import' ','.dotted_name+ 'from' dotted_name | 'import' NEWLINE
23943
static void *
23944
invalid_import_rule(Parser *p)
23945
1.66k
{
23946
1.66k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
23947
0
        _Pypegen_stack_overflow(p);
23948
0
    }
23949
1.66k
    if (p->error_indicator) {
23950
0
        p->level--;
23951
0
        return NULL;
23952
0
    }
23953
1.66k
    void * _res = NULL;
23954
1.66k
    int _mark = p->mark;
23955
1.66k
    { // 'import' ','.dotted_name+ 'from' dotted_name
23956
1.66k
        if (p->error_indicator) {
23957
0
            p->level--;
23958
0
            return NULL;
23959
0
        }
23960
1.66k
        D(fprintf(stderr, "%*c> invalid_import[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' ','.dotted_name+ 'from' dotted_name"));
23961
1.66k
        asdl_seq * _gather_137_var;
23962
1.66k
        Token * _keyword;
23963
1.66k
        Token * a;
23964
1.66k
        expr_ty dotted_name_var;
23965
1.66k
        if (
23966
1.66k
            (a = _PyPegen_expect_token(p, 643))  // token='import'
23967
737
            &&
23968
737
            (_gather_137_var = _gather_137_rule(p))  // ','.dotted_name+
23969
729
            &&
23970
729
            (_keyword = _PyPegen_expect_token(p, 642))  // token='from'
23971
2
            &&
23972
2
            (dotted_name_var = dotted_name_rule(p))  // dotted_name
23973
1.66k
        )
23974
1
        {
23975
1
            D(fprintf(stderr, "%*c+ invalid_import[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' ','.dotted_name+ 'from' dotted_name"));
23976
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "Did you mean to use 'from ... import ...' instead?" );
23977
1
            if (_res == NULL && PyErr_Occurred()) {
23978
1
                p->error_indicator = 1;
23979
1
                p->level--;
23980
1
                return NULL;
23981
1
            }
23982
0
            goto done;
23983
1
        }
23984
1.66k
        p->mark = _mark;
23985
1.66k
        D(fprintf(stderr, "%*c%s invalid_import[%d-%d]: %s failed!\n", p->level, ' ',
23986
1.66k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' ','.dotted_name+ 'from' dotted_name"));
23987
1.66k
    }
23988
0
    { // 'import' NEWLINE
23989
1.66k
        if (p->error_indicator) {
23990
1
            p->level--;
23991
1
            return NULL;
23992
1
        }
23993
1.66k
        D(fprintf(stderr, "%*c> invalid_import[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' NEWLINE"));
23994
1.66k
        Token * _keyword;
23995
1.66k
        Token * token;
23996
1.66k
        if (
23997
1.66k
            (_keyword = _PyPegen_expect_token(p, 643))  // token='import'
23998
735
            &&
23999
735
            (token = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24000
1.66k
        )
24001
3
        {
24002
3
            D(fprintf(stderr, "%*c+ invalid_import[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' NEWLINE"));
24003
3
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( token , "Expected one or more names after 'import'" );
24004
3
            if (_res == NULL && PyErr_Occurred()) {
24005
3
                p->error_indicator = 1;
24006
3
                p->level--;
24007
3
                return NULL;
24008
3
            }
24009
0
            goto done;
24010
3
        }
24011
1.66k
        p->mark = _mark;
24012
1.66k
        D(fprintf(stderr, "%*c%s invalid_import[%d-%d]: %s failed!\n", p->level, ' ',
24013
1.66k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' NEWLINE"));
24014
1.66k
    }
24015
1.66k
    _res = NULL;
24016
1.66k
  done:
24017
1.66k
    p->level--;
24018
1.66k
    return _res;
24019
1.66k
}
24020
24021
// invalid_dotted_as_name: dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression
24022
static void *
24023
invalid_dotted_as_name_rule(Parser *p)
24024
2.89k
{
24025
2.89k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24026
0
        _Pypegen_stack_overflow(p);
24027
0
    }
24028
2.89k
    if (p->error_indicator) {
24029
0
        p->level--;
24030
0
        return NULL;
24031
0
    }
24032
2.89k
    void * _res = NULL;
24033
2.89k
    int _mark = p->mark;
24034
2.89k
    { // dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression
24035
2.89k
        if (p->error_indicator) {
24036
0
            p->level--;
24037
0
            return NULL;
24038
0
        }
24039
2.89k
        D(fprintf(stderr, "%*c> invalid_dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
24040
2.89k
        Token * _keyword;
24041
2.89k
        expr_ty a;
24042
2.89k
        expr_ty dotted_name_var;
24043
2.89k
        if (
24044
2.89k
            (dotted_name_var = dotted_name_rule(p))  // dotted_name
24045
2.86k
            &&
24046
2.86k
            (_keyword = _PyPegen_expect_token(p, 689))  // token='as'
24047
309
            &&
24048
309
            _PyPegen_lookahead(0, _tmp_138_rule, p)
24049
31
            &&
24050
31
            (a = expression_rule(p))  // expression
24051
2.89k
        )
24052
4
        {
24053
4
            D(fprintf(stderr, "%*c+ invalid_dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
24054
4
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use %s as import target" , _PyPegen_get_expr_name ( a ) );
24055
4
            if (_res == NULL && PyErr_Occurred()) {
24056
4
                p->error_indicator = 1;
24057
4
                p->level--;
24058
4
                return NULL;
24059
4
            }
24060
0
            goto done;
24061
4
        }
24062
2.89k
        p->mark = _mark;
24063
2.89k
        D(fprintf(stderr, "%*c%s invalid_dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
24064
2.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
24065
2.89k
    }
24066
2.89k
    _res = NULL;
24067
2.89k
  done:
24068
2.89k
    p->level--;
24069
2.89k
    return _res;
24070
2.89k
}
24071
24072
// invalid_import_from_as_name: NAME 'as' !(NAME (',' | ')' | NEWLINE)) expression
24073
static void *
24074
invalid_import_from_as_name_rule(Parser *p)
24075
2.26k
{
24076
2.26k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24077
0
        _Pypegen_stack_overflow(p);
24078
0
    }
24079
2.26k
    if (p->error_indicator) {
24080
0
        p->level--;
24081
0
        return NULL;
24082
0
    }
24083
2.26k
    void * _res = NULL;
24084
2.26k
    int _mark = p->mark;
24085
2.26k
    { // NAME 'as' !(NAME (',' | ')' | NEWLINE)) expression
24086
2.26k
        if (p->error_indicator) {
24087
0
            p->level--;
24088
0
            return NULL;
24089
0
        }
24090
2.26k
        D(fprintf(stderr, "%*c> invalid_import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
24091
2.26k
        Token * _keyword;
24092
2.26k
        expr_ty a;
24093
2.26k
        expr_ty name_var;
24094
2.26k
        if (
24095
2.26k
            (name_var = _PyPegen_name_token(p))  // NAME
24096
1.92k
            &&
24097
1.92k
            (_keyword = _PyPegen_expect_token(p, 689))  // token='as'
24098
284
            &&
24099
284
            _PyPegen_lookahead(0, _tmp_138_rule, p)
24100
2
            &&
24101
2
            (a = expression_rule(p))  // expression
24102
2.26k
        )
24103
1
        {
24104
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"));
24105
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use %s as import target" , _PyPegen_get_expr_name ( a ) );
24106
1
            if (_res == NULL && PyErr_Occurred()) {
24107
1
                p->error_indicator = 1;
24108
1
                p->level--;
24109
1
                return NULL;
24110
1
            }
24111
0
            goto done;
24112
1
        }
24113
2.26k
        p->mark = _mark;
24114
2.26k
        D(fprintf(stderr, "%*c%s invalid_import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
24115
2.26k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME 'as' !(NAME (',' | ')' | NEWLINE)) expression"));
24116
2.26k
    }
24117
2.26k
    _res = NULL;
24118
2.26k
  done:
24119
2.26k
    p->level--;
24120
2.26k
    return _res;
24121
2.26k
}
24122
24123
// invalid_import_from_targets: import_from_as_names ',' NEWLINE | NEWLINE
24124
static void *
24125
invalid_import_from_targets_rule(Parser *p)
24126
32
{
24127
32
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24128
0
        _Pypegen_stack_overflow(p);
24129
0
    }
24130
32
    if (p->error_indicator) {
24131
0
        p->level--;
24132
0
        return NULL;
24133
0
    }
24134
32
    void * _res = NULL;
24135
32
    int _mark = p->mark;
24136
32
    { // import_from_as_names ',' NEWLINE
24137
32
        if (p->error_indicator) {
24138
0
            p->level--;
24139
0
            return NULL;
24140
0
        }
24141
32
        D(fprintf(stderr, "%*c> invalid_import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names ',' NEWLINE"));
24142
32
        Token * _literal;
24143
32
        asdl_alias_seq* import_from_as_names_var;
24144
32
        Token * newline_var;
24145
32
        if (
24146
32
            (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
24147
20
            &&
24148
20
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
24149
20
            &&
24150
20
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24151
32
        )
24152
14
        {
24153
14
            D(fprintf(stderr, "%*c+ invalid_import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names ',' NEWLINE"));
24154
14
            _res = RAISE_SYNTAX_ERROR ( "trailing comma not allowed without surrounding parentheses" );
24155
14
            if (_res == NULL && PyErr_Occurred()) {
24156
14
                p->error_indicator = 1;
24157
14
                p->level--;
24158
14
                return NULL;
24159
14
            }
24160
0
            goto done;
24161
14
        }
24162
18
        p->mark = _mark;
24163
18
        D(fprintf(stderr, "%*c%s invalid_import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
24164
18
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names ',' NEWLINE"));
24165
18
    }
24166
0
    { // NEWLINE
24167
18
        if (p->error_indicator) {
24168
0
            p->level--;
24169
0
            return NULL;
24170
0
        }
24171
18
        D(fprintf(stderr, "%*c> invalid_import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
24172
18
        Token * token;
24173
18
        if (
24174
18
            (token = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24175
18
        )
24176
6
        {
24177
6
            D(fprintf(stderr, "%*c+ invalid_import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
24178
6
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( token , "Expected one or more names after 'import'" );
24179
6
            if (_res == NULL && PyErr_Occurred()) {
24180
6
                p->error_indicator = 1;
24181
6
                p->level--;
24182
6
                return NULL;
24183
6
            }
24184
0
            goto done;
24185
6
        }
24186
12
        p->mark = _mark;
24187
12
        D(fprintf(stderr, "%*c%s invalid_import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
24188
12
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
24189
12
    }
24190
12
    _res = NULL;
24191
12
  done:
24192
12
    p->level--;
24193
12
    return _res;
24194
12
}
24195
24196
// invalid_with_stmt:
24197
//     | 'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE
24198
//     | 'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE
24199
static void *
24200
invalid_with_stmt_rule(Parser *p)
24201
517
{
24202
517
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24203
0
        _Pypegen_stack_overflow(p);
24204
0
    }
24205
517
    if (p->error_indicator) {
24206
0
        p->level--;
24207
0
        return NULL;
24208
0
    }
24209
517
    void * _res = NULL;
24210
517
    int _mark = p->mark;
24211
517
    { // 'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE
24212
517
        if (p->error_indicator) {
24213
0
            p->level--;
24214
0
            return NULL;
24215
0
        }
24216
517
        D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE"));
24217
517
        asdl_seq * _gather_140_var;
24218
517
        Token * _keyword;
24219
517
        void *_opt_var;
24220
517
        UNUSED(_opt_var); // Silence compiler warnings
24221
517
        Token * newline_var;
24222
517
        if (
24223
517
            (_opt_var = _PyPegen_expect_token(p, 707), !p->error_indicator)  // 'async'?
24224
517
            &&
24225
517
            (_keyword = _PyPegen_expect_token(p, 656))  // token='with'
24226
193
            &&
24227
193
            (_gather_140_var = _gather_140_rule(p))  // ','.(expression ['as' star_target])+
24228
106
            &&
24229
106
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24230
517
        )
24231
42
        {
24232
42
            D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE"));
24233
42
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24234
42
            if (_res == NULL && PyErr_Occurred()) {
24235
42
                p->error_indicator = 1;
24236
42
                p->level--;
24237
42
                return NULL;
24238
42
            }
24239
0
            goto done;
24240
42
        }
24241
475
        p->mark = _mark;
24242
475
        D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24243
475
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ NEWLINE"));
24244
475
    }
24245
0
    { // 'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE
24246
475
        if (p->error_indicator) {
24247
0
            p->level--;
24248
0
            return NULL;
24249
0
        }
24250
475
        D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE"));
24251
475
        asdl_seq * _gather_142_var;
24252
475
        Token * _keyword;
24253
475
        Token * _literal;
24254
475
        Token * _literal_1;
24255
475
        void *_opt_var;
24256
475
        UNUSED(_opt_var); // Silence compiler warnings
24257
475
        void *_opt_var_1;
24258
475
        UNUSED(_opt_var_1); // Silence compiler warnings
24259
475
        Token * newline_var;
24260
475
        if (
24261
475
            (_opt_var = _PyPegen_expect_token(p, 707), !p->error_indicator)  // 'async'?
24262
475
            &&
24263
475
            (_keyword = _PyPegen_expect_token(p, 656))  // token='with'
24264
151
            &&
24265
151
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
24266
118
            &&
24267
118
            (_gather_142_var = _gather_142_rule(p))  // ','.(expressions ['as' star_target])+
24268
96
            &&
24269
96
            (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
24270
96
            &&
24271
96
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
24272
42
            &&
24273
42
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24274
475
        )
24275
7
        {
24276
7
            D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE"));
24277
7
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24278
7
            if (_res == NULL && PyErr_Occurred()) {
24279
7
                p->error_indicator = 1;
24280
7
                p->level--;
24281
7
                return NULL;
24282
7
            }
24283
0
            goto done;
24284
7
        }
24285
468
        p->mark = _mark;
24286
468
        D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24287
468
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE"));
24288
468
    }
24289
468
    _res = NULL;
24290
468
  done:
24291
468
    p->level--;
24292
468
    return _res;
24293
468
}
24294
24295
// invalid_with_stmt_indent:
24296
//     | 'async'? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT
24297
//     | 'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT
24298
static void *
24299
invalid_with_stmt_indent_rule(Parser *p)
24300
2.61k
{
24301
2.61k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24302
0
        _Pypegen_stack_overflow(p);
24303
0
    }
24304
2.61k
    if (p->error_indicator) {
24305
0
        p->level--;
24306
0
        return NULL;
24307
0
    }
24308
2.61k
    void * _res = NULL;
24309
2.61k
    int _mark = p->mark;
24310
2.61k
    { // 'async'? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT
24311
2.61k
        if (p->error_indicator) {
24312
0
            p->level--;
24313
0
            return NULL;
24314
0
        }
24315
2.61k
        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"));
24316
2.61k
        asdl_seq * _gather_140_var;
24317
2.61k
        Token * _literal;
24318
2.61k
        void *_opt_var;
24319
2.61k
        UNUSED(_opt_var); // Silence compiler warnings
24320
2.61k
        Token * a;
24321
2.61k
        Token * newline_var;
24322
2.61k
        if (
24323
2.61k
            (_opt_var = _PyPegen_expect_token(p, 707), !p->error_indicator)  // 'async'?
24324
2.61k
            &&
24325
2.61k
            (a = _PyPegen_expect_token(p, 656))  // token='with'
24326
2.28k
            &&
24327
2.28k
            (_gather_140_var = _gather_140_rule(p))  // ','.(expression ['as' star_target])+
24328
1.96k
            &&
24329
1.96k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24330
1.88k
            &&
24331
1.88k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24332
59
            &&
24333
59
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24334
2.61k
        )
24335
17
        {
24336
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"));
24337
17
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'with' statement on line %d" , a -> lineno );
24338
17
            if (_res == NULL && PyErr_Occurred()) {
24339
17
                p->error_indicator = 1;
24340
17
                p->level--;
24341
17
                return NULL;
24342
17
            }
24343
0
            goto done;
24344
17
        }
24345
2.59k
        p->mark = _mark;
24346
2.59k
        D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24347
2.59k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT"));
24348
2.59k
    }
24349
0
    { // 'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT
24350
2.59k
        if (p->error_indicator) {
24351
10
            p->level--;
24352
10
            return NULL;
24353
10
        }
24354
2.58k
        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"));
24355
2.58k
        asdl_seq * _gather_142_var;
24356
2.58k
        Token * _literal;
24357
2.58k
        Token * _literal_1;
24358
2.58k
        Token * _literal_2;
24359
2.58k
        void *_opt_var;
24360
2.58k
        UNUSED(_opt_var); // Silence compiler warnings
24361
2.58k
        void *_opt_var_1;
24362
2.58k
        UNUSED(_opt_var_1); // Silence compiler warnings
24363
2.58k
        Token * a;
24364
2.58k
        Token * newline_var;
24365
2.58k
        if (
24366
2.58k
            (_opt_var = _PyPegen_expect_token(p, 707), !p->error_indicator)  // 'async'?
24367
2.58k
            &&
24368
2.58k
            (a = _PyPegen_expect_token(p, 656))  // token='with'
24369
2.26k
            &&
24370
2.26k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
24371
1.78k
            &&
24372
1.78k
            (_gather_142_var = _gather_142_rule(p))  // ','.(expressions ['as' star_target])+
24373
1.39k
            &&
24374
1.39k
            (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
24375
1.38k
            &&
24376
1.38k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
24377
1.13k
            &&
24378
1.13k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
24379
740
            &&
24380
740
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24381
21
            &&
24382
21
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24383
2.58k
        )
24384
2
        {
24385
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"));
24386
2
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'with' statement on line %d" , a -> lineno );
24387
2
            if (_res == NULL && PyErr_Occurred()) {
24388
2
                p->error_indicator = 1;
24389
2
                p->level--;
24390
2
                return NULL;
24391
2
            }
24392
0
            goto done;
24393
2
        }
24394
2.58k
        p->mark = _mark;
24395
2.58k
        D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
24396
2.58k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT"));
24397
2.58k
    }
24398
2.58k
    _res = NULL;
24399
2.58k
  done:
24400
2.58k
    p->level--;
24401
2.58k
    return _res;
24402
2.58k
}
24403
24404
// invalid_try_stmt:
24405
//     | 'try' ':' NEWLINE !INDENT
24406
//     | 'try' ':' block !('except' | 'finally')
24407
//     | 'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'
24408
//     | 'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'
24409
static void *
24410
invalid_try_stmt_rule(Parser *p)
24411
2.01k
{
24412
2.01k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24413
0
        _Pypegen_stack_overflow(p);
24414
0
    }
24415
2.01k
    if (p->error_indicator) {
24416
0
        p->level--;
24417
0
        return NULL;
24418
0
    }
24419
2.01k
    void * _res = NULL;
24420
2.01k
    int _mark = p->mark;
24421
2.01k
    { // 'try' ':' NEWLINE !INDENT
24422
2.01k
        if (p->error_indicator) {
24423
0
            p->level--;
24424
0
            return NULL;
24425
0
        }
24426
2.01k
        D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
24427
2.01k
        Token * _literal;
24428
2.01k
        Token * a;
24429
2.01k
        Token * newline_var;
24430
2.01k
        if (
24431
2.01k
            (a = _PyPegen_expect_token(p, 665))  // token='try'
24432
2.01k
            &&
24433
2.01k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24434
2.01k
            &&
24435
2.01k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24436
149
            &&
24437
149
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24438
2.01k
        )
24439
7
        {
24440
7
            D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
24441
7
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'try' statement on line %d" , a -> lineno );
24442
7
            if (_res == NULL && PyErr_Occurred()) {
24443
7
                p->error_indicator = 1;
24444
7
                p->level--;
24445
7
                return NULL;
24446
7
            }
24447
0
            goto done;
24448
7
        }
24449
2.01k
        p->mark = _mark;
24450
2.01k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24451
2.01k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
24452
2.01k
    }
24453
0
    { // 'try' ':' block !('except' | 'finally')
24454
2.01k
        if (p->error_indicator) {
24455
1
            p->level--;
24456
1
            return NULL;
24457
1
        }
24458
2.01k
        D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
24459
2.01k
        Token * _keyword;
24460
2.01k
        Token * _literal;
24461
2.01k
        asdl_stmt_seq* block_var;
24462
2.01k
        if (
24463
2.01k
            (_keyword = _PyPegen_expect_token(p, 665))  // token='try'
24464
2.01k
            &&
24465
2.01k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24466
2.00k
            &&
24467
2.00k
            (block_var = block_rule(p))  // block
24468
1.90k
            &&
24469
1.90k
            _PyPegen_lookahead(0, _tmp_143_rule, p)
24470
2.01k
        )
24471
37
        {
24472
37
            D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
24473
37
            _res = RAISE_SYNTAX_ERROR ( "expected 'except' or 'finally' block" );
24474
37
            if (_res == NULL && PyErr_Occurred()) {
24475
37
                p->error_indicator = 1;
24476
37
                p->level--;
24477
37
                return NULL;
24478
37
            }
24479
0
            goto done;
24480
37
        }
24481
1.97k
        p->mark = _mark;
24482
1.97k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24483
1.97k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
24484
1.97k
    }
24485
0
    { // 'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'
24486
1.97k
        if (p->error_indicator) {
24487
14
            p->level--;
24488
14
            return NULL;
24489
14
        }
24490
1.95k
        D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'"));
24491
1.95k
        Token * _keyword;
24492
1.95k
        Token * _literal;
24493
1.95k
        Token * _literal_1;
24494
1.95k
        asdl_seq * _loop0_144_var;
24495
1.95k
        asdl_seq * _loop1_36_var;
24496
1.95k
        void *_opt_var;
24497
1.95k
        UNUSED(_opt_var); // Silence compiler warnings
24498
1.95k
        Token * a;
24499
1.95k
        Token * b;
24500
1.95k
        expr_ty expression_var;
24501
1.95k
        if (
24502
1.95k
            (_keyword = _PyPegen_expect_token(p, 665))  // token='try'
24503
1.95k
            &&
24504
1.95k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24505
1.95k
            &&
24506
1.95k
            (_loop0_144_var = _loop0_144_rule(p))  // block*
24507
1.95k
            &&
24508
1.95k
            (_loop1_36_var = _loop1_36_rule(p))  // except_block+
24509
735
            &&
24510
735
            (a = _PyPegen_expect_token(p, 686))  // token='except'
24511
33
            &&
24512
33
            (b = _PyPegen_expect_token(p, 16))  // token='*'
24513
6
            &&
24514
6
            (expression_var = expression_rule(p))  // expression
24515
3
            &&
24516
3
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24517
2
            &&
24518
2
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24519
1.95k
        )
24520
1
        {
24521
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] ':'"));
24522
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot have both 'except' and 'except*' on the same 'try'" );
24523
1
            if (_res == NULL && PyErr_Occurred()) {
24524
1
                p->error_indicator = 1;
24525
1
                p->level--;
24526
1
                return NULL;
24527
1
            }
24528
0
            goto done;
24529
1
        }
24530
1.95k
        p->mark = _mark;
24531
1.95k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24532
1.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'"));
24533
1.95k
    }
24534
0
    { // 'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'
24535
1.95k
        if (p->error_indicator) {
24536
51
            p->level--;
24537
51
            return NULL;
24538
51
        }
24539
1.90k
        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]] ':'"));
24540
1.90k
        Token * _keyword;
24541
1.90k
        Token * _literal;
24542
1.90k
        Token * _literal_1;
24543
1.90k
        asdl_seq * _loop0_144_var;
24544
1.90k
        asdl_seq * _loop1_37_var;
24545
1.90k
        void *_opt_var;
24546
1.90k
        UNUSED(_opt_var); // Silence compiler warnings
24547
1.90k
        Token * a;
24548
1.90k
        if (
24549
1.90k
            (_keyword = _PyPegen_expect_token(p, 665))  // token='try'
24550
1.90k
            &&
24551
1.90k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24552
1.90k
            &&
24553
1.90k
            (_loop0_144_var = _loop0_144_rule(p))  // block*
24554
1.90k
            &&
24555
1.90k
            (_loop1_37_var = _loop1_37_rule(p))  // except_star_block+
24556
574
            &&
24557
574
            (a = _PyPegen_expect_token(p, 686))  // token='except'
24558
16
            &&
24559
16
            (_opt_var = _tmp_145_rule(p), !p->error_indicator)  // [expression ['as' NAME]]
24560
14
            &&
24561
14
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24562
1.90k
        )
24563
3
        {
24564
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]] ':'"));
24565
3
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot have both 'except' and 'except*' on the same 'try'" );
24566
3
            if (_res == NULL && PyErr_Occurred()) {
24567
3
                p->error_indicator = 1;
24568
3
                p->level--;
24569
3
                return NULL;
24570
3
            }
24571
0
            goto done;
24572
3
        }
24573
1.90k
        p->mark = _mark;
24574
1.90k
        D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24575
1.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'"));
24576
1.90k
    }
24577
1.90k
    _res = NULL;
24578
1.90k
  done:
24579
1.90k
    p->level--;
24580
1.90k
    return _res;
24581
1.90k
}
24582
24583
// invalid_except_stmt:
24584
//     | 'except' expression ',' expressions 'as' NAME ':'
24585
//     | 'except' expression ['as' NAME] NEWLINE
24586
//     | 'except' NEWLINE
24587
//     | 'except' expression 'as' expression ':' block
24588
static void *
24589
invalid_except_stmt_rule(Parser *p)
24590
3.28k
{
24591
3.28k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24592
0
        _Pypegen_stack_overflow(p);
24593
0
    }
24594
3.28k
    if (p->error_indicator) {
24595
0
        p->level--;
24596
0
        return NULL;
24597
0
    }
24598
3.28k
    void * _res = NULL;
24599
3.28k
    int _mark = p->mark;
24600
3.28k
    { // 'except' expression ',' expressions 'as' NAME ':'
24601
3.28k
        if (p->error_indicator) {
24602
0
            p->level--;
24603
0
            return NULL;
24604
0
        }
24605
3.28k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ',' expressions 'as' NAME ':'"));
24606
3.28k
        Token * _keyword;
24607
3.28k
        Token * _keyword_1;
24608
3.28k
        Token * _literal;
24609
3.28k
        Token * _literal_1;
24610
3.28k
        expr_ty a;
24611
3.28k
        expr_ty expressions_var;
24612
3.28k
        expr_ty name_var;
24613
3.28k
        if (
24614
3.28k
            (_keyword = _PyPegen_expect_token(p, 686))  // token='except'
24615
1.39k
            &&
24616
1.39k
            (a = expression_rule(p))  // expression
24617
94
            &&
24618
94
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
24619
27
            &&
24620
27
            (expressions_var = expressions_rule(p))  // expressions
24621
20
            &&
24622
20
            (_keyword_1 = _PyPegen_expect_token(p, 689))  // token='as'
24623
7
            &&
24624
7
            (name_var = _PyPegen_name_token(p))  // NAME
24625
4
            &&
24626
4
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24627
3.28k
        )
24628
1
        {
24629
1
            D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ',' expressions 'as' NAME ':'"));
24630
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "multiple exception types must be parenthesized when using 'as'" );
24631
1
            if (_res == NULL && PyErr_Occurred()) {
24632
1
                p->error_indicator = 1;
24633
1
                p->level--;
24634
1
                return NULL;
24635
1
            }
24636
0
            goto done;
24637
1
        }
24638
3.28k
        p->mark = _mark;
24639
3.28k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24640
3.28k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ',' expressions 'as' NAME ':'"));
24641
3.28k
    }
24642
0
    { // 'except' expression ['as' NAME] NEWLINE
24643
3.28k
        if (p->error_indicator) {
24644
1
            p->level--;
24645
1
            return NULL;
24646
1
        }
24647
3.28k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
24648
3.28k
        void *_opt_var;
24649
3.28k
        UNUSED(_opt_var); // Silence compiler warnings
24650
3.28k
        Token * a;
24651
3.28k
        expr_ty expression_var;
24652
3.28k
        Token * newline_var;
24653
3.28k
        if (
24654
3.28k
            (a = _PyPegen_expect_token(p, 686))  // token='except'
24655
1.38k
            &&
24656
1.38k
            (expression_var = expression_rule(p))  // expression
24657
92
            &&
24658
92
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24659
92
            &&
24660
92
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24661
3.28k
        )
24662
5
        {
24663
5
            D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
24664
5
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24665
5
            if (_res == NULL && PyErr_Occurred()) {
24666
5
                p->error_indicator = 1;
24667
5
                p->level--;
24668
5
                return NULL;
24669
5
            }
24670
0
            goto done;
24671
5
        }
24672
3.27k
        p->mark = _mark;
24673
3.27k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24674
3.27k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
24675
3.27k
    }
24676
0
    { // 'except' NEWLINE
24677
3.27k
        if (p->error_indicator) {
24678
0
            p->level--;
24679
0
            return NULL;
24680
0
        }
24681
3.27k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
24682
3.27k
        Token * a;
24683
3.27k
        Token * newline_var;
24684
3.27k
        if (
24685
3.27k
            (a = _PyPegen_expect_token(p, 686))  // token='except'
24686
1.38k
            &&
24687
1.38k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24688
3.27k
        )
24689
10
        {
24690
10
            D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
24691
10
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24692
10
            if (_res == NULL && PyErr_Occurred()) {
24693
10
                p->error_indicator = 1;
24694
10
                p->level--;
24695
10
                return NULL;
24696
10
            }
24697
0
            goto done;
24698
10
        }
24699
3.26k
        p->mark = _mark;
24700
3.26k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24701
3.26k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' NEWLINE"));
24702
3.26k
    }
24703
0
    { // 'except' expression 'as' expression ':' block
24704
3.26k
        if (p->error_indicator) {
24705
0
            p->level--;
24706
0
            return NULL;
24707
0
        }
24708
3.26k
        D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' expression ':' block"));
24709
3.26k
        Token * _keyword;
24710
3.26k
        Token * _keyword_1;
24711
3.26k
        Token * _literal;
24712
3.26k
        expr_ty a;
24713
3.26k
        asdl_stmt_seq* block_var;
24714
3.26k
        expr_ty expression_var;
24715
3.26k
        if (
24716
3.26k
            (_keyword = _PyPegen_expect_token(p, 686))  // token='except'
24717
1.37k
            &&
24718
1.37k
            (expression_var = expression_rule(p))  // expression
24719
87
            &&
24720
87
            (_keyword_1 = _PyPegen_expect_token(p, 689))  // token='as'
24721
29
            &&
24722
29
            (a = expression_rule(p))  // expression
24723
22
            &&
24724
22
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24725
17
            &&
24726
17
            (block_var = block_rule(p))  // block
24727
3.26k
        )
24728
1
        {
24729
1
            D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression 'as' expression ':' block"));
24730
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use except statement with %s" , _PyPegen_get_expr_name ( a ) );
24731
1
            if (_res == NULL && PyErr_Occurred()) {
24732
1
                p->error_indicator = 1;
24733
1
                p->level--;
24734
1
                return NULL;
24735
1
            }
24736
0
            goto done;
24737
1
        }
24738
3.26k
        p->mark = _mark;
24739
3.26k
        D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24740
3.26k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression 'as' expression ':' block"));
24741
3.26k
    }
24742
3.26k
    _res = NULL;
24743
3.26k
  done:
24744
3.26k
    p->level--;
24745
3.26k
    return _res;
24746
3.26k
}
24747
24748
// invalid_except_star_stmt:
24749
//     | 'except' '*' expression ',' expressions 'as' NAME ':'
24750
//     | 'except' '*' expression ['as' NAME] NEWLINE
24751
//     | 'except' '*' (NEWLINE | ':')
24752
//     | 'except' '*' expression 'as' expression ':' block
24753
static void *
24754
invalid_except_star_stmt_rule(Parser *p)
24755
2.52k
{
24756
2.52k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24757
0
        _Pypegen_stack_overflow(p);
24758
0
    }
24759
2.52k
    if (p->error_indicator) {
24760
0
        p->level--;
24761
0
        return NULL;
24762
0
    }
24763
2.52k
    void * _res = NULL;
24764
2.52k
    int _mark = p->mark;
24765
2.52k
    { // 'except' '*' expression ',' expressions 'as' NAME ':'
24766
2.52k
        if (p->error_indicator) {
24767
0
            p->level--;
24768
0
            return NULL;
24769
0
        }
24770
2.52k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ',' expressions 'as' NAME ':'"));
24771
2.52k
        Token * _keyword;
24772
2.52k
        Token * _keyword_1;
24773
2.52k
        Token * _literal;
24774
2.52k
        Token * _literal_1;
24775
2.52k
        Token * _literal_2;
24776
2.52k
        expr_ty a;
24777
2.52k
        expr_ty expressions_var;
24778
2.52k
        expr_ty name_var;
24779
2.52k
        if (
24780
2.52k
            (_keyword = _PyPegen_expect_token(p, 686))  // token='except'
24781
917
            &&
24782
917
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24783
90
            &&
24784
90
            (a = expression_rule(p))  // expression
24785
67
            &&
24786
67
            (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
24787
35
            &&
24788
35
            (expressions_var = expressions_rule(p))  // expressions
24789
28
            &&
24790
28
            (_keyword_1 = _PyPegen_expect_token(p, 689))  // token='as'
24791
7
            &&
24792
7
            (name_var = _PyPegen_name_token(p))  // NAME
24793
4
            &&
24794
4
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
24795
2.52k
        )
24796
1
        {
24797
1
            D(fprintf(stderr, "%*c+ invalid_except_star_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ',' expressions 'as' NAME ':'"));
24798
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "multiple exception types must be parenthesized when using 'as'" );
24799
1
            if (_res == NULL && PyErr_Occurred()) {
24800
1
                p->error_indicator = 1;
24801
1
                p->level--;
24802
1
                return NULL;
24803
1
            }
24804
0
            goto done;
24805
1
        }
24806
2.52k
        p->mark = _mark;
24807
2.52k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24808
2.52k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ',' expressions 'as' NAME ':'"));
24809
2.52k
    }
24810
0
    { // 'except' '*' expression ['as' NAME] NEWLINE
24811
2.52k
        if (p->error_indicator) {
24812
1
            p->level--;
24813
1
            return NULL;
24814
1
        }
24815
2.52k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ['as' NAME] NEWLINE"));
24816
2.52k
        Token * _literal;
24817
2.52k
        void *_opt_var;
24818
2.52k
        UNUSED(_opt_var); // Silence compiler warnings
24819
2.52k
        Token * a;
24820
2.52k
        expr_ty expression_var;
24821
2.52k
        Token * newline_var;
24822
2.52k
        if (
24823
2.52k
            (a = _PyPegen_expect_token(p, 686))  // token='except'
24824
915
            &&
24825
915
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24826
88
            &&
24827
88
            (expression_var = expression_rule(p))  // expression
24828
65
            &&
24829
65
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
24830
65
            &&
24831
65
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24832
2.52k
        )
24833
4
        {
24834
4
            D(fprintf(stderr, "%*c+ invalid_except_star_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ['as' NAME] NEWLINE"));
24835
4
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
24836
4
            if (_res == NULL && PyErr_Occurred()) {
24837
4
                p->error_indicator = 1;
24838
4
                p->level--;
24839
4
                return NULL;
24840
4
            }
24841
0
            goto done;
24842
4
        }
24843
2.52k
        p->mark = _mark;
24844
2.52k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24845
2.52k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ['as' NAME] NEWLINE"));
24846
2.52k
    }
24847
0
    { // 'except' '*' (NEWLINE | ':')
24848
2.52k
        if (p->error_indicator) {
24849
0
            p->level--;
24850
0
            return NULL;
24851
0
        }
24852
2.52k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' (NEWLINE | ':')"));
24853
2.52k
        Token * _literal;
24854
2.52k
        void *_tmp_146_var;
24855
2.52k
        Token * a;
24856
2.52k
        if (
24857
2.52k
            (a = _PyPegen_expect_token(p, 686))  // token='except'
24858
911
            &&
24859
911
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24860
84
            &&
24861
84
            (_tmp_146_var = _tmp_146_rule(p))  // NEWLINE | ':'
24862
2.52k
        )
24863
6
        {
24864
6
            D(fprintf(stderr, "%*c+ invalid_except_star_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' (NEWLINE | ':')"));
24865
6
            _res = RAISE_SYNTAX_ERROR ( "expected one or more exception types" );
24866
6
            if (_res == NULL && PyErr_Occurred()) {
24867
6
                p->error_indicator = 1;
24868
6
                p->level--;
24869
6
                return NULL;
24870
6
            }
24871
0
            goto done;
24872
6
        }
24873
2.51k
        p->mark = _mark;
24874
2.51k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24875
2.51k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' (NEWLINE | ':')"));
24876
2.51k
    }
24877
0
    { // 'except' '*' expression 'as' expression ':' block
24878
2.51k
        if (p->error_indicator) {
24879
0
            p->level--;
24880
0
            return NULL;
24881
0
        }
24882
2.51k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' expression ':' block"));
24883
2.51k
        Token * _keyword;
24884
2.51k
        Token * _keyword_1;
24885
2.51k
        Token * _literal;
24886
2.51k
        Token * _literal_1;
24887
2.51k
        expr_ty a;
24888
2.51k
        asdl_stmt_seq* block_var;
24889
2.51k
        expr_ty expression_var;
24890
2.51k
        if (
24891
2.51k
            (_keyword = _PyPegen_expect_token(p, 686))  // token='except'
24892
905
            &&
24893
905
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
24894
78
            &&
24895
78
            (expression_var = expression_rule(p))  // expression
24896
61
            &&
24897
61
            (_keyword_1 = _PyPegen_expect_token(p, 689))  // token='as'
24898
11
            &&
24899
11
            (a = expression_rule(p))  // expression
24900
7
            &&
24901
7
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
24902
4
            &&
24903
4
            (block_var = block_rule(p))  // block
24904
2.51k
        )
24905
1
        {
24906
1
            D(fprintf(stderr, "%*c+ invalid_except_star_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression 'as' expression ':' block"));
24907
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use except* statement with %s" , _PyPegen_get_expr_name ( a ) );
24908
1
            if (_res == NULL && PyErr_Occurred()) {
24909
1
                p->error_indicator = 1;
24910
1
                p->level--;
24911
1
                return NULL;
24912
1
            }
24913
0
            goto done;
24914
1
        }
24915
2.51k
        p->mark = _mark;
24916
2.51k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24917
2.51k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression 'as' expression ':' block"));
24918
2.51k
    }
24919
2.51k
    _res = NULL;
24920
2.51k
  done:
24921
2.51k
    p->level--;
24922
2.51k
    return _res;
24923
2.51k
}
24924
24925
// invalid_finally_stmt: 'finally' ':' NEWLINE !INDENT
24926
static void *
24927
invalid_finally_stmt_rule(Parser *p)
24928
3.10k
{
24929
3.10k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24930
0
        _Pypegen_stack_overflow(p);
24931
0
    }
24932
3.10k
    if (p->error_indicator) {
24933
0
        p->level--;
24934
0
        return NULL;
24935
0
    }
24936
3.10k
    void * _res = NULL;
24937
3.10k
    int _mark = p->mark;
24938
3.10k
    { // 'finally' ':' NEWLINE !INDENT
24939
3.10k
        if (p->error_indicator) {
24940
0
            p->level--;
24941
0
            return NULL;
24942
0
        }
24943
3.10k
        D(fprintf(stderr, "%*c> invalid_finally_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
24944
3.10k
        Token * _literal;
24945
3.10k
        Token * a;
24946
3.10k
        Token * newline_var;
24947
3.10k
        if (
24948
3.10k
            (a = _PyPegen_expect_token(p, 682))  // token='finally'
24949
464
            &&
24950
464
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24951
463
            &&
24952
463
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24953
68
            &&
24954
68
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
24955
3.10k
        )
24956
1
        {
24957
1
            D(fprintf(stderr, "%*c+ invalid_finally_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
24958
1
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'finally' statement on line %d" , a -> lineno );
24959
1
            if (_res == NULL && PyErr_Occurred()) {
24960
1
                p->error_indicator = 1;
24961
1
                p->level--;
24962
1
                return NULL;
24963
1
            }
24964
0
            goto done;
24965
1
        }
24966
3.10k
        p->mark = _mark;
24967
3.10k
        D(fprintf(stderr, "%*c%s invalid_finally_stmt[%d-%d]: %s failed!\n", p->level, ' ',
24968
3.10k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
24969
3.10k
    }
24970
3.10k
    _res = NULL;
24971
3.10k
  done:
24972
3.10k
    p->level--;
24973
3.10k
    return _res;
24974
3.10k
}
24975
24976
// invalid_except_stmt_indent:
24977
//     | 'except' expression ['as' NAME] ':' NEWLINE !INDENT
24978
//     | 'except' ':' NEWLINE !INDENT
24979
static void *
24980
invalid_except_stmt_indent_rule(Parser *p)
24981
6.51k
{
24982
6.51k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
24983
0
        _Pypegen_stack_overflow(p);
24984
0
    }
24985
6.51k
    if (p->error_indicator) {
24986
0
        p->level--;
24987
0
        return NULL;
24988
0
    }
24989
6.51k
    void * _res = NULL;
24990
6.51k
    int _mark = p->mark;
24991
6.51k
    { // 'except' expression ['as' NAME] ':' NEWLINE !INDENT
24992
6.51k
        if (p->error_indicator) {
24993
0
            p->level--;
24994
0
            return NULL;
24995
0
        }
24996
6.51k
        D(fprintf(stderr, "%*c> invalid_except_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
24997
6.51k
        Token * _literal;
24998
6.51k
        void *_opt_var;
24999
6.51k
        UNUSED(_opt_var); // Silence compiler warnings
25000
6.51k
        Token * a;
25001
6.51k
        expr_ty expression_var;
25002
6.51k
        Token * newline_var;
25003
6.51k
        if (
25004
6.51k
            (a = _PyPegen_expect_token(p, 686))  // token='except'
25005
4.62k
            &&
25006
4.62k
            (expression_var = expression_rule(p))  // expression
25007
950
            &&
25008
950
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
25009
948
            &&
25010
948
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25011
540
            &&
25012
540
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25013
94
            &&
25014
94
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25015
6.51k
        )
25016
1
        {
25017
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"));
25018
1
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except' statement on line %d" , a -> lineno );
25019
1
            if (_res == NULL && PyErr_Occurred()) {
25020
1
                p->error_indicator = 1;
25021
1
                p->level--;
25022
1
                return NULL;
25023
1
            }
25024
0
            goto done;
25025
1
        }
25026
6.51k
        p->mark = _mark;
25027
6.51k
        D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
25028
6.51k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
25029
6.51k
    }
25030
0
    { // 'except' ':' NEWLINE !INDENT
25031
6.51k
        if (p->error_indicator) {
25032
3
            p->level--;
25033
3
            return NULL;
25034
3
        }
25035
6.51k
        D(fprintf(stderr, "%*c> invalid_except_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
25036
6.51k
        Token * _literal;
25037
6.51k
        Token * a;
25038
6.51k
        Token * newline_var;
25039
6.51k
        if (
25040
6.51k
            (a = _PyPegen_expect_token(p, 686))  // token='except'
25041
4.61k
            &&
25042
4.61k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25043
2.41k
            &&
25044
2.41k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25045
326
            &&
25046
326
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25047
6.51k
        )
25048
2
        {
25049
2
            D(fprintf(stderr, "%*c+ invalid_except_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
25050
2
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except' statement on line %d" , a -> lineno );
25051
2
            if (_res == NULL && PyErr_Occurred()) {
25052
2
                p->error_indicator = 1;
25053
2
                p->level--;
25054
2
                return NULL;
25055
2
            }
25056
0
            goto done;
25057
2
        }
25058
6.51k
        p->mark = _mark;
25059
6.51k
        D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
25060
6.51k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
25061
6.51k
    }
25062
6.51k
    _res = NULL;
25063
6.51k
  done:
25064
6.51k
    p->level--;
25065
6.51k
    return _res;
25066
6.51k
}
25067
25068
// invalid_except_star_stmt_indent:
25069
//     | 'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT
25070
static void *
25071
invalid_except_star_stmt_indent_rule(Parser *p)
25072
4.61k
{
25073
4.61k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25074
0
        _Pypegen_stack_overflow(p);
25075
0
    }
25076
4.61k
    if (p->error_indicator) {
25077
0
        p->level--;
25078
0
        return NULL;
25079
0
    }
25080
4.61k
    void * _res = NULL;
25081
4.61k
    int _mark = p->mark;
25082
4.61k
    { // 'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT
25083
4.61k
        if (p->error_indicator) {
25084
0
            p->level--;
25085
0
            return NULL;
25086
0
        }
25087
4.61k
        D(fprintf(stderr, "%*c> invalid_except_star_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT"));
25088
4.61k
        Token * _literal;
25089
4.61k
        Token * _literal_1;
25090
4.61k
        void *_opt_var;
25091
4.61k
        UNUSED(_opt_var); // Silence compiler warnings
25092
4.61k
        Token * a;
25093
4.61k
        expr_ty expression_var;
25094
4.61k
        Token * newline_var;
25095
4.61k
        if (
25096
4.61k
            (a = _PyPegen_expect_token(p, 686))  // token='except'
25097
3.00k
            &&
25098
3.00k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
25099
2.17k
            &&
25100
2.17k
            (expression_var = expression_rule(p))  // expression
25101
2.15k
            &&
25102
2.15k
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
25103
2.15k
            &&
25104
2.15k
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
25105
1.69k
            &&
25106
1.69k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25107
134
            &&
25108
134
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25109
4.61k
        )
25110
3
        {
25111
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"));
25112
3
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except*' statement on line %d" , a -> lineno );
25113
3
            if (_res == NULL && PyErr_Occurred()) {
25114
3
                p->error_indicator = 1;
25115
3
                p->level--;
25116
3
                return NULL;
25117
3
            }
25118
0
            goto done;
25119
3
        }
25120
4.61k
        p->mark = _mark;
25121
4.61k
        D(fprintf(stderr, "%*c%s invalid_except_star_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
25122
4.61k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT"));
25123
4.61k
    }
25124
4.61k
    _res = NULL;
25125
4.61k
  done:
25126
4.61k
    p->level--;
25127
4.61k
    return _res;
25128
4.61k
}
25129
25130
// invalid_match_stmt:
25131
//     | "match" subject_expr NEWLINE
25132
//     | "match" subject_expr ':' NEWLINE !INDENT
25133
static void *
25134
invalid_match_stmt_rule(Parser *p)
25135
21.4k
{
25136
21.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25137
0
        _Pypegen_stack_overflow(p);
25138
0
    }
25139
21.4k
    if (p->error_indicator) {
25140
0
        p->level--;
25141
0
        return NULL;
25142
0
    }
25143
21.4k
    void * _res = NULL;
25144
21.4k
    int _mark = p->mark;
25145
21.4k
    { // "match" subject_expr NEWLINE
25146
21.4k
        if (p->error_indicator) {
25147
0
            p->level--;
25148
0
            return NULL;
25149
0
        }
25150
21.4k
        D(fprintf(stderr, "%*c> invalid_match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr NEWLINE"));
25151
21.4k
        expr_ty _keyword;
25152
21.4k
        Token * newline_var;
25153
21.4k
        expr_ty subject_expr_var;
25154
21.4k
        if (
25155
21.4k
            (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
25156
1.27k
            &&
25157
1.27k
            (subject_expr_var = subject_expr_rule(p))  // subject_expr
25158
945
            &&
25159
945
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25160
21.4k
        )
25161
7
        {
25162
7
            D(fprintf(stderr, "%*c+ invalid_match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr NEWLINE"));
25163
7
            _res = CHECK_VERSION ( void* , 10 , "Pattern matching is" , RAISE_SYNTAX_ERROR ( "expected ':'" ) );
25164
7
            if (_res == NULL && PyErr_Occurred()) {
25165
7
                p->error_indicator = 1;
25166
7
                p->level--;
25167
7
                return NULL;
25168
7
            }
25169
0
            goto done;
25170
7
        }
25171
21.4k
        p->mark = _mark;
25172
21.4k
        D(fprintf(stderr, "%*c%s invalid_match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25173
21.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr NEWLINE"));
25174
21.4k
    }
25175
0
    { // "match" subject_expr ':' NEWLINE !INDENT
25176
21.4k
        if (p->error_indicator) {
25177
0
            p->level--;
25178
0
            return NULL;
25179
0
        }
25180
21.4k
        D(fprintf(stderr, "%*c> invalid_match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
25181
21.4k
        Token * _literal;
25182
21.4k
        expr_ty a;
25183
21.4k
        Token * newline_var;
25184
21.4k
        expr_ty subject;
25185
21.4k
        if (
25186
21.4k
            (a = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
25187
1.27k
            &&
25188
1.27k
            (subject = subject_expr_rule(p))  // subject_expr
25189
938
            &&
25190
938
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25191
665
            &&
25192
665
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25193
406
            &&
25194
406
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25195
21.4k
        )
25196
2
        {
25197
2
            D(fprintf(stderr, "%*c+ invalid_match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
25198
2
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'match' statement on line %d" , a -> lineno );
25199
2
            if (_res == NULL && PyErr_Occurred()) {
25200
2
                p->error_indicator = 1;
25201
2
                p->level--;
25202
2
                return NULL;
25203
2
            }
25204
0
            goto done;
25205
2
        }
25206
21.4k
        p->mark = _mark;
25207
21.4k
        D(fprintf(stderr, "%*c%s invalid_match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25208
21.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
25209
21.4k
    }
25210
21.4k
    _res = NULL;
25211
21.4k
  done:
25212
21.4k
    p->level--;
25213
21.4k
    return _res;
25214
21.4k
}
25215
25216
// invalid_case_block:
25217
//     | "case" patterns guard? NEWLINE
25218
//     | "case" patterns guard? ':' NEWLINE !INDENT
25219
static void *
25220
invalid_case_block_rule(Parser *p)
25221
2.06k
{
25222
2.06k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25223
0
        _Pypegen_stack_overflow(p);
25224
0
    }
25225
2.06k
    if (p->error_indicator) {
25226
0
        p->level--;
25227
0
        return NULL;
25228
0
    }
25229
2.06k
    void * _res = NULL;
25230
2.06k
    int _mark = p->mark;
25231
2.06k
    { // "case" patterns guard? NEWLINE
25232
2.06k
        if (p->error_indicator) {
25233
0
            p->level--;
25234
0
            return NULL;
25235
0
        }
25236
2.06k
        D(fprintf(stderr, "%*c> invalid_case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? NEWLINE"));
25237
2.06k
        expr_ty _keyword;
25238
2.06k
        void *_opt_var;
25239
2.06k
        UNUSED(_opt_var); // Silence compiler warnings
25240
2.06k
        Token * newline_var;
25241
2.06k
        pattern_ty patterns_var;
25242
2.06k
        if (
25243
2.06k
            (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
25244
1.89k
            &&
25245
1.89k
            (patterns_var = patterns_rule(p))  // patterns
25246
1.58k
            &&
25247
1.58k
            (_opt_var = guard_rule(p), !p->error_indicator)  // guard?
25248
1.58k
            &&
25249
1.58k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25250
2.06k
        )
25251
68
        {
25252
68
            D(fprintf(stderr, "%*c+ invalid_case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? NEWLINE"));
25253
68
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25254
68
            if (_res == NULL && PyErr_Occurred()) {
25255
68
                p->error_indicator = 1;
25256
68
                p->level--;
25257
68
                return NULL;
25258
68
            }
25259
0
            goto done;
25260
68
        }
25261
1.99k
        p->mark = _mark;
25262
1.99k
        D(fprintf(stderr, "%*c%s invalid_case_block[%d-%d]: %s failed!\n", p->level, ' ',
25263
1.99k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? NEWLINE"));
25264
1.99k
    }
25265
0
    { // "case" patterns guard? ':' NEWLINE !INDENT
25266
1.99k
        if (p->error_indicator) {
25267
53
            p->level--;
25268
53
            return NULL;
25269
53
        }
25270
1.94k
        D(fprintf(stderr, "%*c> invalid_case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
25271
1.94k
        Token * _literal;
25272
1.94k
        void *_opt_var;
25273
1.94k
        UNUSED(_opt_var); // Silence compiler warnings
25274
1.94k
        expr_ty a;
25275
1.94k
        Token * newline_var;
25276
1.94k
        pattern_ty patterns_var;
25277
1.94k
        if (
25278
1.94k
            (a = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
25279
1.76k
            &&
25280
1.76k
            (patterns_var = patterns_rule(p))  // patterns
25281
1.51k
            &&
25282
1.51k
            (_opt_var = guard_rule(p), !p->error_indicator)  // guard?
25283
1.51k
            &&
25284
1.51k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25285
1.40k
            &&
25286
1.40k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25287
102
            &&
25288
102
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25289
1.94k
        )
25290
10
        {
25291
10
            D(fprintf(stderr, "%*c+ invalid_case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
25292
10
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'case' statement on line %d" , a -> lineno );
25293
10
            if (_res == NULL && PyErr_Occurred()) {
25294
10
                p->error_indicator = 1;
25295
10
                p->level--;
25296
10
                return NULL;
25297
10
            }
25298
0
            goto done;
25299
10
        }
25300
1.93k
        p->mark = _mark;
25301
1.93k
        D(fprintf(stderr, "%*c%s invalid_case_block[%d-%d]: %s failed!\n", p->level, ' ',
25302
1.93k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
25303
1.93k
    }
25304
1.93k
    _res = NULL;
25305
1.93k
  done:
25306
1.93k
    p->level--;
25307
1.93k
    return _res;
25308
1.93k
}
25309
25310
// invalid_as_pattern: or_pattern 'as' "_" | or_pattern 'as' expression
25311
static void *
25312
invalid_as_pattern_rule(Parser *p)
25313
41.3k
{
25314
41.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25315
0
        _Pypegen_stack_overflow(p);
25316
0
    }
25317
41.3k
    if (p->error_indicator) {
25318
0
        p->level--;
25319
0
        return NULL;
25320
0
    }
25321
41.3k
    void * _res = NULL;
25322
41.3k
    int _mark = p->mark;
25323
41.3k
    { // or_pattern 'as' "_"
25324
41.3k
        if (p->error_indicator) {
25325
0
            p->level--;
25326
0
            return NULL;
25327
0
        }
25328
41.3k
        D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\""));
25329
41.3k
        Token * _keyword;
25330
41.3k
        expr_ty a;
25331
41.3k
        pattern_ty or_pattern_var;
25332
41.3k
        if (
25333
41.3k
            (or_pattern_var = or_pattern_rule(p))  // or_pattern
25334
25.8k
            &&
25335
25.8k
            (_keyword = _PyPegen_expect_token(p, 689))  // token='as'
25336
17
            &&
25337
17
            (a = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
25338
41.3k
        )
25339
1
        {
25340
1
            D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\""));
25341
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use '_' as a target" );
25342
1
            if (_res == NULL && PyErr_Occurred()) {
25343
1
                p->error_indicator = 1;
25344
1
                p->level--;
25345
1
                return NULL;
25346
1
            }
25347
0
            goto done;
25348
1
        }
25349
41.3k
        p->mark = _mark;
25350
41.3k
        D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25351
41.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' \"_\""));
25352
41.3k
    }
25353
0
    { // or_pattern 'as' expression
25354
41.3k
        if (p->error_indicator) {
25355
0
            p->level--;
25356
0
            return NULL;
25357
0
        }
25358
41.3k
        D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' expression"));
25359
41.3k
        Token * _keyword;
25360
41.3k
        expr_ty a;
25361
41.3k
        pattern_ty or_pattern_var;
25362
41.3k
        if (
25363
41.3k
            (or_pattern_var = or_pattern_rule(p))  // or_pattern
25364
25.8k
            &&
25365
25.8k
            (_keyword = _PyPegen_expect_token(p, 689))  // token='as'
25366
16
            &&
25367
16
            (a = expression_rule(p))  // expression
25368
41.3k
        )
25369
1
        {
25370
1
            D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' expression"));
25371
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use %s as pattern target" , _PyPegen_get_expr_name ( a ) );
25372
1
            if (_res == NULL && PyErr_Occurred()) {
25373
1
                p->error_indicator = 1;
25374
1
                p->level--;
25375
1
                return NULL;
25376
1
            }
25377
0
            goto done;
25378
1
        }
25379
41.3k
        p->mark = _mark;
25380
41.3k
        D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25381
41.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' expression"));
25382
41.3k
    }
25383
41.3k
    _res = NULL;
25384
41.3k
  done:
25385
41.3k
    p->level--;
25386
41.3k
    return _res;
25387
41.3k
}
25388
25389
// invalid_class_pattern: name_or_attr '(' invalid_class_argument_pattern
25390
static void *
25391
invalid_class_pattern_rule(Parser *p)
25392
7.57k
{
25393
7.57k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25394
0
        _Pypegen_stack_overflow(p);
25395
0
    }
25396
7.57k
    if (p->error_indicator) {
25397
0
        p->level--;
25398
0
        return NULL;
25399
0
    }
25400
7.57k
    void * _res = NULL;
25401
7.57k
    int _mark = p->mark;
25402
7.57k
    { // name_or_attr '(' invalid_class_argument_pattern
25403
7.57k
        if (p->error_indicator) {
25404
0
            p->level--;
25405
0
            return NULL;
25406
0
        }
25407
7.57k
        D(fprintf(stderr, "%*c> invalid_class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
25408
7.57k
        Token * _literal;
25409
7.57k
        asdl_pattern_seq* a;
25410
7.57k
        expr_ty name_or_attr_var;
25411
7.57k
        if (
25412
7.57k
            (name_or_attr_var = name_or_attr_rule(p))  // name_or_attr
25413
4.85k
            &&
25414
4.85k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
25415
3.12k
            &&
25416
3.12k
            (a = invalid_class_argument_pattern_rule(p))  // invalid_class_argument_pattern
25417
7.57k
        )
25418
531
        {
25419
531
            D(fprintf(stderr, "%*c+ invalid_class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
25420
531
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( PyPegen_first_item ( a , pattern_ty ) , PyPegen_last_item ( a , pattern_ty ) , "positional patterns follow keyword patterns" );
25421
531
            if (_res == NULL && PyErr_Occurred()) {
25422
531
                p->error_indicator = 1;
25423
531
                p->level--;
25424
531
                return NULL;
25425
531
            }
25426
0
            goto done;
25427
531
        }
25428
7.04k
        p->mark = _mark;
25429
7.04k
        D(fprintf(stderr, "%*c%s invalid_class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25430
7.04k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
25431
7.04k
    }
25432
7.04k
    _res = NULL;
25433
7.04k
  done:
25434
7.04k
    p->level--;
25435
7.04k
    return _res;
25436
7.04k
}
25437
25438
// invalid_class_argument_pattern:
25439
//     | [positional_patterns ','] keyword_patterns ',' positional_patterns
25440
static asdl_pattern_seq*
25441
invalid_class_argument_pattern_rule(Parser *p)
25442
3.12k
{
25443
3.12k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25444
0
        _Pypegen_stack_overflow(p);
25445
0
    }
25446
3.12k
    if (p->error_indicator) {
25447
0
        p->level--;
25448
0
        return NULL;
25449
0
    }
25450
3.12k
    asdl_pattern_seq* _res = NULL;
25451
3.12k
    int _mark = p->mark;
25452
3.12k
    { // [positional_patterns ','] keyword_patterns ',' positional_patterns
25453
3.12k
        if (p->error_indicator) {
25454
0
            p->level--;
25455
0
            return NULL;
25456
0
        }
25457
3.12k
        D(fprintf(stderr, "%*c> invalid_class_argument_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
25458
3.12k
        Token * _literal;
25459
3.12k
        void *_opt_var;
25460
3.12k
        UNUSED(_opt_var); // Silence compiler warnings
25461
3.12k
        asdl_pattern_seq* a;
25462
3.12k
        asdl_seq* keyword_patterns_var;
25463
3.12k
        if (
25464
3.12k
            (_opt_var = _tmp_147_rule(p), !p->error_indicator)  // [positional_patterns ',']
25465
3.12k
            &&
25466
3.12k
            (keyword_patterns_var = keyword_patterns_rule(p))  // keyword_patterns
25467
1.30k
            &&
25468
1.30k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
25469
946
            &&
25470
946
            (a = positional_patterns_rule(p))  // positional_patterns
25471
3.12k
        )
25472
531
        {
25473
531
            D(fprintf(stderr, "%*c+ invalid_class_argument_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
25474
531
            _res = a;
25475
531
            if (_res == NULL && PyErr_Occurred()) {
25476
0
                p->error_indicator = 1;
25477
0
                p->level--;
25478
0
                return NULL;
25479
0
            }
25480
531
            goto done;
25481
531
        }
25482
2.59k
        p->mark = _mark;
25483
2.59k
        D(fprintf(stderr, "%*c%s invalid_class_argument_pattern[%d-%d]: %s failed!\n", p->level, ' ',
25484
2.59k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
25485
2.59k
    }
25486
2.59k
    _res = NULL;
25487
3.12k
  done:
25488
3.12k
    p->level--;
25489
3.12k
    return _res;
25490
2.59k
}
25491
25492
// invalid_if_stmt:
25493
//     | 'if' named_expression NEWLINE
25494
//     | 'if' named_expression ':' NEWLINE !INDENT
25495
static void *
25496
invalid_if_stmt_rule(Parser *p)
25497
742
{
25498
742
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25499
0
        _Pypegen_stack_overflow(p);
25500
0
    }
25501
742
    if (p->error_indicator) {
25502
0
        p->level--;
25503
0
        return NULL;
25504
0
    }
25505
742
    void * _res = NULL;
25506
742
    int _mark = p->mark;
25507
742
    { // 'if' named_expression NEWLINE
25508
742
        if (p->error_indicator) {
25509
0
            p->level--;
25510
0
            return NULL;
25511
0
        }
25512
742
        D(fprintf(stderr, "%*c> invalid_if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression NEWLINE"));
25513
742
        Token * _keyword;
25514
742
        expr_ty named_expression_var;
25515
742
        Token * newline_var;
25516
742
        if (
25517
742
            (_keyword = _PyPegen_expect_token(p, 691))  // token='if'
25518
742
            &&
25519
742
            (named_expression_var = named_expression_rule(p))  // named_expression
25520
733
            &&
25521
733
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25522
742
        )
25523
4
        {
25524
4
            D(fprintf(stderr, "%*c+ invalid_if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression NEWLINE"));
25525
4
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25526
4
            if (_res == NULL && PyErr_Occurred()) {
25527
4
                p->error_indicator = 1;
25528
4
                p->level--;
25529
4
                return NULL;
25530
4
            }
25531
0
            goto done;
25532
4
        }
25533
738
        p->mark = _mark;
25534
738
        D(fprintf(stderr, "%*c%s invalid_if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25535
738
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression NEWLINE"));
25536
738
    }
25537
0
    { // 'if' named_expression ':' NEWLINE !INDENT
25538
738
        if (p->error_indicator) {
25539
1
            p->level--;
25540
1
            return NULL;
25541
1
        }
25542
737
        D(fprintf(stderr, "%*c> invalid_if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
25543
737
        Token * _literal;
25544
737
        Token * a;
25545
737
        expr_ty a_1;
25546
737
        Token * newline_var;
25547
737
        if (
25548
737
            (a = _PyPegen_expect_token(p, 691))  // token='if'
25549
737
            &&
25550
737
            (a_1 = named_expression_rule(p))  // named_expression
25551
729
            &&
25552
729
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25553
727
            &&
25554
727
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25555
108
            &&
25556
108
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25557
737
        )
25558
3
        {
25559
3
            D(fprintf(stderr, "%*c+ invalid_if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
25560
3
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'if' statement on line %d" , a -> lineno );
25561
3
            if (_res == NULL && PyErr_Occurred()) {
25562
3
                p->error_indicator = 1;
25563
3
                p->level--;
25564
3
                return NULL;
25565
3
            }
25566
0
            goto done;
25567
3
        }
25568
734
        p->mark = _mark;
25569
734
        D(fprintf(stderr, "%*c%s invalid_if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25570
734
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
25571
734
    }
25572
734
    _res = NULL;
25573
734
  done:
25574
734
    p->level--;
25575
734
    return _res;
25576
734
}
25577
25578
// invalid_elif_stmt:
25579
//     | 'elif' named_expression NEWLINE
25580
//     | 'elif' named_expression ':' NEWLINE !INDENT
25581
static void *
25582
invalid_elif_stmt_rule(Parser *p)
25583
878
{
25584
878
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25585
0
        _Pypegen_stack_overflow(p);
25586
0
    }
25587
878
    if (p->error_indicator) {
25588
0
        p->level--;
25589
0
        return NULL;
25590
0
    }
25591
878
    void * _res = NULL;
25592
878
    int _mark = p->mark;
25593
878
    { // 'elif' named_expression NEWLINE
25594
878
        if (p->error_indicator) {
25595
0
            p->level--;
25596
0
            return NULL;
25597
0
        }
25598
878
        D(fprintf(stderr, "%*c> invalid_elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression NEWLINE"));
25599
878
        Token * _keyword;
25600
878
        expr_ty named_expression_var;
25601
878
        Token * newline_var;
25602
878
        if (
25603
878
            (_keyword = _PyPegen_expect_token(p, 696))  // token='elif'
25604
211
            &&
25605
211
            (named_expression_var = named_expression_rule(p))  // named_expression
25606
209
            &&
25607
209
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25608
878
        )
25609
1
        {
25610
1
            D(fprintf(stderr, "%*c+ invalid_elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression NEWLINE"));
25611
1
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25612
1
            if (_res == NULL && PyErr_Occurred()) {
25613
1
                p->error_indicator = 1;
25614
1
                p->level--;
25615
1
                return NULL;
25616
1
            }
25617
0
            goto done;
25618
1
        }
25619
877
        p->mark = _mark;
25620
877
        D(fprintf(stderr, "%*c%s invalid_elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25621
877
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression NEWLINE"));
25622
877
    }
25623
0
    { // 'elif' named_expression ':' NEWLINE !INDENT
25624
877
        if (p->error_indicator) {
25625
1
            p->level--;
25626
1
            return NULL;
25627
1
        }
25628
876
        D(fprintf(stderr, "%*c> invalid_elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
25629
876
        Token * _literal;
25630
876
        Token * a;
25631
876
        expr_ty named_expression_var;
25632
876
        Token * newline_var;
25633
876
        if (
25634
876
            (a = _PyPegen_expect_token(p, 696))  // token='elif'
25635
209
            &&
25636
209
            (named_expression_var = named_expression_rule(p))  // named_expression
25637
208
            &&
25638
208
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25639
207
            &&
25640
207
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25641
42
            &&
25642
42
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25643
876
        )
25644
6
        {
25645
6
            D(fprintf(stderr, "%*c+ invalid_elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
25646
6
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'elif' statement on line %d" , a -> lineno );
25647
6
            if (_res == NULL && PyErr_Occurred()) {
25648
6
                p->error_indicator = 1;
25649
6
                p->level--;
25650
6
                return NULL;
25651
6
            }
25652
0
            goto done;
25653
6
        }
25654
870
        p->mark = _mark;
25655
870
        D(fprintf(stderr, "%*c%s invalid_elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25656
870
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
25657
870
    }
25658
870
    _res = NULL;
25659
870
  done:
25660
870
    p->level--;
25661
870
    return _res;
25662
870
}
25663
25664
// invalid_else_stmt: 'else' ':' NEWLINE !INDENT | 'else' ':' block 'elif'
25665
static void *
25666
invalid_else_stmt_rule(Parser *p)
25667
2.84k
{
25668
2.84k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25669
0
        _Pypegen_stack_overflow(p);
25670
0
    }
25671
2.84k
    if (p->error_indicator) {
25672
0
        p->level--;
25673
0
        return NULL;
25674
0
    }
25675
2.84k
    void * _res = NULL;
25676
2.84k
    int _mark = p->mark;
25677
2.84k
    { // 'else' ':' NEWLINE !INDENT
25678
2.84k
        if (p->error_indicator) {
25679
0
            p->level--;
25680
0
            return NULL;
25681
0
        }
25682
2.84k
        D(fprintf(stderr, "%*c> invalid_else_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
25683
2.84k
        Token * _literal;
25684
2.84k
        Token * a;
25685
2.84k
        Token * newline_var;
25686
2.84k
        if (
25687
2.84k
            (a = _PyPegen_expect_token(p, 695))  // token='else'
25688
186
            &&
25689
186
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25690
186
            &&
25691
186
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25692
48
            &&
25693
48
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25694
2.84k
        )
25695
3
        {
25696
3
            D(fprintf(stderr, "%*c+ invalid_else_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
25697
3
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'else' statement on line %d" , a -> lineno );
25698
3
            if (_res == NULL && PyErr_Occurred()) {
25699
3
                p->error_indicator = 1;
25700
3
                p->level--;
25701
3
                return NULL;
25702
3
            }
25703
0
            goto done;
25704
3
        }
25705
2.83k
        p->mark = _mark;
25706
2.83k
        D(fprintf(stderr, "%*c%s invalid_else_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25707
2.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
25708
2.83k
    }
25709
0
    { // 'else' ':' block 'elif'
25710
2.83k
        if (p->error_indicator) {
25711
1
            p->level--;
25712
1
            return NULL;
25713
1
        }
25714
2.83k
        D(fprintf(stderr, "%*c> invalid_else_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' ':' block 'elif'"));
25715
2.83k
        Token * _keyword;
25716
2.83k
        Token * _keyword_1;
25717
2.83k
        Token * _literal;
25718
2.83k
        asdl_stmt_seq* block_var;
25719
2.83k
        if (
25720
2.83k
            (_keyword = _PyPegen_expect_token(p, 695))  // token='else'
25721
183
            &&
25722
183
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25723
183
            &&
25724
183
            (block_var = block_rule(p))  // block
25725
173
            &&
25726
173
            (_keyword_1 = _PyPegen_expect_token(p, 696))  // token='elif'
25727
2.83k
        )
25728
1
        {
25729
1
            D(fprintf(stderr, "%*c+ invalid_else_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' ':' block 'elif'"));
25730
1
            _res = RAISE_SYNTAX_ERROR ( "'elif' block follows an 'else' block" );
25731
1
            if (_res == NULL && PyErr_Occurred()) {
25732
1
                p->error_indicator = 1;
25733
1
                p->level--;
25734
1
                return NULL;
25735
1
            }
25736
0
            goto done;
25737
1
        }
25738
2.83k
        p->mark = _mark;
25739
2.83k
        D(fprintf(stderr, "%*c%s invalid_else_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25740
2.83k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' ':' block 'elif'"));
25741
2.83k
    }
25742
2.83k
    _res = NULL;
25743
2.83k
  done:
25744
2.83k
    p->level--;
25745
2.83k
    return _res;
25746
2.83k
}
25747
25748
// invalid_while_stmt:
25749
//     | 'while' named_expression NEWLINE
25750
//     | 'while' named_expression ':' NEWLINE !INDENT
25751
static void *
25752
invalid_while_stmt_rule(Parser *p)
25753
376
{
25754
376
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25755
0
        _Pypegen_stack_overflow(p);
25756
0
    }
25757
376
    if (p->error_indicator) {
25758
0
        p->level--;
25759
0
        return NULL;
25760
0
    }
25761
376
    void * _res = NULL;
25762
376
    int _mark = p->mark;
25763
376
    { // 'while' named_expression NEWLINE
25764
376
        if (p->error_indicator) {
25765
0
            p->level--;
25766
0
            return NULL;
25767
0
        }
25768
376
        D(fprintf(stderr, "%*c> invalid_while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression NEWLINE"));
25769
376
        Token * _keyword;
25770
376
        expr_ty named_expression_var;
25771
376
        Token * newline_var;
25772
376
        if (
25773
376
            (_keyword = _PyPegen_expect_token(p, 698))  // token='while'
25774
376
            &&
25775
376
            (named_expression_var = named_expression_rule(p))  // named_expression
25776
372
            &&
25777
372
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25778
376
        )
25779
4
        {
25780
4
            D(fprintf(stderr, "%*c+ invalid_while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression NEWLINE"));
25781
4
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25782
4
            if (_res == NULL && PyErr_Occurred()) {
25783
4
                p->error_indicator = 1;
25784
4
                p->level--;
25785
4
                return NULL;
25786
4
            }
25787
0
            goto done;
25788
4
        }
25789
372
        p->mark = _mark;
25790
372
        D(fprintf(stderr, "%*c%s invalid_while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25791
372
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression NEWLINE"));
25792
372
    }
25793
0
    { // 'while' named_expression ':' NEWLINE !INDENT
25794
372
        if (p->error_indicator) {
25795
1
            p->level--;
25796
1
            return NULL;
25797
1
        }
25798
371
        D(fprintf(stderr, "%*c> invalid_while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
25799
371
        Token * _literal;
25800
371
        Token * a;
25801
371
        expr_ty named_expression_var;
25802
371
        Token * newline_var;
25803
371
        if (
25804
371
            (a = _PyPegen_expect_token(p, 698))  // token='while'
25805
371
            &&
25806
371
            (named_expression_var = named_expression_rule(p))  // named_expression
25807
368
            &&
25808
368
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25809
365
            &&
25810
365
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25811
75
            &&
25812
75
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25813
371
        )
25814
2
        {
25815
2
            D(fprintf(stderr, "%*c+ invalid_while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
25816
2
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'while' statement on line %d" , a -> lineno );
25817
2
            if (_res == NULL && PyErr_Occurred()) {
25818
2
                p->error_indicator = 1;
25819
2
                p->level--;
25820
2
                return NULL;
25821
2
            }
25822
0
            goto done;
25823
2
        }
25824
369
        p->mark = _mark;
25825
369
        D(fprintf(stderr, "%*c%s invalid_while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25826
369
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
25827
369
    }
25828
369
    _res = NULL;
25829
369
  done:
25830
369
    p->level--;
25831
369
    return _res;
25832
369
}
25833
25834
// invalid_for_stmt:
25835
//     | 'async'? 'for' star_targets 'in' star_expressions NEWLINE
25836
//     | 'async'? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT
25837
static void *
25838
invalid_for_stmt_rule(Parser *p)
25839
650
{
25840
650
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25841
0
        _Pypegen_stack_overflow(p);
25842
0
    }
25843
650
    if (p->error_indicator) {
25844
0
        p->level--;
25845
0
        return NULL;
25846
0
    }
25847
650
    void * _res = NULL;
25848
650
    int _mark = p->mark;
25849
650
    { // 'async'? 'for' star_targets 'in' star_expressions NEWLINE
25850
650
        if (p->error_indicator) {
25851
0
            p->level--;
25852
0
            return NULL;
25853
0
        }
25854
650
        D(fprintf(stderr, "%*c> invalid_for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions NEWLINE"));
25855
650
        Token * _keyword;
25856
650
        Token * _keyword_1;
25857
650
        void *_opt_var;
25858
650
        UNUSED(_opt_var); // Silence compiler warnings
25859
650
        Token * newline_var;
25860
650
        expr_ty star_expressions_var;
25861
650
        expr_ty star_targets_var;
25862
650
        if (
25863
650
            (_opt_var = _PyPegen_expect_token(p, 707), !p->error_indicator)  // 'async'?
25864
650
            &&
25865
650
            (_keyword = _PyPegen_expect_token(p, 703))  // token='for'
25866
602
            &&
25867
602
            (star_targets_var = star_targets_rule(p))  // star_targets
25868
581
            &&
25869
581
            (_keyword_1 = _PyPegen_expect_token(p, 704))  // token='in'
25870
567
            &&
25871
567
            (star_expressions_var = star_expressions_rule(p))  // star_expressions
25872
563
            &&
25873
563
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25874
650
        )
25875
3
        {
25876
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"));
25877
3
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
25878
3
            if (_res == NULL && PyErr_Occurred()) {
25879
3
                p->error_indicator = 1;
25880
3
                p->level--;
25881
3
                return NULL;
25882
3
            }
25883
0
            goto done;
25884
3
        }
25885
647
        p->mark = _mark;
25886
647
        D(fprintf(stderr, "%*c%s invalid_for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25887
647
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions NEWLINE"));
25888
647
    }
25889
0
    { // 'async'? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT
25890
647
        if (p->error_indicator) {
25891
5
            p->level--;
25892
5
            return NULL;
25893
5
        }
25894
642
        D(fprintf(stderr, "%*c> invalid_for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT"));
25895
642
        Token * _keyword;
25896
642
        Token * _literal;
25897
642
        void *_opt_var;
25898
642
        UNUSED(_opt_var); // Silence compiler warnings
25899
642
        Token * a;
25900
642
        Token * newline_var;
25901
642
        expr_ty star_expressions_var;
25902
642
        expr_ty star_targets_var;
25903
642
        if (
25904
642
            (_opt_var = _PyPegen_expect_token(p, 707), !p->error_indicator)  // 'async'?
25905
642
            &&
25906
642
            (a = _PyPegen_expect_token(p, 703))  // token='for'
25907
594
            &&
25908
594
            (star_targets_var = star_targets_rule(p))  // star_targets
25909
578
            &&
25910
578
            (_keyword = _PyPegen_expect_token(p, 704))  // token='in'
25911
564
            &&
25912
564
            (star_expressions_var = star_expressions_rule(p))  // star_expressions
25913
560
            &&
25914
560
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
25915
558
            &&
25916
558
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25917
51
            &&
25918
51
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25919
642
        )
25920
4
        {
25921
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"));
25922
4
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'for' statement on line %d" , a -> lineno );
25923
4
            if (_res == NULL && PyErr_Occurred()) {
25924
4
                p->error_indicator = 1;
25925
4
                p->level--;
25926
4
                return NULL;
25927
4
            }
25928
0
            goto done;
25929
4
        }
25930
638
        p->mark = _mark;
25931
638
        D(fprintf(stderr, "%*c%s invalid_for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
25932
638
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT"));
25933
638
    }
25934
638
    _res = NULL;
25935
638
  done:
25936
638
    p->level--;
25937
638
    return _res;
25938
638
}
25939
25940
// invalid_def_raw:
25941
//     | 'async'? 'def' NAME type_params? '(' params? ')' ['->' expression] ':' NEWLINE !INDENT
25942
//     | 'async'? 'def' NAME type_params? &&'(' params? ')' ['->' expression] &&':' func_type_comment? block
25943
static void *
25944
invalid_def_raw_rule(Parser *p)
25945
3.91k
{
25946
3.91k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
25947
0
        _Pypegen_stack_overflow(p);
25948
0
    }
25949
3.91k
    if (p->error_indicator) {
25950
0
        p->level--;
25951
0
        return NULL;
25952
0
    }
25953
3.91k
    void * _res = NULL;
25954
3.91k
    int _mark = p->mark;
25955
3.91k
    { // 'async'? 'def' NAME type_params? '(' params? ')' ['->' expression] ':' NEWLINE !INDENT
25956
3.91k
        if (p->error_indicator) {
25957
0
            p->level--;
25958
0
            return NULL;
25959
0
        }
25960
3.91k
        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"));
25961
3.91k
        Token * _literal;
25962
3.91k
        Token * _literal_1;
25963
3.91k
        Token * _literal_2;
25964
3.91k
        void *_opt_var;
25965
3.91k
        UNUSED(_opt_var); // Silence compiler warnings
25966
3.91k
        void *_opt_var_1;
25967
3.91k
        UNUSED(_opt_var_1); // Silence compiler warnings
25968
3.91k
        void *_opt_var_2;
25969
3.91k
        UNUSED(_opt_var_2); // Silence compiler warnings
25970
3.91k
        void *_opt_var_3;
25971
3.91k
        UNUSED(_opt_var_3); // Silence compiler warnings
25972
3.91k
        Token * a;
25973
3.91k
        expr_ty name_var;
25974
3.91k
        Token * newline_var;
25975
3.91k
        if (
25976
3.91k
            (_opt_var = _PyPegen_expect_token(p, 707), !p->error_indicator)  // 'async'?
25977
3.91k
            &&
25978
3.91k
            (a = _PyPegen_expect_token(p, 708))  // token='def'
25979
2.56k
            &&
25980
2.56k
            (name_var = _PyPegen_name_token(p))  // NAME
25981
2.55k
            &&
25982
2.55k
            (_opt_var_1 = type_params_rule(p), !p->error_indicator)  // type_params?
25983
2.54k
            &&
25984
2.54k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
25985
2.48k
            &&
25986
2.48k
            (_opt_var_2 = params_rule(p), !p->error_indicator)  // params?
25987
2.43k
            &&
25988
2.43k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
25989
2.30k
            &&
25990
2.30k
            (_opt_var_3 = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
25991
2.30k
            &&
25992
2.30k
            (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
25993
2.24k
            &&
25994
2.24k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25995
175
            &&
25996
175
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
25997
3.91k
        )
25998
24
        {
25999
24
            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"));
26000
24
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after function definition on line %d" , a -> lineno );
26001
24
            if (_res == NULL && PyErr_Occurred()) {
26002
24
                p->error_indicator = 1;
26003
24
                p->level--;
26004
24
                return NULL;
26005
24
            }
26006
0
            goto done;
26007
24
        }
26008
3.89k
        p->mark = _mark;
26009
3.89k
        D(fprintf(stderr, "%*c%s invalid_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
26010
3.89k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'def' NAME type_params? '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
26011
3.89k
    }
26012
0
    { // 'async'? 'def' NAME type_params? &&'(' params? ')' ['->' expression] &&':' func_type_comment? block
26013
3.89k
        if (p->error_indicator) {
26014
57
            p->level--;
26015
57
            return NULL;
26016
57
        }
26017
3.83k
        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"));
26018
3.83k
        Token * _keyword;
26019
3.83k
        Token * _literal;
26020
3.83k
        Token * _literal_1;
26021
3.83k
        Token * _literal_2;
26022
3.83k
        void *_opt_var;
26023
3.83k
        UNUSED(_opt_var); // Silence compiler warnings
26024
3.83k
        void *_opt_var_1;
26025
3.83k
        UNUSED(_opt_var_1); // Silence compiler warnings
26026
3.83k
        void *_opt_var_2;
26027
3.83k
        UNUSED(_opt_var_2); // Silence compiler warnings
26028
3.83k
        void *_opt_var_3;
26029
3.83k
        UNUSED(_opt_var_3); // Silence compiler warnings
26030
3.83k
        void *_opt_var_4;
26031
3.83k
        UNUSED(_opt_var_4); // Silence compiler warnings
26032
3.83k
        asdl_stmt_seq* block_var;
26033
3.83k
        expr_ty name_var;
26034
3.83k
        if (
26035
3.83k
            (_opt_var = _PyPegen_expect_token(p, 707), !p->error_indicator)  // 'async'?
26036
3.83k
            &&
26037
3.83k
            (_keyword = _PyPegen_expect_token(p, 708))  // token='def'
26038
2.48k
            &&
26039
2.48k
            (name_var = _PyPegen_name_token(p))  // NAME
26040
2.47k
            &&
26041
2.47k
            (_opt_var_1 = type_params_rule(p), !p->error_indicator)  // type_params?
26042
2.47k
            &&
26043
2.47k
            (_literal = _PyPegen_expect_forced_token(p, 7, "("))  // forced_token='('
26044
2.41k
            &&
26045
2.41k
            (_opt_var_2 = params_rule(p), !p->error_indicator)  // params?
26046
2.41k
            &&
26047
2.41k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
26048
2.27k
            &&
26049
2.27k
            (_opt_var_3 = _tmp_26_rule(p), !p->error_indicator)  // ['->' expression]
26050
2.27k
            &&
26051
2.27k
            (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
26052
2.21k
            &&
26053
2.21k
            (_opt_var_4 = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
26054
2.21k
            &&
26055
2.21k
            (block_var = block_rule(p))  // block
26056
3.83k
        )
26057
2.12k
        {
26058
2.12k
            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"));
26059
2.12k
            _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);
26060
2.12k
            goto done;
26061
2.12k
        }
26062
1.71k
        p->mark = _mark;
26063
1.71k
        D(fprintf(stderr, "%*c%s invalid_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
26064
1.71k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'? 'def' NAME type_params? &&'(' params? ')' ['->' expression] &&':' func_type_comment? block"));
26065
1.71k
    }
26066
1.71k
    _res = NULL;
26067
3.83k
  done:
26068
3.83k
    p->level--;
26069
3.83k
    return _res;
26070
1.71k
}
26071
26072
// invalid_class_def_raw:
26073
//     | 'class' NAME type_params? ['(' arguments? ')'] NEWLINE
26074
//     | 'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT
26075
static void *
26076
invalid_class_def_raw_rule(Parser *p)
26077
1.21k
{
26078
1.21k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26079
0
        _Pypegen_stack_overflow(p);
26080
0
    }
26081
1.21k
    if (p->error_indicator) {
26082
0
        p->level--;
26083
0
        return NULL;
26084
0
    }
26085
1.21k
    void * _res = NULL;
26086
1.21k
    int _mark = p->mark;
26087
1.21k
    { // 'class' NAME type_params? ['(' arguments? ')'] NEWLINE
26088
1.21k
        if (p->error_indicator) {
26089
0
            p->level--;
26090
0
            return NULL;
26091
0
        }
26092
1.21k
        D(fprintf(stderr, "%*c> invalid_class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] NEWLINE"));
26093
1.21k
        Token * _keyword;
26094
1.21k
        void *_opt_var;
26095
1.21k
        UNUSED(_opt_var); // Silence compiler warnings
26096
1.21k
        void *_opt_var_1;
26097
1.21k
        UNUSED(_opt_var_1); // Silence compiler warnings
26098
1.21k
        expr_ty name_var;
26099
1.21k
        Token * newline_var;
26100
1.21k
        if (
26101
1.21k
            (_keyword = _PyPegen_expect_token(p, 710))  // token='class'
26102
1.00k
            &&
26103
1.00k
            (name_var = _PyPegen_name_token(p))  // NAME
26104
999
            &&
26105
999
            (_opt_var = type_params_rule(p), !p->error_indicator)  // type_params?
26106
997
            &&
26107
997
            (_opt_var_1 = _tmp_25_rule(p), !p->error_indicator)  // ['(' arguments? ')']
26108
996
            &&
26109
996
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
26110
1.21k
        )
26111
8
        {
26112
8
            D(fprintf(stderr, "%*c+ invalid_class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] NEWLINE"));
26113
8
            _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
26114
8
            if (_res == NULL && PyErr_Occurred()) {
26115
8
                p->error_indicator = 1;
26116
8
                p->level--;
26117
8
                return NULL;
26118
8
            }
26119
0
            goto done;
26120
8
        }
26121
1.20k
        p->mark = _mark;
26122
1.20k
        D(fprintf(stderr, "%*c%s invalid_class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
26123
1.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] NEWLINE"));
26124
1.20k
    }
26125
0
    { // 'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT
26126
1.20k
        if (p->error_indicator) {
26127
3
            p->level--;
26128
3
            return NULL;
26129
3
        }
26130
1.19k
        D(fprintf(stderr, "%*c> invalid_class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT"));
26131
1.19k
        Token * _literal;
26132
1.19k
        void *_opt_var;
26133
1.19k
        UNUSED(_opt_var); // Silence compiler warnings
26134
1.19k
        void *_opt_var_1;
26135
1.19k
        UNUSED(_opt_var_1); // Silence compiler warnings
26136
1.19k
        Token * a;
26137
1.19k
        expr_ty name_var;
26138
1.19k
        Token * newline_var;
26139
1.19k
        if (
26140
1.19k
            (a = _PyPegen_expect_token(p, 710))  // token='class'
26141
996
            &&
26142
996
            (name_var = _PyPegen_name_token(p))  // NAME
26143
988
            &&
26144
988
            (_opt_var = type_params_rule(p), !p->error_indicator)  // type_params?
26145
988
            &&
26146
988
            (_opt_var_1 = _tmp_25_rule(p), !p->error_indicator)  // ['(' arguments? ')']
26147
988
            &&
26148
988
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
26149
965
            &&
26150
965
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
26151
114
            &&
26152
114
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
26153
1.19k
        )
26154
6
        {
26155
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"));
26156
6
            _res = RAISE_INDENTATION_ERROR ( "expected an indented block after class definition on line %d" , a -> lineno );
26157
6
            if (_res == NULL && PyErr_Occurred()) {
26158
6
                p->error_indicator = 1;
26159
6
                p->level--;
26160
6
                return NULL;
26161
6
            }
26162
0
            goto done;
26163
6
        }
26164
1.19k
        p->mark = _mark;
26165
1.19k
        D(fprintf(stderr, "%*c%s invalid_class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
26166
1.19k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME type_params? ['(' arguments? ')'] ':' NEWLINE !INDENT"));
26167
1.19k
    }
26168
1.19k
    _res = NULL;
26169
1.19k
  done:
26170
1.19k
    p->level--;
26171
1.19k
    return _res;
26172
1.19k
}
26173
26174
// invalid_double_starred_kvpairs:
26175
//     | ','.double_starred_kvpair+ ',' invalid_kvpair
26176
//     | expression ':' '*' bitwise_or
26177
//     | expression ':' &('}' | ',')
26178
static void *
26179
invalid_double_starred_kvpairs_rule(Parser *p)
26180
15.0k
{
26181
15.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26182
0
        _Pypegen_stack_overflow(p);
26183
0
    }
26184
15.0k
    if (p->error_indicator) {
26185
0
        p->level--;
26186
0
        return NULL;
26187
0
    }
26188
15.0k
    void * _res = NULL;
26189
15.0k
    int _mark = p->mark;
26190
15.0k
    { // ','.double_starred_kvpair+ ',' invalid_kvpair
26191
15.0k
        if (p->error_indicator) {
26192
0
            p->level--;
26193
0
            return NULL;
26194
0
        }
26195
15.0k
        D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
26196
15.0k
        asdl_seq * _gather_84_var;
26197
15.0k
        Token * _literal;
26198
15.0k
        void *invalid_kvpair_var;
26199
15.0k
        if (
26200
15.0k
            (_gather_84_var = _gather_84_rule(p))  // ','.double_starred_kvpair+
26201
3.18k
            &&
26202
3.18k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
26203
1.02k
            &&
26204
1.02k
            (invalid_kvpair_var = invalid_kvpair_rule(p))  // invalid_kvpair
26205
15.0k
        )
26206
0
        {
26207
0
            D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
26208
0
            _res = _PyPegen_dummy_name(p, _gather_84_var, _literal, invalid_kvpair_var);
26209
0
            goto done;
26210
0
        }
26211
15.0k
        p->mark = _mark;
26212
15.0k
        D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
26213
15.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
26214
15.0k
    }
26215
0
    { // expression ':' '*' bitwise_or
26216
15.0k
        if (p->error_indicator) {
26217
75
            p->level--;
26218
75
            return NULL;
26219
75
        }
26220
14.9k
        D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
26221
14.9k
        Token * _literal;
26222
14.9k
        Token * a;
26223
14.9k
        expr_ty bitwise_or_var;
26224
14.9k
        expr_ty expression_var;
26225
14.9k
        if (
26226
14.9k
            (expression_var = expression_rule(p))  // expression
26227
8.07k
            &&
26228
8.07k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
26229
3.73k
            &&
26230
3.73k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
26231
407
            &&
26232
407
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
26233
14.9k
        )
26234
1
        {
26235
1
            D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
26236
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "cannot use a starred expression in a dictionary value" );
26237
1
            if (_res == NULL && PyErr_Occurred()) {
26238
1
                p->error_indicator = 1;
26239
1
                p->level--;
26240
1
                return NULL;
26241
1
            }
26242
0
            goto done;
26243
1
        }
26244
14.9k
        p->mark = _mark;
26245
14.9k
        D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
26246
14.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
26247
14.9k
    }
26248
0
    { // expression ':' &('}' | ',')
26249
14.9k
        if (p->error_indicator) {
26250
261
            p->level--;
26251
261
            return NULL;
26252
261
        }
26253
14.7k
        D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
26254
14.7k
        Token * a;
26255
14.7k
        expr_ty expression_var;
26256
14.7k
        if (
26257
14.7k
            (expression_var = expression_rule(p))  // expression
26258
7.81k
            &&
26259
7.81k
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26260
3.47k
            &&
26261
3.47k
            _PyPegen_lookahead(1, _tmp_148_rule, p)
26262
14.7k
        )
26263
2
        {
26264
2
            D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
26265
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression expected after dictionary key and ':'" );
26266
2
            if (_res == NULL && PyErr_Occurred()) {
26267
2
                p->error_indicator = 1;
26268
2
                p->level--;
26269
2
                return NULL;
26270
2
            }
26271
0
            goto done;
26272
2
        }
26273
14.7k
        p->mark = _mark;
26274
14.7k
        D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
26275
14.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' &('}' | ',')"));
26276
14.7k
    }
26277
14.7k
    _res = NULL;
26278
14.7k
  done:
26279
14.7k
    p->level--;
26280
14.7k
    return _res;
26281
14.7k
}
26282
26283
// invalid_kvpair:
26284
//     | expression !(':')
26285
//     | expression ':' '*' bitwise_or
26286
//     | expression ':' &('}' | ',')
26287
static void *
26288
invalid_kvpair_rule(Parser *p)
26289
1.02k
{
26290
1.02k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26291
0
        _Pypegen_stack_overflow(p);
26292
0
    }
26293
1.02k
    if (p->error_indicator) {
26294
0
        p->level--;
26295
0
        return NULL;
26296
0
    }
26297
1.02k
    void * _res = NULL;
26298
1.02k
    int _mark = p->mark;
26299
1.02k
    { // expression !(':')
26300
1.02k
        if (p->error_indicator) {
26301
0
            p->level--;
26302
0
            return NULL;
26303
0
        }
26304
1.02k
        D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
26305
1.02k
        expr_ty a;
26306
1.02k
        if (
26307
1.02k
            (a = expression_rule(p))  // expression
26308
349
            &&
26309
349
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 11)  // token=(':')
26310
1.02k
        )
26311
4
        {
26312
4
            D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
26313
4
            _res = RAISE_ERROR_KNOWN_LOCATION ( p , PyExc_SyntaxError , a -> lineno , a -> end_col_offset - 1 , a -> end_lineno , - 1 , "':' expected after dictionary key" );
26314
4
            if (_res == NULL && PyErr_Occurred()) {
26315
4
                p->error_indicator = 1;
26316
4
                p->level--;
26317
4
                return NULL;
26318
4
            }
26319
0
            goto done;
26320
4
        }
26321
1.02k
        p->mark = _mark;
26322
1.02k
        D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
26323
1.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !(':')"));
26324
1.02k
    }
26325
0
    { // expression ':' '*' bitwise_or
26326
1.02k
        if (p->error_indicator) {
26327
0
            p->level--;
26328
0
            return NULL;
26329
0
        }
26330
1.02k
        D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
26331
1.02k
        Token * _literal;
26332
1.02k
        Token * a;
26333
1.02k
        expr_ty bitwise_or_var;
26334
1.02k
        expr_ty expression_var;
26335
1.02k
        if (
26336
1.02k
            (expression_var = expression_rule(p))  // expression
26337
345
            &&
26338
345
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
26339
345
            &&
26340
345
            (a = _PyPegen_expect_token(p, 16))  // token='*'
26341
148
            &&
26342
148
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
26343
1.02k
        )
26344
1
        {
26345
1
            D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
26346
1
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "cannot use a starred expression in a dictionary value" );
26347
1
            if (_res == NULL && PyErr_Occurred()) {
26348
1
                p->error_indicator = 1;
26349
1
                p->level--;
26350
1
                return NULL;
26351
1
            }
26352
0
            goto done;
26353
1
        }
26354
1.02k
        p->mark = _mark;
26355
1.02k
        D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
26356
1.02k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
26357
1.02k
    }
26358
0
    { // expression ':' &('}' | ',')
26359
1.02k
        if (p->error_indicator) {
26360
69
            p->level--;
26361
69
            return NULL;
26362
69
        }
26363
955
        D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
26364
955
        Token * a;
26365
955
        expr_ty expression_var;
26366
955
        if (
26367
955
            (expression_var = expression_rule(p))  // expression
26368
275
            &&
26369
275
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26370
275
            &&
26371
275
            _PyPegen_lookahead(1, _tmp_148_rule, p)
26372
955
        )
26373
1
        {
26374
1
            D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
26375
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression expected after dictionary key and ':'" );
26376
1
            if (_res == NULL && PyErr_Occurred()) {
26377
1
                p->error_indicator = 1;
26378
1
                p->level--;
26379
1
                return NULL;
26380
1
            }
26381
0
            goto done;
26382
1
        }
26383
954
        p->mark = _mark;
26384
954
        D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
26385
954
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' &('}' | ',')"));
26386
954
    }
26387
954
    _res = NULL;
26388
954
  done:
26389
954
    p->level--;
26390
954
    return _res;
26391
954
}
26392
26393
// invalid_starred_expression_unpacking: '*' expression '=' expression
26394
static void *
26395
invalid_starred_expression_unpacking_rule(Parser *p)
26396
183k
{
26397
183k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26398
1
        _Pypegen_stack_overflow(p);
26399
1
    }
26400
183k
    if (p->error_indicator) {
26401
1
        p->level--;
26402
1
        return NULL;
26403
1
    }
26404
183k
    void * _res = NULL;
26405
183k
    int _mark = p->mark;
26406
183k
    { // '*' expression '=' expression
26407
183k
        if (p->error_indicator) {
26408
0
            p->level--;
26409
0
            return NULL;
26410
0
        }
26411
183k
        D(fprintf(stderr, "%*c> invalid_starred_expression_unpacking[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression '=' expression"));
26412
183k
        Token * _literal;
26413
183k
        Token * a;
26414
183k
        expr_ty b;
26415
183k
        expr_ty expression_var;
26416
183k
        if (
26417
183k
            (a = _PyPegen_expect_token(p, 16))  // token='*'
26418
12.9k
            &&
26419
12.9k
            (expression_var = expression_rule(p))  // expression
26420
11.7k
            &&
26421
11.7k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
26422
676
            &&
26423
676
            (b = expression_rule(p))  // expression
26424
183k
        )
26425
2
        {
26426
2
            D(fprintf(stderr, "%*c+ invalid_starred_expression_unpacking[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression '=' expression"));
26427
2
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to iterable argument unpacking" );
26428
2
            if (_res == NULL && PyErr_Occurred()) {
26429
2
                p->error_indicator = 1;
26430
2
                p->level--;
26431
2
                return NULL;
26432
2
            }
26433
0
            goto done;
26434
2
        }
26435
183k
        p->mark = _mark;
26436
183k
        D(fprintf(stderr, "%*c%s invalid_starred_expression_unpacking[%d-%d]: %s failed!\n", p->level, ' ',
26437
183k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression '=' expression"));
26438
183k
    }
26439
183k
    _res = NULL;
26440
183k
  done:
26441
183k
    p->level--;
26442
183k
    return _res;
26443
183k
}
26444
26445
// invalid_starred_expression: '*'
26446
static void *
26447
invalid_starred_expression_rule(Parser *p)
26448
170k
{
26449
170k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26450
0
        _Pypegen_stack_overflow(p);
26451
0
    }
26452
170k
    if (p->error_indicator) {
26453
0
        p->level--;
26454
0
        return NULL;
26455
0
    }
26456
170k
    void * _res = NULL;
26457
170k
    int _mark = p->mark;
26458
170k
    { // '*'
26459
170k
        if (p->error_indicator) {
26460
0
            p->level--;
26461
0
            return NULL;
26462
0
        }
26463
170k
        D(fprintf(stderr, "%*c> invalid_starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
26464
170k
        Token * _literal;
26465
170k
        if (
26466
170k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
26467
170k
        )
26468
54
        {
26469
54
            D(fprintf(stderr, "%*c+ invalid_starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
26470
54
            _res = RAISE_SYNTAX_ERROR ( "Invalid star expression" );
26471
54
            if (_res == NULL && PyErr_Occurred()) {
26472
54
                p->error_indicator = 1;
26473
54
                p->level--;
26474
54
                return NULL;
26475
54
            }
26476
0
            goto done;
26477
54
        }
26478
170k
        p->mark = _mark;
26479
170k
        D(fprintf(stderr, "%*c%s invalid_starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
26480
170k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
26481
170k
    }
26482
170k
    _res = NULL;
26483
170k
  done:
26484
170k
    p->level--;
26485
170k
    return _res;
26486
170k
}
26487
26488
// invalid_fstring_replacement_field:
26489
//     | '{' '='
26490
//     | '{' '!'
26491
//     | '{' ':'
26492
//     | '{' '}'
26493
//     | '{' !annotated_rhs
26494
//     | '{' annotated_rhs !('=' | '!' | ':' | '}')
26495
//     | '{' annotated_rhs '=' !('!' | ':' | '}')
26496
//     | '{' annotated_rhs '='? invalid_fstring_conversion_character
26497
//     | '{' annotated_rhs '='? ['!' NAME] !(':' | '}')
26498
//     | '{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'
26499
//     | '{' annotated_rhs '='? ['!' NAME] !'}'
26500
static void *
26501
invalid_fstring_replacement_field_rule(Parser *p)
26502
10.1k
{
26503
10.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26504
1
        _Pypegen_stack_overflow(p);
26505
1
    }
26506
10.1k
    if (p->error_indicator) {
26507
1
        p->level--;
26508
1
        return NULL;
26509
1
    }
26510
10.1k
    void * _res = NULL;
26511
10.1k
    int _mark = p->mark;
26512
10.1k
    { // '{' '='
26513
10.1k
        if (p->error_indicator) {
26514
0
            p->level--;
26515
0
            return NULL;
26516
0
        }
26517
10.1k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26518
10.1k
        Token * _literal;
26519
10.1k
        Token * a;
26520
10.1k
        if (
26521
10.1k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26522
331
            &&
26523
331
            (a = _PyPegen_expect_token(p, 22))  // token='='
26524
10.1k
        )
26525
25
        {
26526
25
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26527
25
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before '='" );
26528
25
            if (_res == NULL && PyErr_Occurred()) {
26529
25
                p->error_indicator = 1;
26530
25
                p->level--;
26531
25
                return NULL;
26532
25
            }
26533
0
            goto done;
26534
25
        }
26535
10.0k
        p->mark = _mark;
26536
10.0k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26537
10.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '='"));
26538
10.0k
    }
26539
0
    { // '{' '!'
26540
10.0k
        if (p->error_indicator) {
26541
0
            p->level--;
26542
0
            return NULL;
26543
0
        }
26544
10.0k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26545
10.0k
        Token * _literal;
26546
10.0k
        Token * a;
26547
10.0k
        if (
26548
10.0k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26549
306
            &&
26550
306
            (a = _PyPegen_expect_token(p, 54))  // token='!'
26551
10.0k
        )
26552
8
        {
26553
8
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26554
8
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before '!'" );
26555
8
            if (_res == NULL && PyErr_Occurred()) {
26556
8
                p->error_indicator = 1;
26557
8
                p->level--;
26558
8
                return NULL;
26559
8
            }
26560
0
            goto done;
26561
8
        }
26562
10.0k
        p->mark = _mark;
26563
10.0k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26564
10.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '!'"));
26565
10.0k
    }
26566
0
    { // '{' ':'
26567
10.0k
        if (p->error_indicator) {
26568
0
            p->level--;
26569
0
            return NULL;
26570
0
        }
26571
10.0k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26572
10.0k
        Token * _literal;
26573
10.0k
        Token * a;
26574
10.0k
        if (
26575
10.0k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26576
298
            &&
26577
298
            (a = _PyPegen_expect_token(p, 11))  // token=':'
26578
10.0k
        )
26579
84
        {
26580
84
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
26581
84
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before ':'" );
26582
84
            if (_res == NULL && PyErr_Occurred()) {
26583
84
                p->error_indicator = 1;
26584
84
                p->level--;
26585
84
                return NULL;
26586
84
            }
26587
0
            goto done;
26588
84
        }
26589
9.99k
        p->mark = _mark;
26590
9.99k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26591
9.99k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' ':'"));
26592
9.99k
    }
26593
0
    { // '{' '}'
26594
9.99k
        if (p->error_indicator) {
26595
0
            p->level--;
26596
0
            return NULL;
26597
0
        }
26598
9.99k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
26599
9.99k
        Token * _literal;
26600
9.99k
        Token * a;
26601
9.99k
        if (
26602
9.99k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26603
214
            &&
26604
214
            (a = _PyPegen_expect_token(p, 26))  // token='}'
26605
9.99k
        )
26606
14
        {
26607
14
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
26608
14
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "f-string: valid expression required before '}'" );
26609
14
            if (_res == NULL && PyErr_Occurred()) {
26610
14
                p->error_indicator = 1;
26611
14
                p->level--;
26612
14
                return NULL;
26613
14
            }
26614
0
            goto done;
26615
14
        }
26616
9.98k
        p->mark = _mark;
26617
9.98k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26618
9.98k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
26619
9.98k
    }
26620
0
    { // '{' !annotated_rhs
26621
9.98k
        if (p->error_indicator) {
26622
0
            p->level--;
26623
0
            return NULL;
26624
0
        }
26625
9.98k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
26626
9.98k
        Token * _literal;
26627
9.98k
        if (
26628
9.98k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26629
200
            &&
26630
200
            _PyPegen_lookahead_for_expr(0, annotated_rhs_rule, p)
26631
9.98k
        )
26632
36
        {
26633
36
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
26634
36
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting a valid expression after '{'" );
26635
36
            if (_res == NULL && PyErr_Occurred()) {
26636
36
                p->error_indicator = 1;
26637
36
                p->level--;
26638
36
                return NULL;
26639
36
            }
26640
0
            goto done;
26641
36
        }
26642
9.94k
        p->mark = _mark;
26643
9.94k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26644
9.94k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' !annotated_rhs"));
26645
9.94k
    }
26646
0
    { // '{' annotated_rhs !('=' | '!' | ':' | '}')
26647
9.94k
        if (p->error_indicator) {
26648
0
            p->level--;
26649
0
            return NULL;
26650
0
        }
26651
9.94k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26652
9.94k
        Token * _literal;
26653
9.94k
        expr_ty annotated_rhs_var;
26654
9.94k
        if (
26655
9.94k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26656
164
            &&
26657
164
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26658
164
            &&
26659
164
            _PyPegen_lookahead(0, _tmp_149_rule, p)
26660
9.94k
        )
26661
26
        {
26662
26
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26663
26
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '=', or '!', or ':', or '}'" );
26664
26
            if (_res == NULL && PyErr_Occurred()) {
26665
26
                p->error_indicator = 1;
26666
26
                p->level--;
26667
26
                return NULL;
26668
26
            }
26669
0
            goto done;
26670
26
        }
26671
9.92k
        p->mark = _mark;
26672
9.92k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26673
9.92k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
26674
9.92k
    }
26675
0
    { // '{' annotated_rhs '=' !('!' | ':' | '}')
26676
9.92k
        if (p->error_indicator) {
26677
0
            p->level--;
26678
0
            return NULL;
26679
0
        }
26680
9.92k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26681
9.92k
        Token * _literal;
26682
9.92k
        Token * _literal_1;
26683
9.92k
        expr_ty annotated_rhs_var;
26684
9.92k
        if (
26685
9.92k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26686
138
            &&
26687
138
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26688
138
            &&
26689
138
            (_literal_1 = _PyPegen_expect_token(p, 22))  // token='='
26690
13
            &&
26691
13
            _PyPegen_lookahead(0, _tmp_150_rule, p)
26692
9.92k
        )
26693
8
        {
26694
8
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26695
8
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '!', or ':', or '}'" );
26696
8
            if (_res == NULL && PyErr_Occurred()) {
26697
8
                p->error_indicator = 1;
26698
8
                p->level--;
26699
8
                return NULL;
26700
8
            }
26701
0
            goto done;
26702
8
        }
26703
9.91k
        p->mark = _mark;
26704
9.91k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26705
9.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
26706
9.91k
    }
26707
0
    { // '{' annotated_rhs '='? invalid_fstring_conversion_character
26708
9.91k
        if (p->error_indicator) {
26709
0
            p->level--;
26710
0
            return NULL;
26711
0
        }
26712
9.91k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? invalid_fstring_conversion_character"));
26713
9.91k
        Token * _literal;
26714
9.91k
        void *_opt_var;
26715
9.91k
        UNUSED(_opt_var); // Silence compiler warnings
26716
9.91k
        expr_ty annotated_rhs_var;
26717
9.91k
        void *invalid_fstring_conversion_character_var;
26718
9.91k
        if (
26719
9.91k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26720
130
            &&
26721
130
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26722
130
            &&
26723
130
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26724
130
            &&
26725
130
            (invalid_fstring_conversion_character_var = invalid_fstring_conversion_character_rule(p))  // invalid_fstring_conversion_character
26726
9.91k
        )
26727
0
        {
26728
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"));
26729
0
            _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var, _opt_var, invalid_fstring_conversion_character_var);
26730
0
            goto done;
26731
0
        }
26732
9.91k
        p->mark = _mark;
26733
9.91k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26734
9.91k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? invalid_fstring_conversion_character"));
26735
9.91k
    }
26736
0
    { // '{' annotated_rhs '='? ['!' NAME] !(':' | '}')
26737
9.91k
        if (p->error_indicator) {
26738
9
            p->level--;
26739
9
            return NULL;
26740
9
        }
26741
9.90k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26742
9.90k
        Token * _literal;
26743
9.90k
        void *_opt_var;
26744
9.90k
        UNUSED(_opt_var); // Silence compiler warnings
26745
9.90k
        void *_opt_var_1;
26746
9.90k
        UNUSED(_opt_var_1); // Silence compiler warnings
26747
9.90k
        expr_ty annotated_rhs_var;
26748
9.90k
        if (
26749
9.90k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26750
121
            &&
26751
121
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26752
121
            &&
26753
121
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26754
121
            &&
26755
121
            (_opt_var_1 = _tmp_151_rule(p), !p->error_indicator)  // ['!' NAME]
26756
121
            &&
26757
121
            _PyPegen_lookahead(0, _tmp_152_rule, p)
26758
9.90k
        )
26759
3
        {
26760
3
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26761
3
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting ':' or '}'" );
26762
3
            if (_res == NULL && PyErr_Occurred()) {
26763
3
                p->error_indicator = 1;
26764
3
                p->level--;
26765
3
                return NULL;
26766
3
            }
26767
0
            goto done;
26768
3
        }
26769
9.90k
        p->mark = _mark;
26770
9.90k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26771
9.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
26772
9.90k
    }
26773
0
    { // '{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'
26774
9.90k
        if (p->error_indicator) {
26775
0
            p->level--;
26776
0
            return NULL;
26777
0
        }
26778
9.90k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
26779
9.90k
        Token * _literal;
26780
9.90k
        Token * _literal_1;
26781
9.90k
        asdl_seq * _loop0_76_var;
26782
9.90k
        void *_opt_var;
26783
9.90k
        UNUSED(_opt_var); // Silence compiler warnings
26784
9.90k
        void *_opt_var_1;
26785
9.90k
        UNUSED(_opt_var_1); // Silence compiler warnings
26786
9.90k
        expr_ty annotated_rhs_var;
26787
9.90k
        if (
26788
9.90k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26789
118
            &&
26790
118
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26791
118
            &&
26792
118
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26793
118
            &&
26794
118
            (_opt_var_1 = _tmp_151_rule(p), !p->error_indicator)  // ['!' NAME]
26795
118
            &&
26796
118
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
26797
118
            &&
26798
118
            (_loop0_76_var = _loop0_76_rule(p))  // fstring_format_spec*
26799
118
            &&
26800
118
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
26801
9.90k
        )
26802
118
        {
26803
118
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
26804
118
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '}', or format specs" );
26805
118
            if (_res == NULL && PyErr_Occurred()) {
26806
118
                p->error_indicator = 1;
26807
118
                p->level--;
26808
118
                return NULL;
26809
118
            }
26810
0
            goto done;
26811
118
        }
26812
9.78k
        p->mark = _mark;
26813
9.78k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26814
9.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
26815
9.78k
    }
26816
0
    { // '{' annotated_rhs '='? ['!' NAME] !'}'
26817
9.78k
        if (p->error_indicator) {
26818
0
            p->level--;
26819
0
            return NULL;
26820
0
        }
26821
9.78k
        D(fprintf(stderr, "%*c> invalid_fstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
26822
9.78k
        Token * _literal;
26823
9.78k
        void *_opt_var;
26824
9.78k
        UNUSED(_opt_var); // Silence compiler warnings
26825
9.78k
        void *_opt_var_1;
26826
9.78k
        UNUSED(_opt_var_1); // Silence compiler warnings
26827
9.78k
        expr_ty annotated_rhs_var;
26828
9.78k
        if (
26829
9.78k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26830
0
            &&
26831
0
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
26832
0
            &&
26833
0
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
26834
0
            &&
26835
0
            (_opt_var_1 = _tmp_151_rule(p), !p->error_indicator)  // ['!' NAME]
26836
0
            &&
26837
0
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
26838
9.78k
        )
26839
0
        {
26840
0
            D(fprintf(stderr, "%*c+ invalid_fstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
26841
0
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: expecting '}'" );
26842
0
            if (_res == NULL && PyErr_Occurred()) {
26843
0
                p->error_indicator = 1;
26844
0
                p->level--;
26845
0
                return NULL;
26846
0
            }
26847
0
            goto done;
26848
0
        }
26849
9.78k
        p->mark = _mark;
26850
9.78k
        D(fprintf(stderr, "%*c%s invalid_fstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26851
9.78k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
26852
9.78k
    }
26853
9.78k
    _res = NULL;
26854
9.78k
  done:
26855
9.78k
    p->level--;
26856
9.78k
    return _res;
26857
9.78k
}
26858
26859
// invalid_fstring_conversion_character: '!' &(':' | '}') | '!' !NAME
26860
static void *
26861
invalid_fstring_conversion_character_rule(Parser *p)
26862
130
{
26863
130
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26864
0
        _Pypegen_stack_overflow(p);
26865
0
    }
26866
130
    if (p->error_indicator) {
26867
0
        p->level--;
26868
0
        return NULL;
26869
0
    }
26870
130
    void * _res = NULL;
26871
130
    int _mark = p->mark;
26872
130
    { // '!' &(':' | '}')
26873
130
        if (p->error_indicator) {
26874
0
            p->level--;
26875
0
            return NULL;
26876
0
        }
26877
130
        D(fprintf(stderr, "%*c> invalid_fstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')"));
26878
130
        Token * _literal;
26879
130
        if (
26880
130
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
26881
13
            &&
26882
13
            _PyPegen_lookahead(1, _tmp_152_rule, p)
26883
130
        )
26884
3
        {
26885
3
            D(fprintf(stderr, "%*c+ invalid_fstring_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')"));
26886
3
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: missing conversion character" );
26887
3
            if (_res == NULL && PyErr_Occurred()) {
26888
3
                p->error_indicator = 1;
26889
3
                p->level--;
26890
3
                return NULL;
26891
3
            }
26892
0
            goto done;
26893
3
        }
26894
127
        p->mark = _mark;
26895
127
        D(fprintf(stderr, "%*c%s invalid_fstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
26896
127
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' &(':' | '}')"));
26897
127
    }
26898
0
    { // '!' !NAME
26899
127
        if (p->error_indicator) {
26900
0
            p->level--;
26901
0
            return NULL;
26902
0
        }
26903
127
        D(fprintf(stderr, "%*c> invalid_fstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
26904
127
        Token * _literal;
26905
127
        if (
26906
127
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
26907
10
            &&
26908
10
            _PyPegen_lookahead_for_expr(0, _PyPegen_name_token, p)
26909
127
        )
26910
6
        {
26911
6
            D(fprintf(stderr, "%*c+ invalid_fstring_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
26912
6
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "f-string: invalid conversion character" );
26913
6
            if (_res == NULL && PyErr_Occurred()) {
26914
6
                p->error_indicator = 1;
26915
6
                p->level--;
26916
6
                return NULL;
26917
6
            }
26918
0
            goto done;
26919
6
        }
26920
121
        p->mark = _mark;
26921
121
        D(fprintf(stderr, "%*c%s invalid_fstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
26922
121
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' !NAME"));
26923
121
    }
26924
121
    _res = NULL;
26925
121
  done:
26926
121
    p->level--;
26927
121
    return _res;
26928
121
}
26929
26930
// invalid_tstring_replacement_field:
26931
//     | '{' '='
26932
//     | '{' '!'
26933
//     | '{' ':'
26934
//     | '{' '}'
26935
//     | '{' !annotated_rhs
26936
//     | '{' annotated_rhs !('=' | '!' | ':' | '}')
26937
//     | '{' annotated_rhs '=' !('!' | ':' | '}')
26938
//     | '{' annotated_rhs '='? invalid_tstring_conversion_character
26939
//     | '{' annotated_rhs '='? ['!' NAME] !(':' | '}')
26940
//     | '{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'
26941
//     | '{' annotated_rhs '='? ['!' NAME] !'}'
26942
static void *
26943
invalid_tstring_replacement_field_rule(Parser *p)
26944
4.77k
{
26945
4.77k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
26946
1
        _Pypegen_stack_overflow(p);
26947
1
    }
26948
4.77k
    if (p->error_indicator) {
26949
1
        p->level--;
26950
1
        return NULL;
26951
1
    }
26952
4.77k
    void * _res = NULL;
26953
4.77k
    int _mark = p->mark;
26954
4.77k
    { // '{' '='
26955
4.77k
        if (p->error_indicator) {
26956
0
            p->level--;
26957
0
            return NULL;
26958
0
        }
26959
4.77k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26960
4.77k
        Token * _literal;
26961
4.77k
        Token * a;
26962
4.77k
        if (
26963
4.77k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26964
138
            &&
26965
138
            (a = _PyPegen_expect_token(p, 22))  // token='='
26966
4.77k
        )
26967
5
        {
26968
5
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '='"));
26969
5
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before '='" );
26970
5
            if (_res == NULL && PyErr_Occurred()) {
26971
5
                p->error_indicator = 1;
26972
5
                p->level--;
26973
5
                return NULL;
26974
5
            }
26975
0
            goto done;
26976
5
        }
26977
4.76k
        p->mark = _mark;
26978
4.76k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
26979
4.76k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '='"));
26980
4.76k
    }
26981
0
    { // '{' '!'
26982
4.76k
        if (p->error_indicator) {
26983
0
            p->level--;
26984
0
            return NULL;
26985
0
        }
26986
4.76k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26987
4.76k
        Token * _literal;
26988
4.76k
        Token * a;
26989
4.76k
        if (
26990
4.76k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
26991
133
            &&
26992
133
            (a = _PyPegen_expect_token(p, 54))  // token='!'
26993
4.76k
        )
26994
13
        {
26995
13
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '!'"));
26996
13
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before '!'" );
26997
13
            if (_res == NULL && PyErr_Occurred()) {
26998
13
                p->error_indicator = 1;
26999
13
                p->level--;
27000
13
                return NULL;
27001
13
            }
27002
0
            goto done;
27003
13
        }
27004
4.75k
        p->mark = _mark;
27005
4.75k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27006
4.75k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '!'"));
27007
4.75k
    }
27008
0
    { // '{' ':'
27009
4.75k
        if (p->error_indicator) {
27010
0
            p->level--;
27011
0
            return NULL;
27012
0
        }
27013
4.75k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
27014
4.75k
        Token * _literal;
27015
4.75k
        Token * a;
27016
4.75k
        if (
27017
4.75k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
27018
120
            &&
27019
120
            (a = _PyPegen_expect_token(p, 11))  // token=':'
27020
4.75k
        )
27021
21
        {
27022
21
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' ':'"));
27023
21
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before ':'" );
27024
21
            if (_res == NULL && PyErr_Occurred()) {
27025
21
                p->error_indicator = 1;
27026
21
                p->level--;
27027
21
                return NULL;
27028
21
            }
27029
0
            goto done;
27030
21
        }
27031
4.73k
        p->mark = _mark;
27032
4.73k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27033
4.73k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' ':'"));
27034
4.73k
    }
27035
0
    { // '{' '}'
27036
4.73k
        if (p->error_indicator) {
27037
0
            p->level--;
27038
0
            return NULL;
27039
0
        }
27040
4.73k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
27041
4.73k
        Token * _literal;
27042
4.73k
        Token * a;
27043
4.73k
        if (
27044
4.73k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
27045
99
            &&
27046
99
            (a = _PyPegen_expect_token(p, 26))  // token='}'
27047
4.73k
        )
27048
11
        {
27049
11
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
27050
11
            _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "t-string: valid expression required before '}'" );
27051
11
            if (_res == NULL && PyErr_Occurred()) {
27052
11
                p->error_indicator = 1;
27053
11
                p->level--;
27054
11
                return NULL;
27055
11
            }
27056
0
            goto done;
27057
11
        }
27058
4.72k
        p->mark = _mark;
27059
4.72k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27060
4.72k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
27061
4.72k
    }
27062
0
    { // '{' !annotated_rhs
27063
4.72k
        if (p->error_indicator) {
27064
0
            p->level--;
27065
0
            return NULL;
27066
0
        }
27067
4.72k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
27068
4.72k
        Token * _literal;
27069
4.72k
        if (
27070
4.72k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
27071
88
            &&
27072
88
            _PyPegen_lookahead_for_expr(0, annotated_rhs_rule, p)
27073
4.72k
        )
27074
27
        {
27075
27
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' !annotated_rhs"));
27076
27
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting a valid expression after '{'" );
27077
27
            if (_res == NULL && PyErr_Occurred()) {
27078
27
                p->error_indicator = 1;
27079
27
                p->level--;
27080
27
                return NULL;
27081
27
            }
27082
0
            goto done;
27083
27
        }
27084
4.69k
        p->mark = _mark;
27085
4.69k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27086
4.69k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' !annotated_rhs"));
27087
4.69k
    }
27088
0
    { // '{' annotated_rhs !('=' | '!' | ':' | '}')
27089
4.69k
        if (p->error_indicator) {
27090
0
            p->level--;
27091
0
            return NULL;
27092
0
        }
27093
4.69k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
27094
4.69k
        Token * _literal;
27095
4.69k
        expr_ty annotated_rhs_var;
27096
4.69k
        if (
27097
4.69k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
27098
61
            &&
27099
61
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
27100
61
            &&
27101
61
            _PyPegen_lookahead(0, _tmp_149_rule, p)
27102
4.69k
        )
27103
11
        {
27104
11
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
27105
11
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '=', or '!', or ':', or '}'" );
27106
11
            if (_res == NULL && PyErr_Occurred()) {
27107
11
                p->error_indicator = 1;
27108
11
                p->level--;
27109
11
                return NULL;
27110
11
            }
27111
0
            goto done;
27112
11
        }
27113
4.68k
        p->mark = _mark;
27114
4.68k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27115
4.68k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs !('=' | '!' | ':' | '}')"));
27116
4.68k
    }
27117
0
    { // '{' annotated_rhs '=' !('!' | ':' | '}')
27118
4.68k
        if (p->error_indicator) {
27119
0
            p->level--;
27120
0
            return NULL;
27121
0
        }
27122
4.68k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
27123
4.68k
        Token * _literal;
27124
4.68k
        Token * _literal_1;
27125
4.68k
        expr_ty annotated_rhs_var;
27126
4.68k
        if (
27127
4.68k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
27128
50
            &&
27129
50
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
27130
50
            &&
27131
50
            (_literal_1 = _PyPegen_expect_token(p, 22))  // token='='
27132
11
            &&
27133
11
            _PyPegen_lookahead(0, _tmp_150_rule, p)
27134
4.68k
        )
27135
8
        {
27136
8
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
27137
8
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '!', or ':', or '}'" );
27138
8
            if (_res == NULL && PyErr_Occurred()) {
27139
8
                p->error_indicator = 1;
27140
8
                p->level--;
27141
8
                return NULL;
27142
8
            }
27143
0
            goto done;
27144
8
        }
27145
4.67k
        p->mark = _mark;
27146
4.67k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27147
4.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '=' !('!' | ':' | '}')"));
27148
4.67k
    }
27149
0
    { // '{' annotated_rhs '='? invalid_tstring_conversion_character
27150
4.67k
        if (p->error_indicator) {
27151
0
            p->level--;
27152
0
            return NULL;
27153
0
        }
27154
4.67k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? invalid_tstring_conversion_character"));
27155
4.67k
        Token * _literal;
27156
4.67k
        void *_opt_var;
27157
4.67k
        UNUSED(_opt_var); // Silence compiler warnings
27158
4.67k
        expr_ty annotated_rhs_var;
27159
4.67k
        void *invalid_tstring_conversion_character_var;
27160
4.67k
        if (
27161
4.67k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
27162
42
            &&
27163
42
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
27164
42
            &&
27165
42
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
27166
42
            &&
27167
42
            (invalid_tstring_conversion_character_var = invalid_tstring_conversion_character_rule(p))  // invalid_tstring_conversion_character
27168
4.67k
        )
27169
0
        {
27170
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"));
27171
0
            _res = _PyPegen_dummy_name(p, _literal, annotated_rhs_var, _opt_var, invalid_tstring_conversion_character_var);
27172
0
            goto done;
27173
0
        }
27174
4.67k
        p->mark = _mark;
27175
4.67k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27176
4.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? invalid_tstring_conversion_character"));
27177
4.67k
    }
27178
0
    { // '{' annotated_rhs '='? ['!' NAME] !(':' | '}')
27179
4.67k
        if (p->error_indicator) {
27180
12
            p->level--;
27181
12
            return NULL;
27182
12
        }
27183
4.66k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
27184
4.66k
        Token * _literal;
27185
4.66k
        void *_opt_var;
27186
4.66k
        UNUSED(_opt_var); // Silence compiler warnings
27187
4.66k
        void *_opt_var_1;
27188
4.66k
        UNUSED(_opt_var_1); // Silence compiler warnings
27189
4.66k
        expr_ty annotated_rhs_var;
27190
4.66k
        if (
27191
4.66k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
27192
30
            &&
27193
30
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
27194
30
            &&
27195
30
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
27196
30
            &&
27197
30
            (_opt_var_1 = _tmp_151_rule(p), !p->error_indicator)  // ['!' NAME]
27198
30
            &&
27199
30
            _PyPegen_lookahead(0, _tmp_152_rule, p)
27200
4.66k
        )
27201
6
        {
27202
6
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
27203
6
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting ':' or '}'" );
27204
6
            if (_res == NULL && PyErr_Occurred()) {
27205
6
                p->error_indicator = 1;
27206
6
                p->level--;
27207
6
                return NULL;
27208
6
            }
27209
0
            goto done;
27210
6
        }
27211
4.65k
        p->mark = _mark;
27212
4.65k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27213
4.65k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !(':' | '}')"));
27214
4.65k
    }
27215
0
    { // '{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'
27216
4.65k
        if (p->error_indicator) {
27217
0
            p->level--;
27218
0
            return NULL;
27219
0
        }
27220
4.65k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
27221
4.65k
        Token * _literal;
27222
4.65k
        Token * _literal_1;
27223
4.65k
        asdl_seq * _loop0_76_var;
27224
4.65k
        void *_opt_var;
27225
4.65k
        UNUSED(_opt_var); // Silence compiler warnings
27226
4.65k
        void *_opt_var_1;
27227
4.65k
        UNUSED(_opt_var_1); // Silence compiler warnings
27228
4.65k
        expr_ty annotated_rhs_var;
27229
4.65k
        if (
27230
4.65k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
27231
24
            &&
27232
24
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
27233
24
            &&
27234
24
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
27235
24
            &&
27236
24
            (_opt_var_1 = _tmp_151_rule(p), !p->error_indicator)  // ['!' NAME]
27237
24
            &&
27238
24
            (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
27239
24
            &&
27240
24
            (_loop0_76_var = _loop0_76_rule(p))  // fstring_format_spec*
27241
24
            &&
27242
24
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
27243
4.65k
        )
27244
24
        {
27245
24
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
27246
24
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '}', or format specs" );
27247
24
            if (_res == NULL && PyErr_Occurred()) {
27248
24
                p->error_indicator = 1;
27249
24
                p->level--;
27250
24
                return NULL;
27251
24
            }
27252
0
            goto done;
27253
24
        }
27254
4.63k
        p->mark = _mark;
27255
4.63k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27256
4.63k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] ':' fstring_format_spec* !'}'"));
27257
4.63k
    }
27258
0
    { // '{' annotated_rhs '='? ['!' NAME] !'}'
27259
4.63k
        if (p->error_indicator) {
27260
0
            p->level--;
27261
0
            return NULL;
27262
0
        }
27263
4.63k
        D(fprintf(stderr, "%*c> invalid_tstring_replacement_field[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
27264
4.63k
        Token * _literal;
27265
4.63k
        void *_opt_var;
27266
4.63k
        UNUSED(_opt_var); // Silence compiler warnings
27267
4.63k
        void *_opt_var_1;
27268
4.63k
        UNUSED(_opt_var_1); // Silence compiler warnings
27269
4.63k
        expr_ty annotated_rhs_var;
27270
4.63k
        if (
27271
4.63k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
27272
0
            &&
27273
0
            (annotated_rhs_var = annotated_rhs_rule(p))  // annotated_rhs
27274
0
            &&
27275
0
            (_opt_var = _PyPegen_expect_token(p, 22), !p->error_indicator)  // '='?
27276
0
            &&
27277
0
            (_opt_var_1 = _tmp_151_rule(p), !p->error_indicator)  // ['!' NAME]
27278
0
            &&
27279
0
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 26)  // token='}'
27280
4.63k
        )
27281
0
        {
27282
0
            D(fprintf(stderr, "%*c+ invalid_tstring_replacement_field[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
27283
0
            _res = PyErr_Occurred ( ) ? NULL : RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: expecting '}'" );
27284
0
            if (_res == NULL && PyErr_Occurred()) {
27285
0
                p->error_indicator = 1;
27286
0
                p->level--;
27287
0
                return NULL;
27288
0
            }
27289
0
            goto done;
27290
0
        }
27291
4.63k
        p->mark = _mark;
27292
4.63k
        D(fprintf(stderr, "%*c%s invalid_tstring_replacement_field[%d-%d]: %s failed!\n", p->level, ' ',
27293
4.63k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' annotated_rhs '='? ['!' NAME] !'}'"));
27294
4.63k
    }
27295
4.63k
    _res = NULL;
27296
4.63k
  done:
27297
4.63k
    p->level--;
27298
4.63k
    return _res;
27299
4.63k
}
27300
27301
// invalid_tstring_conversion_character: '!' &(':' | '}') | '!' !NAME
27302
static void *
27303
invalid_tstring_conversion_character_rule(Parser *p)
27304
42
{
27305
42
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27306
0
        _Pypegen_stack_overflow(p);
27307
0
    }
27308
42
    if (p->error_indicator) {
27309
0
        p->level--;
27310
0
        return NULL;
27311
0
    }
27312
42
    void * _res = NULL;
27313
42
    int _mark = p->mark;
27314
42
    { // '!' &(':' | '}')
27315
42
        if (p->error_indicator) {
27316
0
            p->level--;
27317
0
            return NULL;
27318
0
        }
27319
42
        D(fprintf(stderr, "%*c> invalid_tstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')"));
27320
42
        Token * _literal;
27321
42
        if (
27322
42
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
27323
18
            &&
27324
18
            _PyPegen_lookahead(1, _tmp_152_rule, p)
27325
42
        )
27326
6
        {
27327
6
            D(fprintf(stderr, "%*c+ invalid_tstring_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' &(':' | '}')"));
27328
6
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: missing conversion character" );
27329
6
            if (_res == NULL && PyErr_Occurred()) {
27330
6
                p->error_indicator = 1;
27331
6
                p->level--;
27332
6
                return NULL;
27333
6
            }
27334
0
            goto done;
27335
6
        }
27336
36
        p->mark = _mark;
27337
36
        D(fprintf(stderr, "%*c%s invalid_tstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
27338
36
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' &(':' | '}')"));
27339
36
    }
27340
0
    { // '!' !NAME
27341
36
        if (p->error_indicator) {
27342
0
            p->level--;
27343
0
            return NULL;
27344
0
        }
27345
36
        D(fprintf(stderr, "%*c> invalid_tstring_conversion_character[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
27346
36
        Token * _literal;
27347
36
        if (
27348
36
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
27349
12
            &&
27350
12
            _PyPegen_lookahead_for_expr(0, _PyPegen_name_token, p)
27351
36
        )
27352
6
        {
27353
6
            D(fprintf(stderr, "%*c+ invalid_tstring_conversion_character[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' !NAME"));
27354
6
            _res = RAISE_SYNTAX_ERROR_ON_NEXT_TOKEN ( "t-string: invalid conversion character" );
27355
6
            if (_res == NULL && PyErr_Occurred()) {
27356
6
                p->error_indicator = 1;
27357
6
                p->level--;
27358
6
                return NULL;
27359
6
            }
27360
0
            goto done;
27361
6
        }
27362
30
        p->mark = _mark;
27363
30
        D(fprintf(stderr, "%*c%s invalid_tstring_conversion_character[%d-%d]: %s failed!\n", p->level, ' ',
27364
30
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' !NAME"));
27365
30
    }
27366
30
    _res = NULL;
27367
30
  done:
27368
30
    p->level--;
27369
30
    return _res;
27370
30
}
27371
27372
// invalid_string_tstring_concat:
27373
//     | ((fstring | string))+ tstring
27374
//     | tstring+ (fstring | string)
27375
static void *
27376
invalid_string_tstring_concat_rule(Parser *p)
27377
27.3k
{
27378
27.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27379
1
        _Pypegen_stack_overflow(p);
27380
1
    }
27381
27.3k
    if (p->error_indicator) {
27382
1
        p->level--;
27383
1
        return NULL;
27384
1
    }
27385
27.3k
    void * _res = NULL;
27386
27.3k
    int _mark = p->mark;
27387
27.3k
    { // ((fstring | string))+ tstring
27388
27.3k
        if (p->error_indicator) {
27389
0
            p->level--;
27390
0
            return NULL;
27391
0
        }
27392
27.3k
        D(fprintf(stderr, "%*c> invalid_string_tstring_concat[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((fstring | string))+ tstring"));
27393
27.3k
        asdl_seq * a;
27394
27.3k
        expr_ty b;
27395
27.3k
        if (
27396
27.3k
            (a = _loop1_80_rule(p))  // ((fstring | string))+
27397
5.04k
            &&
27398
5.04k
            (b = (expr_ty)tstring_rule(p))  // tstring
27399
27.3k
        )
27400
6
        {
27401
6
            D(fprintf(stderr, "%*c+ invalid_string_tstring_concat[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((fstring | string))+ tstring"));
27402
6
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( PyPegen_last_item ( a , expr_ty ) , b , "cannot mix t-string literals with string or bytes literals" );
27403
6
            if (_res == NULL && PyErr_Occurred()) {
27404
6
                p->error_indicator = 1;
27405
6
                p->level--;
27406
6
                return NULL;
27407
6
            }
27408
0
            goto done;
27409
6
        }
27410
27.3k
        p->mark = _mark;
27411
27.3k
        D(fprintf(stderr, "%*c%s invalid_string_tstring_concat[%d-%d]: %s failed!\n", p->level, ' ',
27412
27.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((fstring | string))+ tstring"));
27413
27.3k
    }
27414
0
    { // tstring+ (fstring | string)
27415
27.3k
        if (p->error_indicator) {
27416
1.48k
            p->level--;
27417
1.48k
            return NULL;
27418
1.48k
        }
27419
25.8k
        D(fprintf(stderr, "%*c> invalid_string_tstring_concat[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring+ (fstring | string)"));
27420
25.8k
        asdl_seq * a;
27421
25.8k
        expr_ty b;
27422
25.8k
        if (
27423
25.8k
            (a = _loop1_81_rule(p))  // tstring+
27424
1.29k
            &&
27425
1.29k
            (b = (expr_ty)_tmp_153_rule(p))  // fstring | string
27426
25.8k
        )
27427
10
        {
27428
10
            D(fprintf(stderr, "%*c+ invalid_string_tstring_concat[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tstring+ (fstring | string)"));
27429
10
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( PyPegen_last_item ( a , expr_ty ) , b , "cannot mix t-string literals with string or bytes literals" );
27430
10
            if (_res == NULL && PyErr_Occurred()) {
27431
10
                p->error_indicator = 1;
27432
10
                p->level--;
27433
10
                return NULL;
27434
10
            }
27435
0
            goto done;
27436
10
        }
27437
25.8k
        p->mark = _mark;
27438
25.8k
        D(fprintf(stderr, "%*c%s invalid_string_tstring_concat[%d-%d]: %s failed!\n", p->level, ' ',
27439
25.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring+ (fstring | string)"));
27440
25.8k
    }
27441
25.8k
    _res = NULL;
27442
25.8k
  done:
27443
25.8k
    p->level--;
27444
25.8k
    return _res;
27445
25.8k
}
27446
27447
// invalid_arithmetic: sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion
27448
static void *
27449
invalid_arithmetic_rule(Parser *p)
27450
297k
{
27451
297k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27452
0
        _Pypegen_stack_overflow(p);
27453
0
    }
27454
297k
    if (p->error_indicator) {
27455
0
        p->level--;
27456
0
        return NULL;
27457
0
    }
27458
297k
    void * _res = NULL;
27459
297k
    int _mark = p->mark;
27460
297k
    { // sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion
27461
297k
        if (p->error_indicator) {
27462
0
            p->level--;
27463
0
            return NULL;
27464
0
        }
27465
297k
        D(fprintf(stderr, "%*c> invalid_arithmetic[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion"));
27466
297k
        void *_tmp_154_var;
27467
297k
        Token * a;
27468
297k
        expr_ty b;
27469
297k
        expr_ty sum_var;
27470
297k
        if (
27471
297k
            (sum_var = sum_rule(p))  // sum
27472
209k
            &&
27473
209k
            (_tmp_154_var = _tmp_154_rule(p))  // '+' | '-' | '*' | '/' | '%' | '//' | '@'
27474
3.57k
            &&
27475
3.57k
            (a = _PyPegen_expect_token(p, 712))  // token='not'
27476
218
            &&
27477
218
            (b = inversion_rule(p))  // inversion
27478
297k
        )
27479
9
        {
27480
9
            D(fprintf(stderr, "%*c+ invalid_arithmetic[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion"));
27481
9
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "'not' after an operator must be parenthesized" );
27482
9
            if (_res == NULL && PyErr_Occurred()) {
27483
9
                p->error_indicator = 1;
27484
9
                p->level--;
27485
9
                return NULL;
27486
9
            }
27487
0
            goto done;
27488
9
        }
27489
297k
        p->mark = _mark;
27490
297k
        D(fprintf(stderr, "%*c%s invalid_arithmetic[%d-%d]: %s failed!\n", p->level, ' ',
27491
297k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum ('+' | '-' | '*' | '/' | '%' | '//' | '@') 'not' inversion"));
27492
297k
    }
27493
297k
    _res = NULL;
27494
297k
  done:
27495
297k
    p->level--;
27496
297k
    return _res;
27497
297k
}
27498
27499
// invalid_factor: ('+' | '-' | '~') 'not' factor
27500
static void *
27501
invalid_factor_rule(Parser *p)
27502
308k
{
27503
308k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27504
0
        _Pypegen_stack_overflow(p);
27505
0
    }
27506
308k
    if (p->error_indicator) {
27507
0
        p->level--;
27508
0
        return NULL;
27509
0
    }
27510
308k
    void * _res = NULL;
27511
308k
    int _mark = p->mark;
27512
308k
    { // ('+' | '-' | '~') 'not' factor
27513
308k
        if (p->error_indicator) {
27514
0
            p->level--;
27515
0
            return NULL;
27516
0
        }
27517
308k
        D(fprintf(stderr, "%*c> invalid_factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('+' | '-' | '~') 'not' factor"));
27518
308k
        void *_tmp_155_var;
27519
308k
        Token * a;
27520
308k
        expr_ty b;
27521
308k
        if (
27522
308k
            (_tmp_155_var = _tmp_155_rule(p))  // '+' | '-' | '~'
27523
10.6k
            &&
27524
10.6k
            (a = _PyPegen_expect_token(p, 712))  // token='not'
27525
67
            &&
27526
67
            (b = factor_rule(p))  // factor
27527
308k
        )
27528
1
        {
27529
1
            D(fprintf(stderr, "%*c+ invalid_factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('+' | '-' | '~') 'not' factor"));
27530
1
            _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "'not' after an operator must be parenthesized" );
27531
1
            if (_res == NULL && PyErr_Occurred()) {
27532
1
                p->error_indicator = 1;
27533
1
                p->level--;
27534
1
                return NULL;
27535
1
            }
27536
0
            goto done;
27537
1
        }
27538
308k
        p->mark = _mark;
27539
308k
        D(fprintf(stderr, "%*c%s invalid_factor[%d-%d]: %s failed!\n", p->level, ' ',
27540
308k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('+' | '-' | '~') 'not' factor"));
27541
308k
    }
27542
308k
    _res = NULL;
27543
308k
  done:
27544
308k
    p->level--;
27545
308k
    return _res;
27546
308k
}
27547
27548
// invalid_type_params: '[' ']'
27549
static void *
27550
invalid_type_params_rule(Parser *p)
27551
8.30k
{
27552
8.30k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27553
0
        _Pypegen_stack_overflow(p);
27554
0
    }
27555
8.30k
    if (p->error_indicator) {
27556
0
        p->level--;
27557
0
        return NULL;
27558
0
    }
27559
8.30k
    void * _res = NULL;
27560
8.30k
    int _mark = p->mark;
27561
8.30k
    { // '[' ']'
27562
8.30k
        if (p->error_indicator) {
27563
0
            p->level--;
27564
0
            return NULL;
27565
0
        }
27566
8.30k
        D(fprintf(stderr, "%*c> invalid_type_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' ']'"));
27567
8.30k
        Token * _literal;
27568
8.30k
        Token * token;
27569
8.30k
        if (
27570
8.30k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
27571
922
            &&
27572
922
            (token = _PyPegen_expect_token(p, 10))  // token=']'
27573
8.30k
        )
27574
3
        {
27575
3
            D(fprintf(stderr, "%*c+ invalid_type_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' ']'"));
27576
3
            _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( token , "Type parameter list cannot be empty" );
27577
3
            if (_res == NULL && PyErr_Occurred()) {
27578
3
                p->error_indicator = 1;
27579
3
                p->level--;
27580
3
                return NULL;
27581
3
            }
27582
0
            goto done;
27583
3
        }
27584
8.30k
        p->mark = _mark;
27585
8.30k
        D(fprintf(stderr, "%*c%s invalid_type_params[%d-%d]: %s failed!\n", p->level, ' ',
27586
8.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' ']'"));
27587
8.30k
    }
27588
8.30k
    _res = NULL;
27589
8.30k
  done:
27590
8.30k
    p->level--;
27591
8.30k
    return _res;
27592
8.30k
}
27593
27594
// _loop0_1: NEWLINE
27595
static asdl_seq *
27596
_loop0_1_rule(Parser *p)
27597
66
{
27598
66
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27599
0
        _Pypegen_stack_overflow(p);
27600
0
    }
27601
66
    if (p->error_indicator) {
27602
0
        p->level--;
27603
0
        return NULL;
27604
0
    }
27605
66
    void *_res = NULL;
27606
66
    int _mark = p->mark;
27607
66
    void **_children = PyMem_Malloc(sizeof(void *));
27608
66
    if (!_children) {
27609
0
        p->error_indicator = 1;
27610
0
        PyErr_NoMemory();
27611
0
        p->level--;
27612
0
        return NULL;
27613
0
    }
27614
66
    Py_ssize_t _children_capacity = 1;
27615
66
    Py_ssize_t _n = 0;
27616
66
    { // NEWLINE
27617
66
        if (p->error_indicator) {
27618
0
            p->level--;
27619
0
            return NULL;
27620
0
        }
27621
66
        D(fprintf(stderr, "%*c> _loop0_1[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
27622
66
        Token * newline_var;
27623
66
        while (
27624
66
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
27625
66
        )
27626
0
        {
27627
0
            _res = newline_var;
27628
0
            if (_n == _children_capacity) {
27629
0
                _children_capacity *= 2;
27630
0
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27631
0
                if (!_new_children) {
27632
0
                    PyMem_Free(_children);
27633
0
                    p->error_indicator = 1;
27634
0
                    PyErr_NoMemory();
27635
0
                    p->level--;
27636
0
                    return NULL;
27637
0
                }
27638
0
                _children = _new_children;
27639
0
            }
27640
0
            _children[_n++] = _res;
27641
0
            _mark = p->mark;
27642
0
        }
27643
66
        p->mark = _mark;
27644
66
        D(fprintf(stderr, "%*c%s _loop0_1[%d-%d]: %s failed!\n", p->level, ' ',
27645
66
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
27646
66
    }
27647
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27648
66
    if (!_seq) {
27649
0
        PyMem_Free(_children);
27650
0
        p->error_indicator = 1;
27651
0
        PyErr_NoMemory();
27652
0
        p->level--;
27653
0
        return NULL;
27654
0
    }
27655
66
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27656
66
    PyMem_Free(_children);
27657
66
    p->level--;
27658
66
    return _seq;
27659
66
}
27660
27661
// _loop1_2: statement
27662
static asdl_seq *
27663
_loop1_2_rule(Parser *p)
27664
52.4k
{
27665
52.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27666
0
        _Pypegen_stack_overflow(p);
27667
0
    }
27668
52.4k
    if (p->error_indicator) {
27669
0
        p->level--;
27670
0
        return NULL;
27671
0
    }
27672
52.4k
    void *_res = NULL;
27673
52.4k
    int _mark = p->mark;
27674
52.4k
    void **_children = PyMem_Malloc(sizeof(void *));
27675
52.4k
    if (!_children) {
27676
0
        p->error_indicator = 1;
27677
0
        PyErr_NoMemory();
27678
0
        p->level--;
27679
0
        return NULL;
27680
0
    }
27681
52.4k
    Py_ssize_t _children_capacity = 1;
27682
52.4k
    Py_ssize_t _n = 0;
27683
52.4k
    { // statement
27684
52.4k
        if (p->error_indicator) {
27685
0
            p->level--;
27686
0
            return NULL;
27687
0
        }
27688
52.4k
        D(fprintf(stderr, "%*c> _loop1_2[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement"));
27689
52.4k
        asdl_stmt_seq* statement_var;
27690
52.4k
        while (
27691
174k
            (statement_var = statement_rule(p))  // statement
27692
52.4k
        )
27693
121k
        {
27694
121k
            _res = statement_var;
27695
121k
            if (_n == _children_capacity) {
27696
25.3k
                _children_capacity *= 2;
27697
25.3k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27698
25.3k
                if (!_new_children) {
27699
0
                    PyMem_Free(_children);
27700
0
                    p->error_indicator = 1;
27701
0
                    PyErr_NoMemory();
27702
0
                    p->level--;
27703
0
                    return NULL;
27704
0
                }
27705
25.3k
                _children = _new_children;
27706
25.3k
            }
27707
121k
            _children[_n++] = _res;
27708
121k
            _mark = p->mark;
27709
121k
        }
27710
52.4k
        p->mark = _mark;
27711
52.4k
        D(fprintf(stderr, "%*c%s _loop1_2[%d-%d]: %s failed!\n", p->level, ' ',
27712
52.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement"));
27713
52.4k
    }
27714
52.4k
    if (_n == 0 || p->error_indicator) {
27715
22.1k
        PyMem_Free(_children);
27716
22.1k
        p->level--;
27717
22.1k
        return NULL;
27718
22.1k
    }
27719
30.3k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27720
30.3k
    if (!_seq) {
27721
0
        PyMem_Free(_children);
27722
0
        p->error_indicator = 1;
27723
0
        PyErr_NoMemory();
27724
0
        p->level--;
27725
0
        return NULL;
27726
0
    }
27727
148k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27728
30.3k
    PyMem_Free(_children);
27729
30.3k
    p->level--;
27730
30.3k
    return _seq;
27731
30.3k
}
27732
27733
// _loop0_3: ';' simple_stmt
27734
static asdl_seq *
27735
_loop0_3_rule(Parser *p)
27736
12.6k
{
27737
12.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27738
0
        _Pypegen_stack_overflow(p);
27739
0
    }
27740
12.6k
    if (p->error_indicator) {
27741
0
        p->level--;
27742
0
        return NULL;
27743
0
    }
27744
12.6k
    void *_res = NULL;
27745
12.6k
    int _mark = p->mark;
27746
12.6k
    void **_children = PyMem_Malloc(sizeof(void *));
27747
12.6k
    if (!_children) {
27748
0
        p->error_indicator = 1;
27749
0
        PyErr_NoMemory();
27750
0
        p->level--;
27751
0
        return NULL;
27752
0
    }
27753
12.6k
    Py_ssize_t _children_capacity = 1;
27754
12.6k
    Py_ssize_t _n = 0;
27755
12.6k
    { // ';' simple_stmt
27756
12.6k
        if (p->error_indicator) {
27757
0
            p->level--;
27758
0
            return NULL;
27759
0
        }
27760
12.6k
        D(fprintf(stderr, "%*c> _loop0_3[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';' simple_stmt"));
27761
12.6k
        Token * _literal;
27762
12.6k
        stmt_ty elem;
27763
12.6k
        while (
27764
31.8k
            (_literal = _PyPegen_expect_token(p, 13))  // token=';'
27765
20.3k
            &&
27766
20.3k
            (elem = simple_stmt_rule(p))  // simple_stmt
27767
12.6k
        )
27768
19.1k
        {
27769
19.1k
            _res = elem;
27770
19.1k
            if (_res == NULL && PyErr_Occurred()) {
27771
0
                p->error_indicator = 1;
27772
0
                PyMem_Free(_children);
27773
0
                p->level--;
27774
0
                return NULL;
27775
0
            }
27776
19.1k
            if (_n == _children_capacity) {
27777
3.07k
                _children_capacity *= 2;
27778
3.07k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27779
3.07k
                if (!_new_children) {
27780
0
                    PyMem_Free(_children);
27781
0
                    p->error_indicator = 1;
27782
0
                    PyErr_NoMemory();
27783
0
                    p->level--;
27784
0
                    return NULL;
27785
0
                }
27786
3.07k
                _children = _new_children;
27787
3.07k
            }
27788
19.1k
            _children[_n++] = _res;
27789
19.1k
            _mark = p->mark;
27790
19.1k
        }
27791
12.6k
        p->mark = _mark;
27792
12.6k
        D(fprintf(stderr, "%*c%s _loop0_3[%d-%d]: %s failed!\n", p->level, ' ',
27793
12.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';' simple_stmt"));
27794
12.6k
    }
27795
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27796
12.6k
    if (!_seq) {
27797
0
        PyMem_Free(_children);
27798
0
        p->error_indicator = 1;
27799
0
        PyErr_NoMemory();
27800
0
        p->level--;
27801
0
        return NULL;
27802
0
    }
27803
31.8k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27804
12.6k
    PyMem_Free(_children);
27805
12.6k
    p->level--;
27806
12.6k
    return _seq;
27807
12.6k
}
27808
27809
// _gather_4: simple_stmt _loop0_3
27810
static asdl_seq *
27811
_gather_4_rule(Parser *p)
27812
51.0k
{
27813
51.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27814
0
        _Pypegen_stack_overflow(p);
27815
0
    }
27816
51.0k
    if (p->error_indicator) {
27817
0
        p->level--;
27818
0
        return NULL;
27819
0
    }
27820
51.0k
    asdl_seq * _res = NULL;
27821
51.0k
    int _mark = p->mark;
27822
51.0k
    { // simple_stmt _loop0_3
27823
51.0k
        if (p->error_indicator) {
27824
0
            p->level--;
27825
0
            return NULL;
27826
0
        }
27827
51.0k
        D(fprintf(stderr, "%*c> _gather_4[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_3"));
27828
51.0k
        stmt_ty elem;
27829
51.0k
        asdl_seq * seq;
27830
51.0k
        if (
27831
51.0k
            (elem = simple_stmt_rule(p))  // simple_stmt
27832
12.6k
            &&
27833
12.6k
            (seq = _loop0_3_rule(p))  // _loop0_3
27834
51.0k
        )
27835
12.6k
        {
27836
12.6k
            D(fprintf(stderr, "%*c+ _gather_4[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_3"));
27837
12.6k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
27838
12.6k
            goto done;
27839
12.6k
        }
27840
38.3k
        p->mark = _mark;
27841
38.3k
        D(fprintf(stderr, "%*c%s _gather_4[%d-%d]: %s failed!\n", p->level, ' ',
27842
38.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt _loop0_3"));
27843
38.3k
    }
27844
38.3k
    _res = NULL;
27845
51.0k
  done:
27846
51.0k
    p->level--;
27847
51.0k
    return _res;
27848
38.3k
}
27849
27850
// _tmp_5: 'import' | 'from'
27851
static void *
27852
_tmp_5_rule(Parser *p)
27853
59.0k
{
27854
59.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27855
0
        _Pypegen_stack_overflow(p);
27856
0
    }
27857
59.0k
    if (p->error_indicator) {
27858
0
        p->level--;
27859
0
        return NULL;
27860
0
    }
27861
59.0k
    void * _res = NULL;
27862
59.0k
    int _mark = p->mark;
27863
59.0k
    { // 'import'
27864
59.0k
        if (p->error_indicator) {
27865
0
            p->level--;
27866
0
            return NULL;
27867
0
        }
27868
59.0k
        D(fprintf(stderr, "%*c> _tmp_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import'"));
27869
59.0k
        Token * _keyword;
27870
59.0k
        if (
27871
59.0k
            (_keyword = _PyPegen_expect_token(p, 643))  // token='import'
27872
59.0k
        )
27873
2.86k
        {
27874
2.86k
            D(fprintf(stderr, "%*c+ _tmp_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import'"));
27875
2.86k
            _res = _keyword;
27876
2.86k
            goto done;
27877
2.86k
        }
27878
56.2k
        p->mark = _mark;
27879
56.2k
        D(fprintf(stderr, "%*c%s _tmp_5[%d-%d]: %s failed!\n", p->level, ' ',
27880
56.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import'"));
27881
56.2k
    }
27882
0
    { // 'from'
27883
56.2k
        if (p->error_indicator) {
27884
0
            p->level--;
27885
0
            return NULL;
27886
0
        }
27887
56.2k
        D(fprintf(stderr, "%*c> _tmp_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from'"));
27888
56.2k
        Token * _keyword;
27889
56.2k
        if (
27890
56.2k
            (_keyword = _PyPegen_expect_token(p, 642))  // token='from'
27891
56.2k
        )
27892
3.20k
        {
27893
3.20k
            D(fprintf(stderr, "%*c+ _tmp_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from'"));
27894
3.20k
            _res = _keyword;
27895
3.20k
            goto done;
27896
3.20k
        }
27897
53.0k
        p->mark = _mark;
27898
53.0k
        D(fprintf(stderr, "%*c%s _tmp_5[%d-%d]: %s failed!\n", p->level, ' ',
27899
53.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from'"));
27900
53.0k
    }
27901
53.0k
    _res = NULL;
27902
59.0k
  done:
27903
59.0k
    p->level--;
27904
59.0k
    return _res;
27905
53.0k
}
27906
27907
// _tmp_6: 'def' | '@' | 'async'
27908
static void *
27909
_tmp_6_rule(Parser *p)
27910
174k
{
27911
174k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27912
0
        _Pypegen_stack_overflow(p);
27913
0
    }
27914
174k
    if (p->error_indicator) {
27915
0
        p->level--;
27916
0
        return NULL;
27917
0
    }
27918
174k
    void * _res = NULL;
27919
174k
    int _mark = p->mark;
27920
174k
    { // 'def'
27921
174k
        if (p->error_indicator) {
27922
0
            p->level--;
27923
0
            return NULL;
27924
0
        }
27925
174k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def'"));
27926
174k
        Token * _keyword;
27927
174k
        if (
27928
174k
            (_keyword = _PyPegen_expect_token(p, 708))  // token='def'
27929
174k
        )
27930
10.9k
        {
27931
10.9k
            D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def'"));
27932
10.9k
            _res = _keyword;
27933
10.9k
            goto done;
27934
10.9k
        }
27935
163k
        p->mark = _mark;
27936
163k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
27937
163k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def'"));
27938
163k
    }
27939
0
    { // '@'
27940
163k
        if (p->error_indicator) {
27941
1.23k
            p->level--;
27942
1.23k
            return NULL;
27943
1.23k
        }
27944
161k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
27945
161k
        Token * _literal;
27946
161k
        if (
27947
161k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
27948
161k
        )
27949
1.72k
        {
27950
1.72k
            D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
27951
1.72k
            _res = _literal;
27952
1.72k
            goto done;
27953
1.72k
        }
27954
160k
        p->mark = _mark;
27955
160k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
27956
160k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
27957
160k
    }
27958
0
    { // 'async'
27959
160k
        if (p->error_indicator) {
27960
0
            p->level--;
27961
0
            return NULL;
27962
0
        }
27963
160k
        D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
27964
160k
        Token * _keyword;
27965
160k
        if (
27966
160k
            (_keyword = _PyPegen_expect_token(p, 707))  // token='async'
27967
160k
        )
27968
2.41k
        {
27969
2.41k
            D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
27970
2.41k
            _res = _keyword;
27971
2.41k
            goto done;
27972
2.41k
        }
27973
157k
        p->mark = _mark;
27974
157k
        D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
27975
157k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
27976
157k
    }
27977
157k
    _res = NULL;
27978
172k
  done:
27979
172k
    p->level--;
27980
172k
    return _res;
27981
157k
}
27982
27983
// _tmp_7: 'class' | '@'
27984
static void *
27985
_tmp_7_rule(Parser *p)
27986
152k
{
27987
152k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
27988
0
        _Pypegen_stack_overflow(p);
27989
0
    }
27990
152k
    if (p->error_indicator) {
27991
0
        p->level--;
27992
0
        return NULL;
27993
0
    }
27994
152k
    void * _res = NULL;
27995
152k
    int _mark = p->mark;
27996
152k
    { // 'class'
27997
152k
        if (p->error_indicator) {
27998
0
            p->level--;
27999
0
            return NULL;
28000
0
        }
28001
152k
        D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class'"));
28002
152k
        Token * _keyword;
28003
152k
        if (
28004
152k
            (_keyword = _PyPegen_expect_token(p, 710))  // token='class'
28005
152k
        )
28006
3.64k
        {
28007
3.64k
            D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class'"));
28008
3.64k
            _res = _keyword;
28009
3.64k
            goto done;
28010
3.64k
        }
28011
148k
        p->mark = _mark;
28012
148k
        D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
28013
148k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class'"));
28014
148k
    }
28015
0
    { // '@'
28016
148k
        if (p->error_indicator) {
28017
0
            p->level--;
28018
0
            return NULL;
28019
0
        }
28020
148k
        D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
28021
148k
        Token * _literal;
28022
148k
        if (
28023
148k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
28024
148k
        )
28025
642
        {
28026
642
            D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
28027
642
            _res = _literal;
28028
642
            goto done;
28029
642
        }
28030
147k
        p->mark = _mark;
28031
147k
        D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
28032
147k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
28033
147k
    }
28034
147k
    _res = NULL;
28035
152k
  done:
28036
152k
    p->level--;
28037
152k
    return _res;
28038
147k
}
28039
28040
// _tmp_8: 'with' | 'async'
28041
static void *
28042
_tmp_8_rule(Parser *p)
28043
148k
{
28044
148k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28045
0
        _Pypegen_stack_overflow(p);
28046
0
    }
28047
148k
    if (p->error_indicator) {
28048
0
        p->level--;
28049
0
        return NULL;
28050
0
    }
28051
148k
    void * _res = NULL;
28052
148k
    int _mark = p->mark;
28053
148k
    { // 'with'
28054
148k
        if (p->error_indicator) {
28055
0
            p->level--;
28056
0
            return NULL;
28057
0
        }
28058
148k
        D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with'"));
28059
148k
        Token * _keyword;
28060
148k
        if (
28061
148k
            (_keyword = _PyPegen_expect_token(p, 656))  // token='with'
28062
148k
        )
28063
3.95k
        {
28064
3.95k
            D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with'"));
28065
3.95k
            _res = _keyword;
28066
3.95k
            goto done;
28067
3.95k
        }
28068
144k
        p->mark = _mark;
28069
144k
        D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ',
28070
144k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with'"));
28071
144k
    }
28072
0
    { // 'async'
28073
144k
        if (p->error_indicator) {
28074
0
            p->level--;
28075
0
            return NULL;
28076
0
        }
28077
144k
        D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
28078
144k
        Token * _keyword;
28079
144k
        if (
28080
144k
            (_keyword = _PyPegen_expect_token(p, 707))  // token='async'
28081
144k
        )
28082
1.96k
        {
28083
1.96k
            D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
28084
1.96k
            _res = _keyword;
28085
1.96k
            goto done;
28086
1.96k
        }
28087
142k
        p->mark = _mark;
28088
142k
        D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ',
28089
142k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
28090
142k
    }
28091
142k
    _res = NULL;
28092
148k
  done:
28093
148k
    p->level--;
28094
148k
    return _res;
28095
142k
}
28096
28097
// _tmp_9: 'for' | 'async'
28098
static void *
28099
_tmp_9_rule(Parser *p)
28100
143k
{
28101
143k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28102
0
        _Pypegen_stack_overflow(p);
28103
0
    }
28104
143k
    if (p->error_indicator) {
28105
0
        p->level--;
28106
0
        return NULL;
28107
0
    }
28108
143k
    void * _res = NULL;
28109
143k
    int _mark = p->mark;
28110
143k
    { // 'for'
28111
143k
        if (p->error_indicator) {
28112
0
            p->level--;
28113
0
            return NULL;
28114
0
        }
28115
143k
        D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for'"));
28116
143k
        Token * _keyword;
28117
143k
        if (
28118
143k
            (_keyword = _PyPegen_expect_token(p, 703))  // token='for'
28119
143k
        )
28120
1.99k
        {
28121
1.99k
            D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for'"));
28122
1.99k
            _res = _keyword;
28123
1.99k
            goto done;
28124
1.99k
        }
28125
141k
        p->mark = _mark;
28126
141k
        D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ',
28127
141k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for'"));
28128
141k
    }
28129
0
    { // 'async'
28130
141k
        if (p->error_indicator) {
28131
0
            p->level--;
28132
0
            return NULL;
28133
0
        }
28134
141k
        D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'async'"));
28135
141k
        Token * _keyword;
28136
141k
        if (
28137
141k
            (_keyword = _PyPegen_expect_token(p, 707))  // token='async'
28138
141k
        )
28139
794
        {
28140
794
            D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'async'"));
28141
794
            _res = _keyword;
28142
794
            goto done;
28143
794
        }
28144
140k
        p->mark = _mark;
28145
140k
        D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ',
28146
140k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'async'"));
28147
140k
    }
28148
140k
    _res = NULL;
28149
143k
  done:
28150
143k
    p->level--;
28151
143k
    return _res;
28152
140k
}
28153
28154
// _tmp_10: '=' annotated_rhs
28155
static void *
28156
_tmp_10_rule(Parser *p)
28157
3.26k
{
28158
3.26k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28159
0
        _Pypegen_stack_overflow(p);
28160
0
    }
28161
3.26k
    if (p->error_indicator) {
28162
0
        p->level--;
28163
0
        return NULL;
28164
0
    }
28165
3.26k
    void * _res = NULL;
28166
3.26k
    int _mark = p->mark;
28167
3.26k
    { // '=' annotated_rhs
28168
3.26k
        if (p->error_indicator) {
28169
0
            p->level--;
28170
0
            return NULL;
28171
0
        }
28172
3.26k
        D(fprintf(stderr, "%*c> _tmp_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
28173
3.26k
        Token * _literal;
28174
3.26k
        expr_ty d;
28175
3.26k
        if (
28176
3.26k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
28177
578
            &&
28178
578
            (d = annotated_rhs_rule(p))  // annotated_rhs
28179
3.26k
        )
28180
563
        {
28181
563
            D(fprintf(stderr, "%*c+ _tmp_10[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
28182
563
            _res = d;
28183
563
            if (_res == NULL && PyErr_Occurred()) {
28184
0
                p->error_indicator = 1;
28185
0
                p->level--;
28186
0
                return NULL;
28187
0
            }
28188
563
            goto done;
28189
563
        }
28190
2.70k
        p->mark = _mark;
28191
2.70k
        D(fprintf(stderr, "%*c%s _tmp_10[%d-%d]: %s failed!\n", p->level, ' ',
28192
2.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
28193
2.70k
    }
28194
2.70k
    _res = NULL;
28195
3.26k
  done:
28196
3.26k
    p->level--;
28197
3.26k
    return _res;
28198
2.70k
}
28199
28200
// _tmp_11: '(' single_target ')' | single_subscript_attribute_target
28201
static void *
28202
_tmp_11_rule(Parser *p)
28203
187k
{
28204
187k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28205
0
        _Pypegen_stack_overflow(p);
28206
0
    }
28207
187k
    if (p->error_indicator) {
28208
0
        p->level--;
28209
0
        return NULL;
28210
0
    }
28211
187k
    void * _res = NULL;
28212
187k
    int _mark = p->mark;
28213
187k
    { // '(' single_target ')'
28214
187k
        if (p->error_indicator) {
28215
0
            p->level--;
28216
0
            return NULL;
28217
0
        }
28218
187k
        D(fprintf(stderr, "%*c> _tmp_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
28219
187k
        Token * _literal;
28220
187k
        Token * _literal_1;
28221
187k
        expr_ty b;
28222
187k
        if (
28223
187k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
28224
3.52k
            &&
28225
3.52k
            (b = single_target_rule(p))  // single_target
28226
1.76k
            &&
28227
1.76k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
28228
187k
        )
28229
406
        {
28230
406
            D(fprintf(stderr, "%*c+ _tmp_11[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
28231
406
            _res = b;
28232
406
            if (_res == NULL && PyErr_Occurred()) {
28233
0
                p->error_indicator = 1;
28234
0
                p->level--;
28235
0
                return NULL;
28236
0
            }
28237
406
            goto done;
28238
406
        }
28239
187k
        p->mark = _mark;
28240
187k
        D(fprintf(stderr, "%*c%s _tmp_11[%d-%d]: %s failed!\n", p->level, ' ',
28241
187k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
28242
187k
    }
28243
0
    { // single_subscript_attribute_target
28244
187k
        if (p->error_indicator) {
28245
160
            p->level--;
28246
160
            return NULL;
28247
160
        }
28248
187k
        D(fprintf(stderr, "%*c> _tmp_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
28249
187k
        expr_ty single_subscript_attribute_target_var;
28250
187k
        if (
28251
187k
            (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
28252
187k
        )
28253
5.24k
        {
28254
5.24k
            D(fprintf(stderr, "%*c+ _tmp_11[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
28255
5.24k
            _res = single_subscript_attribute_target_var;
28256
5.24k
            goto done;
28257
5.24k
        }
28258
182k
        p->mark = _mark;
28259
182k
        D(fprintf(stderr, "%*c%s _tmp_11[%d-%d]: %s failed!\n", p->level, ' ',
28260
182k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
28261
182k
    }
28262
182k
    _res = NULL;
28263
187k
  done:
28264
187k
    p->level--;
28265
187k
    return _res;
28266
182k
}
28267
28268
// _loop1_12: (star_targets '=')
28269
static asdl_seq *
28270
_loop1_12_rule(Parser *p)
28271
184k
{
28272
184k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28273
0
        _Pypegen_stack_overflow(p);
28274
0
    }
28275
184k
    if (p->error_indicator) {
28276
0
        p->level--;
28277
0
        return NULL;
28278
0
    }
28279
184k
    void *_res = NULL;
28280
184k
    int _mark = p->mark;
28281
184k
    void **_children = PyMem_Malloc(sizeof(void *));
28282
184k
    if (!_children) {
28283
0
        p->error_indicator = 1;
28284
0
        PyErr_NoMemory();
28285
0
        p->level--;
28286
0
        return NULL;
28287
0
    }
28288
184k
    Py_ssize_t _children_capacity = 1;
28289
184k
    Py_ssize_t _n = 0;
28290
184k
    { // (star_targets '=')
28291
184k
        if (p->error_indicator) {
28292
0
            p->level--;
28293
0
            return NULL;
28294
0
        }
28295
184k
        D(fprintf(stderr, "%*c> _loop1_12[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
28296
184k
        void *_tmp_156_var;
28297
184k
        while (
28298
201k
            (_tmp_156_var = _tmp_156_rule(p))  // star_targets '='
28299
184k
        )
28300
17.4k
        {
28301
17.4k
            _res = _tmp_156_var;
28302
17.4k
            if (_n == _children_capacity) {
28303
414
                _children_capacity *= 2;
28304
414
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28305
414
                if (!_new_children) {
28306
0
                    PyMem_Free(_children);
28307
0
                    p->error_indicator = 1;
28308
0
                    PyErr_NoMemory();
28309
0
                    p->level--;
28310
0
                    return NULL;
28311
0
                }
28312
414
                _children = _new_children;
28313
414
            }
28314
17.4k
            _children[_n++] = _res;
28315
17.4k
            _mark = p->mark;
28316
17.4k
        }
28317
184k
        p->mark = _mark;
28318
184k
        D(fprintf(stderr, "%*c%s _loop1_12[%d-%d]: %s failed!\n", p->level, ' ',
28319
184k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
28320
184k
    }
28321
184k
    if (_n == 0 || p->error_indicator) {
28322
168k
        PyMem_Free(_children);
28323
168k
        p->level--;
28324
168k
        return NULL;
28325
168k
    }
28326
15.8k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28327
15.8k
    if (!_seq) {
28328
0
        PyMem_Free(_children);
28329
0
        p->error_indicator = 1;
28330
0
        PyErr_NoMemory();
28331
0
        p->level--;
28332
0
        return NULL;
28333
0
    }
28334
33.1k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28335
15.8k
    PyMem_Free(_children);
28336
15.8k
    p->level--;
28337
15.8k
    return _seq;
28338
15.8k
}
28339
28340
// _loop0_13: ',' NAME
28341
static asdl_seq *
28342
_loop0_13_rule(Parser *p)
28343
1.26k
{
28344
1.26k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28345
0
        _Pypegen_stack_overflow(p);
28346
0
    }
28347
1.26k
    if (p->error_indicator) {
28348
0
        p->level--;
28349
0
        return NULL;
28350
0
    }
28351
1.26k
    void *_res = NULL;
28352
1.26k
    int _mark = p->mark;
28353
1.26k
    void **_children = PyMem_Malloc(sizeof(void *));
28354
1.26k
    if (!_children) {
28355
0
        p->error_indicator = 1;
28356
0
        PyErr_NoMemory();
28357
0
        p->level--;
28358
0
        return NULL;
28359
0
    }
28360
1.26k
    Py_ssize_t _children_capacity = 1;
28361
1.26k
    Py_ssize_t _n = 0;
28362
1.26k
    { // ',' NAME
28363
1.26k
        if (p->error_indicator) {
28364
0
            p->level--;
28365
0
            return NULL;
28366
0
        }
28367
1.26k
        D(fprintf(stderr, "%*c> _loop0_13[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
28368
1.26k
        Token * _literal;
28369
1.26k
        expr_ty elem;
28370
1.26k
        while (
28371
3.43k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28372
2.19k
            &&
28373
2.19k
            (elem = _PyPegen_name_token(p))  // NAME
28374
1.26k
        )
28375
2.17k
        {
28376
2.17k
            _res = elem;
28377
2.17k
            if (_res == NULL && PyErr_Occurred()) {
28378
0
                p->error_indicator = 1;
28379
0
                PyMem_Free(_children);
28380
0
                p->level--;
28381
0
                return NULL;
28382
0
            }
28383
2.17k
            if (_n == _children_capacity) {
28384
584
                _children_capacity *= 2;
28385
584
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28386
584
                if (!_new_children) {
28387
0
                    PyMem_Free(_children);
28388
0
                    p->error_indicator = 1;
28389
0
                    PyErr_NoMemory();
28390
0
                    p->level--;
28391
0
                    return NULL;
28392
0
                }
28393
584
                _children = _new_children;
28394
584
            }
28395
2.17k
            _children[_n++] = _res;
28396
2.17k
            _mark = p->mark;
28397
2.17k
        }
28398
1.26k
        p->mark = _mark;
28399
1.26k
        D(fprintf(stderr, "%*c%s _loop0_13[%d-%d]: %s failed!\n", p->level, ' ',
28400
1.26k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
28401
1.26k
    }
28402
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28403
1.26k
    if (!_seq) {
28404
0
        PyMem_Free(_children);
28405
0
        p->error_indicator = 1;
28406
0
        PyErr_NoMemory();
28407
0
        p->level--;
28408
0
        return NULL;
28409
0
    }
28410
3.43k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28411
1.26k
    PyMem_Free(_children);
28412
1.26k
    p->level--;
28413
1.26k
    return _seq;
28414
1.26k
}
28415
28416
// _gather_14: NAME _loop0_13
28417
static asdl_seq *
28418
_gather_14_rule(Parser *p)
28419
1.27k
{
28420
1.27k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28421
0
        _Pypegen_stack_overflow(p);
28422
0
    }
28423
1.27k
    if (p->error_indicator) {
28424
0
        p->level--;
28425
0
        return NULL;
28426
0
    }
28427
1.27k
    asdl_seq * _res = NULL;
28428
1.27k
    int _mark = p->mark;
28429
1.27k
    { // NAME _loop0_13
28430
1.27k
        if (p->error_indicator) {
28431
0
            p->level--;
28432
0
            return NULL;
28433
0
        }
28434
1.27k
        D(fprintf(stderr, "%*c> _gather_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_13"));
28435
1.27k
        expr_ty elem;
28436
1.27k
        asdl_seq * seq;
28437
1.27k
        if (
28438
1.27k
            (elem = _PyPegen_name_token(p))  // NAME
28439
1.26k
            &&
28440
1.26k
            (seq = _loop0_13_rule(p))  // _loop0_13
28441
1.27k
        )
28442
1.26k
        {
28443
1.26k
            D(fprintf(stderr, "%*c+ _gather_14[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_13"));
28444
1.26k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28445
1.26k
            goto done;
28446
1.26k
        }
28447
8
        p->mark = _mark;
28448
8
        D(fprintf(stderr, "%*c%s _gather_14[%d-%d]: %s failed!\n", p->level, ' ',
28449
8
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_13"));
28450
8
    }
28451
8
    _res = NULL;
28452
1.27k
  done:
28453
1.27k
    p->level--;
28454
1.27k
    return _res;
28455
8
}
28456
28457
// _tmp_15: ';' | NEWLINE
28458
static void *
28459
_tmp_15_rule(Parser *p)
28460
1.39k
{
28461
1.39k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28462
0
        _Pypegen_stack_overflow(p);
28463
0
    }
28464
1.39k
    if (p->error_indicator) {
28465
0
        p->level--;
28466
0
        return NULL;
28467
0
    }
28468
1.39k
    void * _res = NULL;
28469
1.39k
    int _mark = p->mark;
28470
1.39k
    { // ';'
28471
1.39k
        if (p->error_indicator) {
28472
0
            p->level--;
28473
0
            return NULL;
28474
0
        }
28475
1.39k
        D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'"));
28476
1.39k
        Token * _literal;
28477
1.39k
        if (
28478
1.39k
            (_literal = _PyPegen_expect_token(p, 13))  // token=';'
28479
1.39k
        )
28480
612
        {
28481
612
            D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'"));
28482
612
            _res = _literal;
28483
612
            goto done;
28484
612
        }
28485
781
        p->mark = _mark;
28486
781
        D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
28487
781
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'"));
28488
781
    }
28489
0
    { // NEWLINE
28490
781
        if (p->error_indicator) {
28491
0
            p->level--;
28492
0
            return NULL;
28493
0
        }
28494
781
        D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
28495
781
        Token * newline_var;
28496
781
        if (
28497
781
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
28498
781
        )
28499
479
        {
28500
479
            D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
28501
479
            _res = newline_var;
28502
479
            goto done;
28503
479
        }
28504
302
        p->mark = _mark;
28505
302
        D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
28506
302
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
28507
302
    }
28508
302
    _res = NULL;
28509
1.39k
  done:
28510
1.39k
    p->level--;
28511
1.39k
    return _res;
28512
302
}
28513
28514
// _tmp_16: ',' expression
28515
static void *
28516
_tmp_16_rule(Parser *p)
28517
7.60k
{
28518
7.60k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28519
0
        _Pypegen_stack_overflow(p);
28520
0
    }
28521
7.60k
    if (p->error_indicator) {
28522
0
        p->level--;
28523
0
        return NULL;
28524
0
    }
28525
7.60k
    void * _res = NULL;
28526
7.60k
    int _mark = p->mark;
28527
7.60k
    { // ',' expression
28528
7.60k
        if (p->error_indicator) {
28529
0
            p->level--;
28530
0
            return NULL;
28531
0
        }
28532
7.60k
        D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
28533
7.60k
        Token * _literal;
28534
7.60k
        expr_ty z;
28535
7.60k
        if (
28536
7.60k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28537
4.34k
            &&
28538
4.34k
            (z = expression_rule(p))  // expression
28539
7.60k
        )
28540
2.12k
        {
28541
2.12k
            D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression"));
28542
2.12k
            _res = z;
28543
2.12k
            if (_res == NULL && PyErr_Occurred()) {
28544
0
                p->error_indicator = 1;
28545
0
                p->level--;
28546
0
                return NULL;
28547
0
            }
28548
2.12k
            goto done;
28549
2.12k
        }
28550
5.47k
        p->mark = _mark;
28551
5.47k
        D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
28552
5.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
28553
5.47k
    }
28554
5.47k
    _res = NULL;
28555
7.60k
  done:
28556
7.60k
    p->level--;
28557
7.60k
    return _res;
28558
5.47k
}
28559
28560
// _loop0_17: ('.' | '...')
28561
static asdl_seq *
28562
_loop0_17_rule(Parser *p)
28563
3.20k
{
28564
3.20k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28565
0
        _Pypegen_stack_overflow(p);
28566
0
    }
28567
3.20k
    if (p->error_indicator) {
28568
0
        p->level--;
28569
0
        return NULL;
28570
0
    }
28571
3.20k
    void *_res = NULL;
28572
3.20k
    int _mark = p->mark;
28573
3.20k
    void **_children = PyMem_Malloc(sizeof(void *));
28574
3.20k
    if (!_children) {
28575
0
        p->error_indicator = 1;
28576
0
        PyErr_NoMemory();
28577
0
        p->level--;
28578
0
        return NULL;
28579
0
    }
28580
3.20k
    Py_ssize_t _children_capacity = 1;
28581
3.20k
    Py_ssize_t _n = 0;
28582
3.20k
    { // ('.' | '...')
28583
3.20k
        if (p->error_indicator) {
28584
0
            p->level--;
28585
0
            return NULL;
28586
0
        }
28587
3.20k
        D(fprintf(stderr, "%*c> _loop0_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
28588
3.20k
        void *_tmp_157_var;
28589
3.20k
        while (
28590
6.29k
            (_tmp_157_var = _tmp_157_rule(p))  // '.' | '...'
28591
3.20k
        )
28592
3.09k
        {
28593
3.09k
            _res = _tmp_157_var;
28594
3.09k
            if (_n == _children_capacity) {
28595
680
                _children_capacity *= 2;
28596
680
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28597
680
                if (!_new_children) {
28598
0
                    PyMem_Free(_children);
28599
0
                    p->error_indicator = 1;
28600
0
                    PyErr_NoMemory();
28601
0
                    p->level--;
28602
0
                    return NULL;
28603
0
                }
28604
680
                _children = _new_children;
28605
680
            }
28606
3.09k
            _children[_n++] = _res;
28607
3.09k
            _mark = p->mark;
28608
3.09k
        }
28609
3.20k
        p->mark = _mark;
28610
3.20k
        D(fprintf(stderr, "%*c%s _loop0_17[%d-%d]: %s failed!\n", p->level, ' ',
28611
3.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
28612
3.20k
    }
28613
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28614
3.20k
    if (!_seq) {
28615
0
        PyMem_Free(_children);
28616
0
        p->error_indicator = 1;
28617
0
        PyErr_NoMemory();
28618
0
        p->level--;
28619
0
        return NULL;
28620
0
    }
28621
6.29k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28622
3.20k
    PyMem_Free(_children);
28623
3.20k
    p->level--;
28624
3.20k
    return _seq;
28625
3.20k
}
28626
28627
// _loop1_18: ('.' | '...')
28628
static asdl_seq *
28629
_loop1_18_rule(Parser *p)
28630
1.25k
{
28631
1.25k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28632
0
        _Pypegen_stack_overflow(p);
28633
0
    }
28634
1.25k
    if (p->error_indicator) {
28635
0
        p->level--;
28636
0
        return NULL;
28637
0
    }
28638
1.25k
    void *_res = NULL;
28639
1.25k
    int _mark = p->mark;
28640
1.25k
    void **_children = PyMem_Malloc(sizeof(void *));
28641
1.25k
    if (!_children) {
28642
0
        p->error_indicator = 1;
28643
0
        PyErr_NoMemory();
28644
0
        p->level--;
28645
0
        return NULL;
28646
0
    }
28647
1.25k
    Py_ssize_t _children_capacity = 1;
28648
1.25k
    Py_ssize_t _n = 0;
28649
1.25k
    { // ('.' | '...')
28650
1.25k
        if (p->error_indicator) {
28651
0
            p->level--;
28652
0
            return NULL;
28653
0
        }
28654
1.25k
        D(fprintf(stderr, "%*c> _loop1_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
28655
1.25k
        void *_tmp_157_var;
28656
1.25k
        while (
28657
3.75k
            (_tmp_157_var = _tmp_157_rule(p))  // '.' | '...'
28658
1.25k
        )
28659
2.50k
        {
28660
2.50k
            _res = _tmp_157_var;
28661
2.50k
            if (_n == _children_capacity) {
28662
666
                _children_capacity *= 2;
28663
666
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28664
666
                if (!_new_children) {
28665
0
                    PyMem_Free(_children);
28666
0
                    p->error_indicator = 1;
28667
0
                    PyErr_NoMemory();
28668
0
                    p->level--;
28669
0
                    return NULL;
28670
0
                }
28671
666
                _children = _new_children;
28672
666
            }
28673
2.50k
            _children[_n++] = _res;
28674
2.50k
            _mark = p->mark;
28675
2.50k
        }
28676
1.25k
        p->mark = _mark;
28677
1.25k
        D(fprintf(stderr, "%*c%s _loop1_18[%d-%d]: %s failed!\n", p->level, ' ',
28678
1.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
28679
1.25k
    }
28680
1.25k
    if (_n == 0 || p->error_indicator) {
28681
61
        PyMem_Free(_children);
28682
61
        p->level--;
28683
61
        return NULL;
28684
61
    }
28685
1.19k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28686
1.19k
    if (!_seq) {
28687
0
        PyMem_Free(_children);
28688
0
        p->error_indicator = 1;
28689
0
        PyErr_NoMemory();
28690
0
        p->level--;
28691
0
        return NULL;
28692
0
    }
28693
3.69k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28694
1.19k
    PyMem_Free(_children);
28695
1.19k
    p->level--;
28696
1.19k
    return _seq;
28697
1.19k
}
28698
28699
// _loop0_19: ',' import_from_as_name
28700
static asdl_seq *
28701
_loop0_19_rule(Parser *p)
28702
2.48k
{
28703
2.48k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28704
0
        _Pypegen_stack_overflow(p);
28705
0
    }
28706
2.48k
    if (p->error_indicator) {
28707
0
        p->level--;
28708
0
        return NULL;
28709
0
    }
28710
2.48k
    void *_res = NULL;
28711
2.48k
    int _mark = p->mark;
28712
2.48k
    void **_children = PyMem_Malloc(sizeof(void *));
28713
2.48k
    if (!_children) {
28714
0
        p->error_indicator = 1;
28715
0
        PyErr_NoMemory();
28716
0
        p->level--;
28717
0
        return NULL;
28718
0
    }
28719
2.48k
    Py_ssize_t _children_capacity = 1;
28720
2.48k
    Py_ssize_t _n = 0;
28721
2.48k
    { // ',' import_from_as_name
28722
2.48k
        if (p->error_indicator) {
28723
0
            p->level--;
28724
0
            return NULL;
28725
0
        }
28726
2.48k
        D(fprintf(stderr, "%*c> _loop0_19[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' import_from_as_name"));
28727
2.48k
        Token * _literal;
28728
2.48k
        alias_ty elem;
28729
2.48k
        while (
28730
5.63k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28731
3.22k
            &&
28732
3.22k
            (elem = import_from_as_name_rule(p))  // import_from_as_name
28733
2.48k
        )
28734
3.15k
        {
28735
3.15k
            _res = elem;
28736
3.15k
            if (_res == NULL && PyErr_Occurred()) {
28737
0
                p->error_indicator = 1;
28738
0
                PyMem_Free(_children);
28739
0
                p->level--;
28740
0
                return NULL;
28741
0
            }
28742
3.15k
            if (_n == _children_capacity) {
28743
575
                _children_capacity *= 2;
28744
575
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28745
575
                if (!_new_children) {
28746
0
                    PyMem_Free(_children);
28747
0
                    p->error_indicator = 1;
28748
0
                    PyErr_NoMemory();
28749
0
                    p->level--;
28750
0
                    return NULL;
28751
0
                }
28752
575
                _children = _new_children;
28753
575
            }
28754
3.15k
            _children[_n++] = _res;
28755
3.15k
            _mark = p->mark;
28756
3.15k
        }
28757
2.48k
        p->mark = _mark;
28758
2.48k
        D(fprintf(stderr, "%*c%s _loop0_19[%d-%d]: %s failed!\n", p->level, ' ',
28759
2.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' import_from_as_name"));
28760
2.48k
    }
28761
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28762
2.48k
    if (!_seq) {
28763
0
        PyMem_Free(_children);
28764
0
        p->error_indicator = 1;
28765
0
        PyErr_NoMemory();
28766
0
        p->level--;
28767
0
        return NULL;
28768
0
    }
28769
5.63k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28770
2.48k
    PyMem_Free(_children);
28771
2.48k
    p->level--;
28772
2.48k
    return _seq;
28773
2.48k
}
28774
28775
// _gather_20: import_from_as_name _loop0_19
28776
static asdl_seq *
28777
_gather_20_rule(Parser *p)
28778
3.12k
{
28779
3.12k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28780
0
        _Pypegen_stack_overflow(p);
28781
0
    }
28782
3.12k
    if (p->error_indicator) {
28783
0
        p->level--;
28784
0
        return NULL;
28785
0
    }
28786
3.12k
    asdl_seq * _res = NULL;
28787
3.12k
    int _mark = p->mark;
28788
3.12k
    { // import_from_as_name _loop0_19
28789
3.12k
        if (p->error_indicator) {
28790
0
            p->level--;
28791
0
            return NULL;
28792
0
        }
28793
3.12k
        D(fprintf(stderr, "%*c> _gather_20[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_19"));
28794
3.12k
        alias_ty elem;
28795
3.12k
        asdl_seq * seq;
28796
3.12k
        if (
28797
3.12k
            (elem = import_from_as_name_rule(p))  // import_from_as_name
28798
2.48k
            &&
28799
2.48k
            (seq = _loop0_19_rule(p))  // _loop0_19
28800
3.12k
        )
28801
2.48k
        {
28802
2.48k
            D(fprintf(stderr, "%*c+ _gather_20[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_19"));
28803
2.48k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28804
2.48k
            goto done;
28805
2.48k
        }
28806
641
        p->mark = _mark;
28807
641
        D(fprintf(stderr, "%*c%s _gather_20[%d-%d]: %s failed!\n", p->level, ' ',
28808
641
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_name _loop0_19"));
28809
641
    }
28810
641
    _res = NULL;
28811
3.12k
  done:
28812
3.12k
    p->level--;
28813
3.12k
    return _res;
28814
641
}
28815
28816
// _tmp_21: 'as' NAME
28817
static void *
28818
_tmp_21_rule(Parser *p)
28819
18.3k
{
28820
18.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28821
0
        _Pypegen_stack_overflow(p);
28822
0
    }
28823
18.3k
    if (p->error_indicator) {
28824
0
        p->level--;
28825
0
        return NULL;
28826
0
    }
28827
18.3k
    void * _res = NULL;
28828
18.3k
    int _mark = p->mark;
28829
18.3k
    { // 'as' NAME
28830
18.3k
        if (p->error_indicator) {
28831
0
            p->level--;
28832
0
            return NULL;
28833
0
        }
28834
18.3k
        D(fprintf(stderr, "%*c> _tmp_21[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
28835
18.3k
        Token * _keyword;
28836
18.3k
        expr_ty z;
28837
18.3k
        if (
28838
18.3k
            (_keyword = _PyPegen_expect_token(p, 689))  // token='as'
28839
2.12k
            &&
28840
2.12k
            (z = _PyPegen_name_token(p))  // NAME
28841
18.3k
        )
28842
2.05k
        {
28843
2.05k
            D(fprintf(stderr, "%*c+ _tmp_21[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
28844
2.05k
            _res = z;
28845
2.05k
            if (_res == NULL && PyErr_Occurred()) {
28846
0
                p->error_indicator = 1;
28847
0
                p->level--;
28848
0
                return NULL;
28849
0
            }
28850
2.05k
            goto done;
28851
2.05k
        }
28852
16.3k
        p->mark = _mark;
28853
16.3k
        D(fprintf(stderr, "%*c%s _tmp_21[%d-%d]: %s failed!\n", p->level, ' ',
28854
16.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
28855
16.3k
    }
28856
16.3k
    _res = NULL;
28857
18.3k
  done:
28858
18.3k
    p->level--;
28859
18.3k
    return _res;
28860
16.3k
}
28861
28862
// _loop0_22: ',' dotted_as_name
28863
static asdl_seq *
28864
_loop0_22_rule(Parser *p)
28865
2.82k
{
28866
2.82k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28867
0
        _Pypegen_stack_overflow(p);
28868
0
    }
28869
2.82k
    if (p->error_indicator) {
28870
0
        p->level--;
28871
0
        return NULL;
28872
0
    }
28873
2.82k
    void *_res = NULL;
28874
2.82k
    int _mark = p->mark;
28875
2.82k
    void **_children = PyMem_Malloc(sizeof(void *));
28876
2.82k
    if (!_children) {
28877
0
        p->error_indicator = 1;
28878
0
        PyErr_NoMemory();
28879
0
        p->level--;
28880
0
        return NULL;
28881
0
    }
28882
2.82k
    Py_ssize_t _children_capacity = 1;
28883
2.82k
    Py_ssize_t _n = 0;
28884
2.82k
    { // ',' dotted_as_name
28885
2.82k
        if (p->error_indicator) {
28886
0
            p->level--;
28887
0
            return NULL;
28888
0
        }
28889
2.82k
        D(fprintf(stderr, "%*c> _loop0_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' dotted_as_name"));
28890
2.82k
        Token * _literal;
28891
2.82k
        alias_ty elem;
28892
2.82k
        while (
28893
9.46k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
28894
6.70k
            &&
28895
6.70k
            (elem = dotted_as_name_rule(p))  // dotted_as_name
28896
2.82k
        )
28897
6.64k
        {
28898
6.64k
            _res = elem;
28899
6.64k
            if (_res == NULL && PyErr_Occurred()) {
28900
0
                p->error_indicator = 1;
28901
0
                PyMem_Free(_children);
28902
0
                p->level--;
28903
0
                return NULL;
28904
0
            }
28905
6.64k
            if (_n == _children_capacity) {
28906
1.27k
                _children_capacity *= 2;
28907
1.27k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28908
1.27k
                if (!_new_children) {
28909
0
                    PyMem_Free(_children);
28910
0
                    p->error_indicator = 1;
28911
0
                    PyErr_NoMemory();
28912
0
                    p->level--;
28913
0
                    return NULL;
28914
0
                }
28915
1.27k
                _children = _new_children;
28916
1.27k
            }
28917
6.64k
            _children[_n++] = _res;
28918
6.64k
            _mark = p->mark;
28919
6.64k
        }
28920
2.82k
        p->mark = _mark;
28921
2.82k
        D(fprintf(stderr, "%*c%s _loop0_22[%d-%d]: %s failed!\n", p->level, ' ',
28922
2.82k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' dotted_as_name"));
28923
2.82k
    }
28924
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28925
2.82k
    if (!_seq) {
28926
0
        PyMem_Free(_children);
28927
0
        p->error_indicator = 1;
28928
0
        PyErr_NoMemory();
28929
0
        p->level--;
28930
0
        return NULL;
28931
0
    }
28932
9.46k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28933
2.82k
    PyMem_Free(_children);
28934
2.82k
    p->level--;
28935
2.82k
    return _seq;
28936
2.82k
}
28937
28938
// _gather_23: dotted_as_name _loop0_22
28939
static asdl_seq *
28940
_gather_23_rule(Parser *p)
28941
2.86k
{
28942
2.86k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28943
0
        _Pypegen_stack_overflow(p);
28944
0
    }
28945
2.86k
    if (p->error_indicator) {
28946
0
        p->level--;
28947
0
        return NULL;
28948
0
    }
28949
2.86k
    asdl_seq * _res = NULL;
28950
2.86k
    int _mark = p->mark;
28951
2.86k
    { // dotted_as_name _loop0_22
28952
2.86k
        if (p->error_indicator) {
28953
0
            p->level--;
28954
0
            return NULL;
28955
0
        }
28956
2.86k
        D(fprintf(stderr, "%*c> _gather_23[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_22"));
28957
2.86k
        alias_ty elem;
28958
2.86k
        asdl_seq * seq;
28959
2.86k
        if (
28960
2.86k
            (elem = dotted_as_name_rule(p))  // dotted_as_name
28961
2.82k
            &&
28962
2.82k
            (seq = _loop0_22_rule(p))  // _loop0_22
28963
2.86k
        )
28964
2.82k
        {
28965
2.82k
            D(fprintf(stderr, "%*c+ _gather_23[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_22"));
28966
2.82k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28967
2.82k
            goto done;
28968
2.82k
        }
28969
36
        p->mark = _mark;
28970
36
        D(fprintf(stderr, "%*c%s _gather_23[%d-%d]: %s failed!\n", p->level, ' ',
28971
36
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_as_name _loop0_22"));
28972
36
    }
28973
36
    _res = NULL;
28974
2.86k
  done:
28975
2.86k
    p->level--;
28976
2.86k
    return _res;
28977
36
}
28978
28979
// _loop1_24: ('@' named_expression NEWLINE)
28980
static asdl_seq *
28981
_loop1_24_rule(Parser *p)
28982
19.3k
{
28983
19.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
28984
0
        _Pypegen_stack_overflow(p);
28985
0
    }
28986
19.3k
    if (p->error_indicator) {
28987
0
        p->level--;
28988
0
        return NULL;
28989
0
    }
28990
19.3k
    void *_res = NULL;
28991
19.3k
    int _mark = p->mark;
28992
19.3k
    void **_children = PyMem_Malloc(sizeof(void *));
28993
19.3k
    if (!_children) {
28994
0
        p->error_indicator = 1;
28995
0
        PyErr_NoMemory();
28996
0
        p->level--;
28997
0
        return NULL;
28998
0
    }
28999
19.3k
    Py_ssize_t _children_capacity = 1;
29000
19.3k
    Py_ssize_t _n = 0;
29001
19.3k
    { // ('@' named_expression NEWLINE)
29002
19.3k
        if (p->error_indicator) {
29003
0
            p->level--;
29004
0
            return NULL;
29005
0
        }
29006
19.3k
        D(fprintf(stderr, "%*c> _loop1_24[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)"));
29007
19.3k
        void *_tmp_158_var;
29008
19.3k
        while (
29009
23.4k
            (_tmp_158_var = _tmp_158_rule(p))  // '@' named_expression NEWLINE
29010
19.3k
        )
29011
4.08k
        {
29012
4.08k
            _res = _tmp_158_var;
29013
4.08k
            if (_n == _children_capacity) {
29014
633
                _children_capacity *= 2;
29015
633
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29016
633
                if (!_new_children) {
29017
0
                    PyMem_Free(_children);
29018
0
                    p->error_indicator = 1;
29019
0
                    PyErr_NoMemory();
29020
0
                    p->level--;
29021
0
                    return NULL;
29022
0
                }
29023
633
                _children = _new_children;
29024
633
            }
29025
4.08k
            _children[_n++] = _res;
29026
4.08k
            _mark = p->mark;
29027
4.08k
        }
29028
19.3k
        p->mark = _mark;
29029
19.3k
        D(fprintf(stderr, "%*c%s _loop1_24[%d-%d]: %s failed!\n", p->level, ' ',
29030
19.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('@' named_expression NEWLINE)"));
29031
19.3k
    }
29032
19.3k
    if (_n == 0 || p->error_indicator) {
29033
17.1k
        PyMem_Free(_children);
29034
17.1k
        p->level--;
29035
17.1k
        return NULL;
29036
17.1k
    }
29037
2.18k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29038
2.18k
    if (!_seq) {
29039
0
        PyMem_Free(_children);
29040
0
        p->error_indicator = 1;
29041
0
        PyErr_NoMemory();
29042
0
        p->level--;
29043
0
        return NULL;
29044
0
    }
29045
6.25k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29046
2.18k
    PyMem_Free(_children);
29047
2.18k
    p->level--;
29048
2.18k
    return _seq;
29049
2.18k
}
29050
29051
// _tmp_25: '(' arguments? ')'
29052
static void *
29053
_tmp_25_rule(Parser *p)
29054
5.98k
{
29055
5.98k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29056
0
        _Pypegen_stack_overflow(p);
29057
0
    }
29058
5.98k
    if (p->error_indicator) {
29059
0
        p->level--;
29060
0
        return NULL;
29061
0
    }
29062
5.98k
    void * _res = NULL;
29063
5.98k
    int _mark = p->mark;
29064
5.98k
    { // '(' arguments? ')'
29065
5.98k
        if (p->error_indicator) {
29066
0
            p->level--;
29067
0
            return NULL;
29068
0
        }
29069
5.98k
        D(fprintf(stderr, "%*c> _tmp_25[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
29070
5.98k
        Token * _literal;
29071
5.98k
        Token * _literal_1;
29072
5.98k
        void *z;
29073
5.98k
        if (
29074
5.98k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
29075
2.13k
            &&
29076
2.13k
            (z = arguments_rule(p), !p->error_indicator)  // arguments?
29077
2.13k
            &&
29078
2.13k
            (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
29079
5.98k
        )
29080
2.12k
        {
29081
2.12k
            D(fprintf(stderr, "%*c+ _tmp_25[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
29082
2.12k
            _res = z;
29083
2.12k
            if (_res == NULL && PyErr_Occurred()) {
29084
0
                p->error_indicator = 1;
29085
0
                p->level--;
29086
0
                return NULL;
29087
0
            }
29088
2.12k
            goto done;
29089
2.12k
        }
29090
3.85k
        p->mark = _mark;
29091
3.85k
        D(fprintf(stderr, "%*c%s _tmp_25[%d-%d]: %s failed!\n", p->level, ' ',
29092
3.85k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'"));
29093
3.85k
    }
29094
3.85k
    _res = NULL;
29095
5.98k
  done:
29096
5.98k
    p->level--;
29097
5.98k
    return _res;
29098
3.85k
}
29099
29100
// _tmp_26: '->' expression
29101
static void *
29102
_tmp_26_rule(Parser *p)
29103
14.1k
{
29104
14.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29105
0
        _Pypegen_stack_overflow(p);
29106
0
    }
29107
14.1k
    if (p->error_indicator) {
29108
0
        p->level--;
29109
0
        return NULL;
29110
0
    }
29111
14.1k
    void * _res = NULL;
29112
14.1k
    int _mark = p->mark;
29113
14.1k
    { // '->' expression
29114
14.1k
        if (p->error_indicator) {
29115
0
            p->level--;
29116
0
            return NULL;
29117
0
        }
29118
14.1k
        D(fprintf(stderr, "%*c> _tmp_26[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
29119
14.1k
        Token * _literal;
29120
14.1k
        expr_ty z;
29121
14.1k
        if (
29122
14.1k
            (_literal = _PyPegen_expect_token(p, 51))  // token='->'
29123
636
            &&
29124
636
            (z = expression_rule(p))  // expression
29125
14.1k
        )
29126
630
        {
29127
630
            D(fprintf(stderr, "%*c+ _tmp_26[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
29128
630
            _res = z;
29129
630
            if (_res == NULL && PyErr_Occurred()) {
29130
0
                p->error_indicator = 1;
29131
0
                p->level--;
29132
0
                return NULL;
29133
0
            }
29134
630
            goto done;
29135
630
        }
29136
13.5k
        p->mark = _mark;
29137
13.5k
        D(fprintf(stderr, "%*c%s _tmp_26[%d-%d]: %s failed!\n", p->level, ' ',
29138
13.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
29139
13.5k
    }
29140
13.5k
    _res = NULL;
29141
14.1k
  done:
29142
14.1k
    p->level--;
29143
14.1k
    return _res;
29144
13.5k
}
29145
29146
// _loop0_27: param_no_default
29147
static asdl_seq *
29148
_loop0_27_rule(Parser *p)
29149
67.1k
{
29150
67.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29151
0
        _Pypegen_stack_overflow(p);
29152
0
    }
29153
67.1k
    if (p->error_indicator) {
29154
0
        p->level--;
29155
0
        return NULL;
29156
0
    }
29157
67.1k
    void *_res = NULL;
29158
67.1k
    int _mark = p->mark;
29159
67.1k
    void **_children = PyMem_Malloc(sizeof(void *));
29160
67.1k
    if (!_children) {
29161
0
        p->error_indicator = 1;
29162
0
        PyErr_NoMemory();
29163
0
        p->level--;
29164
0
        return NULL;
29165
0
    }
29166
67.1k
    Py_ssize_t _children_capacity = 1;
29167
67.1k
    Py_ssize_t _n = 0;
29168
67.1k
    { // param_no_default
29169
67.1k
        if (p->error_indicator) {
29170
0
            p->level--;
29171
0
            return NULL;
29172
0
        }
29173
67.1k
        D(fprintf(stderr, "%*c> _loop0_27[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
29174
67.1k
        arg_ty param_no_default_var;
29175
67.1k
        while (
29176
98.2k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
29177
67.1k
        )
29178
31.1k
        {
29179
31.1k
            _res = param_no_default_var;
29180
31.1k
            if (_n == _children_capacity) {
29181
8.61k
                _children_capacity *= 2;
29182
8.61k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29183
8.61k
                if (!_new_children) {
29184
0
                    PyMem_Free(_children);
29185
0
                    p->error_indicator = 1;
29186
0
                    PyErr_NoMemory();
29187
0
                    p->level--;
29188
0
                    return NULL;
29189
0
                }
29190
8.61k
                _children = _new_children;
29191
8.61k
            }
29192
31.1k
            _children[_n++] = _res;
29193
31.1k
            _mark = p->mark;
29194
31.1k
        }
29195
67.1k
        p->mark = _mark;
29196
67.1k
        D(fprintf(stderr, "%*c%s _loop0_27[%d-%d]: %s failed!\n", p->level, ' ',
29197
67.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
29198
67.1k
    }
29199
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29200
67.1k
    if (!_seq) {
29201
0
        PyMem_Free(_children);
29202
0
        p->error_indicator = 1;
29203
0
        PyErr_NoMemory();
29204
0
        p->level--;
29205
0
        return NULL;
29206
0
    }
29207
98.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29208
67.1k
    PyMem_Free(_children);
29209
67.1k
    p->level--;
29210
67.1k
    return _seq;
29211
67.1k
}
29212
29213
// _loop0_28: param_with_default
29214
static asdl_seq *
29215
_loop0_28_rule(Parser *p)
29216
8.20k
{
29217
8.20k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29218
0
        _Pypegen_stack_overflow(p);
29219
0
    }
29220
8.20k
    if (p->error_indicator) {
29221
2
        p->level--;
29222
2
        return NULL;
29223
2
    }
29224
8.20k
    void *_res = NULL;
29225
8.20k
    int _mark = p->mark;
29226
8.20k
    void **_children = PyMem_Malloc(sizeof(void *));
29227
8.20k
    if (!_children) {
29228
0
        p->error_indicator = 1;
29229
0
        PyErr_NoMemory();
29230
0
        p->level--;
29231
0
        return NULL;
29232
0
    }
29233
8.20k
    Py_ssize_t _children_capacity = 1;
29234
8.20k
    Py_ssize_t _n = 0;
29235
8.20k
    { // param_with_default
29236
8.20k
        if (p->error_indicator) {
29237
0
            p->level--;
29238
0
            return NULL;
29239
0
        }
29240
8.20k
        D(fprintf(stderr, "%*c> _loop0_28[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
29241
8.20k
        NameDefaultPair* param_with_default_var;
29242
8.20k
        while (
29243
10.7k
            (param_with_default_var = param_with_default_rule(p))  // param_with_default
29244
8.20k
        )
29245
2.56k
        {
29246
2.56k
            _res = param_with_default_var;
29247
2.56k
            if (_n == _children_capacity) {
29248
507
                _children_capacity *= 2;
29249
507
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29250
507
                if (!_new_children) {
29251
0
                    PyMem_Free(_children);
29252
0
                    p->error_indicator = 1;
29253
0
                    PyErr_NoMemory();
29254
0
                    p->level--;
29255
0
                    return NULL;
29256
0
                }
29257
507
                _children = _new_children;
29258
507
            }
29259
2.56k
            _children[_n++] = _res;
29260
2.56k
            _mark = p->mark;
29261
2.56k
        }
29262
8.20k
        p->mark = _mark;
29263
8.20k
        D(fprintf(stderr, "%*c%s _loop0_28[%d-%d]: %s failed!\n", p->level, ' ',
29264
8.20k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
29265
8.20k
    }
29266
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29267
8.20k
    if (!_seq) {
29268
0
        PyMem_Free(_children);
29269
0
        p->error_indicator = 1;
29270
0
        PyErr_NoMemory();
29271
0
        p->level--;
29272
0
        return NULL;
29273
0
    }
29274
10.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29275
8.20k
    PyMem_Free(_children);
29276
8.20k
    p->level--;
29277
8.20k
    return _seq;
29278
8.20k
}
29279
29280
// _loop1_29: param_no_default
29281
static asdl_seq *
29282
_loop1_29_rule(Parser *p)
29283
72.7k
{
29284
72.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29285
0
        _Pypegen_stack_overflow(p);
29286
0
    }
29287
72.7k
    if (p->error_indicator) {
29288
0
        p->level--;
29289
0
        return NULL;
29290
0
    }
29291
72.7k
    void *_res = NULL;
29292
72.7k
    int _mark = p->mark;
29293
72.7k
    void **_children = PyMem_Malloc(sizeof(void *));
29294
72.7k
    if (!_children) {
29295
0
        p->error_indicator = 1;
29296
0
        PyErr_NoMemory();
29297
0
        p->level--;
29298
0
        return NULL;
29299
0
    }
29300
72.7k
    Py_ssize_t _children_capacity = 1;
29301
72.7k
    Py_ssize_t _n = 0;
29302
72.7k
    { // param_no_default
29303
72.7k
        if (p->error_indicator) {
29304
0
            p->level--;
29305
0
            return NULL;
29306
0
        }
29307
72.7k
        D(fprintf(stderr, "%*c> _loop1_29[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
29308
72.7k
        arg_ty param_no_default_var;
29309
72.7k
        while (
29310
119k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
29311
72.7k
        )
29312
46.2k
        {
29313
46.2k
            _res = param_no_default_var;
29314
46.2k
            if (_n == _children_capacity) {
29315
12.2k
                _children_capacity *= 2;
29316
12.2k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29317
12.2k
                if (!_new_children) {
29318
0
                    PyMem_Free(_children);
29319
0
                    p->error_indicator = 1;
29320
0
                    PyErr_NoMemory();
29321
0
                    p->level--;
29322
0
                    return NULL;
29323
0
                }
29324
12.2k
                _children = _new_children;
29325
12.2k
            }
29326
46.2k
            _children[_n++] = _res;
29327
46.2k
            _mark = p->mark;
29328
46.2k
        }
29329
72.7k
        p->mark = _mark;
29330
72.7k
        D(fprintf(stderr, "%*c%s _loop1_29[%d-%d]: %s failed!\n", p->level, ' ',
29331
72.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
29332
72.7k
    }
29333
72.7k
    if (_n == 0 || p->error_indicator) {
29334
43.9k
        PyMem_Free(_children);
29335
43.9k
        p->level--;
29336
43.9k
        return NULL;
29337
43.9k
    }
29338
28.8k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29339
28.8k
    if (!_seq) {
29340
0
        PyMem_Free(_children);
29341
0
        p->error_indicator = 1;
29342
0
        PyErr_NoMemory();
29343
0
        p->level--;
29344
0
        return NULL;
29345
0
    }
29346
75.0k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29347
28.8k
    PyMem_Free(_children);
29348
28.8k
    p->level--;
29349
28.8k
    return _seq;
29350
28.8k
}
29351
29352
// _loop1_30: param_with_default
29353
static asdl_seq *
29354
_loop1_30_rule(Parser *p)
29355
67.3k
{
29356
67.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29357
0
        _Pypegen_stack_overflow(p);
29358
0
    }
29359
67.3k
    if (p->error_indicator) {
29360
0
        p->level--;
29361
0
        return NULL;
29362
0
    }
29363
67.3k
    void *_res = NULL;
29364
67.3k
    int _mark = p->mark;
29365
67.3k
    void **_children = PyMem_Malloc(sizeof(void *));
29366
67.3k
    if (!_children) {
29367
0
        p->error_indicator = 1;
29368
0
        PyErr_NoMemory();
29369
0
        p->level--;
29370
0
        return NULL;
29371
0
    }
29372
67.3k
    Py_ssize_t _children_capacity = 1;
29373
67.3k
    Py_ssize_t _n = 0;
29374
67.3k
    { // param_with_default
29375
67.3k
        if (p->error_indicator) {
29376
0
            p->level--;
29377
0
            return NULL;
29378
0
        }
29379
67.3k
        D(fprintf(stderr, "%*c> _loop1_30[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
29380
67.3k
        NameDefaultPair* param_with_default_var;
29381
67.3k
        while (
29382
89.5k
            (param_with_default_var = param_with_default_rule(p))  // param_with_default
29383
67.3k
        )
29384
22.1k
        {
29385
22.1k
            _res = param_with_default_var;
29386
22.1k
            if (_n == _children_capacity) {
29387
2.39k
                _children_capacity *= 2;
29388
2.39k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29389
2.39k
                if (!_new_children) {
29390
0
                    PyMem_Free(_children);
29391
0
                    p->error_indicator = 1;
29392
0
                    PyErr_NoMemory();
29393
0
                    p->level--;
29394
0
                    return NULL;
29395
0
                }
29396
2.39k
                _children = _new_children;
29397
2.39k
            }
29398
22.1k
            _children[_n++] = _res;
29399
22.1k
            _mark = p->mark;
29400
22.1k
        }
29401
67.3k
        p->mark = _mark;
29402
67.3k
        D(fprintf(stderr, "%*c%s _loop1_30[%d-%d]: %s failed!\n", p->level, ' ',
29403
67.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
29404
67.3k
    }
29405
67.3k
    if (_n == 0 || p->error_indicator) {
29406
54.0k
        PyMem_Free(_children);
29407
54.0k
        p->level--;
29408
54.0k
        return NULL;
29409
54.0k
    }
29410
13.3k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29411
13.3k
    if (!_seq) {
29412
0
        PyMem_Free(_children);
29413
0
        p->error_indicator = 1;
29414
0
        PyErr_NoMemory();
29415
0
        p->level--;
29416
0
        return NULL;
29417
0
    }
29418
35.5k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29419
13.3k
    PyMem_Free(_children);
29420
13.3k
    p->level--;
29421
13.3k
    return _seq;
29422
13.3k
}
29423
29424
// _loop0_31: param_maybe_default
29425
static asdl_seq *
29426
_loop0_31_rule(Parser *p)
29427
9.71k
{
29428
9.71k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29429
0
        _Pypegen_stack_overflow(p);
29430
0
    }
29431
9.71k
    if (p->error_indicator) {
29432
0
        p->level--;
29433
0
        return NULL;
29434
0
    }
29435
9.71k
    void *_res = NULL;
29436
9.71k
    int _mark = p->mark;
29437
9.71k
    void **_children = PyMem_Malloc(sizeof(void *));
29438
9.71k
    if (!_children) {
29439
0
        p->error_indicator = 1;
29440
0
        PyErr_NoMemory();
29441
0
        p->level--;
29442
0
        return NULL;
29443
0
    }
29444
9.71k
    Py_ssize_t _children_capacity = 1;
29445
9.71k
    Py_ssize_t _n = 0;
29446
9.71k
    { // param_maybe_default
29447
9.71k
        if (p->error_indicator) {
29448
0
            p->level--;
29449
0
            return NULL;
29450
0
        }
29451
9.71k
        D(fprintf(stderr, "%*c> _loop0_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
29452
9.71k
        NameDefaultPair* param_maybe_default_var;
29453
9.71k
        while (
29454
15.6k
            (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
29455
9.71k
        )
29456
5.94k
        {
29457
5.94k
            _res = param_maybe_default_var;
29458
5.94k
            if (_n == _children_capacity) {
29459
1.48k
                _children_capacity *= 2;
29460
1.48k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29461
1.48k
                if (!_new_children) {
29462
0
                    PyMem_Free(_children);
29463
0
                    p->error_indicator = 1;
29464
0
                    PyErr_NoMemory();
29465
0
                    p->level--;
29466
0
                    return NULL;
29467
0
                }
29468
1.48k
                _children = _new_children;
29469
1.48k
            }
29470
5.94k
            _children[_n++] = _res;
29471
5.94k
            _mark = p->mark;
29472
5.94k
        }
29473
9.71k
        p->mark = _mark;
29474
9.71k
        D(fprintf(stderr, "%*c%s _loop0_31[%d-%d]: %s failed!\n", p->level, ' ',
29475
9.71k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
29476
9.71k
    }
29477
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29478
9.71k
    if (!_seq) {
29479
0
        PyMem_Free(_children);
29480
0
        p->error_indicator = 1;
29481
0
        PyErr_NoMemory();
29482
0
        p->level--;
29483
0
        return NULL;
29484
0
    }
29485
15.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29486
9.71k
    PyMem_Free(_children);
29487
9.71k
    p->level--;
29488
9.71k
    return _seq;
29489
9.71k
}
29490
29491
// _loop1_32: param_maybe_default
29492
static asdl_seq *
29493
_loop1_32_rule(Parser *p)
29494
6.11k
{
29495
6.11k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29496
0
        _Pypegen_stack_overflow(p);
29497
0
    }
29498
6.11k
    if (p->error_indicator) {
29499
0
        p->level--;
29500
0
        return NULL;
29501
0
    }
29502
6.11k
    void *_res = NULL;
29503
6.11k
    int _mark = p->mark;
29504
6.11k
    void **_children = PyMem_Malloc(sizeof(void *));
29505
6.11k
    if (!_children) {
29506
0
        p->error_indicator = 1;
29507
0
        PyErr_NoMemory();
29508
0
        p->level--;
29509
0
        return NULL;
29510
0
    }
29511
6.11k
    Py_ssize_t _children_capacity = 1;
29512
6.11k
    Py_ssize_t _n = 0;
29513
6.11k
    { // param_maybe_default
29514
6.11k
        if (p->error_indicator) {
29515
0
            p->level--;
29516
0
            return NULL;
29517
0
        }
29518
6.11k
        D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
29519
6.11k
        NameDefaultPair* param_maybe_default_var;
29520
6.11k
        while (
29521
11.4k
            (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
29522
6.11k
        )
29523
5.34k
        {
29524
5.34k
            _res = param_maybe_default_var;
29525
5.34k
            if (_n == _children_capacity) {
29526
876
                _children_capacity *= 2;
29527
876
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29528
876
                if (!_new_children) {
29529
0
                    PyMem_Free(_children);
29530
0
                    p->error_indicator = 1;
29531
0
                    PyErr_NoMemory();
29532
0
                    p->level--;
29533
0
                    return NULL;
29534
0
                }
29535
876
                _children = _new_children;
29536
876
            }
29537
5.34k
            _children[_n++] = _res;
29538
5.34k
            _mark = p->mark;
29539
5.34k
        }
29540
6.11k
        p->mark = _mark;
29541
6.11k
        D(fprintf(stderr, "%*c%s _loop1_32[%d-%d]: %s failed!\n", p->level, ' ',
29542
6.11k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
29543
6.11k
    }
29544
6.11k
    if (_n == 0 || p->error_indicator) {
29545
2.99k
        PyMem_Free(_children);
29546
2.99k
        p->level--;
29547
2.99k
        return NULL;
29548
2.99k
    }
29549
3.12k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29550
3.12k
    if (!_seq) {
29551
0
        PyMem_Free(_children);
29552
0
        p->error_indicator = 1;
29553
0
        PyErr_NoMemory();
29554
0
        p->level--;
29555
0
        return NULL;
29556
0
    }
29557
8.46k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29558
3.12k
    PyMem_Free(_children);
29559
3.12k
    p->level--;
29560
3.12k
    return _seq;
29561
3.12k
}
29562
29563
// _loop0_33: ',' with_item
29564
static asdl_seq *
29565
_loop0_33_rule(Parser *p)
29566
6.27k
{
29567
6.27k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29568
0
        _Pypegen_stack_overflow(p);
29569
0
    }
29570
6.27k
    if (p->error_indicator) {
29571
0
        p->level--;
29572
0
        return NULL;
29573
0
    }
29574
6.27k
    void *_res = NULL;
29575
6.27k
    int _mark = p->mark;
29576
6.27k
    void **_children = PyMem_Malloc(sizeof(void *));
29577
6.27k
    if (!_children) {
29578
0
        p->error_indicator = 1;
29579
0
        PyErr_NoMemory();
29580
0
        p->level--;
29581
0
        return NULL;
29582
0
    }
29583
6.27k
    Py_ssize_t _children_capacity = 1;
29584
6.27k
    Py_ssize_t _n = 0;
29585
6.27k
    { // ',' with_item
29586
6.27k
        if (p->error_indicator) {
29587
0
            p->level--;
29588
0
            return NULL;
29589
0
        }
29590
6.27k
        D(fprintf(stderr, "%*c> _loop0_33[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
29591
6.27k
        Token * _literal;
29592
6.27k
        withitem_ty elem;
29593
6.27k
        while (
29594
12.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
29595
7.43k
            &&
29596
7.43k
            (elem = with_item_rule(p))  // with_item
29597
6.27k
        )
29598
6.48k
        {
29599
6.48k
            _res = elem;
29600
6.48k
            if (_res == NULL && PyErr_Occurred()) {
29601
0
                p->error_indicator = 1;
29602
0
                PyMem_Free(_children);
29603
0
                p->level--;
29604
0
                return NULL;
29605
0
            }
29606
6.48k
            if (_n == _children_capacity) {
29607
1.91k
                _children_capacity *= 2;
29608
1.91k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29609
1.91k
                if (!_new_children) {
29610
0
                    PyMem_Free(_children);
29611
0
                    p->error_indicator = 1;
29612
0
                    PyErr_NoMemory();
29613
0
                    p->level--;
29614
0
                    return NULL;
29615
0
                }
29616
1.91k
                _children = _new_children;
29617
1.91k
            }
29618
6.48k
            _children[_n++] = _res;
29619
6.48k
            _mark = p->mark;
29620
6.48k
        }
29621
6.27k
        p->mark = _mark;
29622
6.27k
        D(fprintf(stderr, "%*c%s _loop0_33[%d-%d]: %s failed!\n", p->level, ' ',
29623
6.27k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
29624
6.27k
    }
29625
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29626
6.27k
    if (!_seq) {
29627
0
        PyMem_Free(_children);
29628
0
        p->error_indicator = 1;
29629
0
        PyErr_NoMemory();
29630
0
        p->level--;
29631
0
        return NULL;
29632
0
    }
29633
12.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29634
6.27k
    PyMem_Free(_children);
29635
6.27k
    p->level--;
29636
6.27k
    return _seq;
29637
6.27k
}
29638
29639
// _gather_34: with_item _loop0_33
29640
static asdl_seq *
29641
_gather_34_rule(Parser *p)
29642
7.28k
{
29643
7.28k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29644
0
        _Pypegen_stack_overflow(p);
29645
0
    }
29646
7.28k
    if (p->error_indicator) {
29647
0
        p->level--;
29648
0
        return NULL;
29649
0
    }
29650
7.28k
    asdl_seq * _res = NULL;
29651
7.28k
    int _mark = p->mark;
29652
7.28k
    { // with_item _loop0_33
29653
7.28k
        if (p->error_indicator) {
29654
0
            p->level--;
29655
0
            return NULL;
29656
0
        }
29657
7.28k
        D(fprintf(stderr, "%*c> _gather_34[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_33"));
29658
7.28k
        withitem_ty elem;
29659
7.28k
        asdl_seq * seq;
29660
7.28k
        if (
29661
7.28k
            (elem = with_item_rule(p))  // with_item
29662
6.27k
            &&
29663
6.27k
            (seq = _loop0_33_rule(p))  // _loop0_33
29664
7.28k
        )
29665
6.27k
        {
29666
6.27k
            D(fprintf(stderr, "%*c+ _gather_34[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_33"));
29667
6.27k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29668
6.27k
            goto done;
29669
6.27k
        }
29670
1.00k
        p->mark = _mark;
29671
1.00k
        D(fprintf(stderr, "%*c%s _gather_34[%d-%d]: %s failed!\n", p->level, ' ',
29672
1.00k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_33"));
29673
1.00k
    }
29674
1.00k
    _res = NULL;
29675
7.28k
  done:
29676
7.28k
    p->level--;
29677
7.28k
    return _res;
29678
1.00k
}
29679
29680
// _tmp_35: ',' | ')' | ':'
29681
static void *
29682
_tmp_35_rule(Parser *p)
29683
2.31k
{
29684
2.31k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29685
0
        _Pypegen_stack_overflow(p);
29686
0
    }
29687
2.31k
    if (p->error_indicator) {
29688
0
        p->level--;
29689
0
        return NULL;
29690
0
    }
29691
2.31k
    void * _res = NULL;
29692
2.31k
    int _mark = p->mark;
29693
2.31k
    { // ','
29694
2.31k
        if (p->error_indicator) {
29695
0
            p->level--;
29696
0
            return NULL;
29697
0
        }
29698
2.31k
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
29699
2.31k
        Token * _literal;
29700
2.31k
        if (
29701
2.31k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
29702
2.31k
        )
29703
1.18k
        {
29704
1.18k
            D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
29705
1.18k
            _res = _literal;
29706
1.18k
            goto done;
29707
1.18k
        }
29708
1.12k
        p->mark = _mark;
29709
1.12k
        D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
29710
1.12k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
29711
1.12k
    }
29712
0
    { // ')'
29713
1.12k
        if (p->error_indicator) {
29714
0
            p->level--;
29715
0
            return NULL;
29716
0
        }
29717
1.12k
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
29718
1.12k
        Token * _literal;
29719
1.12k
        if (
29720
1.12k
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
29721
1.12k
        )
29722
483
        {
29723
483
            D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
29724
483
            _res = _literal;
29725
483
            goto done;
29726
483
        }
29727
641
        p->mark = _mark;
29728
641
        D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
29729
641
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
29730
641
    }
29731
0
    { // ':'
29732
641
        if (p->error_indicator) {
29733
0
            p->level--;
29734
0
            return NULL;
29735
0
        }
29736
641
        D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
29737
641
        Token * _literal;
29738
641
        if (
29739
641
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
29740
641
        )
29741
620
        {
29742
620
            D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
29743
620
            _res = _literal;
29744
620
            goto done;
29745
620
        }
29746
21
        p->mark = _mark;
29747
21
        D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
29748
21
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
29749
21
    }
29750
21
    _res = NULL;
29751
2.31k
  done:
29752
2.31k
    p->level--;
29753
2.31k
    return _res;
29754
21
}
29755
29756
// _loop1_36: except_block
29757
static asdl_seq *
29758
_loop1_36_rule(Parser *p)
29759
6.50k
{
29760
6.50k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29761
0
        _Pypegen_stack_overflow(p);
29762
0
    }
29763
6.50k
    if (p->error_indicator) {
29764
0
        p->level--;
29765
0
        return NULL;
29766
0
    }
29767
6.50k
    void *_res = NULL;
29768
6.50k
    int _mark = p->mark;
29769
6.50k
    void **_children = PyMem_Malloc(sizeof(void *));
29770
6.50k
    if (!_children) {
29771
0
        p->error_indicator = 1;
29772
0
        PyErr_NoMemory();
29773
0
        p->level--;
29774
0
        return NULL;
29775
0
    }
29776
6.50k
    Py_ssize_t _children_capacity = 1;
29777
6.50k
    Py_ssize_t _n = 0;
29778
6.50k
    { // except_block
29779
6.50k
        if (p->error_indicator) {
29780
0
            p->level--;
29781
0
            return NULL;
29782
0
        }
29783
6.50k
        D(fprintf(stderr, "%*c> _loop1_36[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block"));
29784
6.50k
        excepthandler_ty except_block_var;
29785
6.50k
        while (
29786
12.8k
            (except_block_var = except_block_rule(p))  // except_block
29787
6.50k
        )
29788
6.31k
        {
29789
6.31k
            _res = except_block_var;
29790
6.31k
            if (_n == _children_capacity) {
29791
1.03k
                _children_capacity *= 2;
29792
1.03k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29793
1.03k
                if (!_new_children) {
29794
0
                    PyMem_Free(_children);
29795
0
                    p->error_indicator = 1;
29796
0
                    PyErr_NoMemory();
29797
0
                    p->level--;
29798
0
                    return NULL;
29799
0
                }
29800
1.03k
                _children = _new_children;
29801
1.03k
            }
29802
6.31k
            _children[_n++] = _res;
29803
6.31k
            _mark = p->mark;
29804
6.31k
        }
29805
6.50k
        p->mark = _mark;
29806
6.50k
        D(fprintf(stderr, "%*c%s _loop1_36[%d-%d]: %s failed!\n", p->level, ' ',
29807
6.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_block"));
29808
6.50k
    }
29809
6.50k
    if (_n == 0 || p->error_indicator) {
29810
3.00k
        PyMem_Free(_children);
29811
3.00k
        p->level--;
29812
3.00k
        return NULL;
29813
3.00k
    }
29814
3.49k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29815
3.49k
    if (!_seq) {
29816
0
        PyMem_Free(_children);
29817
0
        p->error_indicator = 1;
29818
0
        PyErr_NoMemory();
29819
0
        p->level--;
29820
0
        return NULL;
29821
0
    }
29822
9.79k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29823
3.49k
    PyMem_Free(_children);
29824
3.49k
    p->level--;
29825
3.49k
    return _seq;
29826
3.49k
}
29827
29828
// _loop1_37: except_star_block
29829
static asdl_seq *
29830
_loop1_37_rule(Parser *p)
29831
3.67k
{
29832
3.67k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29833
0
        _Pypegen_stack_overflow(p);
29834
0
    }
29835
3.67k
    if (p->error_indicator) {
29836
0
        p->level--;
29837
0
        return NULL;
29838
0
    }
29839
3.67k
    void *_res = NULL;
29840
3.67k
    int _mark = p->mark;
29841
3.67k
    void **_children = PyMem_Malloc(sizeof(void *));
29842
3.67k
    if (!_children) {
29843
0
        p->error_indicator = 1;
29844
0
        PyErr_NoMemory();
29845
0
        p->level--;
29846
0
        return NULL;
29847
0
    }
29848
3.67k
    Py_ssize_t _children_capacity = 1;
29849
3.67k
    Py_ssize_t _n = 0;
29850
3.67k
    { // except_star_block
29851
3.67k
        if (p->error_indicator) {
29852
0
            p->level--;
29853
0
            return NULL;
29854
0
        }
29855
3.67k
        D(fprintf(stderr, "%*c> _loop1_37[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_star_block"));
29856
3.67k
        excepthandler_ty except_star_block_var;
29857
3.67k
        while (
29858
7.43k
            (except_star_block_var = except_star_block_rule(p))  // except_star_block
29859
3.67k
        )
29860
3.75k
        {
29861
3.75k
            _res = except_star_block_var;
29862
3.75k
            if (_n == _children_capacity) {
29863
426
                _children_capacity *= 2;
29864
426
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29865
426
                if (!_new_children) {
29866
0
                    PyMem_Free(_children);
29867
0
                    p->error_indicator = 1;
29868
0
                    PyErr_NoMemory();
29869
0
                    p->level--;
29870
0
                    return NULL;
29871
0
                }
29872
426
                _children = _new_children;
29873
426
            }
29874
3.75k
            _children[_n++] = _res;
29875
3.75k
            _mark = p->mark;
29876
3.75k
        }
29877
3.67k
        p->mark = _mark;
29878
3.67k
        D(fprintf(stderr, "%*c%s _loop1_37[%d-%d]: %s failed!\n", p->level, ' ',
29879
3.67k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_star_block"));
29880
3.67k
    }
29881
3.67k
    if (_n == 0 || p->error_indicator) {
29882
1.53k
        PyMem_Free(_children);
29883
1.53k
        p->level--;
29884
1.53k
        return NULL;
29885
1.53k
    }
29886
2.14k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29887
2.14k
    if (!_seq) {
29888
0
        PyMem_Free(_children);
29889
0
        p->error_indicator = 1;
29890
0
        PyErr_NoMemory();
29891
0
        p->level--;
29892
0
        return NULL;
29893
0
    }
29894
5.89k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29895
2.14k
    PyMem_Free(_children);
29896
2.14k
    p->level--;
29897
2.14k
    return _seq;
29898
2.14k
}
29899
29900
// _loop1_38: case_block
29901
static asdl_seq *
29902
_loop1_38_rule(Parser *p)
29903
1.86k
{
29904
1.86k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29905
0
        _Pypegen_stack_overflow(p);
29906
0
    }
29907
1.86k
    if (p->error_indicator) {
29908
0
        p->level--;
29909
0
        return NULL;
29910
0
    }
29911
1.86k
    void *_res = NULL;
29912
1.86k
    int _mark = p->mark;
29913
1.86k
    void **_children = PyMem_Malloc(sizeof(void *));
29914
1.86k
    if (!_children) {
29915
0
        p->error_indicator = 1;
29916
0
        PyErr_NoMemory();
29917
0
        p->level--;
29918
0
        return NULL;
29919
0
    }
29920
1.86k
    Py_ssize_t _children_capacity = 1;
29921
1.86k
    Py_ssize_t _n = 0;
29922
1.86k
    { // case_block
29923
1.86k
        if (p->error_indicator) {
29924
0
            p->level--;
29925
0
            return NULL;
29926
0
        }
29927
1.86k
        D(fprintf(stderr, "%*c> _loop1_38[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "case_block"));
29928
1.86k
        match_case_ty case_block_var;
29929
1.86k
        while (
29930
5.86k
            (case_block_var = case_block_rule(p))  // case_block
29931
1.86k
        )
29932
4.00k
        {
29933
4.00k
            _res = case_block_var;
29934
4.00k
            if (_n == _children_capacity) {
29935
699
                _children_capacity *= 2;
29936
699
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29937
699
                if (!_new_children) {
29938
0
                    PyMem_Free(_children);
29939
0
                    p->error_indicator = 1;
29940
0
                    PyErr_NoMemory();
29941
0
                    p->level--;
29942
0
                    return NULL;
29943
0
                }
29944
699
                _children = _new_children;
29945
699
            }
29946
4.00k
            _children[_n++] = _res;
29947
4.00k
            _mark = p->mark;
29948
4.00k
        }
29949
1.86k
        p->mark = _mark;
29950
1.86k
        D(fprintf(stderr, "%*c%s _loop1_38[%d-%d]: %s failed!\n", p->level, ' ',
29951
1.86k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "case_block"));
29952
1.86k
    }
29953
1.86k
    if (_n == 0 || p->error_indicator) {
29954
1.15k
        PyMem_Free(_children);
29955
1.15k
        p->level--;
29956
1.15k
        return NULL;
29957
1.15k
    }
29958
707
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29959
707
    if (!_seq) {
29960
0
        PyMem_Free(_children);
29961
0
        p->error_indicator = 1;
29962
0
        PyErr_NoMemory();
29963
0
        p->level--;
29964
0
        return NULL;
29965
0
    }
29966
4.69k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29967
707
    PyMem_Free(_children);
29968
707
    p->level--;
29969
707
    return _seq;
29970
707
}
29971
29972
// _loop0_39: '|' closed_pattern
29973
static asdl_seq *
29974
_loop0_39_rule(Parser *p)
29975
156k
{
29976
156k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
29977
0
        _Pypegen_stack_overflow(p);
29978
0
    }
29979
156k
    if (p->error_indicator) {
29980
30
        p->level--;
29981
30
        return NULL;
29982
30
    }
29983
156k
    void *_res = NULL;
29984
156k
    int _mark = p->mark;
29985
156k
    void **_children = PyMem_Malloc(sizeof(void *));
29986
156k
    if (!_children) {
29987
0
        p->error_indicator = 1;
29988
0
        PyErr_NoMemory();
29989
0
        p->level--;
29990
0
        return NULL;
29991
0
    }
29992
156k
    Py_ssize_t _children_capacity = 1;
29993
156k
    Py_ssize_t _n = 0;
29994
156k
    { // '|' closed_pattern
29995
156k
        if (p->error_indicator) {
29996
0
            p->level--;
29997
0
            return NULL;
29998
0
        }
29999
156k
        D(fprintf(stderr, "%*c> _loop0_39[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|' closed_pattern"));
30000
156k
        Token * _literal;
30001
156k
        pattern_ty elem;
30002
156k
        while (
30003
165k
            (_literal = _PyPegen_expect_token(p, 18))  // token='|'
30004
13.1k
            &&
30005
13.1k
            (elem = closed_pattern_rule(p))  // closed_pattern
30006
156k
        )
30007
9.72k
        {
30008
9.72k
            _res = elem;
30009
9.72k
            if (_res == NULL && PyErr_Occurred()) {
30010
0
                p->error_indicator = 1;
30011
0
                PyMem_Free(_children);
30012
0
                p->level--;
30013
0
                return NULL;
30014
0
            }
30015
9.72k
            if (_n == _children_capacity) {
30016
1.47k
                _children_capacity *= 2;
30017
1.47k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30018
1.47k
                if (!_new_children) {
30019
0
                    PyMem_Free(_children);
30020
0
                    p->error_indicator = 1;
30021
0
                    PyErr_NoMemory();
30022
0
                    p->level--;
30023
0
                    return NULL;
30024
0
                }
30025
1.47k
                _children = _new_children;
30026
1.47k
            }
30027
9.72k
            _children[_n++] = _res;
30028
9.72k
            _mark = p->mark;
30029
9.72k
        }
30030
156k
        p->mark = _mark;
30031
156k
        D(fprintf(stderr, "%*c%s _loop0_39[%d-%d]: %s failed!\n", p->level, ' ',
30032
156k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|' closed_pattern"));
30033
156k
    }
30034
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30035
156k
    if (!_seq) {
30036
0
        PyMem_Free(_children);
30037
0
        p->error_indicator = 1;
30038
0
        PyErr_NoMemory();
30039
0
        p->level--;
30040
0
        return NULL;
30041
0
    }
30042
165k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30043
156k
    PyMem_Free(_children);
30044
156k
    p->level--;
30045
156k
    return _seq;
30046
156k
}
30047
30048
// _gather_40: closed_pattern _loop0_39
30049
static asdl_seq *
30050
_gather_40_rule(Parser *p)
30051
243k
{
30052
243k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30053
0
        _Pypegen_stack_overflow(p);
30054
0
    }
30055
243k
    if (p->error_indicator) {
30056
0
        p->level--;
30057
0
        return NULL;
30058
0
    }
30059
243k
    asdl_seq * _res = NULL;
30060
243k
    int _mark = p->mark;
30061
243k
    { // closed_pattern _loop0_39
30062
243k
        if (p->error_indicator) {
30063
0
            p->level--;
30064
0
            return NULL;
30065
0
        }
30066
243k
        D(fprintf(stderr, "%*c> _gather_40[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_39"));
30067
243k
        pattern_ty elem;
30068
243k
        asdl_seq * seq;
30069
243k
        if (
30070
243k
            (elem = closed_pattern_rule(p))  // closed_pattern
30071
156k
            &&
30072
156k
            (seq = _loop0_39_rule(p))  // _loop0_39
30073
243k
        )
30074
156k
        {
30075
156k
            D(fprintf(stderr, "%*c+ _gather_40[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_39"));
30076
156k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30077
156k
            goto done;
30078
156k
        }
30079
87.6k
        p->mark = _mark;
30080
87.6k
        D(fprintf(stderr, "%*c%s _gather_40[%d-%d]: %s failed!\n", p->level, ' ',
30081
87.6k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "closed_pattern _loop0_39"));
30082
87.6k
    }
30083
87.6k
    _res = NULL;
30084
243k
  done:
30085
243k
    p->level--;
30086
243k
    return _res;
30087
87.6k
}
30088
30089
// _tmp_41: '+' | '-'
30090
static void *
30091
_tmp_41_rule(Parser *p)
30092
8.90k
{
30093
8.90k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30094
0
        _Pypegen_stack_overflow(p);
30095
0
    }
30096
8.90k
    if (p->error_indicator) {
30097
0
        p->level--;
30098
0
        return NULL;
30099
0
    }
30100
8.90k
    void * _res = NULL;
30101
8.90k
    int _mark = p->mark;
30102
8.90k
    { // '+'
30103
8.90k
        if (p->error_indicator) {
30104
0
            p->level--;
30105
0
            return NULL;
30106
0
        }
30107
8.90k
        D(fprintf(stderr, "%*c> _tmp_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
30108
8.90k
        Token * _literal;
30109
8.90k
        if (
30110
8.90k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
30111
8.90k
        )
30112
353
        {
30113
353
            D(fprintf(stderr, "%*c+ _tmp_41[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
30114
353
            _res = _literal;
30115
353
            goto done;
30116
353
        }
30117
8.55k
        p->mark = _mark;
30118
8.55k
        D(fprintf(stderr, "%*c%s _tmp_41[%d-%d]: %s failed!\n", p->level, ' ',
30119
8.55k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
30120
8.55k
    }
30121
0
    { // '-'
30122
8.55k
        if (p->error_indicator) {
30123
13
            p->level--;
30124
13
            return NULL;
30125
13
        }
30126
8.54k
        D(fprintf(stderr, "%*c> _tmp_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
30127
8.54k
        Token * _literal;
30128
8.54k
        if (
30129
8.54k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
30130
8.54k
        )
30131
492
        {
30132
492
            D(fprintf(stderr, "%*c+ _tmp_41[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
30133
492
            _res = _literal;
30134
492
            goto done;
30135
492
        }
30136
8.05k
        p->mark = _mark;
30137
8.05k
        D(fprintf(stderr, "%*c%s _tmp_41[%d-%d]: %s failed!\n", p->level, ' ',
30138
8.05k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
30139
8.05k
    }
30140
8.05k
    _res = NULL;
30141
8.89k
  done:
30142
8.89k
    p->level--;
30143
8.89k
    return _res;
30144
8.05k
}
30145
30146
// _tmp_42: STRING | FSTRING_START | TSTRING_START
30147
static void *
30148
_tmp_42_rule(Parser *p)
30149
856k
{
30150
856k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30151
1
        _Pypegen_stack_overflow(p);
30152
1
    }
30153
856k
    if (p->error_indicator) {
30154
1
        p->level--;
30155
1
        return NULL;
30156
1
    }
30157
856k
    void * _res = NULL;
30158
856k
    int _mark = p->mark;
30159
856k
    { // STRING
30160
856k
        if (p->error_indicator) {
30161
0
            p->level--;
30162
0
            return NULL;
30163
0
        }
30164
856k
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
30165
856k
        expr_ty string_var;
30166
856k
        if (
30167
856k
            (string_var = _PyPegen_string_token(p))  // STRING
30168
856k
        )
30169
88.7k
        {
30170
88.7k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING"));
30171
88.7k
            _res = string_var;
30172
88.7k
            goto done;
30173
88.7k
        }
30174
768k
        p->mark = _mark;
30175
768k
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
30176
768k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
30177
768k
    }
30178
0
    { // FSTRING_START
30179
768k
        if (p->error_indicator) {
30180
0
            p->level--;
30181
0
            return NULL;
30182
0
        }
30183
768k
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "FSTRING_START"));
30184
768k
        Token * fstring_start_var;
30185
768k
        if (
30186
768k
            (fstring_start_var = _PyPegen_expect_token(p, FSTRING_START))  // token='FSTRING_START'
30187
768k
        )
30188
21.6k
        {
30189
21.6k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "FSTRING_START"));
30190
21.6k
            _res = fstring_start_var;
30191
21.6k
            goto done;
30192
21.6k
        }
30193
746k
        p->mark = _mark;
30194
746k
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
30195
746k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "FSTRING_START"));
30196
746k
    }
30197
0
    { // TSTRING_START
30198
746k
        if (p->error_indicator) {
30199
0
            p->level--;
30200
0
            return NULL;
30201
0
        }
30202
746k
        D(fprintf(stderr, "%*c> _tmp_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TSTRING_START"));
30203
746k
        Token * tstring_start_var;
30204
746k
        if (
30205
746k
            (tstring_start_var = _PyPegen_expect_token(p, TSTRING_START))  // token='TSTRING_START'
30206
746k
        )
30207
8.91k
        {
30208
8.91k
            D(fprintf(stderr, "%*c+ _tmp_42[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TSTRING_START"));
30209
8.91k
            _res = tstring_start_var;
30210
8.91k
            goto done;
30211
8.91k
        }
30212
737k
        p->mark = _mark;
30213
737k
        D(fprintf(stderr, "%*c%s _tmp_42[%d-%d]: %s failed!\n", p->level, ' ',
30214
737k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TSTRING_START"));
30215
737k
    }
30216
737k
    _res = NULL;
30217
856k
  done:
30218
856k
    p->level--;
30219
856k
    return _res;
30220
737k
}
30221
30222
// _tmp_43: '.' | '(' | '='
30223
static void *
30224
_tmp_43_rule(Parser *p)
30225
31.8k
{
30226
31.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30227
0
        _Pypegen_stack_overflow(p);
30228
0
    }
30229
31.8k
    if (p->error_indicator) {
30230
0
        p->level--;
30231
0
        return NULL;
30232
0
    }
30233
31.8k
    void * _res = NULL;
30234
31.8k
    int _mark = p->mark;
30235
31.8k
    { // '.'
30236
31.8k
        if (p->error_indicator) {
30237
0
            p->level--;
30238
0
            return NULL;
30239
0
        }
30240
31.8k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
30241
31.8k
        Token * _literal;
30242
31.8k
        if (
30243
31.8k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
30244
31.8k
        )
30245
500
        {
30246
500
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
30247
500
            _res = _literal;
30248
500
            goto done;
30249
500
        }
30250
31.3k
        p->mark = _mark;
30251
31.3k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
30252
31.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
30253
31.3k
    }
30254
0
    { // '('
30255
31.3k
        if (p->error_indicator) {
30256
33
            p->level--;
30257
33
            return NULL;
30258
33
        }
30259
31.2k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
30260
31.2k
        Token * _literal;
30261
31.2k
        if (
30262
31.2k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
30263
31.2k
        )
30264
9.66k
        {
30265
9.66k
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
30266
9.66k
            _res = _literal;
30267
9.66k
            goto done;
30268
9.66k
        }
30269
21.5k
        p->mark = _mark;
30270
21.5k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
30271
21.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
30272
21.5k
    }
30273
0
    { // '='
30274
21.5k
        if (p->error_indicator) {
30275
0
            p->level--;
30276
0
            return NULL;
30277
0
        }
30278
21.5k
        D(fprintf(stderr, "%*c> _tmp_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
30279
21.5k
        Token * _literal;
30280
21.5k
        if (
30281
21.5k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
30282
21.5k
        )
30283
3.18k
        {
30284
3.18k
            D(fprintf(stderr, "%*c+ _tmp_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
30285
3.18k
            _res = _literal;
30286
3.18k
            goto done;
30287
3.18k
        }
30288
18.4k
        p->mark = _mark;
30289
18.4k
        D(fprintf(stderr, "%*c%s _tmp_43[%d-%d]: %s failed!\n", p->level, ' ',
30290
18.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
30291
18.4k
    }
30292
18.4k
    _res = NULL;
30293
31.7k
  done:
30294
31.7k
    p->level--;
30295
31.7k
    return _res;
30296
18.4k
}
30297
30298
// _loop0_44: ',' maybe_star_pattern
30299
static asdl_seq *
30300
_loop0_44_rule(Parser *p)
30301
2.04k
{
30302
2.04k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30303
0
        _Pypegen_stack_overflow(p);
30304
0
    }
30305
2.04k
    if (p->error_indicator) {
30306
1
        p->level--;
30307
1
        return NULL;
30308
1
    }
30309
2.04k
    void *_res = NULL;
30310
2.04k
    int _mark = p->mark;
30311
2.04k
    void **_children = PyMem_Malloc(sizeof(void *));
30312
2.04k
    if (!_children) {
30313
0
        p->error_indicator = 1;
30314
0
        PyErr_NoMemory();
30315
0
        p->level--;
30316
0
        return NULL;
30317
0
    }
30318
2.04k
    Py_ssize_t _children_capacity = 1;
30319
2.04k
    Py_ssize_t _n = 0;
30320
2.04k
    { // ',' maybe_star_pattern
30321
2.04k
        if (p->error_indicator) {
30322
0
            p->level--;
30323
0
            return NULL;
30324
0
        }
30325
2.04k
        D(fprintf(stderr, "%*c> _loop0_44[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' maybe_star_pattern"));
30326
2.04k
        Token * _literal;
30327
2.04k
        pattern_ty elem;
30328
2.04k
        while (
30329
14.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30330
13.6k
            &&
30331
13.6k
            (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
30332
2.04k
        )
30333
12.6k
        {
30334
12.6k
            _res = elem;
30335
12.6k
            if (_res == NULL && PyErr_Occurred()) {
30336
0
                p->error_indicator = 1;
30337
0
                PyMem_Free(_children);
30338
0
                p->level--;
30339
0
                return NULL;
30340
0
            }
30341
12.6k
            if (_n == _children_capacity) {
30342
2.04k
                _children_capacity *= 2;
30343
2.04k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30344
2.04k
                if (!_new_children) {
30345
0
                    PyMem_Free(_children);
30346
0
                    p->error_indicator = 1;
30347
0
                    PyErr_NoMemory();
30348
0
                    p->level--;
30349
0
                    return NULL;
30350
0
                }
30351
2.04k
                _children = _new_children;
30352
2.04k
            }
30353
12.6k
            _children[_n++] = _res;
30354
12.6k
            _mark = p->mark;
30355
12.6k
        }
30356
2.04k
        p->mark = _mark;
30357
2.04k
        D(fprintf(stderr, "%*c%s _loop0_44[%d-%d]: %s failed!\n", p->level, ' ',
30358
2.04k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' maybe_star_pattern"));
30359
2.04k
    }
30360
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30361
2.04k
    if (!_seq) {
30362
0
        PyMem_Free(_children);
30363
0
        p->error_indicator = 1;
30364
0
        PyErr_NoMemory();
30365
0
        p->level--;
30366
0
        return NULL;
30367
0
    }
30368
14.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30369
2.04k
    PyMem_Free(_children);
30370
2.04k
    p->level--;
30371
2.04k
    return _seq;
30372
2.04k
}
30373
30374
// _gather_45: maybe_star_pattern _loop0_44
30375
static asdl_seq *
30376
_gather_45_rule(Parser *p)
30377
4.18k
{
30378
4.18k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30379
0
        _Pypegen_stack_overflow(p);
30380
0
    }
30381
4.18k
    if (p->error_indicator) {
30382
0
        p->level--;
30383
0
        return NULL;
30384
0
    }
30385
4.18k
    asdl_seq * _res = NULL;
30386
4.18k
    int _mark = p->mark;
30387
4.18k
    { // maybe_star_pattern _loop0_44
30388
4.18k
        if (p->error_indicator) {
30389
0
            p->level--;
30390
0
            return NULL;
30391
0
        }
30392
4.18k
        D(fprintf(stderr, "%*c> _gather_45[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_44"));
30393
4.18k
        pattern_ty elem;
30394
4.18k
        asdl_seq * seq;
30395
4.18k
        if (
30396
4.18k
            (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
30397
2.04k
            &&
30398
2.04k
            (seq = _loop0_44_rule(p))  // _loop0_44
30399
4.18k
        )
30400
2.04k
        {
30401
2.04k
            D(fprintf(stderr, "%*c+ _gather_45[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_44"));
30402
2.04k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30403
2.04k
            goto done;
30404
2.04k
        }
30405
2.13k
        p->mark = _mark;
30406
2.13k
        D(fprintf(stderr, "%*c%s _gather_45[%d-%d]: %s failed!\n", p->level, ' ',
30407
2.13k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern _loop0_44"));
30408
2.13k
    }
30409
2.13k
    _res = NULL;
30410
4.18k
  done:
30411
4.18k
    p->level--;
30412
4.18k
    return _res;
30413
2.13k
}
30414
30415
// _loop0_46: ',' key_value_pattern
30416
static asdl_seq *
30417
_loop0_46_rule(Parser *p)
30418
2.90k
{
30419
2.90k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30420
0
        _Pypegen_stack_overflow(p);
30421
0
    }
30422
2.90k
    if (p->error_indicator) {
30423
1
        p->level--;
30424
1
        return NULL;
30425
1
    }
30426
2.90k
    void *_res = NULL;
30427
2.90k
    int _mark = p->mark;
30428
2.90k
    void **_children = PyMem_Malloc(sizeof(void *));
30429
2.90k
    if (!_children) {
30430
0
        p->error_indicator = 1;
30431
0
        PyErr_NoMemory();
30432
0
        p->level--;
30433
0
        return NULL;
30434
0
    }
30435
2.90k
    Py_ssize_t _children_capacity = 1;
30436
2.90k
    Py_ssize_t _n = 0;
30437
2.90k
    { // ',' key_value_pattern
30438
2.90k
        if (p->error_indicator) {
30439
0
            p->level--;
30440
0
            return NULL;
30441
0
        }
30442
2.90k
        D(fprintf(stderr, "%*c> _loop0_46[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' key_value_pattern"));
30443
2.90k
        Token * _literal;
30444
2.90k
        KeyPatternPair* elem;
30445
2.90k
        while (
30446
4.75k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30447
3.37k
            &&
30448
3.37k
            (elem = key_value_pattern_rule(p))  // key_value_pattern
30449
2.90k
        )
30450
1.84k
        {
30451
1.84k
            _res = elem;
30452
1.84k
            if (_res == NULL && PyErr_Occurred()) {
30453
0
                p->error_indicator = 1;
30454
0
                PyMem_Free(_children);
30455
0
                p->level--;
30456
0
                return NULL;
30457
0
            }
30458
1.84k
            if (_n == _children_capacity) {
30459
313
                _children_capacity *= 2;
30460
313
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30461
313
                if (!_new_children) {
30462
0
                    PyMem_Free(_children);
30463
0
                    p->error_indicator = 1;
30464
0
                    PyErr_NoMemory();
30465
0
                    p->level--;
30466
0
                    return NULL;
30467
0
                }
30468
313
                _children = _new_children;
30469
313
            }
30470
1.84k
            _children[_n++] = _res;
30471
1.84k
            _mark = p->mark;
30472
1.84k
        }
30473
2.90k
        p->mark = _mark;
30474
2.90k
        D(fprintf(stderr, "%*c%s _loop0_46[%d-%d]: %s failed!\n", p->level, ' ',
30475
2.90k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' key_value_pattern"));
30476
2.90k
    }
30477
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30478
2.90k
    if (!_seq) {
30479
0
        PyMem_Free(_children);
30480
0
        p->error_indicator = 1;
30481
0
        PyErr_NoMemory();
30482
0
        p->level--;
30483
0
        return NULL;
30484
0
    }
30485
4.75k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30486
2.90k
    PyMem_Free(_children);
30487
2.90k
    p->level--;
30488
2.90k
    return _seq;
30489
2.90k
}
30490
30491
// _gather_47: key_value_pattern _loop0_46
30492
static asdl_seq *
30493
_gather_47_rule(Parser *p)
30494
4.18k
{
30495
4.18k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30496
0
        _Pypegen_stack_overflow(p);
30497
0
    }
30498
4.18k
    if (p->error_indicator) {
30499
0
        p->level--;
30500
0
        return NULL;
30501
0
    }
30502
4.18k
    asdl_seq * _res = NULL;
30503
4.18k
    int _mark = p->mark;
30504
4.18k
    { // key_value_pattern _loop0_46
30505
4.18k
        if (p->error_indicator) {
30506
0
            p->level--;
30507
0
            return NULL;
30508
0
        }
30509
4.18k
        D(fprintf(stderr, "%*c> _gather_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_46"));
30510
4.18k
        KeyPatternPair* elem;
30511
4.18k
        asdl_seq * seq;
30512
4.18k
        if (
30513
4.18k
            (elem = key_value_pattern_rule(p))  // key_value_pattern
30514
2.90k
            &&
30515
2.90k
            (seq = _loop0_46_rule(p))  // _loop0_46
30516
4.18k
        )
30517
2.90k
        {
30518
2.90k
            D(fprintf(stderr, "%*c+ _gather_47[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_46"));
30519
2.90k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30520
2.90k
            goto done;
30521
2.90k
        }
30522
1.27k
        p->mark = _mark;
30523
1.27k
        D(fprintf(stderr, "%*c%s _gather_47[%d-%d]: %s failed!\n", p->level, ' ',
30524
1.27k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "key_value_pattern _loop0_46"));
30525
1.27k
    }
30526
1.27k
    _res = NULL;
30527
4.18k
  done:
30528
4.18k
    p->level--;
30529
4.18k
    return _res;
30530
1.27k
}
30531
30532
// _tmp_48: literal_expr | attr
30533
static void *
30534
_tmp_48_rule(Parser *p)
30535
7.56k
{
30536
7.56k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30537
0
        _Pypegen_stack_overflow(p);
30538
0
    }
30539
7.56k
    if (p->error_indicator) {
30540
0
        p->level--;
30541
0
        return NULL;
30542
0
    }
30543
7.56k
    void * _res = NULL;
30544
7.56k
    int _mark = p->mark;
30545
7.56k
    { // literal_expr
30546
7.56k
        if (p->error_indicator) {
30547
0
            p->level--;
30548
0
            return NULL;
30549
0
        }
30550
7.56k
        D(fprintf(stderr, "%*c> _tmp_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_expr"));
30551
7.56k
        expr_ty literal_expr_var;
30552
7.56k
        if (
30553
7.56k
            (literal_expr_var = literal_expr_rule(p))  // literal_expr
30554
7.56k
        )
30555
6.82k
        {
30556
6.82k
            D(fprintf(stderr, "%*c+ _tmp_48[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_expr"));
30557
6.82k
            _res = literal_expr_var;
30558
6.82k
            goto done;
30559
6.82k
        }
30560
737
        p->mark = _mark;
30561
737
        D(fprintf(stderr, "%*c%s _tmp_48[%d-%d]: %s failed!\n", p->level, ' ',
30562
737
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_expr"));
30563
737
    }
30564
0
    { // attr
30565
737
        if (p->error_indicator) {
30566
20
            p->level--;
30567
20
            return NULL;
30568
20
        }
30569
717
        D(fprintf(stderr, "%*c> _tmp_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
30570
717
        expr_ty attr_var;
30571
717
        if (
30572
717
            (attr_var = attr_rule(p))  // attr
30573
717
        )
30574
18
        {
30575
18
            D(fprintf(stderr, "%*c+ _tmp_48[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
30576
18
            _res = attr_var;
30577
18
            goto done;
30578
18
        }
30579
699
        p->mark = _mark;
30580
699
        D(fprintf(stderr, "%*c%s _tmp_48[%d-%d]: %s failed!\n", p->level, ' ',
30581
699
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
30582
699
    }
30583
699
    _res = NULL;
30584
7.54k
  done:
30585
7.54k
    p->level--;
30586
7.54k
    return _res;
30587
699
}
30588
30589
// _loop0_49: ',' pattern
30590
static asdl_seq *
30591
_loop0_49_rule(Parser *p)
30592
9.95k
{
30593
9.95k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30594
0
        _Pypegen_stack_overflow(p);
30595
0
    }
30596
9.95k
    if (p->error_indicator) {
30597
1
        p->level--;
30598
1
        return NULL;
30599
1
    }
30600
9.95k
    void *_res = NULL;
30601
9.95k
    int _mark = p->mark;
30602
9.95k
    void **_children = PyMem_Malloc(sizeof(void *));
30603
9.95k
    if (!_children) {
30604
0
        p->error_indicator = 1;
30605
0
        PyErr_NoMemory();
30606
0
        p->level--;
30607
0
        return NULL;
30608
0
    }
30609
9.95k
    Py_ssize_t _children_capacity = 1;
30610
9.95k
    Py_ssize_t _n = 0;
30611
9.95k
    { // ',' pattern
30612
9.95k
        if (p->error_indicator) {
30613
0
            p->level--;
30614
0
            return NULL;
30615
0
        }
30616
9.95k
        D(fprintf(stderr, "%*c> _loop0_49[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' pattern"));
30617
9.95k
        Token * _literal;
30618
9.95k
        pattern_ty elem;
30619
9.95k
        while (
30620
14.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30621
9.86k
            &&
30622
9.86k
            (elem = pattern_rule(p))  // pattern
30623
9.95k
        )
30624
4.83k
        {
30625
4.83k
            _res = elem;
30626
4.83k
            if (_res == NULL && PyErr_Occurred()) {
30627
0
                p->error_indicator = 1;
30628
0
                PyMem_Free(_children);
30629
0
                p->level--;
30630
0
                return NULL;
30631
0
            }
30632
4.83k
            if (_n == _children_capacity) {
30633
957
                _children_capacity *= 2;
30634
957
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30635
957
                if (!_new_children) {
30636
0
                    PyMem_Free(_children);
30637
0
                    p->error_indicator = 1;
30638
0
                    PyErr_NoMemory();
30639
0
                    p->level--;
30640
0
                    return NULL;
30641
0
                }
30642
957
                _children = _new_children;
30643
957
            }
30644
4.83k
            _children[_n++] = _res;
30645
4.83k
            _mark = p->mark;
30646
4.83k
        }
30647
9.95k
        p->mark = _mark;
30648
9.95k
        D(fprintf(stderr, "%*c%s _loop0_49[%d-%d]: %s failed!\n", p->level, ' ',
30649
9.95k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' pattern"));
30650
9.95k
    }
30651
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30652
9.95k
    if (!_seq) {
30653
0
        PyMem_Free(_children);
30654
0
        p->error_indicator = 1;
30655
0
        PyErr_NoMemory();
30656
0
        p->level--;
30657
0
        return NULL;
30658
0
    }
30659
14.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30660
9.95k
    PyMem_Free(_children);
30661
9.95k
    p->level--;
30662
9.95k
    return _seq;
30663
9.95k
}
30664
30665
// _gather_50: pattern _loop0_49
30666
static asdl_seq *
30667
_gather_50_rule(Parser *p)
30668
18.6k
{
30669
18.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30670
0
        _Pypegen_stack_overflow(p);
30671
0
    }
30672
18.6k
    if (p->error_indicator) {
30673
0
        p->level--;
30674
0
        return NULL;
30675
0
    }
30676
18.6k
    asdl_seq * _res = NULL;
30677
18.6k
    int _mark = p->mark;
30678
18.6k
    { // pattern _loop0_49
30679
18.6k
        if (p->error_indicator) {
30680
0
            p->level--;
30681
0
            return NULL;
30682
0
        }
30683
18.6k
        D(fprintf(stderr, "%*c> _gather_50[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern _loop0_49"));
30684
18.6k
        pattern_ty elem;
30685
18.6k
        asdl_seq * seq;
30686
18.6k
        if (
30687
18.6k
            (elem = pattern_rule(p))  // pattern
30688
9.95k
            &&
30689
9.95k
            (seq = _loop0_49_rule(p))  // _loop0_49
30690
18.6k
        )
30691
9.95k
        {
30692
9.95k
            D(fprintf(stderr, "%*c+ _gather_50[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern _loop0_49"));
30693
9.95k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30694
9.95k
            goto done;
30695
9.95k
        }
30696
8.70k
        p->mark = _mark;
30697
8.70k
        D(fprintf(stderr, "%*c%s _gather_50[%d-%d]: %s failed!\n", p->level, ' ',
30698
8.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern _loop0_49"));
30699
8.70k
    }
30700
8.70k
    _res = NULL;
30701
18.6k
  done:
30702
18.6k
    p->level--;
30703
18.6k
    return _res;
30704
8.70k
}
30705
30706
// _loop0_51: ',' keyword_pattern
30707
static asdl_seq *
30708
_loop0_51_rule(Parser *p)
30709
4.29k
{
30710
4.29k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30711
0
        _Pypegen_stack_overflow(p);
30712
0
    }
30713
4.29k
    if (p->error_indicator) {
30714
1
        p->level--;
30715
1
        return NULL;
30716
1
    }
30717
4.29k
    void *_res = NULL;
30718
4.29k
    int _mark = p->mark;
30719
4.29k
    void **_children = PyMem_Malloc(sizeof(void *));
30720
4.29k
    if (!_children) {
30721
0
        p->error_indicator = 1;
30722
0
        PyErr_NoMemory();
30723
0
        p->level--;
30724
0
        return NULL;
30725
0
    }
30726
4.29k
    Py_ssize_t _children_capacity = 1;
30727
4.29k
    Py_ssize_t _n = 0;
30728
4.29k
    { // ',' keyword_pattern
30729
4.29k
        if (p->error_indicator) {
30730
0
            p->level--;
30731
0
            return NULL;
30732
0
        }
30733
4.29k
        D(fprintf(stderr, "%*c> _loop0_51[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' keyword_pattern"));
30734
4.29k
        Token * _literal;
30735
4.29k
        KeyPatternPair* elem;
30736
4.29k
        while (
30737
6.09k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30738
4.42k
            &&
30739
4.42k
            (elem = keyword_pattern_rule(p))  // keyword_pattern
30740
4.29k
        )
30741
1.80k
        {
30742
1.80k
            _res = elem;
30743
1.80k
            if (_res == NULL && PyErr_Occurred()) {
30744
0
                p->error_indicator = 1;
30745
0
                PyMem_Free(_children);
30746
0
                p->level--;
30747
0
                return NULL;
30748
0
            }
30749
1.80k
            if (_n == _children_capacity) {
30750
747
                _children_capacity *= 2;
30751
747
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30752
747
                if (!_new_children) {
30753
0
                    PyMem_Free(_children);
30754
0
                    p->error_indicator = 1;
30755
0
                    PyErr_NoMemory();
30756
0
                    p->level--;
30757
0
                    return NULL;
30758
0
                }
30759
747
                _children = _new_children;
30760
747
            }
30761
1.80k
            _children[_n++] = _res;
30762
1.80k
            _mark = p->mark;
30763
1.80k
        }
30764
4.29k
        p->mark = _mark;
30765
4.29k
        D(fprintf(stderr, "%*c%s _loop0_51[%d-%d]: %s failed!\n", p->level, ' ',
30766
4.29k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' keyword_pattern"));
30767
4.29k
    }
30768
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30769
4.29k
    if (!_seq) {
30770
0
        PyMem_Free(_children);
30771
0
        p->error_indicator = 1;
30772
0
        PyErr_NoMemory();
30773
0
        p->level--;
30774
0
        return NULL;
30775
0
    }
30776
6.09k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30777
4.29k
    PyMem_Free(_children);
30778
4.29k
    p->level--;
30779
4.29k
    return _seq;
30780
4.29k
}
30781
30782
// _gather_52: keyword_pattern _loop0_51
30783
static asdl_seq *
30784
_gather_52_rule(Parser *p)
30785
11.8k
{
30786
11.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30787
0
        _Pypegen_stack_overflow(p);
30788
0
    }
30789
11.8k
    if (p->error_indicator) {
30790
0
        p->level--;
30791
0
        return NULL;
30792
0
    }
30793
11.8k
    asdl_seq * _res = NULL;
30794
11.8k
    int _mark = p->mark;
30795
11.8k
    { // keyword_pattern _loop0_51
30796
11.8k
        if (p->error_indicator) {
30797
0
            p->level--;
30798
0
            return NULL;
30799
0
        }
30800
11.8k
        D(fprintf(stderr, "%*c> _gather_52[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_51"));
30801
11.8k
        KeyPatternPair* elem;
30802
11.8k
        asdl_seq * seq;
30803
11.8k
        if (
30804
11.8k
            (elem = keyword_pattern_rule(p))  // keyword_pattern
30805
4.29k
            &&
30806
4.29k
            (seq = _loop0_51_rule(p))  // _loop0_51
30807
11.8k
        )
30808
4.29k
        {
30809
4.29k
            D(fprintf(stderr, "%*c+ _gather_52[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_51"));
30810
4.29k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30811
4.29k
            goto done;
30812
4.29k
        }
30813
7.51k
        p->mark = _mark;
30814
7.51k
        D(fprintf(stderr, "%*c%s _gather_52[%d-%d]: %s failed!\n", p->level, ' ',
30815
7.51k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "keyword_pattern _loop0_51"));
30816
7.51k
    }
30817
7.51k
    _res = NULL;
30818
11.8k
  done:
30819
11.8k
    p->level--;
30820
11.8k
    return _res;
30821
7.51k
}
30822
30823
// _loop0_53: ',' type_param
30824
static asdl_seq *
30825
_loop0_53_rule(Parser *p)
30826
1.52k
{
30827
1.52k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30828
0
        _Pypegen_stack_overflow(p);
30829
0
    }
30830
1.52k
    if (p->error_indicator) {
30831
0
        p->level--;
30832
0
        return NULL;
30833
0
    }
30834
1.52k
    void *_res = NULL;
30835
1.52k
    int _mark = p->mark;
30836
1.52k
    void **_children = PyMem_Malloc(sizeof(void *));
30837
1.52k
    if (!_children) {
30838
0
        p->error_indicator = 1;
30839
0
        PyErr_NoMemory();
30840
0
        p->level--;
30841
0
        return NULL;
30842
0
    }
30843
1.52k
    Py_ssize_t _children_capacity = 1;
30844
1.52k
    Py_ssize_t _n = 0;
30845
1.52k
    { // ',' type_param
30846
1.52k
        if (p->error_indicator) {
30847
0
            p->level--;
30848
0
            return NULL;
30849
0
        }
30850
1.52k
        D(fprintf(stderr, "%*c> _loop0_53[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' type_param"));
30851
1.52k
        Token * _literal;
30852
1.52k
        type_param_ty elem;
30853
1.52k
        while (
30854
11.6k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
30855
11.1k
            &&
30856
11.1k
            (elem = type_param_rule(p))  // type_param
30857
1.52k
        )
30858
10.1k
        {
30859
10.1k
            _res = elem;
30860
10.1k
            if (_res == NULL && PyErr_Occurred()) {
30861
0
                p->error_indicator = 1;
30862
0
                PyMem_Free(_children);
30863
0
                p->level--;
30864
0
                return NULL;
30865
0
            }
30866
10.1k
            if (_n == _children_capacity) {
30867
946
                _children_capacity *= 2;
30868
946
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30869
946
                if (!_new_children) {
30870
0
                    PyMem_Free(_children);
30871
0
                    p->error_indicator = 1;
30872
0
                    PyErr_NoMemory();
30873
0
                    p->level--;
30874
0
                    return NULL;
30875
0
                }
30876
946
                _children = _new_children;
30877
946
            }
30878
10.1k
            _children[_n++] = _res;
30879
10.1k
            _mark = p->mark;
30880
10.1k
        }
30881
1.52k
        p->mark = _mark;
30882
1.52k
        D(fprintf(stderr, "%*c%s _loop0_53[%d-%d]: %s failed!\n", p->level, ' ',
30883
1.52k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' type_param"));
30884
1.52k
    }
30885
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30886
1.52k
    if (!_seq) {
30887
0
        PyMem_Free(_children);
30888
0
        p->error_indicator = 1;
30889
0
        PyErr_NoMemory();
30890
0
        p->level--;
30891
0
        return NULL;
30892
0
    }
30893
11.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30894
1.52k
    PyMem_Free(_children);
30895
1.52k
    p->level--;
30896
1.52k
    return _seq;
30897
1.52k
}
30898
30899
// _gather_54: type_param _loop0_53
30900
static asdl_seq *
30901
_gather_54_rule(Parser *p)
30902
1.56k
{
30903
1.56k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30904
0
        _Pypegen_stack_overflow(p);
30905
0
    }
30906
1.56k
    if (p->error_indicator) {
30907
0
        p->level--;
30908
0
        return NULL;
30909
0
    }
30910
1.56k
    asdl_seq * _res = NULL;
30911
1.56k
    int _mark = p->mark;
30912
1.56k
    { // type_param _loop0_53
30913
1.56k
        if (p->error_indicator) {
30914
0
            p->level--;
30915
0
            return NULL;
30916
0
        }
30917
1.56k
        D(fprintf(stderr, "%*c> _gather_54[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "type_param _loop0_53"));
30918
1.56k
        type_param_ty elem;
30919
1.56k
        asdl_seq * seq;
30920
1.56k
        if (
30921
1.56k
            (elem = type_param_rule(p))  // type_param
30922
1.52k
            &&
30923
1.52k
            (seq = _loop0_53_rule(p))  // _loop0_53
30924
1.56k
        )
30925
1.52k
        {
30926
1.52k
            D(fprintf(stderr, "%*c+ _gather_54[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "type_param _loop0_53"));
30927
1.52k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30928
1.52k
            goto done;
30929
1.52k
        }
30930
40
        p->mark = _mark;
30931
40
        D(fprintf(stderr, "%*c%s _gather_54[%d-%d]: %s failed!\n", p->level, ' ',
30932
40
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "type_param _loop0_53"));
30933
40
    }
30934
40
    _res = NULL;
30935
1.56k
  done:
30936
1.56k
    p->level--;
30937
1.56k
    return _res;
30938
40
}
30939
30940
// _loop1_55: (',' expression)
30941
static asdl_seq *
30942
_loop1_55_rule(Parser *p)
30943
4.55k
{
30944
4.55k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
30945
0
        _Pypegen_stack_overflow(p);
30946
0
    }
30947
4.55k
    if (p->error_indicator) {
30948
0
        p->level--;
30949
0
        return NULL;
30950
0
    }
30951
4.55k
    void *_res = NULL;
30952
4.55k
    int _mark = p->mark;
30953
4.55k
    void **_children = PyMem_Malloc(sizeof(void *));
30954
4.55k
    if (!_children) {
30955
0
        p->error_indicator = 1;
30956
0
        PyErr_NoMemory();
30957
0
        p->level--;
30958
0
        return NULL;
30959
0
    }
30960
4.55k
    Py_ssize_t _children_capacity = 1;
30961
4.55k
    Py_ssize_t _n = 0;
30962
4.55k
    { // (',' expression)
30963
4.55k
        if (p->error_indicator) {
30964
0
            p->level--;
30965
0
            return NULL;
30966
0
        }
30967
4.55k
        D(fprintf(stderr, "%*c> _loop1_55[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)"));
30968
4.55k
        void *_tmp_16_var;
30969
4.55k
        while (
30970
6.44k
            (_tmp_16_var = _tmp_16_rule(p))  // ',' expression
30971
4.55k
        )
30972
1.88k
        {
30973
1.88k
            _res = _tmp_16_var;
30974
1.88k
            if (_n == _children_capacity) {
30975
268
                _children_capacity *= 2;
30976
268
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30977
268
                if (!_new_children) {
30978
0
                    PyMem_Free(_children);
30979
0
                    p->error_indicator = 1;
30980
0
                    PyErr_NoMemory();
30981
0
                    p->level--;
30982
0
                    return NULL;
30983
0
                }
30984
268
                _children = _new_children;
30985
268
            }
30986
1.88k
            _children[_n++] = _res;
30987
1.88k
            _mark = p->mark;
30988
1.88k
        }
30989
4.55k
        p->mark = _mark;
30990
4.55k
        D(fprintf(stderr, "%*c%s _loop1_55[%d-%d]: %s failed!\n", p->level, ' ',
30991
4.55k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' expression)"));
30992
4.55k
    }
30993
4.55k
    if (_n == 0 || p->error_indicator) {
30994
3.27k
        PyMem_Free(_children);
30995
3.27k
        p->level--;
30996
3.27k
        return NULL;
30997
3.27k
    }
30998
1.28k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30999
1.28k
    if (!_seq) {
31000
0
        PyMem_Free(_children);
31001
0
        p->error_indicator = 1;
31002
0
        PyErr_NoMemory();
31003
0
        p->level--;
31004
0
        return NULL;
31005
0
    }
31006
3.16k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31007
1.28k
    PyMem_Free(_children);
31008
1.28k
    p->level--;
31009
1.28k
    return _seq;
31010
1.28k
}
31011
31012
// _loop1_56: (',' star_expression)
31013
static asdl_seq *
31014
_loop1_56_rule(Parser *p)
31015
215k
{
31016
215k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31017
0
        _Pypegen_stack_overflow(p);
31018
0
    }
31019
215k
    if (p->error_indicator) {
31020
0
        p->level--;
31021
0
        return NULL;
31022
0
    }
31023
215k
    void *_res = NULL;
31024
215k
    int _mark = p->mark;
31025
215k
    void **_children = PyMem_Malloc(sizeof(void *));
31026
215k
    if (!_children) {
31027
0
        p->error_indicator = 1;
31028
0
        PyErr_NoMemory();
31029
0
        p->level--;
31030
0
        return NULL;
31031
0
    }
31032
215k
    Py_ssize_t _children_capacity = 1;
31033
215k
    Py_ssize_t _n = 0;
31034
215k
    { // (',' star_expression)
31035
215k
        if (p->error_indicator) {
31036
0
            p->level--;
31037
0
            return NULL;
31038
0
        }
31039
215k
        D(fprintf(stderr, "%*c> _loop1_56[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)"));
31040
215k
        void *_tmp_159_var;
31041
215k
        while (
31042
232k
            (_tmp_159_var = _tmp_159_rule(p))  // ',' star_expression
31043
215k
        )
31044
16.3k
        {
31045
16.3k
            _res = _tmp_159_var;
31046
16.3k
            if (_n == _children_capacity) {
31047
2.74k
                _children_capacity *= 2;
31048
2.74k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31049
2.74k
                if (!_new_children) {
31050
0
                    PyMem_Free(_children);
31051
0
                    p->error_indicator = 1;
31052
0
                    PyErr_NoMemory();
31053
0
                    p->level--;
31054
0
                    return NULL;
31055
0
                }
31056
2.74k
                _children = _new_children;
31057
2.74k
            }
31058
16.3k
            _children[_n++] = _res;
31059
16.3k
            _mark = p->mark;
31060
16.3k
        }
31061
215k
        p->mark = _mark;
31062
215k
        D(fprintf(stderr, "%*c%s _loop1_56[%d-%d]: %s failed!\n", p->level, ' ',
31063
215k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_expression)"));
31064
215k
    }
31065
215k
    if (_n == 0 || p->error_indicator) {
31066
210k
        PyMem_Free(_children);
31067
210k
        p->level--;
31068
210k
        return NULL;
31069
210k
    }
31070
5.55k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31071
5.55k
    if (!_seq) {
31072
0
        PyMem_Free(_children);
31073
0
        p->error_indicator = 1;
31074
0
        PyErr_NoMemory();
31075
0
        p->level--;
31076
0
        return NULL;
31077
0
    }
31078
21.5k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31079
5.55k
    PyMem_Free(_children);
31080
5.55k
    p->level--;
31081
5.55k
    return _seq;
31082
5.55k
}
31083
31084
// _loop0_57: ',' star_named_expression
31085
static asdl_seq *
31086
_loop0_57_rule(Parser *p)
31087
42.1k
{
31088
42.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31089
0
        _Pypegen_stack_overflow(p);
31090
0
    }
31091
42.1k
    if (p->error_indicator) {
31092
0
        p->level--;
31093
0
        return NULL;
31094
0
    }
31095
42.1k
    void *_res = NULL;
31096
42.1k
    int _mark = p->mark;
31097
42.1k
    void **_children = PyMem_Malloc(sizeof(void *));
31098
42.1k
    if (!_children) {
31099
0
        p->error_indicator = 1;
31100
0
        PyErr_NoMemory();
31101
0
        p->level--;
31102
0
        return NULL;
31103
0
    }
31104
42.1k
    Py_ssize_t _children_capacity = 1;
31105
42.1k
    Py_ssize_t _n = 0;
31106
42.1k
    { // ',' star_named_expression
31107
42.1k
        if (p->error_indicator) {
31108
0
            p->level--;
31109
0
            return NULL;
31110
0
        }
31111
42.1k
        D(fprintf(stderr, "%*c> _loop0_57[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_named_expression"));
31112
42.1k
        Token * _literal;
31113
42.1k
        expr_ty elem;
31114
42.1k
        while (
31115
100k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
31116
63.5k
            &&
31117
63.5k
            (elem = star_named_expression_rule(p))  // star_named_expression
31118
42.1k
        )
31119
58.2k
        {
31120
58.2k
            _res = elem;
31121
58.2k
            if (_res == NULL && PyErr_Occurred()) {
31122
0
                p->error_indicator = 1;
31123
0
                PyMem_Free(_children);
31124
0
                p->level--;
31125
0
                return NULL;
31126
0
            }
31127
58.2k
            if (_n == _children_capacity) {
31128
9.34k
                _children_capacity *= 2;
31129
9.34k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31130
9.34k
                if (!_new_children) {
31131
0
                    PyMem_Free(_children);
31132
0
                    p->error_indicator = 1;
31133
0
                    PyErr_NoMemory();
31134
0
                    p->level--;
31135
0
                    return NULL;
31136
0
                }
31137
9.34k
                _children = _new_children;
31138
9.34k
            }
31139
58.2k
            _children[_n++] = _res;
31140
58.2k
            _mark = p->mark;
31141
58.2k
        }
31142
42.1k
        p->mark = _mark;
31143
42.1k
        D(fprintf(stderr, "%*c%s _loop0_57[%d-%d]: %s failed!\n", p->level, ' ',
31144
42.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_named_expression"));
31145
42.1k
    }
31146
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31147
42.1k
    if (!_seq) {
31148
0
        PyMem_Free(_children);
31149
0
        p->error_indicator = 1;
31150
0
        PyErr_NoMemory();
31151
0
        p->level--;
31152
0
        return NULL;
31153
0
    }
31154
100k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31155
42.1k
    PyMem_Free(_children);
31156
42.1k
    p->level--;
31157
42.1k
    return _seq;
31158
42.1k
}
31159
31160
// _gather_58: star_named_expression _loop0_57
31161
static asdl_seq *
31162
_gather_58_rule(Parser *p)
31163
106k
{
31164
106k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31165
1
        _Pypegen_stack_overflow(p);
31166
1
    }
31167
106k
    if (p->error_indicator) {
31168
1
        p->level--;
31169
1
        return NULL;
31170
1
    }
31171
106k
    asdl_seq * _res = NULL;
31172
106k
    int _mark = p->mark;
31173
106k
    { // star_named_expression _loop0_57
31174
106k
        if (p->error_indicator) {
31175
0
            p->level--;
31176
0
            return NULL;
31177
0
        }
31178
106k
        D(fprintf(stderr, "%*c> _gather_58[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_57"));
31179
106k
        expr_ty elem;
31180
106k
        asdl_seq * seq;
31181
106k
        if (
31182
106k
            (elem = star_named_expression_rule(p))  // star_named_expression
31183
42.1k
            &&
31184
42.1k
            (seq = _loop0_57_rule(p))  // _loop0_57
31185
106k
        )
31186
42.1k
        {
31187
42.1k
            D(fprintf(stderr, "%*c+ _gather_58[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_57"));
31188
42.1k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31189
42.1k
            goto done;
31190
42.1k
        }
31191
64.4k
        p->mark = _mark;
31192
64.4k
        D(fprintf(stderr, "%*c%s _gather_58[%d-%d]: %s failed!\n", p->level, ' ',
31193
64.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression _loop0_57"));
31194
64.4k
    }
31195
64.4k
    _res = NULL;
31196
106k
  done:
31197
106k
    p->level--;
31198
106k
    return _res;
31199
64.4k
}
31200
31201
// _loop1_59: ('or' conjunction)
31202
static asdl_seq *
31203
_loop1_59_rule(Parser *p)
31204
394k
{
31205
394k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31206
0
        _Pypegen_stack_overflow(p);
31207
0
    }
31208
394k
    if (p->error_indicator) {
31209
0
        p->level--;
31210
0
        return NULL;
31211
0
    }
31212
394k
    void *_res = NULL;
31213
394k
    int _mark = p->mark;
31214
394k
    void **_children = PyMem_Malloc(sizeof(void *));
31215
394k
    if (!_children) {
31216
0
        p->error_indicator = 1;
31217
0
        PyErr_NoMemory();
31218
0
        p->level--;
31219
0
        return NULL;
31220
0
    }
31221
394k
    Py_ssize_t _children_capacity = 1;
31222
394k
    Py_ssize_t _n = 0;
31223
394k
    { // ('or' conjunction)
31224
394k
        if (p->error_indicator) {
31225
0
            p->level--;
31226
0
            return NULL;
31227
0
        }
31228
394k
        D(fprintf(stderr, "%*c> _loop1_59[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)"));
31229
394k
        void *_tmp_160_var;
31230
394k
        while (
31231
398k
            (_tmp_160_var = _tmp_160_rule(p))  // 'or' conjunction
31232
394k
        )
31233
4.58k
        {
31234
4.58k
            _res = _tmp_160_var;
31235
4.58k
            if (_n == _children_capacity) {
31236
656
                _children_capacity *= 2;
31237
656
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31238
656
                if (!_new_children) {
31239
0
                    PyMem_Free(_children);
31240
0
                    p->error_indicator = 1;
31241
0
                    PyErr_NoMemory();
31242
0
                    p->level--;
31243
0
                    return NULL;
31244
0
                }
31245
656
                _children = _new_children;
31246
656
            }
31247
4.58k
            _children[_n++] = _res;
31248
4.58k
            _mark = p->mark;
31249
4.58k
        }
31250
394k
        p->mark = _mark;
31251
394k
        D(fprintf(stderr, "%*c%s _loop1_59[%d-%d]: %s failed!\n", p->level, ' ',
31252
394k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('or' conjunction)"));
31253
394k
    }
31254
394k
    if (_n == 0 || p->error_indicator) {
31255
392k
        PyMem_Free(_children);
31256
392k
        p->level--;
31257
392k
        return NULL;
31258
392k
    }
31259
1.58k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31260
1.58k
    if (!_seq) {
31261
0
        PyMem_Free(_children);
31262
0
        p->error_indicator = 1;
31263
0
        PyErr_NoMemory();
31264
0
        p->level--;
31265
0
        return NULL;
31266
0
    }
31267
6.00k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31268
1.58k
    PyMem_Free(_children);
31269
1.58k
    p->level--;
31270
1.58k
    return _seq;
31271
1.58k
}
31272
31273
// _loop1_60: ('and' inversion)
31274
static asdl_seq *
31275
_loop1_60_rule(Parser *p)
31276
398k
{
31277
398k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31278
0
        _Pypegen_stack_overflow(p);
31279
0
    }
31280
398k
    if (p->error_indicator) {
31281
0
        p->level--;
31282
0
        return NULL;
31283
0
    }
31284
398k
    void *_res = NULL;
31285
398k
    int _mark = p->mark;
31286
398k
    void **_children = PyMem_Malloc(sizeof(void *));
31287
398k
    if (!_children) {
31288
0
        p->error_indicator = 1;
31289
0
        PyErr_NoMemory();
31290
0
        p->level--;
31291
0
        return NULL;
31292
0
    }
31293
398k
    Py_ssize_t _children_capacity = 1;
31294
398k
    Py_ssize_t _n = 0;
31295
398k
    { // ('and' inversion)
31296
398k
        if (p->error_indicator) {
31297
0
            p->level--;
31298
0
            return NULL;
31299
0
        }
31300
398k
        D(fprintf(stderr, "%*c> _loop1_60[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)"));
31301
398k
        void *_tmp_161_var;
31302
398k
        while (
31303
402k
            (_tmp_161_var = _tmp_161_rule(p))  // 'and' inversion
31304
398k
        )
31305
3.74k
        {
31306
3.74k
            _res = _tmp_161_var;
31307
3.74k
            if (_n == _children_capacity) {
31308
1.24k
                _children_capacity *= 2;
31309
1.24k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31310
1.24k
                if (!_new_children) {
31311
0
                    PyMem_Free(_children);
31312
0
                    p->error_indicator = 1;
31313
0
                    PyErr_NoMemory();
31314
0
                    p->level--;
31315
0
                    return NULL;
31316
0
                }
31317
1.24k
                _children = _new_children;
31318
1.24k
            }
31319
3.74k
            _children[_n++] = _res;
31320
3.74k
            _mark = p->mark;
31321
3.74k
        }
31322
398k
        p->mark = _mark;
31323
398k
        D(fprintf(stderr, "%*c%s _loop1_60[%d-%d]: %s failed!\n", p->level, ' ',
31324
398k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('and' inversion)"));
31325
398k
    }
31326
398k
    if (_n == 0 || p->error_indicator) {
31327
396k
        PyMem_Free(_children);
31328
396k
        p->level--;
31329
396k
        return NULL;
31330
396k
    }
31331
1.71k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31332
1.71k
    if (!_seq) {
31333
0
        PyMem_Free(_children);
31334
0
        p->error_indicator = 1;
31335
0
        PyErr_NoMemory();
31336
0
        p->level--;
31337
0
        return NULL;
31338
0
    }
31339
5.27k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31340
1.71k
    PyMem_Free(_children);
31341
1.71k
    p->level--;
31342
1.71k
    return _seq;
31343
1.71k
}
31344
31345
// _loop1_61: compare_op_bitwise_or_pair
31346
static asdl_seq *
31347
_loop1_61_rule(Parser *p)
31348
404k
{
31349
404k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31350
0
        _Pypegen_stack_overflow(p);
31351
0
    }
31352
404k
    if (p->error_indicator) {
31353
0
        p->level--;
31354
0
        return NULL;
31355
0
    }
31356
404k
    void *_res = NULL;
31357
404k
    int _mark = p->mark;
31358
404k
    void **_children = PyMem_Malloc(sizeof(void *));
31359
404k
    if (!_children) {
31360
0
        p->error_indicator = 1;
31361
0
        PyErr_NoMemory();
31362
0
        p->level--;
31363
0
        return NULL;
31364
0
    }
31365
404k
    Py_ssize_t _children_capacity = 1;
31366
404k
    Py_ssize_t _n = 0;
31367
404k
    { // compare_op_bitwise_or_pair
31368
404k
        if (p->error_indicator) {
31369
0
            p->level--;
31370
0
            return NULL;
31371
0
        }
31372
404k
        D(fprintf(stderr, "%*c> _loop1_61[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compare_op_bitwise_or_pair"));
31373
404k
        CmpopExprPair* compare_op_bitwise_or_pair_var;
31374
404k
        while (
31375
428k
            (compare_op_bitwise_or_pair_var = compare_op_bitwise_or_pair_rule(p))  // compare_op_bitwise_or_pair
31376
404k
        )
31377
23.9k
        {
31378
23.9k
            _res = compare_op_bitwise_or_pair_var;
31379
23.9k
            if (_n == _children_capacity) {
31380
5.25k
                _children_capacity *= 2;
31381
5.25k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31382
5.25k
                if (!_new_children) {
31383
0
                    PyMem_Free(_children);
31384
0
                    p->error_indicator = 1;
31385
0
                    PyErr_NoMemory();
31386
0
                    p->level--;
31387
0
                    return NULL;
31388
0
                }
31389
5.25k
                _children = _new_children;
31390
5.25k
            }
31391
23.9k
            _children[_n++] = _res;
31392
23.9k
            _mark = p->mark;
31393
23.9k
        }
31394
404k
        p->mark = _mark;
31395
404k
        D(fprintf(stderr, "%*c%s _loop1_61[%d-%d]: %s failed!\n", p->level, ' ',
31396
404k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compare_op_bitwise_or_pair"));
31397
404k
    }
31398
404k
    if (_n == 0 || p->error_indicator) {
31399
393k
        PyMem_Free(_children);
31400
393k
        p->level--;
31401
393k
        return NULL;
31402
393k
    }
31403
11.0k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31404
11.0k
    if (!_seq) {
31405
0
        PyMem_Free(_children);
31406
0
        p->error_indicator = 1;
31407
0
        PyErr_NoMemory();
31408
0
        p->level--;
31409
0
        return NULL;
31410
0
    }
31411
34.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31412
11.0k
    PyMem_Free(_children);
31413
11.0k
    p->level--;
31414
11.0k
    return _seq;
31415
11.0k
}
31416
31417
// _tmp_62: '!='
31418
static void *
31419
_tmp_62_rule(Parser *p)
31420
425k
{
31421
425k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31422
0
        _Pypegen_stack_overflow(p);
31423
0
    }
31424
425k
    if (p->error_indicator) {
31425
0
        p->level--;
31426
0
        return NULL;
31427
0
    }
31428
425k
    void * _res = NULL;
31429
425k
    int _mark = p->mark;
31430
425k
    { // '!='
31431
425k
        if (p->error_indicator) {
31432
0
            p->level--;
31433
0
            return NULL;
31434
0
        }
31435
425k
        D(fprintf(stderr, "%*c> _tmp_62[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!='"));
31436
425k
        Token * tok;
31437
425k
        if (
31438
425k
            (tok = _PyPegen_expect_token(p, 28))  // token='!='
31439
425k
        )
31440
1.35k
        {
31441
1.35k
            D(fprintf(stderr, "%*c+ _tmp_62[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!='"));
31442
1.35k
            _res = _PyPegen_check_barry_as_flufl ( p , tok ) ? NULL : tok;
31443
1.35k
            if (_res == NULL && PyErr_Occurred()) {
31444
1
                p->error_indicator = 1;
31445
1
                p->level--;
31446
1
                return NULL;
31447
1
            }
31448
1.35k
            goto done;
31449
1.35k
        }
31450
424k
        p->mark = _mark;
31451
424k
        D(fprintf(stderr, "%*c%s _tmp_62[%d-%d]: %s failed!\n", p->level, ' ',
31452
424k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!='"));
31453
424k
    }
31454
424k
    _res = NULL;
31455
425k
  done:
31456
425k
    p->level--;
31457
425k
    return _res;
31458
424k
}
31459
31460
// _loop0_63: ',' (slice | starred_expression)
31461
static asdl_seq *
31462
_loop0_63_rule(Parser *p)
31463
2.36k
{
31464
2.36k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31465
0
        _Pypegen_stack_overflow(p);
31466
0
    }
31467
2.36k
    if (p->error_indicator) {
31468
0
        p->level--;
31469
0
        return NULL;
31470
0
    }
31471
2.36k
    void *_res = NULL;
31472
2.36k
    int _mark = p->mark;
31473
2.36k
    void **_children = PyMem_Malloc(sizeof(void *));
31474
2.36k
    if (!_children) {
31475
0
        p->error_indicator = 1;
31476
0
        PyErr_NoMemory();
31477
0
        p->level--;
31478
0
        return NULL;
31479
0
    }
31480
2.36k
    Py_ssize_t _children_capacity = 1;
31481
2.36k
    Py_ssize_t _n = 0;
31482
2.36k
    { // ',' (slice | starred_expression)
31483
2.36k
        if (p->error_indicator) {
31484
0
            p->level--;
31485
0
            return NULL;
31486
0
        }
31487
2.36k
        D(fprintf(stderr, "%*c> _loop0_63[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (slice | starred_expression)"));
31488
2.36k
        Token * _literal;
31489
2.36k
        void *elem;
31490
2.36k
        while (
31491
18.3k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
31492
17.0k
            &&
31493
17.0k
            (elem = _tmp_162_rule(p))  // slice | starred_expression
31494
2.36k
        )
31495
15.9k
        {
31496
15.9k
            _res = elem;
31497
15.9k
            if (_res == NULL && PyErr_Occurred()) {
31498
0
                p->error_indicator = 1;
31499
0
                PyMem_Free(_children);
31500
0
                p->level--;
31501
0
                return NULL;
31502
0
            }
31503
15.9k
            if (_n == _children_capacity) {
31504
1.90k
                _children_capacity *= 2;
31505
1.90k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31506
1.90k
                if (!_new_children) {
31507
0
                    PyMem_Free(_children);
31508
0
                    p->error_indicator = 1;
31509
0
                    PyErr_NoMemory();
31510
0
                    p->level--;
31511
0
                    return NULL;
31512
0
                }
31513
1.90k
                _children = _new_children;
31514
1.90k
            }
31515
15.9k
            _children[_n++] = _res;
31516
15.9k
            _mark = p->mark;
31517
15.9k
        }
31518
2.36k
        p->mark = _mark;
31519
2.36k
        D(fprintf(stderr, "%*c%s _loop0_63[%d-%d]: %s failed!\n", p->level, ' ',
31520
2.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (slice | starred_expression)"));
31521
2.36k
    }
31522
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31523
2.36k
    if (!_seq) {
31524
0
        PyMem_Free(_children);
31525
0
        p->error_indicator = 1;
31526
0
        PyErr_NoMemory();
31527
0
        p->level--;
31528
0
        return NULL;
31529
0
    }
31530
18.3k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31531
2.36k
    PyMem_Free(_children);
31532
2.36k
    p->level--;
31533
2.36k
    return _seq;
31534
2.36k
}
31535
31536
// _gather_64: (slice | starred_expression) _loop0_63
31537
static asdl_seq *
31538
_gather_64_rule(Parser *p)
31539
4.54k
{
31540
4.54k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31541
0
        _Pypegen_stack_overflow(p);
31542
0
    }
31543
4.54k
    if (p->error_indicator) {
31544
0
        p->level--;
31545
0
        return NULL;
31546
0
    }
31547
4.54k
    asdl_seq * _res = NULL;
31548
4.54k
    int _mark = p->mark;
31549
4.54k
    { // (slice | starred_expression) _loop0_63
31550
4.54k
        if (p->error_indicator) {
31551
0
            p->level--;
31552
0
            return NULL;
31553
0
        }
31554
4.54k
        D(fprintf(stderr, "%*c> _gather_64[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_63"));
31555
4.54k
        void *elem;
31556
4.54k
        asdl_seq * seq;
31557
4.54k
        if (
31558
4.54k
            (elem = _tmp_162_rule(p))  // slice | starred_expression
31559
2.36k
            &&
31560
2.36k
            (seq = _loop0_63_rule(p))  // _loop0_63
31561
4.54k
        )
31562
2.36k
        {
31563
2.36k
            D(fprintf(stderr, "%*c+ _gather_64[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_63"));
31564
2.36k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31565
2.36k
            goto done;
31566
2.36k
        }
31567
2.18k
        p->mark = _mark;
31568
2.18k
        D(fprintf(stderr, "%*c%s _gather_64[%d-%d]: %s failed!\n", p->level, ' ',
31569
2.18k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(slice | starred_expression) _loop0_63"));
31570
2.18k
    }
31571
2.18k
    _res = NULL;
31572
4.54k
  done:
31573
4.54k
    p->level--;
31574
4.54k
    return _res;
31575
2.18k
}
31576
31577
// _tmp_65: ':' expression?
31578
static void *
31579
_tmp_65_rule(Parser *p)
31580
14.9k
{
31581
14.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31582
0
        _Pypegen_stack_overflow(p);
31583
0
    }
31584
14.9k
    if (p->error_indicator) {
31585
0
        p->level--;
31586
0
        return NULL;
31587
0
    }
31588
14.9k
    void * _res = NULL;
31589
14.9k
    int _mark = p->mark;
31590
14.9k
    { // ':' expression?
31591
14.9k
        if (p->error_indicator) {
31592
0
            p->level--;
31593
0
            return NULL;
31594
0
        }
31595
14.9k
        D(fprintf(stderr, "%*c> _tmp_65[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression?"));
31596
14.9k
        Token * _literal;
31597
14.9k
        void *d;
31598
14.9k
        if (
31599
14.9k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
31600
6.70k
            &&
31601
6.70k
            (d = expression_rule(p), !p->error_indicator)  // expression?
31602
14.9k
        )
31603
6.49k
        {
31604
6.49k
            D(fprintf(stderr, "%*c+ _tmp_65[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?"));
31605
6.49k
            _res = d;
31606
6.49k
            if (_res == NULL && PyErr_Occurred()) {
31607
0
                p->error_indicator = 1;
31608
0
                p->level--;
31609
0
                return NULL;
31610
0
            }
31611
6.49k
            goto done;
31612
6.49k
        }
31613
8.49k
        p->mark = _mark;
31614
8.49k
        D(fprintf(stderr, "%*c%s _tmp_65[%d-%d]: %s failed!\n", p->level, ' ',
31615
8.49k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression?"));
31616
8.49k
    }
31617
8.49k
    _res = NULL;
31618
14.9k
  done:
31619
14.9k
    p->level--;
31620
14.9k
    return _res;
31621
8.49k
}
31622
31623
// _tmp_66: tuple | group | genexp
31624
static void *
31625
_tmp_66_rule(Parser *p)
31626
81.9k
{
31627
81.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31628
0
        _Pypegen_stack_overflow(p);
31629
0
    }
31630
81.9k
    if (p->error_indicator) {
31631
0
        p->level--;
31632
0
        return NULL;
31633
0
    }
31634
81.9k
    void * _res = NULL;
31635
81.9k
    int _mark = p->mark;
31636
81.9k
    { // tuple
31637
81.9k
        if (p->error_indicator) {
31638
0
            p->level--;
31639
0
            return NULL;
31640
0
        }
31641
81.9k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
31642
81.9k
        expr_ty tuple_var;
31643
81.9k
        if (
31644
81.9k
            (tuple_var = tuple_rule(p))  // tuple
31645
81.9k
        )
31646
41.4k
        {
31647
41.4k
            D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
31648
41.4k
            _res = tuple_var;
31649
41.4k
            goto done;
31650
41.4k
        }
31651
40.5k
        p->mark = _mark;
31652
40.5k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
31653
40.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
31654
40.5k
    }
31655
0
    { // group
31656
40.5k
        if (p->error_indicator) {
31657
6.16k
            p->level--;
31658
6.16k
            return NULL;
31659
6.16k
        }
31660
34.3k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group"));
31661
34.3k
        expr_ty group_var;
31662
34.3k
        if (
31663
34.3k
            (group_var = group_rule(p))  // group
31664
34.3k
        )
31665
10.0k
        {
31666
10.0k
            D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group"));
31667
10.0k
            _res = group_var;
31668
10.0k
            goto done;
31669
10.0k
        }
31670
24.2k
        p->mark = _mark;
31671
24.2k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
31672
24.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group"));
31673
24.2k
    }
31674
0
    { // genexp
31675
24.2k
        if (p->error_indicator) {
31676
700
            p->level--;
31677
700
            return NULL;
31678
700
        }
31679
23.5k
        D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
31680
23.5k
        expr_ty genexp_var;
31681
23.5k
        if (
31682
23.5k
            (genexp_var = genexp_rule(p))  // genexp
31683
23.5k
        )
31684
2.78k
        {
31685
2.78k
            D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
31686
2.78k
            _res = genexp_var;
31687
2.78k
            goto done;
31688
2.78k
        }
31689
20.7k
        p->mark = _mark;
31690
20.7k
        D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
31691
20.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
31692
20.7k
    }
31693
20.7k
    _res = NULL;
31694
75.0k
  done:
31695
75.0k
    p->level--;
31696
75.0k
    return _res;
31697
20.7k
}
31698
31699
// _tmp_67: list | listcomp
31700
static void *
31701
_tmp_67_rule(Parser *p)
31702
61.6k
{
31703
61.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31704
0
        _Pypegen_stack_overflow(p);
31705
0
    }
31706
61.6k
    if (p->error_indicator) {
31707
0
        p->level--;
31708
0
        return NULL;
31709
0
    }
31710
61.6k
    void * _res = NULL;
31711
61.6k
    int _mark = p->mark;
31712
61.6k
    { // list
31713
61.6k
        if (p->error_indicator) {
31714
0
            p->level--;
31715
0
            return NULL;
31716
0
        }
31717
61.6k
        D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
31718
61.6k
        expr_ty list_var;
31719
61.6k
        if (
31720
61.6k
            (list_var = list_rule(p))  // list
31721
61.6k
        )
31722
15.7k
        {
31723
15.7k
            D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
31724
15.7k
            _res = list_var;
31725
15.7k
            goto done;
31726
15.7k
        }
31727
45.8k
        p->mark = _mark;
31728
45.8k
        D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
31729
45.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
31730
45.8k
    }
31731
0
    { // listcomp
31732
45.8k
        if (p->error_indicator) {
31733
12.9k
            p->level--;
31734
12.9k
            return NULL;
31735
12.9k
        }
31736
32.8k
        D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "listcomp"));
31737
32.8k
        expr_ty listcomp_var;
31738
32.8k
        if (
31739
32.8k
            (listcomp_var = listcomp_rule(p))  // listcomp
31740
32.8k
        )
31741
1.56k
        {
31742
1.56k
            D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "listcomp"));
31743
1.56k
            _res = listcomp_var;
31744
1.56k
            goto done;
31745
1.56k
        }
31746
31.2k
        p->mark = _mark;
31747
31.2k
        D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
31748
31.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "listcomp"));
31749
31.2k
    }
31750
31.2k
    _res = NULL;
31751
48.6k
  done:
31752
48.6k
    p->level--;
31753
48.6k
    return _res;
31754
31.2k
}
31755
31756
// _tmp_68: dict | set | dictcomp | setcomp
31757
static void *
31758
_tmp_68_rule(Parser *p)
31759
28.5k
{
31760
28.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31761
0
        _Pypegen_stack_overflow(p);
31762
0
    }
31763
28.5k
    if (p->error_indicator) {
31764
0
        p->level--;
31765
0
        return NULL;
31766
0
    }
31767
28.5k
    void * _res = NULL;
31768
28.5k
    int _mark = p->mark;
31769
28.5k
    { // dict
31770
28.5k
        if (p->error_indicator) {
31771
0
            p->level--;
31772
0
            return NULL;
31773
0
        }
31774
28.5k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dict"));
31775
28.5k
        expr_ty dict_var;
31776
28.5k
        if (
31777
28.5k
            (dict_var = dict_rule(p))  // dict
31778
28.5k
        )
31779
4.73k
        {
31780
4.73k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dict"));
31781
4.73k
            _res = dict_var;
31782
4.73k
            goto done;
31783
4.73k
        }
31784
23.7k
        p->mark = _mark;
31785
23.7k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31786
23.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dict"));
31787
23.7k
    }
31788
0
    { // set
31789
23.7k
        if (p->error_indicator) {
31790
9.05k
            p->level--;
31791
9.05k
            return NULL;
31792
9.05k
        }
31793
14.7k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "set"));
31794
14.7k
        expr_ty set_var;
31795
14.7k
        if (
31796
14.7k
            (set_var = set_rule(p))  // set
31797
14.7k
        )
31798
1.53k
        {
31799
1.53k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "set"));
31800
1.53k
            _res = set_var;
31801
1.53k
            goto done;
31802
1.53k
        }
31803
13.1k
        p->mark = _mark;
31804
13.1k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31805
13.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "set"));
31806
13.1k
    }
31807
0
    { // dictcomp
31808
13.1k
        if (p->error_indicator) {
31809
289
            p->level--;
31810
289
            return NULL;
31811
289
        }
31812
12.8k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dictcomp"));
31813
12.8k
        expr_ty dictcomp_var;
31814
12.8k
        if (
31815
12.8k
            (dictcomp_var = dictcomp_rule(p))  // dictcomp
31816
12.8k
        )
31817
1.46k
        {
31818
1.46k
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dictcomp"));
31819
1.46k
            _res = dictcomp_var;
31820
1.46k
            goto done;
31821
1.46k
        }
31822
11.4k
        p->mark = _mark;
31823
11.4k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31824
11.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dictcomp"));
31825
11.4k
    }
31826
0
    { // setcomp
31827
11.4k
        if (p->error_indicator) {
31828
213
            p->level--;
31829
213
            return NULL;
31830
213
        }
31831
11.2k
        D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "setcomp"));
31832
11.2k
        expr_ty setcomp_var;
31833
11.2k
        if (
31834
11.2k
            (setcomp_var = setcomp_rule(p))  // setcomp
31835
11.2k
        )
31836
495
        {
31837
495
            D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "setcomp"));
31838
495
            _res = setcomp_var;
31839
495
            goto done;
31840
495
        }
31841
10.7k
        p->mark = _mark;
31842
10.7k
        D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
31843
10.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "setcomp"));
31844
10.7k
    }
31845
10.7k
    _res = NULL;
31846
18.9k
  done:
31847
18.9k
    p->level--;
31848
18.9k
    return _res;
31849
10.7k
}
31850
31851
// _tmp_69: yield_expr | named_expression
31852
static void *
31853
_tmp_69_rule(Parser *p)
31854
34.3k
{
31855
34.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31856
0
        _Pypegen_stack_overflow(p);
31857
0
    }
31858
34.3k
    if (p->error_indicator) {
31859
0
        p->level--;
31860
0
        return NULL;
31861
0
    }
31862
34.3k
    void * _res = NULL;
31863
34.3k
    int _mark = p->mark;
31864
34.3k
    { // yield_expr
31865
34.3k
        if (p->error_indicator) {
31866
0
            p->level--;
31867
0
            return NULL;
31868
0
        }
31869
34.3k
        D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
31870
34.3k
        expr_ty yield_expr_var;
31871
34.3k
        if (
31872
34.3k
            (yield_expr_var = yield_expr_rule(p))  // yield_expr
31873
34.3k
        )
31874
601
        {
31875
601
            D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
31876
601
            _res = yield_expr_var;
31877
601
            goto done;
31878
601
        }
31879
33.7k
        p->mark = _mark;
31880
33.7k
        D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ',
31881
33.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
31882
33.7k
    }
31883
0
    { // named_expression
31884
33.7k
        if (p->error_indicator) {
31885
329
            p->level--;
31886
329
            return NULL;
31887
329
        }
31888
33.4k
        D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
31889
33.4k
        expr_ty named_expression_var;
31890
33.4k
        if (
31891
33.4k
            (named_expression_var = named_expression_rule(p))  // named_expression
31892
33.4k
        )
31893
22.8k
        {
31894
22.8k
            D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
31895
22.8k
            _res = named_expression_var;
31896
22.8k
            goto done;
31897
22.8k
        }
31898
10.5k
        p->mark = _mark;
31899
10.5k
        D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ',
31900
10.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
31901
10.5k
    }
31902
10.5k
    _res = NULL;
31903
34.0k
  done:
31904
34.0k
    p->level--;
31905
34.0k
    return _res;
31906
10.5k
}
31907
31908
// _loop0_70: lambda_param_no_default
31909
static asdl_seq *
31910
_loop0_70_rule(Parser *p)
31911
85.4k
{
31912
85.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31913
0
        _Pypegen_stack_overflow(p);
31914
0
    }
31915
85.4k
    if (p->error_indicator) {
31916
0
        p->level--;
31917
0
        return NULL;
31918
0
    }
31919
85.4k
    void *_res = NULL;
31920
85.4k
    int _mark = p->mark;
31921
85.4k
    void **_children = PyMem_Malloc(sizeof(void *));
31922
85.4k
    if (!_children) {
31923
0
        p->error_indicator = 1;
31924
0
        PyErr_NoMemory();
31925
0
        p->level--;
31926
0
        return NULL;
31927
0
    }
31928
85.4k
    Py_ssize_t _children_capacity = 1;
31929
85.4k
    Py_ssize_t _n = 0;
31930
85.4k
    { // lambda_param_no_default
31931
85.4k
        if (p->error_indicator) {
31932
0
            p->level--;
31933
0
            return NULL;
31934
0
        }
31935
85.4k
        D(fprintf(stderr, "%*c> _loop0_70[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
31936
85.4k
        arg_ty lambda_param_no_default_var;
31937
85.4k
        while (
31938
174k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
31939
85.4k
        )
31940
88.6k
        {
31941
88.6k
            _res = lambda_param_no_default_var;
31942
88.6k
            if (_n == _children_capacity) {
31943
3.08k
                _children_capacity *= 2;
31944
3.08k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31945
3.08k
                if (!_new_children) {
31946
0
                    PyMem_Free(_children);
31947
0
                    p->error_indicator = 1;
31948
0
                    PyErr_NoMemory();
31949
0
                    p->level--;
31950
0
                    return NULL;
31951
0
                }
31952
3.08k
                _children = _new_children;
31953
3.08k
            }
31954
88.6k
            _children[_n++] = _res;
31955
88.6k
            _mark = p->mark;
31956
88.6k
        }
31957
85.4k
        p->mark = _mark;
31958
85.4k
        D(fprintf(stderr, "%*c%s _loop0_70[%d-%d]: %s failed!\n", p->level, ' ',
31959
85.4k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
31960
85.4k
    }
31961
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31962
85.4k
    if (!_seq) {
31963
0
        PyMem_Free(_children);
31964
0
        p->error_indicator = 1;
31965
0
        PyErr_NoMemory();
31966
0
        p->level--;
31967
0
        return NULL;
31968
0
    }
31969
174k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31970
85.4k
    PyMem_Free(_children);
31971
85.4k
    p->level--;
31972
85.4k
    return _seq;
31973
85.4k
}
31974
31975
// _loop0_71: lambda_param_with_default
31976
static asdl_seq *
31977
_loop0_71_rule(Parser *p)
31978
3.53k
{
31979
3.53k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
31980
0
        _Pypegen_stack_overflow(p);
31981
0
    }
31982
3.53k
    if (p->error_indicator) {
31983
2
        p->level--;
31984
2
        return NULL;
31985
2
    }
31986
3.53k
    void *_res = NULL;
31987
3.53k
    int _mark = p->mark;
31988
3.53k
    void **_children = PyMem_Malloc(sizeof(void *));
31989
3.53k
    if (!_children) {
31990
0
        p->error_indicator = 1;
31991
0
        PyErr_NoMemory();
31992
0
        p->level--;
31993
0
        return NULL;
31994
0
    }
31995
3.53k
    Py_ssize_t _children_capacity = 1;
31996
3.53k
    Py_ssize_t _n = 0;
31997
3.53k
    { // lambda_param_with_default
31998
3.53k
        if (p->error_indicator) {
31999
0
            p->level--;
32000
0
            return NULL;
32001
0
        }
32002
3.53k
        D(fprintf(stderr, "%*c> _loop0_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
32003
3.53k
        NameDefaultPair* lambda_param_with_default_var;
32004
3.53k
        while (
32005
5.12k
            (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
32006
3.53k
        )
32007
1.59k
        {
32008
1.59k
            _res = lambda_param_with_default_var;
32009
1.59k
            if (_n == _children_capacity) {
32010
482
                _children_capacity *= 2;
32011
482
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32012
482
                if (!_new_children) {
32013
0
                    PyMem_Free(_children);
32014
0
                    p->error_indicator = 1;
32015
0
                    PyErr_NoMemory();
32016
0
                    p->level--;
32017
0
                    return NULL;
32018
0
                }
32019
482
                _children = _new_children;
32020
482
            }
32021
1.59k
            _children[_n++] = _res;
32022
1.59k
            _mark = p->mark;
32023
1.59k
        }
32024
3.53k
        p->mark = _mark;
32025
3.53k
        D(fprintf(stderr, "%*c%s _loop0_71[%d-%d]: %s failed!\n", p->level, ' ',
32026
3.53k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
32027
3.53k
    }
32028
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32029
3.53k
    if (!_seq) {
32030
0
        PyMem_Free(_children);
32031
0
        p->error_indicator = 1;
32032
0
        PyErr_NoMemory();
32033
0
        p->level--;
32034
0
        return NULL;
32035
0
    }
32036
5.12k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32037
3.53k
    PyMem_Free(_children);
32038
3.53k
    p->level--;
32039
3.53k
    return _seq;
32040
3.53k
}
32041
32042
// _loop1_72: lambda_param_no_default
32043
static asdl_seq *
32044
_loop1_72_rule(Parser *p)
32045
84.7k
{
32046
84.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32047
0
        _Pypegen_stack_overflow(p);
32048
0
    }
32049
84.7k
    if (p->error_indicator) {
32050
0
        p->level--;
32051
0
        return NULL;
32052
0
    }
32053
84.7k
    void *_res = NULL;
32054
84.7k
    int _mark = p->mark;
32055
84.7k
    void **_children = PyMem_Malloc(sizeof(void *));
32056
84.7k
    if (!_children) {
32057
0
        p->error_indicator = 1;
32058
0
        PyErr_NoMemory();
32059
0
        p->level--;
32060
0
        return NULL;
32061
0
    }
32062
84.7k
    Py_ssize_t _children_capacity = 1;
32063
84.7k
    Py_ssize_t _n = 0;
32064
84.7k
    { // lambda_param_no_default
32065
84.7k
        if (p->error_indicator) {
32066
0
            p->level--;
32067
0
            return NULL;
32068
0
        }
32069
84.7k
        D(fprintf(stderr, "%*c> _loop1_72[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
32070
84.7k
        arg_ty lambda_param_no_default_var;
32071
84.7k
        while (
32072
197k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
32073
84.7k
        )
32074
113k
        {
32075
113k
            _res = lambda_param_no_default_var;
32076
113k
            if (_n == _children_capacity) {
32077
5.86k
                _children_capacity *= 2;
32078
5.86k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32079
5.86k
                if (!_new_children) {
32080
0
                    PyMem_Free(_children);
32081
0
                    p->error_indicator = 1;
32082
0
                    PyErr_NoMemory();
32083
0
                    p->level--;
32084
0
                    return NULL;
32085
0
                }
32086
5.86k
                _children = _new_children;
32087
5.86k
            }
32088
113k
            _children[_n++] = _res;
32089
113k
            _mark = p->mark;
32090
113k
        }
32091
84.7k
        p->mark = _mark;
32092
84.7k
        D(fprintf(stderr, "%*c%s _loop1_72[%d-%d]: %s failed!\n", p->level, ' ',
32093
84.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
32094
84.7k
    }
32095
84.7k
    if (_n == 0 || p->error_indicator) {
32096
71.4k
        PyMem_Free(_children);
32097
71.4k
        p->level--;
32098
71.4k
        return NULL;
32099
71.4k
    }
32100
13.3k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32101
13.3k
    if (!_seq) {
32102
0
        PyMem_Free(_children);
32103
0
        p->error_indicator = 1;
32104
0
        PyErr_NoMemory();
32105
0
        p->level--;
32106
0
        return NULL;
32107
0
    }
32108
126k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32109
13.3k
    PyMem_Free(_children);
32110
13.3k
    p->level--;
32111
13.3k
    return _seq;
32112
13.3k
}
32113
32114
// _loop1_73: lambda_param_with_default
32115
static asdl_seq *
32116
_loop1_73_rule(Parser *p)
32117
85.2k
{
32118
85.2k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32119
0
        _Pypegen_stack_overflow(p);
32120
0
    }
32121
85.2k
    if (p->error_indicator) {
32122
0
        p->level--;
32123
0
        return NULL;
32124
0
    }
32125
85.2k
    void *_res = NULL;
32126
85.2k
    int _mark = p->mark;
32127
85.2k
    void **_children = PyMem_Malloc(sizeof(void *));
32128
85.2k
    if (!_children) {
32129
0
        p->error_indicator = 1;
32130
0
        PyErr_NoMemory();
32131
0
        p->level--;
32132
0
        return NULL;
32133
0
    }
32134
85.2k
    Py_ssize_t _children_capacity = 1;
32135
85.2k
    Py_ssize_t _n = 0;
32136
85.2k
    { // lambda_param_with_default
32137
85.2k
        if (p->error_indicator) {
32138
0
            p->level--;
32139
0
            return NULL;
32140
0
        }
32141
85.2k
        D(fprintf(stderr, "%*c> _loop1_73[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
32142
85.2k
        NameDefaultPair* lambda_param_with_default_var;
32143
85.2k
        while (
32144
112k
            (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
32145
85.2k
        )
32146
27.0k
        {
32147
27.0k
            _res = lambda_param_with_default_var;
32148
27.0k
            if (_n == _children_capacity) {
32149
3.42k
                _children_capacity *= 2;
32150
3.42k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32151
3.42k
                if (!_new_children) {
32152
0
                    PyMem_Free(_children);
32153
0
                    p->error_indicator = 1;
32154
0
                    PyErr_NoMemory();
32155
0
                    p->level--;
32156
0
                    return NULL;
32157
0
                }
32158
3.42k
                _children = _new_children;
32159
3.42k
            }
32160
27.0k
            _children[_n++] = _res;
32161
27.0k
            _mark = p->mark;
32162
27.0k
        }
32163
85.2k
        p->mark = _mark;
32164
85.2k
        D(fprintf(stderr, "%*c%s _loop1_73[%d-%d]: %s failed!\n", p->level, ' ',
32165
85.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
32166
85.2k
    }
32167
85.2k
    if (_n == 0 || p->error_indicator) {
32168
64.4k
        PyMem_Free(_children);
32169
64.4k
        p->level--;
32170
64.4k
        return NULL;
32171
64.4k
    }
32172
20.8k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32173
20.8k
    if (!_seq) {
32174
0
        PyMem_Free(_children);
32175
0
        p->error_indicator = 1;
32176
0
        PyErr_NoMemory();
32177
0
        p->level--;
32178
0
        return NULL;
32179
0
    }
32180
47.6k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32181
20.8k
    PyMem_Free(_children);
32182
20.8k
    p->level--;
32183
20.8k
    return _seq;
32184
20.8k
}
32185
32186
// _loop0_74: lambda_param_maybe_default
32187
static asdl_seq *
32188
_loop0_74_rule(Parser *p)
32189
15.5k
{
32190
15.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32191
0
        _Pypegen_stack_overflow(p);
32192
0
    }
32193
15.5k
    if (p->error_indicator) {
32194
0
        p->level--;
32195
0
        return NULL;
32196
0
    }
32197
15.5k
    void *_res = NULL;
32198
15.5k
    int _mark = p->mark;
32199
15.5k
    void **_children = PyMem_Malloc(sizeof(void *));
32200
15.5k
    if (!_children) {
32201
0
        p->error_indicator = 1;
32202
0
        PyErr_NoMemory();
32203
0
        p->level--;
32204
0
        return NULL;
32205
0
    }
32206
15.5k
    Py_ssize_t _children_capacity = 1;
32207
15.5k
    Py_ssize_t _n = 0;
32208
15.5k
    { // lambda_param_maybe_default
32209
15.5k
        if (p->error_indicator) {
32210
0
            p->level--;
32211
0
            return NULL;
32212
0
        }
32213
15.5k
        D(fprintf(stderr, "%*c> _loop0_74[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
32214
15.5k
        NameDefaultPair* lambda_param_maybe_default_var;
32215
15.5k
        while (
32216
31.2k
            (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
32217
15.5k
        )
32218
15.6k
        {
32219
15.6k
            _res = lambda_param_maybe_default_var;
32220
15.6k
            if (_n == _children_capacity) {
32221
1.38k
                _children_capacity *= 2;
32222
1.38k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32223
1.38k
                if (!_new_children) {
32224
0
                    PyMem_Free(_children);
32225
0
                    p->error_indicator = 1;
32226
0
                    PyErr_NoMemory();
32227
0
                    p->level--;
32228
0
                    return NULL;
32229
0
                }
32230
1.38k
                _children = _new_children;
32231
1.38k
            }
32232
15.6k
            _children[_n++] = _res;
32233
15.6k
            _mark = p->mark;
32234
15.6k
        }
32235
15.5k
        p->mark = _mark;
32236
15.5k
        D(fprintf(stderr, "%*c%s _loop0_74[%d-%d]: %s failed!\n", p->level, ' ',
32237
15.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
32238
15.5k
    }
32239
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32240
15.5k
    if (!_seq) {
32241
0
        PyMem_Free(_children);
32242
0
        p->error_indicator = 1;
32243
0
        PyErr_NoMemory();
32244
0
        p->level--;
32245
0
        return NULL;
32246
0
    }
32247
31.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32248
15.5k
    PyMem_Free(_children);
32249
15.5k
    p->level--;
32250
15.5k
    return _seq;
32251
15.5k
}
32252
32253
// _loop1_75: lambda_param_maybe_default
32254
static asdl_seq *
32255
_loop1_75_rule(Parser *p)
32256
10.3k
{
32257
10.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32258
0
        _Pypegen_stack_overflow(p);
32259
0
    }
32260
10.3k
    if (p->error_indicator) {
32261
0
        p->level--;
32262
0
        return NULL;
32263
0
    }
32264
10.3k
    void *_res = NULL;
32265
10.3k
    int _mark = p->mark;
32266
10.3k
    void **_children = PyMem_Malloc(sizeof(void *));
32267
10.3k
    if (!_children) {
32268
0
        p->error_indicator = 1;
32269
0
        PyErr_NoMemory();
32270
0
        p->level--;
32271
0
        return NULL;
32272
0
    }
32273
10.3k
    Py_ssize_t _children_capacity = 1;
32274
10.3k
    Py_ssize_t _n = 0;
32275
10.3k
    { // lambda_param_maybe_default
32276
10.3k
        if (p->error_indicator) {
32277
0
            p->level--;
32278
0
            return NULL;
32279
0
        }
32280
10.3k
        D(fprintf(stderr, "%*c> _loop1_75[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
32281
10.3k
        NameDefaultPair* lambda_param_maybe_default_var;
32282
10.3k
        while (
32283
24.2k
            (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
32284
10.3k
        )
32285
13.9k
        {
32286
13.9k
            _res = lambda_param_maybe_default_var;
32287
13.9k
            if (_n == _children_capacity) {
32288
1.27k
                _children_capacity *= 2;
32289
1.27k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32290
1.27k
                if (!_new_children) {
32291
0
                    PyMem_Free(_children);
32292
0
                    p->error_indicator = 1;
32293
0
                    PyErr_NoMemory();
32294
0
                    p->level--;
32295
0
                    return NULL;
32296
0
                }
32297
1.27k
                _children = _new_children;
32298
1.27k
            }
32299
13.9k
            _children[_n++] = _res;
32300
13.9k
            _mark = p->mark;
32301
13.9k
        }
32302
10.3k
        p->mark = _mark;
32303
10.3k
        D(fprintf(stderr, "%*c%s _loop1_75[%d-%d]: %s failed!\n", p->level, ' ',
32304
10.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
32305
10.3k
    }
32306
10.3k
    if (_n == 0 || p->error_indicator) {
32307
6.63k
        PyMem_Free(_children);
32308
6.63k
        p->level--;
32309
6.63k
        return NULL;
32310
6.63k
    }
32311
3.67k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32312
3.67k
    if (!_seq) {
32313
0
        PyMem_Free(_children);
32314
0
        p->error_indicator = 1;
32315
0
        PyErr_NoMemory();
32316
0
        p->level--;
32317
0
        return NULL;
32318
0
    }
32319
17.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32320
3.67k
    PyMem_Free(_children);
32321
3.67k
    p->level--;
32322
3.67k
    return _seq;
32323
3.67k
}
32324
32325
// _loop0_76: fstring_format_spec
32326
static asdl_seq *
32327
_loop0_76_rule(Parser *p)
32328
3.56k
{
32329
3.56k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32330
0
        _Pypegen_stack_overflow(p);
32331
0
    }
32332
3.56k
    if (p->error_indicator) {
32333
0
        p->level--;
32334
0
        return NULL;
32335
0
    }
32336
3.56k
    void *_res = NULL;
32337
3.56k
    int _mark = p->mark;
32338
3.56k
    void **_children = PyMem_Malloc(sizeof(void *));
32339
3.56k
    if (!_children) {
32340
0
        p->error_indicator = 1;
32341
0
        PyErr_NoMemory();
32342
0
        p->level--;
32343
0
        return NULL;
32344
0
    }
32345
3.56k
    Py_ssize_t _children_capacity = 1;
32346
3.56k
    Py_ssize_t _n = 0;
32347
3.56k
    { // fstring_format_spec
32348
3.56k
        if (p->error_indicator) {
32349
0
            p->level--;
32350
0
            return NULL;
32351
0
        }
32352
3.56k
        D(fprintf(stderr, "%*c> _loop0_76[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_format_spec"));
32353
3.56k
        expr_ty fstring_format_spec_var;
32354
3.56k
        while (
32355
12.8k
            (fstring_format_spec_var = fstring_format_spec_rule(p))  // fstring_format_spec
32356
3.56k
        )
32357
9.26k
        {
32358
9.26k
            _res = fstring_format_spec_var;
32359
9.26k
            if (_n == _children_capacity) {
32360
1.93k
                _children_capacity *= 2;
32361
1.93k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32362
1.93k
                if (!_new_children) {
32363
0
                    PyMem_Free(_children);
32364
0
                    p->error_indicator = 1;
32365
0
                    PyErr_NoMemory();
32366
0
                    p->level--;
32367
0
                    return NULL;
32368
0
                }
32369
1.93k
                _children = _new_children;
32370
1.93k
            }
32371
9.26k
            _children[_n++] = _res;
32372
9.26k
            _mark = p->mark;
32373
9.26k
        }
32374
3.56k
        p->mark = _mark;
32375
3.56k
        D(fprintf(stderr, "%*c%s _loop0_76[%d-%d]: %s failed!\n", p->level, ' ',
32376
3.56k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_format_spec"));
32377
3.56k
    }
32378
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32379
3.56k
    if (!_seq) {
32380
0
        PyMem_Free(_children);
32381
0
        p->error_indicator = 1;
32382
0
        PyErr_NoMemory();
32383
0
        p->level--;
32384
0
        return NULL;
32385
0
    }
32386
12.8k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32387
3.56k
    PyMem_Free(_children);
32388
3.56k
    p->level--;
32389
3.56k
    return _seq;
32390
3.56k
}
32391
32392
// _loop0_77: fstring_middle
32393
static asdl_seq *
32394
_loop0_77_rule(Parser *p)
32395
17.0k
{
32396
17.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32397
1
        _Pypegen_stack_overflow(p);
32398
1
    }
32399
17.0k
    if (p->error_indicator) {
32400
1
        p->level--;
32401
1
        return NULL;
32402
1
    }
32403
17.0k
    void *_res = NULL;
32404
17.0k
    int _mark = p->mark;
32405
17.0k
    void **_children = PyMem_Malloc(sizeof(void *));
32406
17.0k
    if (!_children) {
32407
0
        p->error_indicator = 1;
32408
0
        PyErr_NoMemory();
32409
0
        p->level--;
32410
0
        return NULL;
32411
0
    }
32412
17.0k
    Py_ssize_t _children_capacity = 1;
32413
17.0k
    Py_ssize_t _n = 0;
32414
17.0k
    { // fstring_middle
32415
17.0k
        if (p->error_indicator) {
32416
0
            p->level--;
32417
0
            return NULL;
32418
0
        }
32419
17.0k
        D(fprintf(stderr, "%*c> _loop0_77[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring_middle"));
32420
17.0k
        expr_ty fstring_middle_var;
32421
17.0k
        while (
32422
59.5k
            (fstring_middle_var = fstring_middle_rule(p))  // fstring_middle
32423
17.0k
        )
32424
42.4k
        {
32425
42.4k
            _res = fstring_middle_var;
32426
42.4k
            if (_n == _children_capacity) {
32427
6.94k
                _children_capacity *= 2;
32428
6.94k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32429
6.94k
                if (!_new_children) {
32430
0
                    PyMem_Free(_children);
32431
0
                    p->error_indicator = 1;
32432
0
                    PyErr_NoMemory();
32433
0
                    p->level--;
32434
0
                    return NULL;
32435
0
                }
32436
6.94k
                _children = _new_children;
32437
6.94k
            }
32438
42.4k
            _children[_n++] = _res;
32439
42.4k
            _mark = p->mark;
32440
42.4k
        }
32441
17.0k
        p->mark = _mark;
32442
17.0k
        D(fprintf(stderr, "%*c%s _loop0_77[%d-%d]: %s failed!\n", p->level, ' ',
32443
17.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring_middle"));
32444
17.0k
    }
32445
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32446
17.0k
    if (!_seq) {
32447
0
        PyMem_Free(_children);
32448
0
        p->error_indicator = 1;
32449
0
        PyErr_NoMemory();
32450
0
        p->level--;
32451
0
        return NULL;
32452
0
    }
32453
59.5k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32454
17.0k
    PyMem_Free(_children);
32455
17.0k
    p->level--;
32456
17.0k
    return _seq;
32457
17.0k
}
32458
32459
// _loop0_78: tstring_format_spec
32460
static asdl_seq *
32461
_loop0_78_rule(Parser *p)
32462
2.79k
{
32463
2.79k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32464
0
        _Pypegen_stack_overflow(p);
32465
0
    }
32466
2.79k
    if (p->error_indicator) {
32467
0
        p->level--;
32468
0
        return NULL;
32469
0
    }
32470
2.79k
    void *_res = NULL;
32471
2.79k
    int _mark = p->mark;
32472
2.79k
    void **_children = PyMem_Malloc(sizeof(void *));
32473
2.79k
    if (!_children) {
32474
0
        p->error_indicator = 1;
32475
0
        PyErr_NoMemory();
32476
0
        p->level--;
32477
0
        return NULL;
32478
0
    }
32479
2.79k
    Py_ssize_t _children_capacity = 1;
32480
2.79k
    Py_ssize_t _n = 0;
32481
2.79k
    { // tstring_format_spec
32482
2.79k
        if (p->error_indicator) {
32483
0
            p->level--;
32484
0
            return NULL;
32485
0
        }
32486
2.79k
        D(fprintf(stderr, "%*c> _loop0_78[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_format_spec"));
32487
2.79k
        expr_ty tstring_format_spec_var;
32488
2.79k
        while (
32489
5.89k
            (tstring_format_spec_var = tstring_format_spec_rule(p))  // tstring_format_spec
32490
2.79k
        )
32491
3.09k
        {
32492
3.09k
            _res = tstring_format_spec_var;
32493
3.09k
            if (_n == _children_capacity) {
32494
496
                _children_capacity *= 2;
32495
496
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32496
496
                if (!_new_children) {
32497
0
                    PyMem_Free(_children);
32498
0
                    p->error_indicator = 1;
32499
0
                    PyErr_NoMemory();
32500
0
                    p->level--;
32501
0
                    return NULL;
32502
0
                }
32503
496
                _children = _new_children;
32504
496
            }
32505
3.09k
            _children[_n++] = _res;
32506
3.09k
            _mark = p->mark;
32507
3.09k
        }
32508
2.79k
        p->mark = _mark;
32509
2.79k
        D(fprintf(stderr, "%*c%s _loop0_78[%d-%d]: %s failed!\n", p->level, ' ',
32510
2.79k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_format_spec"));
32511
2.79k
    }
32512
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32513
2.79k
    if (!_seq) {
32514
0
        PyMem_Free(_children);
32515
0
        p->error_indicator = 1;
32516
0
        PyErr_NoMemory();
32517
0
        p->level--;
32518
0
        return NULL;
32519
0
    }
32520
5.89k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32521
2.79k
    PyMem_Free(_children);
32522
2.79k
    p->level--;
32523
2.79k
    return _seq;
32524
2.79k
}
32525
32526
// _loop0_79: tstring_middle
32527
static asdl_seq *
32528
_loop0_79_rule(Parser *p)
32529
6.27k
{
32530
6.27k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32531
0
        _Pypegen_stack_overflow(p);
32532
0
    }
32533
6.27k
    if (p->error_indicator) {
32534
0
        p->level--;
32535
0
        return NULL;
32536
0
    }
32537
6.27k
    void *_res = NULL;
32538
6.27k
    int _mark = p->mark;
32539
6.27k
    void **_children = PyMem_Malloc(sizeof(void *));
32540
6.27k
    if (!_children) {
32541
0
        p->error_indicator = 1;
32542
0
        PyErr_NoMemory();
32543
0
        p->level--;
32544
0
        return NULL;
32545
0
    }
32546
6.27k
    Py_ssize_t _children_capacity = 1;
32547
6.27k
    Py_ssize_t _n = 0;
32548
6.27k
    { // tstring_middle
32549
6.27k
        if (p->error_indicator) {
32550
0
            p->level--;
32551
0
            return NULL;
32552
0
        }
32553
6.27k
        D(fprintf(stderr, "%*c> _loop0_79[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring_middle"));
32554
6.27k
        expr_ty tstring_middle_var;
32555
6.27k
        while (
32556
18.3k
            (tstring_middle_var = tstring_middle_rule(p))  // tstring_middle
32557
6.27k
        )
32558
12.0k
        {
32559
12.0k
            _res = tstring_middle_var;
32560
12.0k
            if (_n == _children_capacity) {
32561
2.62k
                _children_capacity *= 2;
32562
2.62k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32563
2.62k
                if (!_new_children) {
32564
0
                    PyMem_Free(_children);
32565
0
                    p->error_indicator = 1;
32566
0
                    PyErr_NoMemory();
32567
0
                    p->level--;
32568
0
                    return NULL;
32569
0
                }
32570
2.62k
                _children = _new_children;
32571
2.62k
            }
32572
12.0k
            _children[_n++] = _res;
32573
12.0k
            _mark = p->mark;
32574
12.0k
        }
32575
6.27k
        p->mark = _mark;
32576
6.27k
        D(fprintf(stderr, "%*c%s _loop0_79[%d-%d]: %s failed!\n", p->level, ' ',
32577
6.27k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring_middle"));
32578
6.27k
    }
32579
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32580
6.27k
    if (!_seq) {
32581
0
        PyMem_Free(_children);
32582
0
        p->error_indicator = 1;
32583
0
        PyErr_NoMemory();
32584
0
        p->level--;
32585
0
        return NULL;
32586
0
    }
32587
18.3k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32588
6.27k
    PyMem_Free(_children);
32589
6.27k
    p->level--;
32590
6.27k
    return _seq;
32591
6.27k
}
32592
32593
// _loop1_80: (fstring | string)
32594
static asdl_seq *
32595
_loop1_80_rule(Parser *p)
32596
130k
{
32597
130k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32598
1
        _Pypegen_stack_overflow(p);
32599
1
    }
32600
130k
    if (p->error_indicator) {
32601
1
        p->level--;
32602
1
        return NULL;
32603
1
    }
32604
130k
    void *_res = NULL;
32605
130k
    int _mark = p->mark;
32606
130k
    void **_children = PyMem_Malloc(sizeof(void *));
32607
130k
    if (!_children) {
32608
0
        p->error_indicator = 1;
32609
0
        PyErr_NoMemory();
32610
0
        p->level--;
32611
0
        return NULL;
32612
0
    }
32613
130k
    Py_ssize_t _children_capacity = 1;
32614
130k
    Py_ssize_t _n = 0;
32615
130k
    { // (fstring | string)
32616
130k
        if (p->error_indicator) {
32617
0
            p->level--;
32618
0
            return NULL;
32619
0
        }
32620
130k
        D(fprintf(stderr, "%*c> _loop1_80[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(fstring | string)"));
32621
130k
        void *_tmp_153_var;
32622
130k
        while (
32623
215k
            (_tmp_153_var = _tmp_153_rule(p))  // fstring | string
32624
130k
        )
32625
85.6k
        {
32626
85.6k
            _res = _tmp_153_var;
32627
85.6k
            if (_n == _children_capacity) {
32628
8.69k
                _children_capacity *= 2;
32629
8.69k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32630
8.69k
                if (!_new_children) {
32631
0
                    PyMem_Free(_children);
32632
0
                    p->error_indicator = 1;
32633
0
                    PyErr_NoMemory();
32634
0
                    p->level--;
32635
0
                    return NULL;
32636
0
                }
32637
8.69k
                _children = _new_children;
32638
8.69k
            }
32639
85.6k
            _children[_n++] = _res;
32640
85.6k
            _mark = p->mark;
32641
85.6k
        }
32642
130k
        p->mark = _mark;
32643
130k
        D(fprintf(stderr, "%*c%s _loop1_80[%d-%d]: %s failed!\n", p->level, ' ',
32644
130k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(fstring | string)"));
32645
130k
    }
32646
130k
    if (_n == 0 || p->error_indicator) {
32647
76.5k
        PyMem_Free(_children);
32648
76.5k
        p->level--;
32649
76.5k
        return NULL;
32650
76.5k
    }
32651
53.5k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32652
53.5k
    if (!_seq) {
32653
0
        PyMem_Free(_children);
32654
0
        p->error_indicator = 1;
32655
0
        PyErr_NoMemory();
32656
0
        p->level--;
32657
0
        return NULL;
32658
0
    }
32659
138k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32660
53.5k
    PyMem_Free(_children);
32661
53.5k
    p->level--;
32662
53.5k
    return _seq;
32663
53.5k
}
32664
32665
// _loop1_81: tstring
32666
static asdl_seq *
32667
_loop1_81_rule(Parser *p)
32668
78.8k
{
32669
78.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32670
0
        _Pypegen_stack_overflow(p);
32671
0
    }
32672
78.8k
    if (p->error_indicator) {
32673
0
        p->level--;
32674
0
        return NULL;
32675
0
    }
32676
78.8k
    void *_res = NULL;
32677
78.8k
    int _mark = p->mark;
32678
78.8k
    void **_children = PyMem_Malloc(sizeof(void *));
32679
78.8k
    if (!_children) {
32680
0
        p->error_indicator = 1;
32681
0
        PyErr_NoMemory();
32682
0
        p->level--;
32683
0
        return NULL;
32684
0
    }
32685
78.8k
    Py_ssize_t _children_capacity = 1;
32686
78.8k
    Py_ssize_t _n = 0;
32687
78.8k
    { // tstring
32688
78.8k
        if (p->error_indicator) {
32689
0
            p->level--;
32690
0
            return NULL;
32691
0
        }
32692
78.8k
        D(fprintf(stderr, "%*c> _loop1_81[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tstring"));
32693
78.8k
        expr_ty tstring_var;
32694
78.8k
        while (
32695
84.1k
            (tstring_var = tstring_rule(p))  // tstring
32696
78.8k
        )
32697
5.29k
        {
32698
5.29k
            _res = tstring_var;
32699
5.29k
            if (_n == _children_capacity) {
32700
391
                _children_capacity *= 2;
32701
391
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32702
391
                if (!_new_children) {
32703
0
                    PyMem_Free(_children);
32704
0
                    p->error_indicator = 1;
32705
0
                    PyErr_NoMemory();
32706
0
                    p->level--;
32707
0
                    return NULL;
32708
0
                }
32709
391
                _children = _new_children;
32710
391
            }
32711
5.29k
            _children[_n++] = _res;
32712
5.29k
            _mark = p->mark;
32713
5.29k
        }
32714
78.8k
        p->mark = _mark;
32715
78.8k
        D(fprintf(stderr, "%*c%s _loop1_81[%d-%d]: %s failed!\n", p->level, ' ',
32716
78.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tstring"));
32717
78.8k
    }
32718
78.8k
    if (_n == 0 || p->error_indicator) {
32719
74.5k
        PyMem_Free(_children);
32720
74.5k
        p->level--;
32721
74.5k
        return NULL;
32722
74.5k
    }
32723
4.25k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32724
4.25k
    if (!_seq) {
32725
0
        PyMem_Free(_children);
32726
0
        p->error_indicator = 1;
32727
0
        PyErr_NoMemory();
32728
0
        p->level--;
32729
0
        return NULL;
32730
0
    }
32731
9.45k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32732
4.25k
    PyMem_Free(_children);
32733
4.25k
    p->level--;
32734
4.25k
    return _seq;
32735
4.25k
}
32736
32737
// _tmp_82: star_named_expression ',' star_named_expressions?
32738
static void *
32739
_tmp_82_rule(Parser *p)
32740
91.4k
{
32741
91.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32742
1
        _Pypegen_stack_overflow(p);
32743
1
    }
32744
91.4k
    if (p->error_indicator) {
32745
1
        p->level--;
32746
1
        return NULL;
32747
1
    }
32748
91.4k
    void * _res = NULL;
32749
91.4k
    int _mark = p->mark;
32750
91.4k
    { // star_named_expression ',' star_named_expressions?
32751
91.4k
        if (p->error_indicator) {
32752
0
            p->level--;
32753
0
            return NULL;
32754
0
        }
32755
91.4k
        D(fprintf(stderr, "%*c> _tmp_82[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
32756
91.4k
        Token * _literal;
32757
91.4k
        expr_ty y;
32758
91.4k
        void *z;
32759
91.4k
        if (
32760
91.4k
            (y = star_named_expression_rule(p))  // star_named_expression
32761
39.8k
            &&
32762
39.8k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32763
15.7k
            &&
32764
15.7k
            (z = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
32765
91.4k
        )
32766
15.4k
        {
32767
15.4k
            D(fprintf(stderr, "%*c+ _tmp_82[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
32768
15.4k
            _res = _PyPegen_seq_insert_in_front ( p , y , z );
32769
15.4k
            if (_res == NULL && PyErr_Occurred()) {
32770
0
                p->error_indicator = 1;
32771
0
                p->level--;
32772
0
                return NULL;
32773
0
            }
32774
15.4k
            goto done;
32775
15.4k
        }
32776
76.0k
        p->mark = _mark;
32777
76.0k
        D(fprintf(stderr, "%*c%s _tmp_82[%d-%d]: %s failed!\n", p->level, ' ',
32778
76.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
32779
76.0k
    }
32780
76.0k
    _res = NULL;
32781
91.4k
  done:
32782
91.4k
    p->level--;
32783
91.4k
    return _res;
32784
76.0k
}
32785
32786
// _loop0_83: ',' double_starred_kvpair
32787
static asdl_seq *
32788
_loop0_83_rule(Parser *p)
32789
9.27k
{
32790
9.27k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32791
0
        _Pypegen_stack_overflow(p);
32792
0
    }
32793
9.27k
    if (p->error_indicator) {
32794
0
        p->level--;
32795
0
        return NULL;
32796
0
    }
32797
9.27k
    void *_res = NULL;
32798
9.27k
    int _mark = p->mark;
32799
9.27k
    void **_children = PyMem_Malloc(sizeof(void *));
32800
9.27k
    if (!_children) {
32801
0
        p->error_indicator = 1;
32802
0
        PyErr_NoMemory();
32803
0
        p->level--;
32804
0
        return NULL;
32805
0
    }
32806
9.27k
    Py_ssize_t _children_capacity = 1;
32807
9.27k
    Py_ssize_t _n = 0;
32808
9.27k
    { // ',' double_starred_kvpair
32809
9.27k
        if (p->error_indicator) {
32810
0
            p->level--;
32811
0
            return NULL;
32812
0
        }
32813
9.27k
        D(fprintf(stderr, "%*c> _loop0_83[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair"));
32814
9.27k
        Token * _literal;
32815
9.27k
        KeyValuePair* elem;
32816
9.27k
        while (
32817
44.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
32818
38.0k
            &&
32819
38.0k
            (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
32820
9.27k
        )
32821
35.4k
        {
32822
35.4k
            _res = elem;
32823
35.4k
            if (_res == NULL && PyErr_Occurred()) {
32824
0
                p->error_indicator = 1;
32825
0
                PyMem_Free(_children);
32826
0
                p->level--;
32827
0
                return NULL;
32828
0
            }
32829
35.4k
            if (_n == _children_capacity) {
32830
1.93k
                _children_capacity *= 2;
32831
1.93k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32832
1.93k
                if (!_new_children) {
32833
0
                    PyMem_Free(_children);
32834
0
                    p->error_indicator = 1;
32835
0
                    PyErr_NoMemory();
32836
0
                    p->level--;
32837
0
                    return NULL;
32838
0
                }
32839
1.93k
                _children = _new_children;
32840
1.93k
            }
32841
35.4k
            _children[_n++] = _res;
32842
35.4k
            _mark = p->mark;
32843
35.4k
        }
32844
9.27k
        p->mark = _mark;
32845
9.27k
        D(fprintf(stderr, "%*c%s _loop0_83[%d-%d]: %s failed!\n", p->level, ' ',
32846
9.27k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair"));
32847
9.27k
    }
32848
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32849
9.27k
    if (!_seq) {
32850
0
        PyMem_Free(_children);
32851
0
        p->error_indicator = 1;
32852
0
        PyErr_NoMemory();
32853
0
        p->level--;
32854
0
        return NULL;
32855
0
    }
32856
44.7k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32857
9.27k
    PyMem_Free(_children);
32858
9.27k
    p->level--;
32859
9.27k
    return _seq;
32860
9.27k
}
32861
32862
// _gather_84: double_starred_kvpair _loop0_83
32863
static asdl_seq *
32864
_gather_84_rule(Parser *p)
32865
43.5k
{
32866
43.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32867
1
        _Pypegen_stack_overflow(p);
32868
1
    }
32869
43.5k
    if (p->error_indicator) {
32870
1
        p->level--;
32871
1
        return NULL;
32872
1
    }
32873
43.5k
    asdl_seq * _res = NULL;
32874
43.5k
    int _mark = p->mark;
32875
43.5k
    { // double_starred_kvpair _loop0_83
32876
43.5k
        if (p->error_indicator) {
32877
0
            p->level--;
32878
0
            return NULL;
32879
0
        }
32880
43.5k
        D(fprintf(stderr, "%*c> _gather_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_83"));
32881
43.5k
        KeyValuePair* elem;
32882
43.5k
        asdl_seq * seq;
32883
43.5k
        if (
32884
43.5k
            (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
32885
9.27k
            &&
32886
9.27k
            (seq = _loop0_83_rule(p))  // _loop0_83
32887
43.5k
        )
32888
9.27k
        {
32889
9.27k
            D(fprintf(stderr, "%*c+ _gather_84[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_83"));
32890
9.27k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32891
9.27k
            goto done;
32892
9.27k
        }
32893
34.2k
        p->mark = _mark;
32894
34.2k
        D(fprintf(stderr, "%*c%s _gather_84[%d-%d]: %s failed!\n", p->level, ' ',
32895
34.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_83"));
32896
34.2k
    }
32897
34.2k
    _res = NULL;
32898
43.5k
  done:
32899
43.5k
    p->level--;
32900
43.5k
    return _res;
32901
34.2k
}
32902
32903
// _loop1_85: for_if_clause
32904
static asdl_seq *
32905
_loop1_85_rule(Parser *p)
32906
99.1k
{
32907
99.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32908
0
        _Pypegen_stack_overflow(p);
32909
0
    }
32910
99.1k
    if (p->error_indicator) {
32911
0
        p->level--;
32912
0
        return NULL;
32913
0
    }
32914
99.1k
    void *_res = NULL;
32915
99.1k
    int _mark = p->mark;
32916
99.1k
    void **_children = PyMem_Malloc(sizeof(void *));
32917
99.1k
    if (!_children) {
32918
0
        p->error_indicator = 1;
32919
0
        PyErr_NoMemory();
32920
0
        p->level--;
32921
0
        return NULL;
32922
0
    }
32923
99.1k
    Py_ssize_t _children_capacity = 1;
32924
99.1k
    Py_ssize_t _n = 0;
32925
99.1k
    { // for_if_clause
32926
99.1k
        if (p->error_indicator) {
32927
0
            p->level--;
32928
0
            return NULL;
32929
0
        }
32930
99.1k
        D(fprintf(stderr, "%*c> _loop1_85[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause"));
32931
99.1k
        comprehension_ty for_if_clause_var;
32932
99.1k
        while (
32933
110k
            (for_if_clause_var = for_if_clause_rule(p))  // for_if_clause
32934
99.1k
        )
32935
11.0k
        {
32936
11.0k
            _res = for_if_clause_var;
32937
11.0k
            if (_n == _children_capacity) {
32938
704
                _children_capacity *= 2;
32939
704
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32940
704
                if (!_new_children) {
32941
0
                    PyMem_Free(_children);
32942
0
                    p->error_indicator = 1;
32943
0
                    PyErr_NoMemory();
32944
0
                    p->level--;
32945
0
                    return NULL;
32946
0
                }
32947
704
                _children = _new_children;
32948
704
            }
32949
11.0k
            _children[_n++] = _res;
32950
11.0k
            _mark = p->mark;
32951
11.0k
        }
32952
99.1k
        p->mark = _mark;
32953
99.1k
        D(fprintf(stderr, "%*c%s _loop1_85[%d-%d]: %s failed!\n", p->level, ' ',
32954
99.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause"));
32955
99.1k
    }
32956
99.1k
    if (_n == 0 || p->error_indicator) {
32957
89.0k
        PyMem_Free(_children);
32958
89.0k
        p->level--;
32959
89.0k
        return NULL;
32960
89.0k
    }
32961
10.0k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32962
10.0k
    if (!_seq) {
32963
0
        PyMem_Free(_children);
32964
0
        p->error_indicator = 1;
32965
0
        PyErr_NoMemory();
32966
0
        p->level--;
32967
0
        return NULL;
32968
0
    }
32969
20.9k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32970
10.0k
    PyMem_Free(_children);
32971
10.0k
    p->level--;
32972
10.0k
    return _seq;
32973
10.0k
}
32974
32975
// _loop0_86: ('if' disjunction)
32976
static asdl_seq *
32977
_loop0_86_rule(Parser *p)
32978
11.0k
{
32979
11.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
32980
0
        _Pypegen_stack_overflow(p);
32981
0
    }
32982
11.0k
    if (p->error_indicator) {
32983
0
        p->level--;
32984
0
        return NULL;
32985
0
    }
32986
11.0k
    void *_res = NULL;
32987
11.0k
    int _mark = p->mark;
32988
11.0k
    void **_children = PyMem_Malloc(sizeof(void *));
32989
11.0k
    if (!_children) {
32990
0
        p->error_indicator = 1;
32991
0
        PyErr_NoMemory();
32992
0
        p->level--;
32993
0
        return NULL;
32994
0
    }
32995
11.0k
    Py_ssize_t _children_capacity = 1;
32996
11.0k
    Py_ssize_t _n = 0;
32997
11.0k
    { // ('if' disjunction)
32998
11.0k
        if (p->error_indicator) {
32999
0
            p->level--;
33000
0
            return NULL;
33001
0
        }
33002
11.0k
        D(fprintf(stderr, "%*c> _loop0_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
33003
11.0k
        void *_tmp_163_var;
33004
11.0k
        while (
33005
16.9k
            (_tmp_163_var = _tmp_163_rule(p))  // 'if' disjunction
33006
11.0k
        )
33007
5.84k
        {
33008
5.84k
            _res = _tmp_163_var;
33009
5.84k
            if (_n == _children_capacity) {
33010
2.34k
                _children_capacity *= 2;
33011
2.34k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33012
2.34k
                if (!_new_children) {
33013
0
                    PyMem_Free(_children);
33014
0
                    p->error_indicator = 1;
33015
0
                    PyErr_NoMemory();
33016
0
                    p->level--;
33017
0
                    return NULL;
33018
0
                }
33019
2.34k
                _children = _new_children;
33020
2.34k
            }
33021
5.84k
            _children[_n++] = _res;
33022
5.84k
            _mark = p->mark;
33023
5.84k
        }
33024
11.0k
        p->mark = _mark;
33025
11.0k
        D(fprintf(stderr, "%*c%s _loop0_86[%d-%d]: %s failed!\n", p->level, ' ',
33026
11.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
33027
11.0k
    }
33028
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33029
11.0k
    if (!_seq) {
33030
0
        PyMem_Free(_children);
33031
0
        p->error_indicator = 1;
33032
0
        PyErr_NoMemory();
33033
0
        p->level--;
33034
0
        return NULL;
33035
0
    }
33036
16.9k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33037
11.0k
    PyMem_Free(_children);
33038
11.0k
    p->level--;
33039
11.0k
    return _seq;
33040
11.0k
}
33041
33042
// _tmp_87: assignment_expression | expression !':='
33043
static void *
33044
_tmp_87_rule(Parser *p)
33045
191k
{
33046
191k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33047
1
        _Pypegen_stack_overflow(p);
33048
1
    }
33049
191k
    if (p->error_indicator) {
33050
1
        p->level--;
33051
1
        return NULL;
33052
1
    }
33053
191k
    void * _res = NULL;
33054
191k
    int _mark = p->mark;
33055
191k
    { // assignment_expression
33056
191k
        if (p->error_indicator) {
33057
0
            p->level--;
33058
0
            return NULL;
33059
0
        }
33060
191k
        D(fprintf(stderr, "%*c> _tmp_87[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
33061
191k
        expr_ty assignment_expression_var;
33062
191k
        if (
33063
191k
            (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
33064
191k
        )
33065
353
        {
33066
353
            D(fprintf(stderr, "%*c+ _tmp_87[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
33067
353
            _res = assignment_expression_var;
33068
353
            goto done;
33069
353
        }
33070
191k
        p->mark = _mark;
33071
191k
        D(fprintf(stderr, "%*c%s _tmp_87[%d-%d]: %s failed!\n", p->level, ' ',
33072
191k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
33073
191k
    }
33074
0
    { // expression !':='
33075
191k
        if (p->error_indicator) {
33076
164
            p->level--;
33077
164
            return NULL;
33078
164
        }
33079
191k
        D(fprintf(stderr, "%*c> _tmp_87[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
33080
191k
        expr_ty expression_var;
33081
191k
        if (
33082
191k
            (expression_var = expression_rule(p))  // expression
33083
113k
            &&
33084
113k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
33085
191k
        )
33086
111k
        {
33087
111k
            D(fprintf(stderr, "%*c+ _tmp_87[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
33088
111k
            _res = expression_var;
33089
111k
            goto done;
33090
111k
        }
33091
79.8k
        p->mark = _mark;
33092
79.8k
        D(fprintf(stderr, "%*c%s _tmp_87[%d-%d]: %s failed!\n", p->level, ' ',
33093
79.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
33094
79.8k
    }
33095
79.8k
    _res = NULL;
33096
191k
  done:
33097
191k
    p->level--;
33098
191k
    return _res;
33099
79.8k
}
33100
33101
// _loop0_88: ',' (starred_expression | (assignment_expression | expression !':=') !'=')
33102
static asdl_seq *
33103
_loop0_88_rule(Parser *p)
33104
39.8k
{
33105
39.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33106
0
        _Pypegen_stack_overflow(p);
33107
0
    }
33108
39.8k
    if (p->error_indicator) {
33109
0
        p->level--;
33110
0
        return NULL;
33111
0
    }
33112
39.8k
    void *_res = NULL;
33113
39.8k
    int _mark = p->mark;
33114
39.8k
    void **_children = PyMem_Malloc(sizeof(void *));
33115
39.8k
    if (!_children) {
33116
0
        p->error_indicator = 1;
33117
0
        PyErr_NoMemory();
33118
0
        p->level--;
33119
0
        return NULL;
33120
0
    }
33121
39.8k
    Py_ssize_t _children_capacity = 1;
33122
39.8k
    Py_ssize_t _n = 0;
33123
39.8k
    { // ',' (starred_expression | (assignment_expression | expression !':=') !'=')
33124
39.8k
        if (p->error_indicator) {
33125
0
            p->level--;
33126
0
            return NULL;
33127
0
        }
33128
39.8k
        D(fprintf(stderr, "%*c> _loop0_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
33129
39.8k
        Token * _literal;
33130
39.8k
        void *elem;
33131
39.8k
        while (
33132
54.0k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33133
19.6k
            &&
33134
19.6k
            (elem = _tmp_164_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
33135
39.8k
        )
33136
14.1k
        {
33137
14.1k
            _res = elem;
33138
14.1k
            if (_res == NULL && PyErr_Occurred()) {
33139
0
                p->error_indicator = 1;
33140
0
                PyMem_Free(_children);
33141
0
                p->level--;
33142
0
                return NULL;
33143
0
            }
33144
14.1k
            if (_n == _children_capacity) {
33145
3.44k
                _children_capacity *= 2;
33146
3.44k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33147
3.44k
                if (!_new_children) {
33148
0
                    PyMem_Free(_children);
33149
0
                    p->error_indicator = 1;
33150
0
                    PyErr_NoMemory();
33151
0
                    p->level--;
33152
0
                    return NULL;
33153
0
                }
33154
3.44k
                _children = _new_children;
33155
3.44k
            }
33156
14.1k
            _children[_n++] = _res;
33157
14.1k
            _mark = p->mark;
33158
14.1k
        }
33159
39.8k
        p->mark = _mark;
33160
39.8k
        D(fprintf(stderr, "%*c%s _loop0_88[%d-%d]: %s failed!\n", p->level, ' ',
33161
39.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
33162
39.8k
    }
33163
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33164
39.8k
    if (!_seq) {
33165
0
        PyMem_Free(_children);
33166
0
        p->error_indicator = 1;
33167
0
        PyErr_NoMemory();
33168
0
        p->level--;
33169
0
        return NULL;
33170
0
    }
33171
54.0k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33172
39.8k
    PyMem_Free(_children);
33173
39.8k
    p->level--;
33174
39.8k
    return _seq;
33175
39.8k
}
33176
33177
// _gather_89:
33178
//     | (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_88
33179
static asdl_seq *
33180
_gather_89_rule(Parser *p)
33181
84.8k
{
33182
84.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33183
0
        _Pypegen_stack_overflow(p);
33184
0
    }
33185
84.8k
    if (p->error_indicator) {
33186
0
        p->level--;
33187
0
        return NULL;
33188
0
    }
33189
84.8k
    asdl_seq * _res = NULL;
33190
84.8k
    int _mark = p->mark;
33191
84.8k
    { // (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_88
33192
84.8k
        if (p->error_indicator) {
33193
0
            p->level--;
33194
0
            return NULL;
33195
0
        }
33196
84.8k
        D(fprintf(stderr, "%*c> _gather_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_88"));
33197
84.8k
        void *elem;
33198
84.8k
        asdl_seq * seq;
33199
84.8k
        if (
33200
84.8k
            (elem = _tmp_164_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
33201
39.8k
            &&
33202
39.8k
            (seq = _loop0_88_rule(p))  // _loop0_88
33203
84.8k
        )
33204
39.8k
        {
33205
39.8k
            D(fprintf(stderr, "%*c+ _gather_89[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_88"));
33206
39.8k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33207
39.8k
            goto done;
33208
39.8k
        }
33209
44.9k
        p->mark = _mark;
33210
44.9k
        D(fprintf(stderr, "%*c%s _gather_89[%d-%d]: %s failed!\n", p->level, ' ',
33211
44.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_88"));
33212
44.9k
    }
33213
44.9k
    _res = NULL;
33214
84.8k
  done:
33215
84.8k
    p->level--;
33216
84.8k
    return _res;
33217
44.9k
}
33218
33219
// _tmp_90: ',' kwargs
33220
static void *
33221
_tmp_90_rule(Parser *p)
33222
37.0k
{
33223
37.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33224
0
        _Pypegen_stack_overflow(p);
33225
0
    }
33226
37.0k
    if (p->error_indicator) {
33227
714
        p->level--;
33228
714
        return NULL;
33229
714
    }
33230
36.3k
    void * _res = NULL;
33231
36.3k
    int _mark = p->mark;
33232
36.3k
    { // ',' kwargs
33233
36.3k
        if (p->error_indicator) {
33234
0
            p->level--;
33235
0
            return NULL;
33236
0
        }
33237
36.3k
        D(fprintf(stderr, "%*c> _tmp_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
33238
36.3k
        Token * _literal;
33239
36.3k
        asdl_seq* k;
33240
36.3k
        if (
33241
36.3k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33242
4.20k
            &&
33243
4.20k
            (k = kwargs_rule(p))  // kwargs
33244
36.3k
        )
33245
2.58k
        {
33246
2.58k
            D(fprintf(stderr, "%*c+ _tmp_90[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
33247
2.58k
            _res = k;
33248
2.58k
            if (_res == NULL && PyErr_Occurred()) {
33249
0
                p->error_indicator = 1;
33250
0
                p->level--;
33251
0
                return NULL;
33252
0
            }
33253
2.58k
            goto done;
33254
2.58k
        }
33255
33.7k
        p->mark = _mark;
33256
33.7k
        D(fprintf(stderr, "%*c%s _tmp_90[%d-%d]: %s failed!\n", p->level, ' ',
33257
33.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwargs"));
33258
33.7k
    }
33259
33.7k
    _res = NULL;
33260
36.3k
  done:
33261
36.3k
    p->level--;
33262
36.3k
    return _res;
33263
33.7k
}
33264
33265
// _loop0_91: ',' kwarg_or_starred
33266
static asdl_seq *
33267
_loop0_91_rule(Parser *p)
33268
18.7k
{
33269
18.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33270
0
        _Pypegen_stack_overflow(p);
33271
0
    }
33272
18.7k
    if (p->error_indicator) {
33273
0
        p->level--;
33274
0
        return NULL;
33275
0
    }
33276
18.7k
    void *_res = NULL;
33277
18.7k
    int _mark = p->mark;
33278
18.7k
    void **_children = PyMem_Malloc(sizeof(void *));
33279
18.7k
    if (!_children) {
33280
0
        p->error_indicator = 1;
33281
0
        PyErr_NoMemory();
33282
0
        p->level--;
33283
0
        return NULL;
33284
0
    }
33285
18.7k
    Py_ssize_t _children_capacity = 1;
33286
18.7k
    Py_ssize_t _n = 0;
33287
18.7k
    { // ',' kwarg_or_starred
33288
18.7k
        if (p->error_indicator) {
33289
0
            p->level--;
33290
0
            return NULL;
33291
0
        }
33292
18.7k
        D(fprintf(stderr, "%*c> _loop0_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred"));
33293
18.7k
        Token * _literal;
33294
18.7k
        KeywordOrStarred* elem;
33295
18.7k
        while (
33296
28.2k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33297
17.1k
            &&
33298
17.1k
            (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
33299
18.7k
        )
33300
9.46k
        {
33301
9.46k
            _res = elem;
33302
9.46k
            if (_res == NULL && PyErr_Occurred()) {
33303
0
                p->error_indicator = 1;
33304
0
                PyMem_Free(_children);
33305
0
                p->level--;
33306
0
                return NULL;
33307
0
            }
33308
9.46k
            if (_n == _children_capacity) {
33309
2.55k
                _children_capacity *= 2;
33310
2.55k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33311
2.55k
                if (!_new_children) {
33312
0
                    PyMem_Free(_children);
33313
0
                    p->error_indicator = 1;
33314
0
                    PyErr_NoMemory();
33315
0
                    p->level--;
33316
0
                    return NULL;
33317
0
                }
33318
2.55k
                _children = _new_children;
33319
2.55k
            }
33320
9.46k
            _children[_n++] = _res;
33321
9.46k
            _mark = p->mark;
33322
9.46k
        }
33323
18.7k
        p->mark = _mark;
33324
18.7k
        D(fprintf(stderr, "%*c%s _loop0_91[%d-%d]: %s failed!\n", p->level, ' ',
33325
18.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred"));
33326
18.7k
    }
33327
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33328
18.7k
    if (!_seq) {
33329
0
        PyMem_Free(_children);
33330
0
        p->error_indicator = 1;
33331
0
        PyErr_NoMemory();
33332
0
        p->level--;
33333
0
        return NULL;
33334
0
    }
33335
28.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33336
18.7k
    PyMem_Free(_children);
33337
18.7k
    p->level--;
33338
18.7k
    return _seq;
33339
18.7k
}
33340
33341
// _gather_92: kwarg_or_starred _loop0_91
33342
static asdl_seq *
33343
_gather_92_rule(Parser *p)
33344
102k
{
33345
102k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33346
0
        _Pypegen_stack_overflow(p);
33347
0
    }
33348
102k
    if (p->error_indicator) {
33349
0
        p->level--;
33350
0
        return NULL;
33351
0
    }
33352
102k
    asdl_seq * _res = NULL;
33353
102k
    int _mark = p->mark;
33354
102k
    { // kwarg_or_starred _loop0_91
33355
102k
        if (p->error_indicator) {
33356
0
            p->level--;
33357
0
            return NULL;
33358
0
        }
33359
102k
        D(fprintf(stderr, "%*c> _gather_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_91"));
33360
102k
        KeywordOrStarred* elem;
33361
102k
        asdl_seq * seq;
33362
102k
        if (
33363
102k
            (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
33364
18.7k
            &&
33365
18.7k
            (seq = _loop0_91_rule(p))  // _loop0_91
33366
102k
        )
33367
18.7k
        {
33368
18.7k
            D(fprintf(stderr, "%*c+ _gather_92[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_91"));
33369
18.7k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33370
18.7k
            goto done;
33371
18.7k
        }
33372
83.9k
        p->mark = _mark;
33373
83.9k
        D(fprintf(stderr, "%*c%s _gather_92[%d-%d]: %s failed!\n", p->level, ' ',
33374
83.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_91"));
33375
83.9k
    }
33376
83.9k
    _res = NULL;
33377
102k
  done:
33378
102k
    p->level--;
33379
102k
    return _res;
33380
83.9k
}
33381
33382
// _loop0_93: ',' kwarg_or_double_starred
33383
static asdl_seq *
33384
_loop0_93_rule(Parser *p)
33385
4.22k
{
33386
4.22k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33387
0
        _Pypegen_stack_overflow(p);
33388
0
    }
33389
4.22k
    if (p->error_indicator) {
33390
0
        p->level--;
33391
0
        return NULL;
33392
0
    }
33393
4.22k
    void *_res = NULL;
33394
4.22k
    int _mark = p->mark;
33395
4.22k
    void **_children = PyMem_Malloc(sizeof(void *));
33396
4.22k
    if (!_children) {
33397
0
        p->error_indicator = 1;
33398
0
        PyErr_NoMemory();
33399
0
        p->level--;
33400
0
        return NULL;
33401
0
    }
33402
4.22k
    Py_ssize_t _children_capacity = 1;
33403
4.22k
    Py_ssize_t _n = 0;
33404
4.22k
    { // ',' kwarg_or_double_starred
33405
4.22k
        if (p->error_indicator) {
33406
0
            p->level--;
33407
0
            return NULL;
33408
0
        }
33409
4.22k
        D(fprintf(stderr, "%*c> _loop0_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred"));
33410
4.22k
        Token * _literal;
33411
4.22k
        KeywordOrStarred* elem;
33412
4.22k
        while (
33413
11.0k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33414
8.87k
            &&
33415
8.87k
            (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
33416
4.22k
        )
33417
6.83k
        {
33418
6.83k
            _res = elem;
33419
6.83k
            if (_res == NULL && PyErr_Occurred()) {
33420
0
                p->error_indicator = 1;
33421
0
                PyMem_Free(_children);
33422
0
                p->level--;
33423
0
                return NULL;
33424
0
            }
33425
6.83k
            if (_n == _children_capacity) {
33426
1.07k
                _children_capacity *= 2;
33427
1.07k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33428
1.07k
                if (!_new_children) {
33429
0
                    PyMem_Free(_children);
33430
0
                    p->error_indicator = 1;
33431
0
                    PyErr_NoMemory();
33432
0
                    p->level--;
33433
0
                    return NULL;
33434
0
                }
33435
1.07k
                _children = _new_children;
33436
1.07k
            }
33437
6.83k
            _children[_n++] = _res;
33438
6.83k
            _mark = p->mark;
33439
6.83k
        }
33440
4.22k
        p->mark = _mark;
33441
4.22k
        D(fprintf(stderr, "%*c%s _loop0_93[%d-%d]: %s failed!\n", p->level, ' ',
33442
4.22k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
33443
4.22k
    }
33444
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33445
4.22k
    if (!_seq) {
33446
0
        PyMem_Free(_children);
33447
0
        p->error_indicator = 1;
33448
0
        PyErr_NoMemory();
33449
0
        p->level--;
33450
0
        return NULL;
33451
0
    }
33452
11.0k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33453
4.22k
    PyMem_Free(_children);
33454
4.22k
    p->level--;
33455
4.22k
    return _seq;
33456
4.22k
}
33457
33458
// _gather_94: kwarg_or_double_starred _loop0_93
33459
static asdl_seq *
33460
_gather_94_rule(Parser *p)
33461
45.8k
{
33462
45.8k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33463
0
        _Pypegen_stack_overflow(p);
33464
0
    }
33465
45.8k
    if (p->error_indicator) {
33466
266
        p->level--;
33467
266
        return NULL;
33468
266
    }
33469
45.6k
    asdl_seq * _res = NULL;
33470
45.6k
    int _mark = p->mark;
33471
45.6k
    { // kwarg_or_double_starred _loop0_93
33472
45.6k
        if (p->error_indicator) {
33473
0
            p->level--;
33474
0
            return NULL;
33475
0
        }
33476
45.6k
        D(fprintf(stderr, "%*c> _gather_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_93"));
33477
45.6k
        KeywordOrStarred* elem;
33478
45.6k
        asdl_seq * seq;
33479
45.6k
        if (
33480
45.6k
            (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
33481
4.22k
            &&
33482
4.22k
            (seq = _loop0_93_rule(p))  // _loop0_93
33483
45.6k
        )
33484
4.22k
        {
33485
4.22k
            D(fprintf(stderr, "%*c+ _gather_94[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_93"));
33486
4.22k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33487
4.22k
            goto done;
33488
4.22k
        }
33489
41.3k
        p->mark = _mark;
33490
41.3k
        D(fprintf(stderr, "%*c%s _gather_94[%d-%d]: %s failed!\n", p->level, ' ',
33491
41.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_93"));
33492
41.3k
    }
33493
41.3k
    _res = NULL;
33494
45.6k
  done:
33495
45.6k
    p->level--;
33496
45.6k
    return _res;
33497
41.3k
}
33498
33499
// _loop0_95: (',' star_target)
33500
static asdl_seq *
33501
_loop0_95_rule(Parser *p)
33502
11.0k
{
33503
11.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33504
0
        _Pypegen_stack_overflow(p);
33505
0
    }
33506
11.0k
    if (p->error_indicator) {
33507
0
        p->level--;
33508
0
        return NULL;
33509
0
    }
33510
11.0k
    void *_res = NULL;
33511
11.0k
    int _mark = p->mark;
33512
11.0k
    void **_children = PyMem_Malloc(sizeof(void *));
33513
11.0k
    if (!_children) {
33514
0
        p->error_indicator = 1;
33515
0
        PyErr_NoMemory();
33516
0
        p->level--;
33517
0
        return NULL;
33518
0
    }
33519
11.0k
    Py_ssize_t _children_capacity = 1;
33520
11.0k
    Py_ssize_t _n = 0;
33521
11.0k
    { // (',' star_target)
33522
11.0k
        if (p->error_indicator) {
33523
0
            p->level--;
33524
0
            return NULL;
33525
0
        }
33526
11.0k
        D(fprintf(stderr, "%*c> _loop0_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
33527
11.0k
        void *_tmp_165_var;
33528
11.0k
        while (
33529
19.2k
            (_tmp_165_var = _tmp_165_rule(p))  // ',' star_target
33530
11.0k
        )
33531
8.18k
        {
33532
8.18k
            _res = _tmp_165_var;
33533
8.18k
            if (_n == _children_capacity) {
33534
1.56k
                _children_capacity *= 2;
33535
1.56k
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33536
1.56k
                if (!_new_children) {
33537
0
                    PyMem_Free(_children);
33538
0
                    p->error_indicator = 1;
33539
0
                    PyErr_NoMemory();
33540
0
                    p->level--;
33541
0
                    return NULL;
33542
0
                }
33543
1.56k
                _children = _new_children;
33544
1.56k
            }
33545
8.18k
            _children[_n++] = _res;
33546
8.18k
            _mark = p->mark;
33547
8.18k
        }
33548
11.0k
        p->mark = _mark;
33549
11.0k
        D(fprintf(stderr, "%*c%s _loop0_95[%d-%d]: %s failed!\n", p->level, ' ',
33550
11.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
33551
11.0k
    }
33552
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33553
11.0k
    if (!_seq) {
33554
0
        PyMem_Free(_children);
33555
0
        p->error_indicator = 1;
33556
0
        PyErr_NoMemory();
33557
0
        p->level--;
33558
0
        return NULL;
33559
0
    }
33560
19.2k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33561
11.0k
    PyMem_Free(_children);
33562
11.0k
    p->level--;
33563
11.0k
    return _seq;
33564
11.0k
}
33565
33566
// _loop0_96: ',' star_target
33567
static asdl_seq *
33568
_loop0_96_rule(Parser *p)
33569
2.36k
{
33570
2.36k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33571
0
        _Pypegen_stack_overflow(p);
33572
0
    }
33573
2.36k
    if (p->error_indicator) {
33574
0
        p->level--;
33575
0
        return NULL;
33576
0
    }
33577
2.36k
    void *_res = NULL;
33578
2.36k
    int _mark = p->mark;
33579
2.36k
    void **_children = PyMem_Malloc(sizeof(void *));
33580
2.36k
    if (!_children) {
33581
0
        p->error_indicator = 1;
33582
0
        PyErr_NoMemory();
33583
0
        p->level--;
33584
0
        return NULL;
33585
0
    }
33586
2.36k
    Py_ssize_t _children_capacity = 1;
33587
2.36k
    Py_ssize_t _n = 0;
33588
2.36k
    { // ',' star_target
33589
2.36k
        if (p->error_indicator) {
33590
0
            p->level--;
33591
0
            return NULL;
33592
0
        }
33593
2.36k
        D(fprintf(stderr, "%*c> _loop0_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
33594
2.36k
        Token * _literal;
33595
2.36k
        expr_ty elem;
33596
2.36k
        while (
33597
4.19k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33598
2.55k
            &&
33599
2.55k
            (elem = star_target_rule(p))  // star_target
33600
2.36k
        )
33601
1.83k
        {
33602
1.83k
            _res = elem;
33603
1.83k
            if (_res == NULL && PyErr_Occurred()) {
33604
0
                p->error_indicator = 1;
33605
0
                PyMem_Free(_children);
33606
0
                p->level--;
33607
0
                return NULL;
33608
0
            }
33609
1.83k
            if (_n == _children_capacity) {
33610
534
                _children_capacity *= 2;
33611
534
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33612
534
                if (!_new_children) {
33613
0
                    PyMem_Free(_children);
33614
0
                    p->error_indicator = 1;
33615
0
                    PyErr_NoMemory();
33616
0
                    p->level--;
33617
0
                    return NULL;
33618
0
                }
33619
534
                _children = _new_children;
33620
534
            }
33621
1.83k
            _children[_n++] = _res;
33622
1.83k
            _mark = p->mark;
33623
1.83k
        }
33624
2.36k
        p->mark = _mark;
33625
2.36k
        D(fprintf(stderr, "%*c%s _loop0_96[%d-%d]: %s failed!\n", p->level, ' ',
33626
2.36k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
33627
2.36k
    }
33628
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33629
2.36k
    if (!_seq) {
33630
0
        PyMem_Free(_children);
33631
0
        p->error_indicator = 1;
33632
0
        PyErr_NoMemory();
33633
0
        p->level--;
33634
0
        return NULL;
33635
0
    }
33636
4.19k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33637
2.36k
    PyMem_Free(_children);
33638
2.36k
    p->level--;
33639
2.36k
    return _seq;
33640
2.36k
}
33641
33642
// _gather_97: star_target _loop0_96
33643
static asdl_seq *
33644
_gather_97_rule(Parser *p)
33645
10.6k
{
33646
10.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33647
0
        _Pypegen_stack_overflow(p);
33648
0
    }
33649
10.6k
    if (p->error_indicator) {
33650
0
        p->level--;
33651
0
        return NULL;
33652
0
    }
33653
10.6k
    asdl_seq * _res = NULL;
33654
10.6k
    int _mark = p->mark;
33655
10.6k
    { // star_target _loop0_96
33656
10.6k
        if (p->error_indicator) {
33657
0
            p->level--;
33658
0
            return NULL;
33659
0
        }
33660
10.6k
        D(fprintf(stderr, "%*c> _gather_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target _loop0_96"));
33661
10.6k
        expr_ty elem;
33662
10.6k
        asdl_seq * seq;
33663
10.6k
        if (
33664
10.6k
            (elem = star_target_rule(p))  // star_target
33665
2.36k
            &&
33666
2.36k
            (seq = _loop0_96_rule(p))  // _loop0_96
33667
10.6k
        )
33668
2.36k
        {
33669
2.36k
            D(fprintf(stderr, "%*c+ _gather_97[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target _loop0_96"));
33670
2.36k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33671
2.36k
            goto done;
33672
2.36k
        }
33673
8.26k
        p->mark = _mark;
33674
8.26k
        D(fprintf(stderr, "%*c%s _gather_97[%d-%d]: %s failed!\n", p->level, ' ',
33675
8.26k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target _loop0_96"));
33676
8.26k
    }
33677
8.26k
    _res = NULL;
33678
10.6k
  done:
33679
10.6k
    p->level--;
33680
10.6k
    return _res;
33681
8.26k
}
33682
33683
// _loop1_98: (',' star_target)
33684
static asdl_seq *
33685
_loop1_98_rule(Parser *p)
33686
3.25k
{
33687
3.25k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33688
0
        _Pypegen_stack_overflow(p);
33689
0
    }
33690
3.25k
    if (p->error_indicator) {
33691
0
        p->level--;
33692
0
        return NULL;
33693
0
    }
33694
3.25k
    void *_res = NULL;
33695
3.25k
    int _mark = p->mark;
33696
3.25k
    void **_children = PyMem_Malloc(sizeof(void *));
33697
3.25k
    if (!_children) {
33698
0
        p->error_indicator = 1;
33699
0
        PyErr_NoMemory();
33700
0
        p->level--;
33701
0
        return NULL;
33702
0
    }
33703
3.25k
    Py_ssize_t _children_capacity = 1;
33704
3.25k
    Py_ssize_t _n = 0;
33705
3.25k
    { // (',' star_target)
33706
3.25k
        if (p->error_indicator) {
33707
0
            p->level--;
33708
0
            return NULL;
33709
0
        }
33710
3.25k
        D(fprintf(stderr, "%*c> _loop1_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
33711
3.25k
        void *_tmp_165_var;
33712
3.25k
        while (
33713
4.41k
            (_tmp_165_var = _tmp_165_rule(p))  // ',' star_target
33714
3.25k
        )
33715
1.15k
        {
33716
1.15k
            _res = _tmp_165_var;
33717
1.15k
            if (_n == _children_capacity) {
33718
381
                _children_capacity *= 2;
33719
381
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33720
381
                if (!_new_children) {
33721
0
                    PyMem_Free(_children);
33722
0
                    p->error_indicator = 1;
33723
0
                    PyErr_NoMemory();
33724
0
                    p->level--;
33725
0
                    return NULL;
33726
0
                }
33727
381
                _children = _new_children;
33728
381
            }
33729
1.15k
            _children[_n++] = _res;
33730
1.15k
            _mark = p->mark;
33731
1.15k
        }
33732
3.25k
        p->mark = _mark;
33733
3.25k
        D(fprintf(stderr, "%*c%s _loop1_98[%d-%d]: %s failed!\n", p->level, ' ',
33734
3.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
33735
3.25k
    }
33736
3.25k
    if (_n == 0 || p->error_indicator) {
33737
2.79k
        PyMem_Free(_children);
33738
2.79k
        p->level--;
33739
2.79k
        return NULL;
33740
2.79k
    }
33741
463
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33742
463
    if (!_seq) {
33743
0
        PyMem_Free(_children);
33744
0
        p->error_indicator = 1;
33745
0
        PyErr_NoMemory();
33746
0
        p->level--;
33747
0
        return NULL;
33748
0
    }
33749
1.62k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33750
463
    PyMem_Free(_children);
33751
463
    p->level--;
33752
463
    return _seq;
33753
463
}
33754
33755
// _tmp_99: !'*' star_target
33756
static void *
33757
_tmp_99_rule(Parser *p)
33758
2.96k
{
33759
2.96k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33760
0
        _Pypegen_stack_overflow(p);
33761
0
    }
33762
2.96k
    if (p->error_indicator) {
33763
0
        p->level--;
33764
0
        return NULL;
33765
0
    }
33766
2.96k
    void * _res = NULL;
33767
2.96k
    int _mark = p->mark;
33768
2.96k
    { // !'*' star_target
33769
2.96k
        if (p->error_indicator) {
33770
0
            p->level--;
33771
0
            return NULL;
33772
0
        }
33773
2.96k
        D(fprintf(stderr, "%*c> _tmp_99[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
33774
2.96k
        expr_ty star_target_var;
33775
2.96k
        if (
33776
2.96k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16)  // token='*'
33777
2.95k
            &&
33778
2.95k
            (star_target_var = star_target_rule(p))  // star_target
33779
2.96k
        )
33780
1.78k
        {
33781
1.78k
            D(fprintf(stderr, "%*c+ _tmp_99[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
33782
1.78k
            _res = star_target_var;
33783
1.78k
            goto done;
33784
1.78k
        }
33785
1.17k
        p->mark = _mark;
33786
1.17k
        D(fprintf(stderr, "%*c%s _tmp_99[%d-%d]: %s failed!\n", p->level, ' ',
33787
1.17k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!'*' star_target"));
33788
1.17k
    }
33789
1.17k
    _res = NULL;
33790
2.96k
  done:
33791
2.96k
    p->level--;
33792
2.96k
    return _res;
33793
1.17k
}
33794
33795
// _loop0_100: ',' del_target
33796
static asdl_seq *
33797
_loop0_100_rule(Parser *p)
33798
2.69k
{
33799
2.69k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33800
0
        _Pypegen_stack_overflow(p);
33801
0
    }
33802
2.69k
    if (p->error_indicator) {
33803
0
        p->level--;
33804
0
        return NULL;
33805
0
    }
33806
2.69k
    void *_res = NULL;
33807
2.69k
    int _mark = p->mark;
33808
2.69k
    void **_children = PyMem_Malloc(sizeof(void *));
33809
2.69k
    if (!_children) {
33810
0
        p->error_indicator = 1;
33811
0
        PyErr_NoMemory();
33812
0
        p->level--;
33813
0
        return NULL;
33814
0
    }
33815
2.69k
    Py_ssize_t _children_capacity = 1;
33816
2.69k
    Py_ssize_t _n = 0;
33817
2.69k
    { // ',' del_target
33818
2.69k
        if (p->error_indicator) {
33819
0
            p->level--;
33820
0
            return NULL;
33821
0
        }
33822
2.69k
        D(fprintf(stderr, "%*c> _loop0_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' del_target"));
33823
2.69k
        Token * _literal;
33824
2.69k
        expr_ty elem;
33825
2.69k
        while (
33826
5.72k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33827
3.74k
            &&
33828
3.74k
            (elem = del_target_rule(p))  // del_target
33829
2.69k
        )
33830
3.02k
        {
33831
3.02k
            _res = elem;
33832
3.02k
            if (_res == NULL && PyErr_Occurred()) {
33833
0
                p->error_indicator = 1;
33834
0
                PyMem_Free(_children);
33835
0
                p->level--;
33836
0
                return NULL;
33837
0
            }
33838
3.02k
            if (_n == _children_capacity) {
33839
947
                _children_capacity *= 2;
33840
947
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33841
947
                if (!_new_children) {
33842
0
                    PyMem_Free(_children);
33843
0
                    p->error_indicator = 1;
33844
0
                    PyErr_NoMemory();
33845
0
                    p->level--;
33846
0
                    return NULL;
33847
0
                }
33848
947
                _children = _new_children;
33849
947
            }
33850
3.02k
            _children[_n++] = _res;
33851
3.02k
            _mark = p->mark;
33852
3.02k
        }
33853
2.69k
        p->mark = _mark;
33854
2.69k
        D(fprintf(stderr, "%*c%s _loop0_100[%d-%d]: %s failed!\n", p->level, ' ',
33855
2.69k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' del_target"));
33856
2.69k
    }
33857
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33858
2.69k
    if (!_seq) {
33859
0
        PyMem_Free(_children);
33860
0
        p->error_indicator = 1;
33861
0
        PyErr_NoMemory();
33862
0
        p->level--;
33863
0
        return NULL;
33864
0
    }
33865
5.72k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33866
2.69k
    PyMem_Free(_children);
33867
2.69k
    p->level--;
33868
2.69k
    return _seq;
33869
2.69k
}
33870
33871
// _gather_101: del_target _loop0_100
33872
static asdl_seq *
33873
_gather_101_rule(Parser *p)
33874
5.11k
{
33875
5.11k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33876
0
        _Pypegen_stack_overflow(p);
33877
0
    }
33878
5.11k
    if (p->error_indicator) {
33879
0
        p->level--;
33880
0
        return NULL;
33881
0
    }
33882
5.11k
    asdl_seq * _res = NULL;
33883
5.11k
    int _mark = p->mark;
33884
5.11k
    { // del_target _loop0_100
33885
5.11k
        if (p->error_indicator) {
33886
0
            p->level--;
33887
0
            return NULL;
33888
0
        }
33889
5.11k
        D(fprintf(stderr, "%*c> _gather_101[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_target _loop0_100"));
33890
5.11k
        expr_ty elem;
33891
5.11k
        asdl_seq * seq;
33892
5.11k
        if (
33893
5.11k
            (elem = del_target_rule(p))  // del_target
33894
2.69k
            &&
33895
2.69k
            (seq = _loop0_100_rule(p))  // _loop0_100
33896
5.11k
        )
33897
2.69k
        {
33898
2.69k
            D(fprintf(stderr, "%*c+ _gather_101[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_target _loop0_100"));
33899
2.69k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
33900
2.69k
            goto done;
33901
2.69k
        }
33902
2.41k
        p->mark = _mark;
33903
2.41k
        D(fprintf(stderr, "%*c%s _gather_101[%d-%d]: %s failed!\n", p->level, ' ',
33904
2.41k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_target _loop0_100"));
33905
2.41k
    }
33906
2.41k
    _res = NULL;
33907
5.11k
  done:
33908
5.11k
    p->level--;
33909
5.11k
    return _res;
33910
2.41k
}
33911
33912
// _loop0_102: ',' expression
33913
static asdl_seq *
33914
_loop0_102_rule(Parser *p)
33915
0
{
33916
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33917
0
        _Pypegen_stack_overflow(p);
33918
0
    }
33919
0
    if (p->error_indicator) {
33920
0
        p->level--;
33921
0
        return NULL;
33922
0
    }
33923
0
    void *_res = NULL;
33924
0
    int _mark = p->mark;
33925
0
    void **_children = PyMem_Malloc(sizeof(void *));
33926
0
    if (!_children) {
33927
0
        p->error_indicator = 1;
33928
0
        PyErr_NoMemory();
33929
0
        p->level--;
33930
0
        return NULL;
33931
0
    }
33932
0
    Py_ssize_t _children_capacity = 1;
33933
0
    Py_ssize_t _n = 0;
33934
0
    { // ',' expression
33935
0
        if (p->error_indicator) {
33936
0
            p->level--;
33937
0
            return NULL;
33938
0
        }
33939
0
        D(fprintf(stderr, "%*c> _loop0_102[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
33940
0
        Token * _literal;
33941
0
        expr_ty elem;
33942
0
        while (
33943
0
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
33944
0
            &&
33945
0
            (elem = expression_rule(p))  // expression
33946
0
        )
33947
0
        {
33948
0
            _res = elem;
33949
0
            if (_res == NULL && PyErr_Occurred()) {
33950
0
                p->error_indicator = 1;
33951
0
                PyMem_Free(_children);
33952
0
                p->level--;
33953
0
                return NULL;
33954
0
            }
33955
0
            if (_n == _children_capacity) {
33956
0
                _children_capacity *= 2;
33957
0
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33958
0
                if (!_new_children) {
33959
0
                    PyMem_Free(_children);
33960
0
                    p->error_indicator = 1;
33961
0
                    PyErr_NoMemory();
33962
0
                    p->level--;
33963
0
                    return NULL;
33964
0
                }
33965
0
                _children = _new_children;
33966
0
            }
33967
0
            _children[_n++] = _res;
33968
0
            _mark = p->mark;
33969
0
        }
33970
0
        p->mark = _mark;
33971
0
        D(fprintf(stderr, "%*c%s _loop0_102[%d-%d]: %s failed!\n", p->level, ' ',
33972
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
33973
0
    }
33974
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33975
0
    if (!_seq) {
33976
0
        PyMem_Free(_children);
33977
0
        p->error_indicator = 1;
33978
0
        PyErr_NoMemory();
33979
0
        p->level--;
33980
0
        return NULL;
33981
0
    }
33982
0
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33983
0
    PyMem_Free(_children);
33984
0
    p->level--;
33985
0
    return _seq;
33986
0
}
33987
33988
// _gather_103: expression _loop0_102
33989
static asdl_seq *
33990
_gather_103_rule(Parser *p)
33991
0
{
33992
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
33993
0
        _Pypegen_stack_overflow(p);
33994
0
    }
33995
0
    if (p->error_indicator) {
33996
0
        p->level--;
33997
0
        return NULL;
33998
0
    }
33999
0
    asdl_seq * _res = NULL;
34000
0
    int _mark = p->mark;
34001
0
    { // expression _loop0_102
34002
0
        if (p->error_indicator) {
34003
0
            p->level--;
34004
0
            return NULL;
34005
0
        }
34006
0
        D(fprintf(stderr, "%*c> _gather_103[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_102"));
34007
0
        expr_ty elem;
34008
0
        asdl_seq * seq;
34009
0
        if (
34010
0
            (elem = expression_rule(p))  // expression
34011
0
            &&
34012
0
            (seq = _loop0_102_rule(p))  // _loop0_102
34013
0
        )
34014
0
        {
34015
0
            D(fprintf(stderr, "%*c+ _gather_103[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_102"));
34016
0
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
34017
0
            goto done;
34018
0
        }
34019
0
        p->mark = _mark;
34020
0
        D(fprintf(stderr, "%*c%s _gather_103[%d-%d]: %s failed!\n", p->level, ' ',
34021
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_102"));
34022
0
    }
34023
0
    _res = NULL;
34024
0
  done:
34025
0
    p->level--;
34026
0
    return _res;
34027
0
}
34028
34029
// _tmp_104: NEWLINE INDENT
34030
static void *
34031
_tmp_104_rule(Parser *p)
34032
0
{
34033
0
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34034
0
        _Pypegen_stack_overflow(p);
34035
0
    }
34036
0
    if (p->error_indicator) {
34037
0
        p->level--;
34038
0
        return NULL;
34039
0
    }
34040
0
    void * _res = NULL;
34041
0
    int _mark = p->mark;
34042
0
    { // NEWLINE INDENT
34043
0
        if (p->error_indicator) {
34044
0
            p->level--;
34045
0
            return NULL;
34046
0
        }
34047
0
        D(fprintf(stderr, "%*c> _tmp_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
34048
0
        Token * indent_var;
34049
0
        Token * newline_var;
34050
0
        if (
34051
0
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
34052
0
            &&
34053
0
            (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
34054
0
        )
34055
0
        {
34056
0
            D(fprintf(stderr, "%*c+ _tmp_104[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
34057
0
            _res = _PyPegen_dummy_name(p, newline_var, indent_var);
34058
0
            goto done;
34059
0
        }
34060
0
        p->mark = _mark;
34061
0
        D(fprintf(stderr, "%*c%s _tmp_104[%d-%d]: %s failed!\n", p->level, ' ',
34062
0
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT"));
34063
0
    }
34064
0
    _res = NULL;
34065
0
  done:
34066
0
    p->level--;
34067
0
    return _res;
34068
0
}
34069
34070
// _tmp_105:
34071
//     | (','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)
34072
//     | kwargs
34073
static void *
34074
_tmp_105_rule(Parser *p)
34075
8.03k
{
34076
8.03k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34077
0
        _Pypegen_stack_overflow(p);
34078
0
    }
34079
8.03k
    if (p->error_indicator) {
34080
0
        p->level--;
34081
0
        return NULL;
34082
0
    }
34083
8.03k
    void * _res = NULL;
34084
8.03k
    int _mark = p->mark;
34085
8.03k
    { // (','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)
34086
8.03k
        if (p->error_indicator) {
34087
0
            p->level--;
34088
0
            return NULL;
34089
0
        }
34090
8.03k
        D(fprintf(stderr, "%*c> _tmp_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)"));
34091
8.03k
        void *_tmp_166_var;
34092
8.03k
        if (
34093
8.03k
            (_tmp_166_var = _tmp_166_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs
34094
8.03k
        )
34095
326
        {
34096
326
            D(fprintf(stderr, "%*c+ _tmp_105[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)"));
34097
326
            _res = _tmp_166_var;
34098
326
            goto done;
34099
326
        }
34100
7.70k
        p->mark = _mark;
34101
7.70k
        D(fprintf(stderr, "%*c%s _tmp_105[%d-%d]: %s failed!\n", p->level, ' ',
34102
7.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs)"));
34103
7.70k
    }
34104
0
    { // kwargs
34105
7.70k
        if (p->error_indicator) {
34106
0
            p->level--;
34107
0
            return NULL;
34108
0
        }
34109
7.70k
        D(fprintf(stderr, "%*c> _tmp_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwargs"));
34110
7.70k
        asdl_seq* kwargs_var;
34111
7.70k
        if (
34112
7.70k
            (kwargs_var = kwargs_rule(p))  // kwargs
34113
7.70k
        )
34114
2.45k
        {
34115
2.45k
            D(fprintf(stderr, "%*c+ _tmp_105[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwargs"));
34116
2.45k
            _res = kwargs_var;
34117
2.45k
            goto done;
34118
2.45k
        }
34119
5.25k
        p->mark = _mark;
34120
5.25k
        D(fprintf(stderr, "%*c%s _tmp_105[%d-%d]: %s failed!\n", p->level, ' ',
34121
5.25k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwargs"));
34122
5.25k
    }
34123
5.25k
    _res = NULL;
34124
8.03k
  done:
34125
8.03k
    p->level--;
34126
8.03k
    return _res;
34127
5.25k
}
34128
34129
// _loop0_106: ',' (starred_expression !'=')
34130
static asdl_seq *
34131
_loop0_106_rule(Parser *p)
34132
421
{
34133
421
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34134
0
        _Pypegen_stack_overflow(p);
34135
0
    }
34136
421
    if (p->error_indicator) {
34137
0
        p->level--;
34138
0
        return NULL;
34139
0
    }
34140
421
    void *_res = NULL;
34141
421
    int _mark = p->mark;
34142
421
    void **_children = PyMem_Malloc(sizeof(void *));
34143
421
    if (!_children) {
34144
0
        p->error_indicator = 1;
34145
0
        PyErr_NoMemory();
34146
0
        p->level--;
34147
0
        return NULL;
34148
0
    }
34149
421
    Py_ssize_t _children_capacity = 1;
34150
421
    Py_ssize_t _n = 0;
34151
421
    { // ',' (starred_expression !'=')
34152
421
        if (p->error_indicator) {
34153
0
            p->level--;
34154
0
            return NULL;
34155
0
        }
34156
421
        D(fprintf(stderr, "%*c> _loop0_106[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression !'=')"));
34157
421
        Token * _literal;
34158
421
        void *elem;
34159
421
        while (
34160
1.05k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
34161
1.05k
            &&
34162
1.05k
            (elem = _tmp_167_rule(p))  // starred_expression !'='
34163
421
        )
34164
632
        {
34165
632
            _res = elem;
34166
632
            if (_res == NULL && PyErr_Occurred()) {
34167
0
                p->error_indicator = 1;
34168
0
                PyMem_Free(_children);
34169
0
                p->level--;
34170
0
                return NULL;
34171
0
            }
34172
632
            if (_n == _children_capacity) {
34173
125
                _children_capacity *= 2;
34174
125
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34175
125
                if (!_new_children) {
34176
0
                    PyMem_Free(_children);
34177
0
                    p->error_indicator = 1;
34178
0
                    PyErr_NoMemory();
34179
0
                    p->level--;
34180
0
                    return NULL;
34181
0
                }
34182
125
                _children = _new_children;
34183
125
            }
34184
632
            _children[_n++] = _res;
34185
632
            _mark = p->mark;
34186
632
        }
34187
421
        p->mark = _mark;
34188
421
        D(fprintf(stderr, "%*c%s _loop0_106[%d-%d]: %s failed!\n", p->level, ' ',
34189
421
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression !'=')"));
34190
421
    }
34191
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34192
421
    if (!_seq) {
34193
0
        PyMem_Free(_children);
34194
0
        p->error_indicator = 1;
34195
0
        PyErr_NoMemory();
34196
0
        p->level--;
34197
0
        return NULL;
34198
0
    }
34199
1.05k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34200
421
    PyMem_Free(_children);
34201
421
    p->level--;
34202
421
    return _seq;
34203
421
}
34204
34205
// _gather_107: (starred_expression !'=') _loop0_106
34206
static asdl_seq *
34207
_gather_107_rule(Parser *p)
34208
1.55k
{
34209
1.55k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34210
0
        _Pypegen_stack_overflow(p);
34211
0
    }
34212
1.55k
    if (p->error_indicator) {
34213
0
        p->level--;
34214
0
        return NULL;
34215
0
    }
34216
1.55k
    asdl_seq * _res = NULL;
34217
1.55k
    int _mark = p->mark;
34218
1.55k
    { // (starred_expression !'=') _loop0_106
34219
1.55k
        if (p->error_indicator) {
34220
0
            p->level--;
34221
0
            return NULL;
34222
0
        }
34223
1.55k
        D(fprintf(stderr, "%*c> _gather_107[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression !'=') _loop0_106"));
34224
1.55k
        void *elem;
34225
1.55k
        asdl_seq * seq;
34226
1.55k
        if (
34227
1.55k
            (elem = _tmp_167_rule(p))  // starred_expression !'='
34228
421
            &&
34229
421
            (seq = _loop0_106_rule(p))  // _loop0_106
34230
1.55k
        )
34231
421
        {
34232
421
            D(fprintf(stderr, "%*c+ _gather_107[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression !'=') _loop0_106"));
34233
421
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
34234
421
            goto done;
34235
421
        }
34236
1.13k
        p->mark = _mark;
34237
1.13k
        D(fprintf(stderr, "%*c%s _gather_107[%d-%d]: %s failed!\n", p->level, ' ',
34238
1.13k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression !'=') _loop0_106"));
34239
1.13k
    }
34240
1.13k
    _res = NULL;
34241
1.55k
  done:
34242
1.55k
    p->level--;
34243
1.55k
    return _res;
34244
1.13k
}
34245
34246
// _tmp_108: args | expression for_if_clauses
34247
static void *
34248
_tmp_108_rule(Parser *p)
34249
75
{
34250
75
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34251
0
        _Pypegen_stack_overflow(p);
34252
0
    }
34253
75
    if (p->error_indicator) {
34254
0
        p->level--;
34255
0
        return NULL;
34256
0
    }
34257
75
    void * _res = NULL;
34258
75
    int _mark = p->mark;
34259
75
    { // args
34260
75
        if (p->error_indicator) {
34261
0
            p->level--;
34262
0
            return NULL;
34263
0
        }
34264
75
        D(fprintf(stderr, "%*c> _tmp_108[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args"));
34265
75
        expr_ty args_var;
34266
75
        if (
34267
75
            (args_var = args_rule(p))  // args
34268
75
        )
34269
34
        {
34270
34
            D(fprintf(stderr, "%*c+ _tmp_108[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args"));
34271
34
            _res = args_var;
34272
34
            goto done;
34273
34
        }
34274
41
        p->mark = _mark;
34275
41
        D(fprintf(stderr, "%*c%s _tmp_108[%d-%d]: %s failed!\n", p->level, ' ',
34276
41
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args"));
34277
41
    }
34278
0
    { // expression for_if_clauses
34279
41
        if (p->error_indicator) {
34280
38
            p->level--;
34281
38
            return NULL;
34282
38
        }
34283
3
        D(fprintf(stderr, "%*c> _tmp_108[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses"));
34284
3
        expr_ty expression_var;
34285
3
        asdl_comprehension_seq* for_if_clauses_var;
34286
3
        if (
34287
3
            (expression_var = expression_rule(p))  // expression
34288
1
            &&
34289
1
            (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
34290
3
        )
34291
0
        {
34292
0
            D(fprintf(stderr, "%*c+ _tmp_108[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses"));
34293
0
            _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
34294
0
            goto done;
34295
0
        }
34296
3
        p->mark = _mark;
34297
3
        D(fprintf(stderr, "%*c%s _tmp_108[%d-%d]: %s failed!\n", p->level, ' ',
34298
3
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses"));
34299
3
    }
34300
3
    _res = NULL;
34301
37
  done:
34302
37
    p->level--;
34303
37
    return _res;
34304
3
}
34305
34306
// _tmp_109: args ','
34307
static void *
34308
_tmp_109_rule(Parser *p)
34309
7.33k
{
34310
7.33k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34311
0
        _Pypegen_stack_overflow(p);
34312
0
    }
34313
7.33k
    if (p->error_indicator) {
34314
0
        p->level--;
34315
0
        return NULL;
34316
0
    }
34317
7.33k
    void * _res = NULL;
34318
7.33k
    int _mark = p->mark;
34319
7.33k
    { // args ','
34320
7.33k
        if (p->error_indicator) {
34321
0
            p->level--;
34322
0
            return NULL;
34323
0
        }
34324
7.33k
        D(fprintf(stderr, "%*c> _tmp_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','"));
34325
7.33k
        Token * _literal;
34326
7.33k
        expr_ty args_var;
34327
7.33k
        if (
34328
7.33k
            (args_var = args_rule(p))  // args
34329
3.83k
            &&
34330
3.83k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
34331
7.33k
        )
34332
841
        {
34333
841
            D(fprintf(stderr, "%*c+ _tmp_109[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','"));
34334
841
            _res = _PyPegen_dummy_name(p, args_var, _literal);
34335
841
            goto done;
34336
841
        }
34337
6.49k
        p->mark = _mark;
34338
6.49k
        D(fprintf(stderr, "%*c%s _tmp_109[%d-%d]: %s failed!\n", p->level, ' ',
34339
6.49k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','"));
34340
6.49k
    }
34341
6.49k
    _res = NULL;
34342
7.33k
  done:
34343
7.33k
    p->level--;
34344
7.33k
    return _res;
34345
6.49k
}
34346
34347
// _tmp_110: ',' | ')'
34348
static void *
34349
_tmp_110_rule(Parser *p)
34350
557
{
34351
557
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34352
0
        _Pypegen_stack_overflow(p);
34353
0
    }
34354
557
    if (p->error_indicator) {
34355
0
        p->level--;
34356
0
        return NULL;
34357
0
    }
34358
557
    void * _res = NULL;
34359
557
    int _mark = p->mark;
34360
557
    { // ','
34361
557
        if (p->error_indicator) {
34362
0
            p->level--;
34363
0
            return NULL;
34364
0
        }
34365
557
        D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
34366
557
        Token * _literal;
34367
557
        if (
34368
557
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
34369
557
        )
34370
9
        {
34371
9
            D(fprintf(stderr, "%*c+ _tmp_110[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
34372
9
            _res = _literal;
34373
9
            goto done;
34374
9
        }
34375
548
        p->mark = _mark;
34376
548
        D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ',
34377
548
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
34378
548
    }
34379
0
    { // ')'
34380
548
        if (p->error_indicator) {
34381
0
            p->level--;
34382
0
            return NULL;
34383
0
        }
34384
548
        D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
34385
548
        Token * _literal;
34386
548
        if (
34387
548
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
34388
548
        )
34389
4
        {
34390
4
            D(fprintf(stderr, "%*c+ _tmp_110[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
34391
4
            _res = _literal;
34392
4
            goto done;
34393
4
        }
34394
544
        p->mark = _mark;
34395
544
        D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ',
34396
544
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
34397
544
    }
34398
544
    _res = NULL;
34399
557
  done:
34400
557
    p->level--;
34401
557
    return _res;
34402
544
}
34403
34404
// _tmp_111: 'True' | 'False' | 'None'
34405
static void *
34406
_tmp_111_rule(Parser *p)
34407
121k
{
34408
121k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34409
0
        _Pypegen_stack_overflow(p);
34410
0
    }
34411
121k
    if (p->error_indicator) {
34412
0
        p->level--;
34413
0
        return NULL;
34414
0
    }
34415
121k
    void * _res = NULL;
34416
121k
    int _mark = p->mark;
34417
121k
    { // 'True'
34418
121k
        if (p->error_indicator) {
34419
0
            p->level--;
34420
0
            return NULL;
34421
0
        }
34422
121k
        D(fprintf(stderr, "%*c> _tmp_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
34423
121k
        Token * _keyword;
34424
121k
        if (
34425
121k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
34426
121k
        )
34427
219
        {
34428
219
            D(fprintf(stderr, "%*c+ _tmp_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
34429
219
            _res = _keyword;
34430
219
            goto done;
34431
219
        }
34432
121k
        p->mark = _mark;
34433
121k
        D(fprintf(stderr, "%*c%s _tmp_111[%d-%d]: %s failed!\n", p->level, ' ',
34434
121k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
34435
121k
    }
34436
0
    { // 'False'
34437
121k
        if (p->error_indicator) {
34438
0
            p->level--;
34439
0
            return NULL;
34440
0
        }
34441
121k
        D(fprintf(stderr, "%*c> _tmp_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
34442
121k
        Token * _keyword;
34443
121k
        if (
34444
121k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
34445
121k
        )
34446
207
        {
34447
207
            D(fprintf(stderr, "%*c+ _tmp_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
34448
207
            _res = _keyword;
34449
207
            goto done;
34450
207
        }
34451
120k
        p->mark = _mark;
34452
120k
        D(fprintf(stderr, "%*c%s _tmp_111[%d-%d]: %s failed!\n", p->level, ' ',
34453
120k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
34454
120k
    }
34455
0
    { // 'None'
34456
120k
        if (p->error_indicator) {
34457
0
            p->level--;
34458
0
            return NULL;
34459
0
        }
34460
120k
        D(fprintf(stderr, "%*c> _tmp_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
34461
120k
        Token * _keyword;
34462
120k
        if (
34463
120k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
34464
120k
        )
34465
76
        {
34466
76
            D(fprintf(stderr, "%*c+ _tmp_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
34467
76
            _res = _keyword;
34468
76
            goto done;
34469
76
        }
34470
120k
        p->mark = _mark;
34471
120k
        D(fprintf(stderr, "%*c%s _tmp_111[%d-%d]: %s failed!\n", p->level, ' ',
34472
120k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
34473
120k
    }
34474
120k
    _res = NULL;
34475
121k
  done:
34476
121k
    p->level--;
34477
121k
    return _res;
34478
120k
}
34479
34480
// _tmp_112: NAME '='
34481
static void *
34482
_tmp_112_rule(Parser *p)
34483
121k
{
34484
121k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34485
0
        _Pypegen_stack_overflow(p);
34486
0
    }
34487
121k
    if (p->error_indicator) {
34488
0
        p->level--;
34489
0
        return NULL;
34490
0
    }
34491
121k
    void * _res = NULL;
34492
121k
    int _mark = p->mark;
34493
121k
    { // NAME '='
34494
121k
        if (p->error_indicator) {
34495
0
            p->level--;
34496
0
            return NULL;
34497
0
        }
34498
121k
        D(fprintf(stderr, "%*c> _tmp_112[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '='"));
34499
121k
        Token * _literal;
34500
121k
        expr_ty name_var;
34501
121k
        if (
34502
121k
            (name_var = _PyPegen_name_token(p))  // NAME
34503
35.0k
            &&
34504
35.0k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
34505
121k
        )
34506
21.1k
        {
34507
21.1k
            D(fprintf(stderr, "%*c+ _tmp_112[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '='"));
34508
21.1k
            _res = _PyPegen_dummy_name(p, name_var, _literal);
34509
21.1k
            goto done;
34510
21.1k
        }
34511
99.9k
        p->mark = _mark;
34512
99.9k
        D(fprintf(stderr, "%*c%s _tmp_112[%d-%d]: %s failed!\n", p->level, ' ',
34513
99.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '='"));
34514
99.9k
    }
34515
99.9k
    _res = NULL;
34516
121k
  done:
34517
121k
    p->level--;
34518
121k
    return _res;
34519
99.9k
}
34520
34521
// _loop1_113: (!STRING expression_without_invalid)
34522
static asdl_seq *
34523
_loop1_113_rule(Parser *p)
34524
3.50k
{
34525
3.50k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34526
1
        _Pypegen_stack_overflow(p);
34527
1
    }
34528
3.50k
    if (p->error_indicator) {
34529
1
        p->level--;
34530
1
        return NULL;
34531
1
    }
34532
3.50k
    void *_res = NULL;
34533
3.50k
    int _mark = p->mark;
34534
3.50k
    void **_children = PyMem_Malloc(sizeof(void *));
34535
3.50k
    if (!_children) {
34536
0
        p->error_indicator = 1;
34537
0
        PyErr_NoMemory();
34538
0
        p->level--;
34539
0
        return NULL;
34540
0
    }
34541
3.50k
    Py_ssize_t _children_capacity = 1;
34542
3.50k
    Py_ssize_t _n = 0;
34543
3.50k
    { // (!STRING expression_without_invalid)
34544
3.50k
        if (p->error_indicator) {
34545
0
            p->level--;
34546
0
            return NULL;
34547
0
        }
34548
3.50k
        D(fprintf(stderr, "%*c> _loop1_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(!STRING expression_without_invalid)"));
34549
3.50k
        void *_tmp_168_var;
34550
3.50k
        while (
34551
6.19k
            (_tmp_168_var = _tmp_168_rule(p))  // !STRING expression_without_invalid
34552
3.50k
        )
34553
2.69k
        {
34554
2.69k
            _res = _tmp_168_var;
34555
2.69k
            if (_n == _children_capacity) {
34556
759
                _children_capacity *= 2;
34557
759
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34558
759
                if (!_new_children) {
34559
0
                    PyMem_Free(_children);
34560
0
                    p->error_indicator = 1;
34561
0
                    PyErr_NoMemory();
34562
0
                    p->level--;
34563
0
                    return NULL;
34564
0
                }
34565
759
                _children = _new_children;
34566
759
            }
34567
2.69k
            _children[_n++] = _res;
34568
2.69k
            _mark = p->mark;
34569
2.69k
        }
34570
3.50k
        p->mark = _mark;
34571
3.50k
        D(fprintf(stderr, "%*c%s _loop1_113[%d-%d]: %s failed!\n", p->level, ' ',
34572
3.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(!STRING expression_without_invalid)"));
34573
3.50k
    }
34574
3.50k
    if (_n == 0 || p->error_indicator) {
34575
2.41k
        PyMem_Free(_children);
34576
2.41k
        p->level--;
34577
2.41k
        return NULL;
34578
2.41k
    }
34579
1.09k
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34580
1.09k
    if (!_seq) {
34581
0
        PyMem_Free(_children);
34582
0
        p->error_indicator = 1;
34583
0
        PyErr_NoMemory();
34584
0
        p->level--;
34585
0
        return NULL;
34586
0
    }
34587
3.70k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34588
1.09k
    PyMem_Free(_children);
34589
1.09k
    p->level--;
34590
1.09k
    return _seq;
34591
1.09k
}
34592
34593
// _tmp_114: NAME STRING | SOFT_KEYWORD
34594
static void *
34595
_tmp_114_rule(Parser *p)
34596
226k
{
34597
226k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34598
1
        _Pypegen_stack_overflow(p);
34599
1
    }
34600
226k
    if (p->error_indicator) {
34601
1
        p->level--;
34602
1
        return NULL;
34603
1
    }
34604
226k
    void * _res = NULL;
34605
226k
    int _mark = p->mark;
34606
226k
    { // NAME STRING
34607
226k
        if (p->error_indicator) {
34608
0
            p->level--;
34609
0
            return NULL;
34610
0
        }
34611
226k
        D(fprintf(stderr, "%*c> _tmp_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
34612
226k
        expr_ty name_var;
34613
226k
        expr_ty string_var;
34614
226k
        if (
34615
226k
            (name_var = _PyPegen_name_token(p))  // NAME
34616
69.6k
            &&
34617
69.6k
            (string_var = _PyPegen_string_token(p))  // STRING
34618
226k
        )
34619
520
        {
34620
520
            D(fprintf(stderr, "%*c+ _tmp_114[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
34621
520
            _res = _PyPegen_dummy_name(p, name_var, string_var);
34622
520
            goto done;
34623
520
        }
34624
226k
        p->mark = _mark;
34625
226k
        D(fprintf(stderr, "%*c%s _tmp_114[%d-%d]: %s failed!\n", p->level, ' ',
34626
226k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME STRING"));
34627
226k
    }
34628
0
    { // SOFT_KEYWORD
34629
226k
        if (p->error_indicator) {
34630
24
            p->level--;
34631
24
            return NULL;
34632
24
        }
34633
226k
        D(fprintf(stderr, "%*c> _tmp_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
34634
226k
        expr_ty soft_keyword_var;
34635
226k
        if (
34636
226k
            (soft_keyword_var = _PyPegen_soft_keyword_token(p))  // SOFT_KEYWORD
34637
226k
        )
34638
4.54k
        {
34639
4.54k
            D(fprintf(stderr, "%*c+ _tmp_114[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
34640
4.54k
            _res = soft_keyword_var;
34641
4.54k
            goto done;
34642
4.54k
        }
34643
221k
        p->mark = _mark;
34644
221k
        D(fprintf(stderr, "%*c%s _tmp_114[%d-%d]: %s failed!\n", p->level, ' ',
34645
221k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "SOFT_KEYWORD"));
34646
221k
    }
34647
221k
    _res = NULL;
34648
226k
  done:
34649
226k
    p->level--;
34650
226k
    return _res;
34651
221k
}
34652
34653
// _tmp_115: 'else' | ':'
34654
static void *
34655
_tmp_115_rule(Parser *p)
34656
679
{
34657
679
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34658
0
        _Pypegen_stack_overflow(p);
34659
0
    }
34660
679
    if (p->error_indicator) {
34661
0
        p->level--;
34662
0
        return NULL;
34663
0
    }
34664
679
    void * _res = NULL;
34665
679
    int _mark = p->mark;
34666
679
    { // 'else'
34667
679
        if (p->error_indicator) {
34668
0
            p->level--;
34669
0
            return NULL;
34670
0
        }
34671
679
        D(fprintf(stderr, "%*c> _tmp_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else'"));
34672
679
        Token * _keyword;
34673
679
        if (
34674
679
            (_keyword = _PyPegen_expect_token(p, 695))  // token='else'
34675
679
        )
34676
650
        {
34677
650
            D(fprintf(stderr, "%*c+ _tmp_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else'"));
34678
650
            _res = _keyword;
34679
650
            goto done;
34680
650
        }
34681
29
        p->mark = _mark;
34682
29
        D(fprintf(stderr, "%*c%s _tmp_115[%d-%d]: %s failed!\n", p->level, ' ',
34683
29
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else'"));
34684
29
    }
34685
0
    { // ':'
34686
29
        if (p->error_indicator) {
34687
0
            p->level--;
34688
0
            return NULL;
34689
0
        }
34690
29
        D(fprintf(stderr, "%*c> _tmp_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
34691
29
        Token * _literal;
34692
29
        if (
34693
29
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
34694
29
        )
34695
10
        {
34696
10
            D(fprintf(stderr, "%*c+ _tmp_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
34697
10
            _res = _literal;
34698
10
            goto done;
34699
10
        }
34700
19
        p->mark = _mark;
34701
19
        D(fprintf(stderr, "%*c%s _tmp_115[%d-%d]: %s failed!\n", p->level, ' ',
34702
19
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
34703
19
    }
34704
19
    _res = NULL;
34705
679
  done:
34706
679
    p->level--;
34707
679
    return _res;
34708
19
}
34709
34710
// _tmp_116: pass_stmt | break_stmt | continue_stmt
34711
static void *
34712
_tmp_116_rule(Parser *p)
34713
192k
{
34714
192k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34715
0
        _Pypegen_stack_overflow(p);
34716
0
    }
34717
192k
    if (p->error_indicator) {
34718
0
        p->level--;
34719
0
        return NULL;
34720
0
    }
34721
192k
    void * _res = NULL;
34722
192k
    int _mark = p->mark;
34723
192k
    { // pass_stmt
34724
192k
        if (p->error_indicator) {
34725
0
            p->level--;
34726
0
            return NULL;
34727
0
        }
34728
192k
        D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pass_stmt"));
34729
192k
        stmt_ty pass_stmt_var;
34730
192k
        if (
34731
192k
            (pass_stmt_var = pass_stmt_rule(p))  // pass_stmt
34732
192k
        )
34733
571
        {
34734
571
            D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pass_stmt"));
34735
571
            _res = pass_stmt_var;
34736
571
            goto done;
34737
571
        }
34738
191k
        p->mark = _mark;
34739
191k
        D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ',
34740
191k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pass_stmt"));
34741
191k
    }
34742
0
    { // break_stmt
34743
191k
        if (p->error_indicator) {
34744
0
            p->level--;
34745
0
            return NULL;
34746
0
        }
34747
191k
        D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "break_stmt"));
34748
191k
        stmt_ty break_stmt_var;
34749
191k
        if (
34750
191k
            (break_stmt_var = break_stmt_rule(p))  // break_stmt
34751
191k
        )
34752
494
        {
34753
494
            D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "break_stmt"));
34754
494
            _res = break_stmt_var;
34755
494
            goto done;
34756
494
        }
34757
191k
        p->mark = _mark;
34758
191k
        D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ',
34759
191k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "break_stmt"));
34760
191k
    }
34761
0
    { // continue_stmt
34762
191k
        if (p->error_indicator) {
34763
0
            p->level--;
34764
0
            return NULL;
34765
0
        }
34766
191k
        D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "continue_stmt"));
34767
191k
        stmt_ty continue_stmt_var;
34768
191k
        if (
34769
191k
            (continue_stmt_var = continue_stmt_rule(p))  // continue_stmt
34770
191k
        )
34771
1.83k
        {
34772
1.83k
            D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "continue_stmt"));
34773
1.83k
            _res = continue_stmt_var;
34774
1.83k
            goto done;
34775
1.83k
        }
34776
189k
        p->mark = _mark;
34777
189k
        D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ',
34778
189k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "continue_stmt"));
34779
189k
    }
34780
189k
    _res = NULL;
34781
192k
  done:
34782
192k
    p->level--;
34783
192k
    return _res;
34784
189k
}
34785
34786
// _tmp_117: '=' | ':='
34787
static void *
34788
_tmp_117_rule(Parser *p)
34789
85
{
34790
85
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34791
0
        _Pypegen_stack_overflow(p);
34792
0
    }
34793
85
    if (p->error_indicator) {
34794
0
        p->level--;
34795
0
        return NULL;
34796
0
    }
34797
85
    void * _res = NULL;
34798
85
    int _mark = p->mark;
34799
85
    { // '='
34800
85
        if (p->error_indicator) {
34801
0
            p->level--;
34802
0
            return NULL;
34803
0
        }
34804
85
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
34805
85
        Token * _literal;
34806
85
        if (
34807
85
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
34808
85
        )
34809
58
        {
34810
58
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
34811
58
            _res = _literal;
34812
58
            goto done;
34813
58
        }
34814
27
        p->mark = _mark;
34815
27
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34816
27
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
34817
27
    }
34818
0
    { // ':='
34819
27
        if (p->error_indicator) {
34820
0
            p->level--;
34821
0
            return NULL;
34822
0
        }
34823
27
        D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='"));
34824
27
        Token * _literal;
34825
27
        if (
34826
27
            (_literal = _PyPegen_expect_token(p, 53))  // token=':='
34827
27
        )
34828
5
        {
34829
5
            D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='"));
34830
5
            _res = _literal;
34831
5
            goto done;
34832
5
        }
34833
22
        p->mark = _mark;
34834
22
        D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
34835
22
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='"));
34836
22
    }
34837
22
    _res = NULL;
34838
85
  done:
34839
85
    p->level--;
34840
85
    return _res;
34841
22
}
34842
34843
// _tmp_118: list | tuple | genexp | 'True' | 'None' | 'False'
34844
static void *
34845
_tmp_118_rule(Parser *p)
34846
88.3k
{
34847
88.3k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34848
0
        _Pypegen_stack_overflow(p);
34849
0
    }
34850
88.3k
    if (p->error_indicator) {
34851
0
        p->level--;
34852
0
        return NULL;
34853
0
    }
34854
88.3k
    void * _res = NULL;
34855
88.3k
    int _mark = p->mark;
34856
88.3k
    { // list
34857
88.3k
        if (p->error_indicator) {
34858
0
            p->level--;
34859
0
            return NULL;
34860
0
        }
34861
88.3k
        D(fprintf(stderr, "%*c> _tmp_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
34862
88.3k
        expr_ty list_var;
34863
88.3k
        if (
34864
88.3k
            (list_var = list_rule(p))  // list
34865
88.3k
        )
34866
1.18k
        {
34867
1.18k
            D(fprintf(stderr, "%*c+ _tmp_118[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
34868
1.18k
            _res = list_var;
34869
1.18k
            goto done;
34870
1.18k
        }
34871
87.1k
        p->mark = _mark;
34872
87.1k
        D(fprintf(stderr, "%*c%s _tmp_118[%d-%d]: %s failed!\n", p->level, ' ',
34873
87.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
34874
87.1k
    }
34875
0
    { // tuple
34876
87.1k
        if (p->error_indicator) {
34877
201
            p->level--;
34878
201
            return NULL;
34879
201
        }
34880
86.9k
        D(fprintf(stderr, "%*c> _tmp_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
34881
86.9k
        expr_ty tuple_var;
34882
86.9k
        if (
34883
86.9k
            (tuple_var = tuple_rule(p))  // tuple
34884
86.9k
        )
34885
3.69k
        {
34886
3.69k
            D(fprintf(stderr, "%*c+ _tmp_118[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
34887
3.69k
            _res = tuple_var;
34888
3.69k
            goto done;
34889
3.69k
        }
34890
83.2k
        p->mark = _mark;
34891
83.2k
        D(fprintf(stderr, "%*c%s _tmp_118[%d-%d]: %s failed!\n", p->level, ' ',
34892
83.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
34893
83.2k
    }
34894
0
    { // genexp
34895
83.2k
        if (p->error_indicator) {
34896
194
            p->level--;
34897
194
            return NULL;
34898
194
        }
34899
83.0k
        D(fprintf(stderr, "%*c> _tmp_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
34900
83.0k
        expr_ty genexp_var;
34901
83.0k
        if (
34902
83.0k
            (genexp_var = genexp_rule(p))  // genexp
34903
83.0k
        )
34904
296
        {
34905
296
            D(fprintf(stderr, "%*c+ _tmp_118[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
34906
296
            _res = genexp_var;
34907
296
            goto done;
34908
296
        }
34909
82.7k
        p->mark = _mark;
34910
82.7k
        D(fprintf(stderr, "%*c%s _tmp_118[%d-%d]: %s failed!\n", p->level, ' ',
34911
82.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
34912
82.7k
    }
34913
0
    { // 'True'
34914
82.7k
        if (p->error_indicator) {
34915
210
            p->level--;
34916
210
            return NULL;
34917
210
        }
34918
82.5k
        D(fprintf(stderr, "%*c> _tmp_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
34919
82.5k
        Token * _keyword;
34920
82.5k
        if (
34921
82.5k
            (_keyword = _PyPegen_expect_token(p, 623))  // token='True'
34922
82.5k
        )
34923
240
        {
34924
240
            D(fprintf(stderr, "%*c+ _tmp_118[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
34925
240
            _res = _keyword;
34926
240
            goto done;
34927
240
        }
34928
82.3k
        p->mark = _mark;
34929
82.3k
        D(fprintf(stderr, "%*c%s _tmp_118[%d-%d]: %s failed!\n", p->level, ' ',
34930
82.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
34931
82.3k
    }
34932
0
    { // 'None'
34933
82.3k
        if (p->error_indicator) {
34934
0
            p->level--;
34935
0
            return NULL;
34936
0
        }
34937
82.3k
        D(fprintf(stderr, "%*c> _tmp_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
34938
82.3k
        Token * _keyword;
34939
82.3k
        if (
34940
82.3k
            (_keyword = _PyPegen_expect_token(p, 624))  // token='None'
34941
82.3k
        )
34942
206
        {
34943
206
            D(fprintf(stderr, "%*c+ _tmp_118[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
34944
206
            _res = _keyword;
34945
206
            goto done;
34946
206
        }
34947
82.1k
        p->mark = _mark;
34948
82.1k
        D(fprintf(stderr, "%*c%s _tmp_118[%d-%d]: %s failed!\n", p->level, ' ',
34949
82.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
34950
82.1k
    }
34951
0
    { // 'False'
34952
82.1k
        if (p->error_indicator) {
34953
0
            p->level--;
34954
0
            return NULL;
34955
0
        }
34956
82.1k
        D(fprintf(stderr, "%*c> _tmp_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
34957
82.1k
        Token * _keyword;
34958
82.1k
        if (
34959
82.1k
            (_keyword = _PyPegen_expect_token(p, 625))  // token='False'
34960
82.1k
        )
34961
197
        {
34962
197
            D(fprintf(stderr, "%*c+ _tmp_118[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
34963
197
            _res = _keyword;
34964
197
            goto done;
34965
197
        }
34966
81.9k
        p->mark = _mark;
34967
81.9k
        D(fprintf(stderr, "%*c%s _tmp_118[%d-%d]: %s failed!\n", p->level, ' ',
34968
81.9k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
34969
81.9k
    }
34970
81.9k
    _res = NULL;
34971
87.7k
  done:
34972
87.7k
    p->level--;
34973
87.7k
    return _res;
34974
81.9k
}
34975
34976
// _loop0_119: star_named_expressions
34977
static asdl_seq *
34978
_loop0_119_rule(Parser *p)
34979
1.46k
{
34980
1.46k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
34981
0
        _Pypegen_stack_overflow(p);
34982
0
    }
34983
1.46k
    if (p->error_indicator) {
34984
0
        p->level--;
34985
0
        return NULL;
34986
0
    }
34987
1.46k
    void *_res = NULL;
34988
1.46k
    int _mark = p->mark;
34989
1.46k
    void **_children = PyMem_Malloc(sizeof(void *));
34990
1.46k
    if (!_children) {
34991
0
        p->error_indicator = 1;
34992
0
        PyErr_NoMemory();
34993
0
        p->level--;
34994
0
        return NULL;
34995
0
    }
34996
1.46k
    Py_ssize_t _children_capacity = 1;
34997
1.46k
    Py_ssize_t _n = 0;
34998
1.46k
    { // star_named_expressions
34999
1.46k
        if (p->error_indicator) {
35000
0
            p->level--;
35001
0
            return NULL;
35002
0
        }
35003
1.46k
        D(fprintf(stderr, "%*c> _loop0_119[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions"));
35004
1.46k
        asdl_expr_seq* star_named_expressions_var;
35005
1.46k
        while (
35006
4.65k
            (star_named_expressions_var = star_named_expressions_rule(p))  // star_named_expressions
35007
1.46k
        )
35008
3.18k
        {
35009
3.18k
            _res = star_named_expressions_var;
35010
3.18k
            if (_n == _children_capacity) {
35011
279
                _children_capacity *= 2;
35012
279
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35013
279
                if (!_new_children) {
35014
0
                    PyMem_Free(_children);
35015
0
                    p->error_indicator = 1;
35016
0
                    PyErr_NoMemory();
35017
0
                    p->level--;
35018
0
                    return NULL;
35019
0
                }
35020
279
                _children = _new_children;
35021
279
            }
35022
3.18k
            _children[_n++] = _res;
35023
3.18k
            _mark = p->mark;
35024
3.18k
        }
35025
1.46k
        p->mark = _mark;
35026
1.46k
        D(fprintf(stderr, "%*c%s _loop0_119[%d-%d]: %s failed!\n", p->level, ' ',
35027
1.46k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expressions"));
35028
1.46k
    }
35029
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35030
1.46k
    if (!_seq) {
35031
0
        PyMem_Free(_children);
35032
0
        p->error_indicator = 1;
35033
0
        PyErr_NoMemory();
35034
0
        p->level--;
35035
0
        return NULL;
35036
0
    }
35037
4.65k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35038
1.46k
    PyMem_Free(_children);
35039
1.46k
    p->level--;
35040
1.46k
    return _seq;
35041
1.46k
}
35042
35043
// _loop0_120: (star_targets '=')
35044
static asdl_seq *
35045
_loop0_120_rule(Parser *p)
35046
76.5k
{
35047
76.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35048
0
        _Pypegen_stack_overflow(p);
35049
0
    }
35050
76.5k
    if (p->error_indicator) {
35051
0
        p->level--;
35052
0
        return NULL;
35053
0
    }
35054
76.5k
    void *_res = NULL;
35055
76.5k
    int _mark = p->mark;
35056
76.5k
    void **_children = PyMem_Malloc(sizeof(void *));
35057
76.5k
    if (!_children) {
35058
0
        p->error_indicator = 1;
35059
0
        PyErr_NoMemory();
35060
0
        p->level--;
35061
0
        return NULL;
35062
0
    }
35063
76.5k
    Py_ssize_t _children_capacity = 1;
35064
76.5k
    Py_ssize_t _n = 0;
35065
76.5k
    { // (star_targets '=')
35066
76.5k
        if (p->error_indicator) {
35067
0
            p->level--;
35068
0
            return NULL;
35069
0
        }
35070
76.5k
        D(fprintf(stderr, "%*c> _loop0_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
35071
76.5k
        void *_tmp_156_var;
35072
76.5k
        while (
35073
77.4k
            (_tmp_156_var = _tmp_156_rule(p))  // star_targets '='
35074
76.5k
        )
35075
936
        {
35076
936
            _res = _tmp_156_var;
35077
936
            if (_n == _children_capacity) {
35078
135
                _children_capacity *= 2;
35079
135
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35080
135
                if (!_new_children) {
35081
0
                    PyMem_Free(_children);
35082
0
                    p->error_indicator = 1;
35083
0
                    PyErr_NoMemory();
35084
0
                    p->level--;
35085
0
                    return NULL;
35086
0
                }
35087
135
                _children = _new_children;
35088
135
            }
35089
936
            _children[_n++] = _res;
35090
936
            _mark = p->mark;
35091
936
        }
35092
76.5k
        p->mark = _mark;
35093
76.5k
        D(fprintf(stderr, "%*c%s _loop0_120[%d-%d]: %s failed!\n", p->level, ' ',
35094
76.5k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
35095
76.5k
    }
35096
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35097
76.5k
    if (!_seq) {
35098
0
        PyMem_Free(_children);
35099
0
        p->error_indicator = 1;
35100
0
        PyErr_NoMemory();
35101
0
        p->level--;
35102
0
        return NULL;
35103
0
    }
35104
77.4k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35105
76.5k
    PyMem_Free(_children);
35106
76.5k
    p->level--;
35107
76.5k
    return _seq;
35108
76.5k
}
35109
35110
// _tmp_121: '[' | '(' | '{'
35111
static void *
35112
_tmp_121_rule(Parser *p)
35113
227k
{
35114
227k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35115
1
        _Pypegen_stack_overflow(p);
35116
1
    }
35117
227k
    if (p->error_indicator) {
35118
1
        p->level--;
35119
1
        return NULL;
35120
1
    }
35121
227k
    void * _res = NULL;
35122
227k
    int _mark = p->mark;
35123
227k
    { // '['
35124
227k
        if (p->error_indicator) {
35125
0
            p->level--;
35126
0
            return NULL;
35127
0
        }
35128
227k
        D(fprintf(stderr, "%*c> _tmp_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
35129
227k
        Token * _literal;
35130
227k
        if (
35131
227k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
35132
227k
        )
35133
18.9k
        {
35134
18.9k
            D(fprintf(stderr, "%*c+ _tmp_121[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
35135
18.9k
            _res = _literal;
35136
18.9k
            goto done;
35137
18.9k
        }
35138
208k
        p->mark = _mark;
35139
208k
        D(fprintf(stderr, "%*c%s _tmp_121[%d-%d]: %s failed!\n", p->level, ' ',
35140
208k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
35141
208k
    }
35142
0
    { // '('
35143
208k
        if (p->error_indicator) {
35144
0
            p->level--;
35145
0
            return NULL;
35146
0
        }
35147
208k
        D(fprintf(stderr, "%*c> _tmp_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
35148
208k
        Token * _literal;
35149
208k
        if (
35150
208k
            (_literal = _PyPegen_expect_token(p, 7))  // token='('
35151
208k
        )
35152
21.7k
        {
35153
21.7k
            D(fprintf(stderr, "%*c+ _tmp_121[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
35154
21.7k
            _res = _literal;
35155
21.7k
            goto done;
35156
21.7k
        }
35157
187k
        p->mark = _mark;
35158
187k
        D(fprintf(stderr, "%*c%s _tmp_121[%d-%d]: %s failed!\n", p->level, ' ',
35159
187k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
35160
187k
    }
35161
0
    { // '{'
35162
187k
        if (p->error_indicator) {
35163
0
            p->level--;
35164
0
            return NULL;
35165
0
        }
35166
187k
        D(fprintf(stderr, "%*c> _tmp_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
35167
187k
        Token * _literal;
35168
187k
        if (
35169
187k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
35170
187k
        )
35171
8.13k
        {
35172
8.13k
            D(fprintf(stderr, "%*c+ _tmp_121[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
35173
8.13k
            _res = _literal;
35174
8.13k
            goto done;
35175
8.13k
        }
35176
178k
        p->mark = _mark;
35177
178k
        D(fprintf(stderr, "%*c%s _tmp_121[%d-%d]: %s failed!\n", p->level, ' ',
35178
178k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
35179
178k
    }
35180
178k
    _res = NULL;
35181
227k
  done:
35182
227k
    p->level--;
35183
227k
    return _res;
35184
178k
}
35185
35186
// _tmp_122: '[' | '{'
35187
static void *
35188
_tmp_122_rule(Parser *p)
35189
452k
{
35190
452k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35191
0
        _Pypegen_stack_overflow(p);
35192
0
    }
35193
452k
    if (p->error_indicator) {
35194
0
        p->level--;
35195
0
        return NULL;
35196
0
    }
35197
452k
    void * _res = NULL;
35198
452k
    int _mark = p->mark;
35199
452k
    { // '['
35200
452k
        if (p->error_indicator) {
35201
0
            p->level--;
35202
0
            return NULL;
35203
0
        }
35204
452k
        D(fprintf(stderr, "%*c> _tmp_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
35205
452k
        Token * _literal;
35206
452k
        if (
35207
452k
            (_literal = _PyPegen_expect_token(p, 9))  // token='['
35208
452k
        )
35209
36.8k
        {
35210
36.8k
            D(fprintf(stderr, "%*c+ _tmp_122[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
35211
36.8k
            _res = _literal;
35212
36.8k
            goto done;
35213
36.8k
        }
35214
415k
        p->mark = _mark;
35215
415k
        D(fprintf(stderr, "%*c%s _tmp_122[%d-%d]: %s failed!\n", p->level, ' ',
35216
415k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
35217
415k
    }
35218
0
    { // '{'
35219
415k
        if (p->error_indicator) {
35220
0
            p->level--;
35221
0
            return NULL;
35222
0
        }
35223
415k
        D(fprintf(stderr, "%*c> _tmp_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
35224
415k
        Token * _literal;
35225
415k
        if (
35226
415k
            (_literal = _PyPegen_expect_token(p, 25))  // token='{'
35227
415k
        )
35228
15.0k
        {
35229
15.0k
            D(fprintf(stderr, "%*c+ _tmp_122[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
35230
15.0k
            _res = _literal;
35231
15.0k
            goto done;
35232
15.0k
        }
35233
400k
        p->mark = _mark;
35234
400k
        D(fprintf(stderr, "%*c%s _tmp_122[%d-%d]: %s failed!\n", p->level, ' ',
35235
400k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
35236
400k
    }
35237
400k
    _res = NULL;
35238
452k
  done:
35239
452k
    p->level--;
35240
452k
    return _res;
35241
400k
}
35242
35243
// _tmp_123: slash_no_default | slash_with_default
35244
static void *
35245
_tmp_123_rule(Parser *p)
35246
10.1k
{
35247
10.1k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35248
0
        _Pypegen_stack_overflow(p);
35249
0
    }
35250
10.1k
    if (p->error_indicator) {
35251
0
        p->level--;
35252
0
        return NULL;
35253
0
    }
35254
10.1k
    void * _res = NULL;
35255
10.1k
    int _mark = p->mark;
35256
10.1k
    { // slash_no_default
35257
10.1k
        if (p->error_indicator) {
35258
0
            p->level--;
35259
0
            return NULL;
35260
0
        }
35261
10.1k
        D(fprintf(stderr, "%*c> _tmp_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_no_default"));
35262
10.1k
        asdl_arg_seq* slash_no_default_var;
35263
10.1k
        if (
35264
10.1k
            (slash_no_default_var = slash_no_default_rule(p))  // slash_no_default
35265
10.1k
        )
35266
1.01k
        {
35267
1.01k
            D(fprintf(stderr, "%*c+ _tmp_123[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_no_default"));
35268
1.01k
            _res = slash_no_default_var;
35269
1.01k
            goto done;
35270
1.01k
        }
35271
9.15k
        p->mark = _mark;
35272
9.15k
        D(fprintf(stderr, "%*c%s _tmp_123[%d-%d]: %s failed!\n", p->level, ' ',
35273
9.15k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default"));
35274
9.15k
    }
35275
0
    { // slash_with_default
35276
9.15k
        if (p->error_indicator) {
35277
1
            p->level--;
35278
1
            return NULL;
35279
1
        }
35280
9.15k
        D(fprintf(stderr, "%*c> _tmp_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
35281
9.15k
        SlashWithDefault* slash_with_default_var;
35282
9.15k
        if (
35283
9.15k
            (slash_with_default_var = slash_with_default_rule(p))  // slash_with_default
35284
9.15k
        )
35285
859
        {
35286
859
            D(fprintf(stderr, "%*c+ _tmp_123[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
35287
859
            _res = slash_with_default_var;
35288
859
            goto done;
35289
859
        }
35290
8.29k
        p->mark = _mark;
35291
8.29k
        D(fprintf(stderr, "%*c%s _tmp_123[%d-%d]: %s failed!\n", p->level, ' ',
35292
8.29k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
35293
8.29k
    }
35294
8.29k
    _res = NULL;
35295
10.1k
  done:
35296
10.1k
    p->level--;
35297
10.1k
    return _res;
35298
8.29k
}
35299
35300
// _tmp_124: ',' | param_no_default
35301
static void *
35302
_tmp_124_rule(Parser *p)
35303
1.47k
{
35304
1.47k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35305
0
        _Pypegen_stack_overflow(p);
35306
0
    }
35307
1.47k
    if (p->error_indicator) {
35308
0
        p->level--;
35309
0
        return NULL;
35310
0
    }
35311
1.47k
    void * _res = NULL;
35312
1.47k
    int _mark = p->mark;
35313
1.47k
    { // ','
35314
1.47k
        if (p->error_indicator) {
35315
0
            p->level--;
35316
0
            return NULL;
35317
0
        }
35318
1.47k
        D(fprintf(stderr, "%*c> _tmp_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35319
1.47k
        Token * _literal;
35320
1.47k
        if (
35321
1.47k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35322
1.47k
        )
35323
574
        {
35324
574
            D(fprintf(stderr, "%*c+ _tmp_124[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35325
574
            _res = _literal;
35326
574
            goto done;
35327
574
        }
35328
903
        p->mark = _mark;
35329
903
        D(fprintf(stderr, "%*c%s _tmp_124[%d-%d]: %s failed!\n", p->level, ' ',
35330
903
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35331
903
    }
35332
0
    { // param_no_default
35333
903
        if (p->error_indicator) {
35334
0
            p->level--;
35335
0
            return NULL;
35336
0
        }
35337
903
        D(fprintf(stderr, "%*c> _tmp_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
35338
903
        arg_ty param_no_default_var;
35339
903
        if (
35340
903
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
35341
903
        )
35342
417
        {
35343
417
            D(fprintf(stderr, "%*c+ _tmp_124[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default"));
35344
417
            _res = param_no_default_var;
35345
417
            goto done;
35346
417
        }
35347
486
        p->mark = _mark;
35348
486
        D(fprintf(stderr, "%*c%s _tmp_124[%d-%d]: %s failed!\n", p->level, ' ',
35349
486
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
35350
486
    }
35351
486
    _res = NULL;
35352
1.47k
  done:
35353
1.47k
    p->level--;
35354
1.47k
    return _res;
35355
486
}
35356
35357
// _tmp_125: ')' | ','
35358
static void *
35359
_tmp_125_rule(Parser *p)
35360
26.7k
{
35361
26.7k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35362
0
        _Pypegen_stack_overflow(p);
35363
0
    }
35364
26.7k
    if (p->error_indicator) {
35365
0
        p->level--;
35366
0
        return NULL;
35367
0
    }
35368
26.7k
    void * _res = NULL;
35369
26.7k
    int _mark = p->mark;
35370
26.7k
    { // ')'
35371
26.7k
        if (p->error_indicator) {
35372
0
            p->level--;
35373
0
            return NULL;
35374
0
        }
35375
26.7k
        D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
35376
26.7k
        Token * _literal;
35377
26.7k
        if (
35378
26.7k
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
35379
26.7k
        )
35380
2
        {
35381
2
            D(fprintf(stderr, "%*c+ _tmp_125[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
35382
2
            _res = _literal;
35383
2
            goto done;
35384
2
        }
35385
26.7k
        p->mark = _mark;
35386
26.7k
        D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ',
35387
26.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
35388
26.7k
    }
35389
0
    { // ','
35390
26.7k
        if (p->error_indicator) {
35391
0
            p->level--;
35392
0
            return NULL;
35393
0
        }
35394
26.7k
        D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35395
26.7k
        Token * _literal;
35396
26.7k
        if (
35397
26.7k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35398
26.7k
        )
35399
12
        {
35400
12
            D(fprintf(stderr, "%*c+ _tmp_125[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35401
12
            _res = _literal;
35402
12
            goto done;
35403
12
        }
35404
26.7k
        p->mark = _mark;
35405
26.7k
        D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ',
35406
26.7k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35407
26.7k
    }
35408
26.7k
    _res = NULL;
35409
26.7k
  done:
35410
26.7k
    p->level--;
35411
26.7k
    return _res;
35412
26.7k
}
35413
35414
// _tmp_126: ')' | ',' (')' | '**')
35415
static void *
35416
_tmp_126_rule(Parser *p)
35417
1.47k
{
35418
1.47k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35419
0
        _Pypegen_stack_overflow(p);
35420
0
    }
35421
1.47k
    if (p->error_indicator) {
35422
0
        p->level--;
35423
0
        return NULL;
35424
0
    }
35425
1.47k
    void * _res = NULL;
35426
1.47k
    int _mark = p->mark;
35427
1.47k
    { // ')'
35428
1.47k
        if (p->error_indicator) {
35429
0
            p->level--;
35430
0
            return NULL;
35431
0
        }
35432
1.47k
        D(fprintf(stderr, "%*c> _tmp_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
35433
1.47k
        Token * _literal;
35434
1.47k
        if (
35435
1.47k
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
35436
1.47k
        )
35437
1
        {
35438
1
            D(fprintf(stderr, "%*c+ _tmp_126[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
35439
1
            _res = _literal;
35440
1
            goto done;
35441
1
        }
35442
1.47k
        p->mark = _mark;
35443
1.47k
        D(fprintf(stderr, "%*c%s _tmp_126[%d-%d]: %s failed!\n", p->level, ' ',
35444
1.47k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
35445
1.47k
    }
35446
0
    { // ',' (')' | '**')
35447
1.47k
        if (p->error_indicator) {
35448
0
            p->level--;
35449
0
            return NULL;
35450
0
        }
35451
1.47k
        D(fprintf(stderr, "%*c> _tmp_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
35452
1.47k
        Token * _literal;
35453
1.47k
        void *_tmp_169_var;
35454
1.47k
        if (
35455
1.47k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35456
572
            &&
35457
572
            (_tmp_169_var = _tmp_169_rule(p))  // ')' | '**'
35458
1.47k
        )
35459
2
        {
35460
2
            D(fprintf(stderr, "%*c+ _tmp_126[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
35461
2
            _res = _PyPegen_dummy_name(p, _literal, _tmp_169_var);
35462
2
            goto done;
35463
2
        }
35464
1.46k
        p->mark = _mark;
35465
1.46k
        D(fprintf(stderr, "%*c%s _tmp_126[%d-%d]: %s failed!\n", p->level, ' ',
35466
1.46k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (')' | '**')"));
35467
1.46k
    }
35468
1.46k
    _res = NULL;
35469
1.47k
  done:
35470
1.47k
    p->level--;
35471
1.47k
    return _res;
35472
1.46k
}
35473
35474
// _tmp_127: param_no_default | ','
35475
static void *
35476
_tmp_127_rule(Parser *p)
35477
1.47k
{
35478
1.47k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35479
0
        _Pypegen_stack_overflow(p);
35480
0
    }
35481
1.47k
    if (p->error_indicator) {
35482
0
        p->level--;
35483
0
        return NULL;
35484
0
    }
35485
1.47k
    void * _res = NULL;
35486
1.47k
    int _mark = p->mark;
35487
1.47k
    { // param_no_default
35488
1.47k
        if (p->error_indicator) {
35489
0
            p->level--;
35490
0
            return NULL;
35491
0
        }
35492
1.47k
        D(fprintf(stderr, "%*c> _tmp_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
35493
1.47k
        arg_ty param_no_default_var;
35494
1.47k
        if (
35495
1.47k
            (param_no_default_var = param_no_default_rule(p))  // param_no_default
35496
1.47k
        )
35497
416
        {
35498
416
            D(fprintf(stderr, "%*c+ _tmp_127[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default"));
35499
416
            _res = param_no_default_var;
35500
416
            goto done;
35501
416
        }
35502
1.06k
        p->mark = _mark;
35503
1.06k
        D(fprintf(stderr, "%*c%s _tmp_127[%d-%d]: %s failed!\n", p->level, ' ',
35504
1.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
35505
1.06k
    }
35506
0
    { // ','
35507
1.06k
        if (p->error_indicator) {
35508
2
            p->level--;
35509
2
            return NULL;
35510
2
        }
35511
1.05k
        D(fprintf(stderr, "%*c> _tmp_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35512
1.05k
        Token * _literal;
35513
1.05k
        if (
35514
1.05k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35515
1.05k
        )
35516
572
        {
35517
572
            D(fprintf(stderr, "%*c+ _tmp_127[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35518
572
            _res = _literal;
35519
572
            goto done;
35520
572
        }
35521
487
        p->mark = _mark;
35522
487
        D(fprintf(stderr, "%*c%s _tmp_127[%d-%d]: %s failed!\n", p->level, ' ',
35523
487
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35524
487
    }
35525
487
    _res = NULL;
35526
1.47k
  done:
35527
1.47k
    p->level--;
35528
1.47k
    return _res;
35529
487
}
35530
35531
// _tmp_128: '*' | '**' | '/'
35532
static void *
35533
_tmp_128_rule(Parser *p)
35534
36
{
35535
36
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35536
0
        _Pypegen_stack_overflow(p);
35537
0
    }
35538
36
    if (p->error_indicator) {
35539
0
        p->level--;
35540
0
        return NULL;
35541
0
    }
35542
36
    void * _res = NULL;
35543
36
    int _mark = p->mark;
35544
36
    { // '*'
35545
36
        if (p->error_indicator) {
35546
0
            p->level--;
35547
0
            return NULL;
35548
0
        }
35549
36
        D(fprintf(stderr, "%*c> _tmp_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
35550
36
        Token * _literal;
35551
36
        if (
35552
36
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
35553
36
        )
35554
1
        {
35555
1
            D(fprintf(stderr, "%*c+ _tmp_128[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
35556
1
            _res = _literal;
35557
1
            goto done;
35558
1
        }
35559
35
        p->mark = _mark;
35560
35
        D(fprintf(stderr, "%*c%s _tmp_128[%d-%d]: %s failed!\n", p->level, ' ',
35561
35
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
35562
35
    }
35563
0
    { // '**'
35564
35
        if (p->error_indicator) {
35565
0
            p->level--;
35566
0
            return NULL;
35567
0
        }
35568
35
        D(fprintf(stderr, "%*c> _tmp_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
35569
35
        Token * _literal;
35570
35
        if (
35571
35
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
35572
35
        )
35573
1
        {
35574
1
            D(fprintf(stderr, "%*c+ _tmp_128[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
35575
1
            _res = _literal;
35576
1
            goto done;
35577
1
        }
35578
34
        p->mark = _mark;
35579
34
        D(fprintf(stderr, "%*c%s _tmp_128[%d-%d]: %s failed!\n", p->level, ' ',
35580
34
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
35581
34
    }
35582
0
    { // '/'
35583
34
        if (p->error_indicator) {
35584
0
            p->level--;
35585
0
            return NULL;
35586
0
        }
35587
34
        D(fprintf(stderr, "%*c> _tmp_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/'"));
35588
34
        Token * _literal;
35589
34
        if (
35590
34
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
35591
34
        )
35592
1
        {
35593
1
            D(fprintf(stderr, "%*c+ _tmp_128[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/'"));
35594
1
            _res = _literal;
35595
1
            goto done;
35596
1
        }
35597
33
        p->mark = _mark;
35598
33
        D(fprintf(stderr, "%*c%s _tmp_128[%d-%d]: %s failed!\n", p->level, ' ',
35599
33
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/'"));
35600
33
    }
35601
33
    _res = NULL;
35602
36
  done:
35603
36
    p->level--;
35604
36
    return _res;
35605
33
}
35606
35607
// _tmp_129: lambda_slash_no_default | lambda_slash_with_default
35608
static void *
35609
_tmp_129_rule(Parser *p)
35610
16.5k
{
35611
16.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35612
0
        _Pypegen_stack_overflow(p);
35613
0
    }
35614
16.5k
    if (p->error_indicator) {
35615
0
        p->level--;
35616
0
        return NULL;
35617
0
    }
35618
16.5k
    void * _res = NULL;
35619
16.5k
    int _mark = p->mark;
35620
16.5k
    { // lambda_slash_no_default
35621
16.5k
        if (p->error_indicator) {
35622
0
            p->level--;
35623
0
            return NULL;
35624
0
        }
35625
16.5k
        D(fprintf(stderr, "%*c> _tmp_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default"));
35626
16.5k
        asdl_arg_seq* lambda_slash_no_default_var;
35627
16.5k
        if (
35628
16.5k
            (lambda_slash_no_default_var = lambda_slash_no_default_rule(p))  // lambda_slash_no_default
35629
16.5k
        )
35630
1.21k
        {
35631
1.21k
            D(fprintf(stderr, "%*c+ _tmp_129[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default"));
35632
1.21k
            _res = lambda_slash_no_default_var;
35633
1.21k
            goto done;
35634
1.21k
        }
35635
15.3k
        p->mark = _mark;
35636
15.3k
        D(fprintf(stderr, "%*c%s _tmp_129[%d-%d]: %s failed!\n", p->level, ' ',
35637
15.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default"));
35638
15.3k
    }
35639
0
    { // lambda_slash_with_default
35640
15.3k
        if (p->error_indicator) {
35641
2
            p->level--;
35642
2
            return NULL;
35643
2
        }
35644
15.3k
        D(fprintf(stderr, "%*c> _tmp_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
35645
15.3k
        SlashWithDefault* lambda_slash_with_default_var;
35646
15.3k
        if (
35647
15.3k
            (lambda_slash_with_default_var = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
35648
15.3k
        )
35649
1.44k
        {
35650
1.44k
            D(fprintf(stderr, "%*c+ _tmp_129[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
35651
1.44k
            _res = lambda_slash_with_default_var;
35652
1.44k
            goto done;
35653
1.44k
        }
35654
13.8k
        p->mark = _mark;
35655
13.8k
        D(fprintf(stderr, "%*c%s _tmp_129[%d-%d]: %s failed!\n", p->level, ' ',
35656
13.8k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
35657
13.8k
    }
35658
13.8k
    _res = NULL;
35659
16.5k
  done:
35660
16.5k
    p->level--;
35661
16.5k
    return _res;
35662
13.8k
}
35663
35664
// _loop0_130: ',' lambda_param
35665
static asdl_seq *
35666
_loop0_130_rule(Parser *p)
35667
52
{
35668
52
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35669
0
        _Pypegen_stack_overflow(p);
35670
0
    }
35671
52
    if (p->error_indicator) {
35672
0
        p->level--;
35673
0
        return NULL;
35674
0
    }
35675
52
    void *_res = NULL;
35676
52
    int _mark = p->mark;
35677
52
    void **_children = PyMem_Malloc(sizeof(void *));
35678
52
    if (!_children) {
35679
0
        p->error_indicator = 1;
35680
0
        PyErr_NoMemory();
35681
0
        p->level--;
35682
0
        return NULL;
35683
0
    }
35684
52
    Py_ssize_t _children_capacity = 1;
35685
52
    Py_ssize_t _n = 0;
35686
52
    { // ',' lambda_param
35687
52
        if (p->error_indicator) {
35688
0
            p->level--;
35689
0
            return NULL;
35690
0
        }
35691
52
        D(fprintf(stderr, "%*c> _loop0_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' lambda_param"));
35692
52
        Token * _literal;
35693
52
        arg_ty elem;
35694
52
        while (
35695
3.66k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35696
3.62k
            &&
35697
3.62k
            (elem = lambda_param_rule(p))  // lambda_param
35698
52
        )
35699
3.61k
        {
35700
3.61k
            _res = elem;
35701
3.61k
            if (_res == NULL && PyErr_Occurred()) {
35702
0
                p->error_indicator = 1;
35703
0
                PyMem_Free(_children);
35704
0
                p->level--;
35705
0
                return NULL;
35706
0
            }
35707
3.61k
            if (_n == _children_capacity) {
35708
152
                _children_capacity *= 2;
35709
152
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35710
152
                if (!_new_children) {
35711
0
                    PyMem_Free(_children);
35712
0
                    p->error_indicator = 1;
35713
0
                    PyErr_NoMemory();
35714
0
                    p->level--;
35715
0
                    return NULL;
35716
0
                }
35717
152
                _children = _new_children;
35718
152
            }
35719
3.61k
            _children[_n++] = _res;
35720
3.61k
            _mark = p->mark;
35721
3.61k
        }
35722
52
        p->mark = _mark;
35723
52
        D(fprintf(stderr, "%*c%s _loop0_130[%d-%d]: %s failed!\n", p->level, ' ',
35724
52
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' lambda_param"));
35725
52
    }
35726
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35727
52
    if (!_seq) {
35728
0
        PyMem_Free(_children);
35729
0
        p->error_indicator = 1;
35730
0
        PyErr_NoMemory();
35731
0
        p->level--;
35732
0
        return NULL;
35733
0
    }
35734
3.66k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35735
52
    PyMem_Free(_children);
35736
52
    p->level--;
35737
52
    return _seq;
35738
52
}
35739
35740
// _gather_131: lambda_param _loop0_130
35741
static asdl_seq *
35742
_gather_131_rule(Parser *p)
35743
58
{
35744
58
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35745
0
        _Pypegen_stack_overflow(p);
35746
0
    }
35747
58
    if (p->error_indicator) {
35748
0
        p->level--;
35749
0
        return NULL;
35750
0
    }
35751
58
    asdl_seq * _res = NULL;
35752
58
    int _mark = p->mark;
35753
58
    { // lambda_param _loop0_130
35754
58
        if (p->error_indicator) {
35755
0
            p->level--;
35756
0
            return NULL;
35757
0
        }
35758
58
        D(fprintf(stderr, "%*c> _gather_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_130"));
35759
58
        arg_ty elem;
35760
58
        asdl_seq * seq;
35761
58
        if (
35762
58
            (elem = lambda_param_rule(p))  // lambda_param
35763
52
            &&
35764
52
            (seq = _loop0_130_rule(p))  // _loop0_130
35765
58
        )
35766
52
        {
35767
52
            D(fprintf(stderr, "%*c+ _gather_131[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_130"));
35768
52
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
35769
52
            goto done;
35770
52
        }
35771
6
        p->mark = _mark;
35772
6
        D(fprintf(stderr, "%*c%s _gather_131[%d-%d]: %s failed!\n", p->level, ' ',
35773
6
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param _loop0_130"));
35774
6
    }
35775
6
    _res = NULL;
35776
58
  done:
35777
58
    p->level--;
35778
58
    return _res;
35779
6
}
35780
35781
// _tmp_132: ',' | lambda_param_no_default
35782
static void *
35783
_tmp_132_rule(Parser *p)
35784
2.81k
{
35785
2.81k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35786
0
        _Pypegen_stack_overflow(p);
35787
0
    }
35788
2.81k
    if (p->error_indicator) {
35789
0
        p->level--;
35790
0
        return NULL;
35791
0
    }
35792
2.81k
    void * _res = NULL;
35793
2.81k
    int _mark = p->mark;
35794
2.81k
    { // ','
35795
2.81k
        if (p->error_indicator) {
35796
0
            p->level--;
35797
0
            return NULL;
35798
0
        }
35799
2.81k
        D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35800
2.81k
        Token * _literal;
35801
2.81k
        if (
35802
2.81k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35803
2.81k
        )
35804
1.53k
        {
35805
1.53k
            D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35806
1.53k
            _res = _literal;
35807
1.53k
            goto done;
35808
1.53k
        }
35809
1.28k
        p->mark = _mark;
35810
1.28k
        D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ',
35811
1.28k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35812
1.28k
    }
35813
0
    { // lambda_param_no_default
35814
1.28k
        if (p->error_indicator) {
35815
2
            p->level--;
35816
2
            return NULL;
35817
2
        }
35818
1.28k
        D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35819
1.28k
        arg_ty lambda_param_no_default_var;
35820
1.28k
        if (
35821
1.28k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
35822
1.28k
        )
35823
885
        {
35824
885
            D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35825
885
            _res = lambda_param_no_default_var;
35826
885
            goto done;
35827
885
        }
35828
400
        p->mark = _mark;
35829
400
        D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ',
35830
400
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
35831
400
    }
35832
400
    _res = NULL;
35833
2.81k
  done:
35834
2.81k
    p->level--;
35835
2.81k
    return _res;
35836
400
}
35837
35838
// _tmp_133: ':' | ',' (':' | '**')
35839
static void *
35840
_tmp_133_rule(Parser *p)
35841
2.59k
{
35842
2.59k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35843
0
        _Pypegen_stack_overflow(p);
35844
0
    }
35845
2.59k
    if (p->error_indicator) {
35846
0
        p->level--;
35847
0
        return NULL;
35848
0
    }
35849
2.59k
    void * _res = NULL;
35850
2.59k
    int _mark = p->mark;
35851
2.59k
    { // ':'
35852
2.59k
        if (p->error_indicator) {
35853
0
            p->level--;
35854
0
            return NULL;
35855
0
        }
35856
2.59k
        D(fprintf(stderr, "%*c> _tmp_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
35857
2.59k
        Token * _literal;
35858
2.59k
        if (
35859
2.59k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
35860
2.59k
        )
35861
3
        {
35862
3
            D(fprintf(stderr, "%*c+ _tmp_133[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
35863
3
            _res = _literal;
35864
3
            goto done;
35865
3
        }
35866
2.59k
        p->mark = _mark;
35867
2.59k
        D(fprintf(stderr, "%*c%s _tmp_133[%d-%d]: %s failed!\n", p->level, ' ',
35868
2.59k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
35869
2.59k
    }
35870
0
    { // ',' (':' | '**')
35871
2.59k
        if (p->error_indicator) {
35872
0
            p->level--;
35873
0
            return NULL;
35874
0
        }
35875
2.59k
        D(fprintf(stderr, "%*c> _tmp_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
35876
2.59k
        Token * _literal;
35877
2.59k
        void *_tmp_170_var;
35878
2.59k
        if (
35879
2.59k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35880
1.31k
            &&
35881
1.31k
            (_tmp_170_var = _tmp_170_rule(p))  // ':' | '**'
35882
2.59k
        )
35883
3
        {
35884
3
            D(fprintf(stderr, "%*c+ _tmp_133[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
35885
3
            _res = _PyPegen_dummy_name(p, _literal, _tmp_170_var);
35886
3
            goto done;
35887
3
        }
35888
2.58k
        p->mark = _mark;
35889
2.58k
        D(fprintf(stderr, "%*c%s _tmp_133[%d-%d]: %s failed!\n", p->level, ' ',
35890
2.58k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (':' | '**')"));
35891
2.58k
    }
35892
2.58k
    _res = NULL;
35893
2.59k
  done:
35894
2.59k
    p->level--;
35895
2.59k
    return _res;
35896
2.58k
}
35897
35898
// _tmp_134: lambda_param_no_default | ','
35899
static void *
35900
_tmp_134_rule(Parser *p)
35901
2.74k
{
35902
2.74k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35903
0
        _Pypegen_stack_overflow(p);
35904
0
    }
35905
2.74k
    if (p->error_indicator) {
35906
0
        p->level--;
35907
0
        return NULL;
35908
0
    }
35909
2.74k
    void * _res = NULL;
35910
2.74k
    int _mark = p->mark;
35911
2.74k
    { // lambda_param_no_default
35912
2.74k
        if (p->error_indicator) {
35913
0
            p->level--;
35914
0
            return NULL;
35915
0
        }
35916
2.74k
        D(fprintf(stderr, "%*c> _tmp_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35917
2.74k
        arg_ty lambda_param_no_default_var;
35918
2.74k
        if (
35919
2.74k
            (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
35920
2.74k
        )
35921
883
        {
35922
883
            D(fprintf(stderr, "%*c+ _tmp_134[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35923
883
            _res = lambda_param_no_default_var;
35924
883
            goto done;
35925
883
        }
35926
1.86k
        p->mark = _mark;
35927
1.86k
        D(fprintf(stderr, "%*c%s _tmp_134[%d-%d]: %s failed!\n", p->level, ' ',
35928
1.86k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
35929
1.86k
    }
35930
0
    { // ','
35931
1.86k
        if (p->error_indicator) {
35932
2
            p->level--;
35933
2
            return NULL;
35934
2
        }
35935
1.85k
        D(fprintf(stderr, "%*c> _tmp_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35936
1.85k
        Token * _literal;
35937
1.85k
        if (
35938
1.85k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
35939
1.85k
        )
35940
1.31k
        {
35941
1.31k
            D(fprintf(stderr, "%*c+ _tmp_134[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35942
1.31k
            _res = _literal;
35943
1.31k
            goto done;
35944
1.31k
        }
35945
549
        p->mark = _mark;
35946
549
        D(fprintf(stderr, "%*c%s _tmp_134[%d-%d]: %s failed!\n", p->level, ' ',
35947
549
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35948
549
    }
35949
549
    _res = NULL;
35950
2.74k
  done:
35951
2.74k
    p->level--;
35952
2.74k
    return _res;
35953
549
}
35954
35955
// _tmp_135: bitwise_or ((',' bitwise_or))* ','?
35956
static void *
35957
_tmp_135_rule(Parser *p)
35958
3.10k
{
35959
3.10k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
35960
0
        _Pypegen_stack_overflow(p);
35961
0
    }
35962
3.10k
    if (p->error_indicator) {
35963
0
        p->level--;
35964
0
        return NULL;
35965
0
    }
35966
3.10k
    void * _res = NULL;
35967
3.10k
    int _mark = p->mark;
35968
3.10k
    { // bitwise_or ((',' bitwise_or))* ','?
35969
3.10k
        if (p->error_indicator) {
35970
0
            p->level--;
35971
0
            return NULL;
35972
0
        }
35973
3.10k
        D(fprintf(stderr, "%*c> _tmp_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or ((',' bitwise_or))* ','?"));
35974
3.10k
        asdl_seq * _loop0_171_var;
35975
3.10k
        void *_opt_var;
35976
3.10k
        UNUSED(_opt_var); // Silence compiler warnings
35977
3.10k
        expr_ty bitwise_or_var;
35978
3.10k
        if (
35979
3.10k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
35980
632
            &&
35981
632
            (_loop0_171_var = _loop0_171_rule(p))  // ((',' bitwise_or))*
35982
632
            &&
35983
632
            (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
35984
3.10k
        )
35985
111
        {
35986
111
            D(fprintf(stderr, "%*c+ _tmp_135[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or ((',' bitwise_or))* ','?"));
35987
111
            _res = _PyPegen_dummy_name(p, bitwise_or_var, _loop0_171_var, _opt_var);
35988
111
            goto done;
35989
111
        }
35990
2.99k
        p->mark = _mark;
35991
2.99k
        D(fprintf(stderr, "%*c%s _tmp_135[%d-%d]: %s failed!\n", p->level, ' ',
35992
2.99k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or ((',' bitwise_or))* ','?"));
35993
2.99k
    }
35994
2.99k
    _res = NULL;
35995
3.10k
  done:
35996
3.10k
    p->level--;
35997
3.10k
    return _res;
35998
2.99k
}
35999
36000
// _loop0_136: ',' dotted_name
36001
static asdl_seq *
36002
_loop0_136_rule(Parser *p)
36003
729
{
36004
729
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36005
0
        _Pypegen_stack_overflow(p);
36006
0
    }
36007
729
    if (p->error_indicator) {
36008
0
        p->level--;
36009
0
        return NULL;
36010
0
    }
36011
729
    void *_res = NULL;
36012
729
    int _mark = p->mark;
36013
729
    void **_children = PyMem_Malloc(sizeof(void *));
36014
729
    if (!_children) {
36015
0
        p->error_indicator = 1;
36016
0
        PyErr_NoMemory();
36017
0
        p->level--;
36018
0
        return NULL;
36019
0
    }
36020
729
    Py_ssize_t _children_capacity = 1;
36021
729
    Py_ssize_t _n = 0;
36022
729
    { // ',' dotted_name
36023
729
        if (p->error_indicator) {
36024
0
            p->level--;
36025
0
            return NULL;
36026
0
        }
36027
729
        D(fprintf(stderr, "%*c> _loop0_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' dotted_name"));
36028
729
        Token * _literal;
36029
729
        expr_ty elem;
36030
729
        while (
36031
2.60k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36032
1.89k
            &&
36033
1.89k
            (elem = dotted_name_rule(p))  // dotted_name
36034
729
        )
36035
1.87k
        {
36036
1.87k
            _res = elem;
36037
1.87k
            if (_res == NULL && PyErr_Occurred()) {
36038
0
                p->error_indicator = 1;
36039
0
                PyMem_Free(_children);
36040
0
                p->level--;
36041
0
                return NULL;
36042
0
            }
36043
1.87k
            if (_n == _children_capacity) {
36044
552
                _children_capacity *= 2;
36045
552
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
36046
552
                if (!_new_children) {
36047
0
                    PyMem_Free(_children);
36048
0
                    p->error_indicator = 1;
36049
0
                    PyErr_NoMemory();
36050
0
                    p->level--;
36051
0
                    return NULL;
36052
0
                }
36053
552
                _children = _new_children;
36054
552
            }
36055
1.87k
            _children[_n++] = _res;
36056
1.87k
            _mark = p->mark;
36057
1.87k
        }
36058
729
        p->mark = _mark;
36059
729
        D(fprintf(stderr, "%*c%s _loop0_136[%d-%d]: %s failed!\n", p->level, ' ',
36060
729
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' dotted_name"));
36061
729
    }
36062
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
36063
729
    if (!_seq) {
36064
0
        PyMem_Free(_children);
36065
0
        p->error_indicator = 1;
36066
0
        PyErr_NoMemory();
36067
0
        p->level--;
36068
0
        return NULL;
36069
0
    }
36070
2.60k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
36071
729
    PyMem_Free(_children);
36072
729
    p->level--;
36073
729
    return _seq;
36074
729
}
36075
36076
// _gather_137: dotted_name _loop0_136
36077
static asdl_seq *
36078
_gather_137_rule(Parser *p)
36079
737
{
36080
737
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36081
0
        _Pypegen_stack_overflow(p);
36082
0
    }
36083
737
    if (p->error_indicator) {
36084
0
        p->level--;
36085
0
        return NULL;
36086
0
    }
36087
737
    asdl_seq * _res = NULL;
36088
737
    int _mark = p->mark;
36089
737
    { // dotted_name _loop0_136
36090
737
        if (p->error_indicator) {
36091
0
            p->level--;
36092
0
            return NULL;
36093
0
        }
36094
737
        D(fprintf(stderr, "%*c> _gather_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name _loop0_136"));
36095
737
        expr_ty elem;
36096
737
        asdl_seq * seq;
36097
737
        if (
36098
737
            (elem = dotted_name_rule(p))  // dotted_name
36099
729
            &&
36100
729
            (seq = _loop0_136_rule(p))  // _loop0_136
36101
737
        )
36102
729
        {
36103
729
            D(fprintf(stderr, "%*c+ _gather_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name _loop0_136"));
36104
729
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
36105
729
            goto done;
36106
729
        }
36107
8
        p->mark = _mark;
36108
8
        D(fprintf(stderr, "%*c%s _gather_137[%d-%d]: %s failed!\n", p->level, ' ',
36109
8
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name _loop0_136"));
36110
8
    }
36111
8
    _res = NULL;
36112
737
  done:
36113
737
    p->level--;
36114
737
    return _res;
36115
8
}
36116
36117
// _tmp_138: NAME (',' | ')' | NEWLINE)
36118
static void *
36119
_tmp_138_rule(Parser *p)
36120
593
{
36121
593
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36122
0
        _Pypegen_stack_overflow(p);
36123
0
    }
36124
593
    if (p->error_indicator) {
36125
0
        p->level--;
36126
0
        return NULL;
36127
0
    }
36128
593
    void * _res = NULL;
36129
593
    int _mark = p->mark;
36130
593
    { // NAME (',' | ')' | NEWLINE)
36131
593
        if (p->error_indicator) {
36132
0
            p->level--;
36133
0
            return NULL;
36134
0
        }
36135
593
        D(fprintf(stderr, "%*c> _tmp_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME (',' | ')' | NEWLINE)"));
36136
593
        void *_tmp_172_var;
36137
593
        expr_ty name_var;
36138
593
        if (
36139
593
            (name_var = _PyPegen_name_token(p))  // NAME
36140
578
            &&
36141
578
            (_tmp_172_var = _tmp_172_rule(p))  // ',' | ')' | NEWLINE
36142
593
        )
36143
560
        {
36144
560
            D(fprintf(stderr, "%*c+ _tmp_138[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME (',' | ')' | NEWLINE)"));
36145
560
            _res = _PyPegen_dummy_name(p, name_var, _tmp_172_var);
36146
560
            goto done;
36147
560
        }
36148
33
        p->mark = _mark;
36149
33
        D(fprintf(stderr, "%*c%s _tmp_138[%d-%d]: %s failed!\n", p->level, ' ',
36150
33
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME (',' | ')' | NEWLINE)"));
36151
33
    }
36152
33
    _res = NULL;
36153
593
  done:
36154
593
    p->level--;
36155
593
    return _res;
36156
33
}
36157
36158
// _loop0_139: ',' (expression ['as' star_target])
36159
static asdl_seq *
36160
_loop0_139_rule(Parser *p)
36161
2.06k
{
36162
2.06k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36163
0
        _Pypegen_stack_overflow(p);
36164
0
    }
36165
2.06k
    if (p->error_indicator) {
36166
0
        p->level--;
36167
0
        return NULL;
36168
0
    }
36169
2.06k
    void *_res = NULL;
36170
2.06k
    int _mark = p->mark;
36171
2.06k
    void **_children = PyMem_Malloc(sizeof(void *));
36172
2.06k
    if (!_children) {
36173
0
        p->error_indicator = 1;
36174
0
        PyErr_NoMemory();
36175
0
        p->level--;
36176
0
        return NULL;
36177
0
    }
36178
2.06k
    Py_ssize_t _children_capacity = 1;
36179
2.06k
    Py_ssize_t _n = 0;
36180
2.06k
    { // ',' (expression ['as' star_target])
36181
2.06k
        if (p->error_indicator) {
36182
0
            p->level--;
36183
0
            return NULL;
36184
0
        }
36185
2.06k
        D(fprintf(stderr, "%*c> _loop0_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])"));
36186
2.06k
        Token * _literal;
36187
2.06k
        void *elem;
36188
2.06k
        while (
36189
4.14k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36190
2.10k
            &&
36191
2.10k
            (elem = _tmp_173_rule(p))  // expression ['as' star_target]
36192
2.06k
        )
36193
2.07k
        {
36194
2.07k
            _res = elem;
36195
2.07k
            if (_res == NULL && PyErr_Occurred()) {
36196
0
                p->error_indicator = 1;
36197
0
                PyMem_Free(_children);
36198
0
                p->level--;
36199
0
                return NULL;
36200
0
            }
36201
2.07k
            if (_n == _children_capacity) {
36202
640
                _children_capacity *= 2;
36203
640
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
36204
640
                if (!_new_children) {
36205
0
                    PyMem_Free(_children);
36206
0
                    p->error_indicator = 1;
36207
0
                    PyErr_NoMemory();
36208
0
                    p->level--;
36209
0
                    return NULL;
36210
0
                }
36211
640
                _children = _new_children;
36212
640
            }
36213
2.07k
            _children[_n++] = _res;
36214
2.07k
            _mark = p->mark;
36215
2.07k
        }
36216
2.06k
        p->mark = _mark;
36217
2.06k
        D(fprintf(stderr, "%*c%s _loop0_139[%d-%d]: %s failed!\n", p->level, ' ',
36218
2.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])"));
36219
2.06k
    }
36220
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
36221
2.06k
    if (!_seq) {
36222
0
        PyMem_Free(_children);
36223
0
        p->error_indicator = 1;
36224
0
        PyErr_NoMemory();
36225
0
        p->level--;
36226
0
        return NULL;
36227
0
    }
36228
4.14k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
36229
2.06k
    PyMem_Free(_children);
36230
2.06k
    p->level--;
36231
2.06k
    return _seq;
36232
2.06k
}
36233
36234
// _gather_140: (expression ['as' star_target]) _loop0_139
36235
static asdl_seq *
36236
_gather_140_rule(Parser *p)
36237
2.48k
{
36238
2.48k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36239
0
        _Pypegen_stack_overflow(p);
36240
0
    }
36241
2.48k
    if (p->error_indicator) {
36242
0
        p->level--;
36243
0
        return NULL;
36244
0
    }
36245
2.48k
    asdl_seq * _res = NULL;
36246
2.48k
    int _mark = p->mark;
36247
2.48k
    { // (expression ['as' star_target]) _loop0_139
36248
2.48k
        if (p->error_indicator) {
36249
0
            p->level--;
36250
0
            return NULL;
36251
0
        }
36252
2.48k
        D(fprintf(stderr, "%*c> _gather_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_139"));
36253
2.48k
        void *elem;
36254
2.48k
        asdl_seq * seq;
36255
2.48k
        if (
36256
2.48k
            (elem = _tmp_173_rule(p))  // expression ['as' star_target]
36257
2.06k
            &&
36258
2.06k
            (seq = _loop0_139_rule(p))  // _loop0_139
36259
2.48k
        )
36260
2.06k
        {
36261
2.06k
            D(fprintf(stderr, "%*c+ _gather_140[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_139"));
36262
2.06k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
36263
2.06k
            goto done;
36264
2.06k
        }
36265
412
        p->mark = _mark;
36266
412
        D(fprintf(stderr, "%*c%s _gather_140[%d-%d]: %s failed!\n", p->level, ' ',
36267
412
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_139"));
36268
412
    }
36269
412
    _res = NULL;
36270
2.48k
  done:
36271
2.48k
    p->level--;
36272
2.48k
    return _res;
36273
412
}
36274
36275
// _loop0_141: ',' (expressions ['as' star_target])
36276
static asdl_seq *
36277
_loop0_141_rule(Parser *p)
36278
1.48k
{
36279
1.48k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36280
0
        _Pypegen_stack_overflow(p);
36281
0
    }
36282
1.48k
    if (p->error_indicator) {
36283
0
        p->level--;
36284
0
        return NULL;
36285
0
    }
36286
1.48k
    void *_res = NULL;
36287
1.48k
    int _mark = p->mark;
36288
1.48k
    void **_children = PyMem_Malloc(sizeof(void *));
36289
1.48k
    if (!_children) {
36290
0
        p->error_indicator = 1;
36291
0
        PyErr_NoMemory();
36292
0
        p->level--;
36293
0
        return NULL;
36294
0
    }
36295
1.48k
    Py_ssize_t _children_capacity = 1;
36296
1.48k
    Py_ssize_t _n = 0;
36297
1.48k
    { // ',' (expressions ['as' star_target])
36298
1.48k
        if (p->error_indicator) {
36299
0
            p->level--;
36300
0
            return NULL;
36301
0
        }
36302
1.48k
        D(fprintf(stderr, "%*c> _loop0_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])"));
36303
1.48k
        Token * _literal;
36304
1.48k
        void *elem;
36305
1.48k
        while (
36306
3.05k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36307
1.61k
            &&
36308
1.61k
            (elem = _tmp_174_rule(p))  // expressions ['as' star_target]
36309
1.48k
        )
36310
1.56k
        {
36311
1.56k
            _res = elem;
36312
1.56k
            if (_res == NULL && PyErr_Occurred()) {
36313
0
                p->error_indicator = 1;
36314
0
                PyMem_Free(_children);
36315
0
                p->level--;
36316
0
                return NULL;
36317
0
            }
36318
1.56k
            if (_n == _children_capacity) {
36319
271
                _children_capacity *= 2;
36320
271
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
36321
271
                if (!_new_children) {
36322
0
                    PyMem_Free(_children);
36323
0
                    p->error_indicator = 1;
36324
0
                    PyErr_NoMemory();
36325
0
                    p->level--;
36326
0
                    return NULL;
36327
0
                }
36328
271
                _children = _new_children;
36329
271
            }
36330
1.56k
            _children[_n++] = _res;
36331
1.56k
            _mark = p->mark;
36332
1.56k
        }
36333
1.48k
        p->mark = _mark;
36334
1.48k
        D(fprintf(stderr, "%*c%s _loop0_141[%d-%d]: %s failed!\n", p->level, ' ',
36335
1.48k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])"));
36336
1.48k
    }
36337
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
36338
1.48k
    if (!_seq) {
36339
0
        PyMem_Free(_children);
36340
0
        p->error_indicator = 1;
36341
0
        PyErr_NoMemory();
36342
0
        p->level--;
36343
0
        return NULL;
36344
0
    }
36345
3.05k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
36346
1.48k
    PyMem_Free(_children);
36347
1.48k
    p->level--;
36348
1.48k
    return _seq;
36349
1.48k
}
36350
36351
// _gather_142: (expressions ['as' star_target]) _loop0_141
36352
static asdl_seq *
36353
_gather_142_rule(Parser *p)
36354
1.90k
{
36355
1.90k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36356
0
        _Pypegen_stack_overflow(p);
36357
0
    }
36358
1.90k
    if (p->error_indicator) {
36359
0
        p->level--;
36360
0
        return NULL;
36361
0
    }
36362
1.90k
    asdl_seq * _res = NULL;
36363
1.90k
    int _mark = p->mark;
36364
1.90k
    { // (expressions ['as' star_target]) _loop0_141
36365
1.90k
        if (p->error_indicator) {
36366
0
            p->level--;
36367
0
            return NULL;
36368
0
        }
36369
1.90k
        D(fprintf(stderr, "%*c> _gather_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_141"));
36370
1.90k
        void *elem;
36371
1.90k
        asdl_seq * seq;
36372
1.90k
        if (
36373
1.90k
            (elem = _tmp_174_rule(p))  // expressions ['as' star_target]
36374
1.48k
            &&
36375
1.48k
            (seq = _loop0_141_rule(p))  // _loop0_141
36376
1.90k
        )
36377
1.48k
        {
36378
1.48k
            D(fprintf(stderr, "%*c+ _gather_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_141"));
36379
1.48k
            _res = _PyPegen_seq_insert_in_front(p, elem, seq);
36380
1.48k
            goto done;
36381
1.48k
        }
36382
411
        p->mark = _mark;
36383
411
        D(fprintf(stderr, "%*c%s _gather_142[%d-%d]: %s failed!\n", p->level, ' ',
36384
411
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_141"));
36385
411
    }
36386
411
    _res = NULL;
36387
1.90k
  done:
36388
1.90k
    p->level--;
36389
1.90k
    return _res;
36390
411
}
36391
36392
// _tmp_143: 'except' | 'finally'
36393
static void *
36394
_tmp_143_rule(Parser *p)
36395
1.90k
{
36396
1.90k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36397
0
        _Pypegen_stack_overflow(p);
36398
0
    }
36399
1.90k
    if (p->error_indicator) {
36400
0
        p->level--;
36401
0
        return NULL;
36402
0
    }
36403
1.90k
    void * _res = NULL;
36404
1.90k
    int _mark = p->mark;
36405
1.90k
    { // 'except'
36406
1.90k
        if (p->error_indicator) {
36407
0
            p->level--;
36408
0
            return NULL;
36409
0
        }
36410
1.90k
        D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'"));
36411
1.90k
        Token * _keyword;
36412
1.90k
        if (
36413
1.90k
            (_keyword = _PyPegen_expect_token(p, 686))  // token='except'
36414
1.90k
        )
36415
1.39k
        {
36416
1.39k
            D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'"));
36417
1.39k
            _res = _keyword;
36418
1.39k
            goto done;
36419
1.39k
        }
36420
501
        p->mark = _mark;
36421
501
        D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ',
36422
501
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except'"));
36423
501
    }
36424
0
    { // 'finally'
36425
501
        if (p->error_indicator) {
36426
1
            p->level--;
36427
1
            return NULL;
36428
1
        }
36429
500
        D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'"));
36430
500
        Token * _keyword;
36431
500
        if (
36432
500
            (_keyword = _PyPegen_expect_token(p, 682))  // token='finally'
36433
500
        )
36434
464
        {
36435
464
            D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'"));
36436
464
            _res = _keyword;
36437
464
            goto done;
36438
464
        }
36439
36
        p->mark = _mark;
36440
36
        D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ',
36441
36
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally'"));
36442
36
    }
36443
36
    _res = NULL;
36444
1.89k
  done:
36445
1.89k
    p->level--;
36446
1.89k
    return _res;
36447
36
}
36448
36449
// _loop0_144: block
36450
static asdl_seq *
36451
_loop0_144_rule(Parser *p)
36452
3.86k
{
36453
3.86k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36454
0
        _Pypegen_stack_overflow(p);
36455
0
    }
36456
3.86k
    if (p->error_indicator) {
36457
0
        p->level--;
36458
0
        return NULL;
36459
0
    }
36460
3.86k
    void *_res = NULL;
36461
3.86k
    int _mark = p->mark;
36462
3.86k
    void **_children = PyMem_Malloc(sizeof(void *));
36463
3.86k
    if (!_children) {
36464
0
        p->error_indicator = 1;
36465
0
        PyErr_NoMemory();
36466
0
        p->level--;
36467
0
        return NULL;
36468
0
    }
36469
3.86k
    Py_ssize_t _children_capacity = 1;
36470
3.86k
    Py_ssize_t _n = 0;
36471
3.86k
    { // block
36472
3.86k
        if (p->error_indicator) {
36473
0
            p->level--;
36474
0
            return NULL;
36475
0
        }
36476
3.86k
        D(fprintf(stderr, "%*c> _loop0_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "block"));
36477
3.86k
        asdl_stmt_seq* block_var;
36478
3.86k
        while (
36479
7.55k
            (block_var = block_rule(p))  // block
36480
3.86k
        )
36481
3.69k
        {
36482
3.69k
            _res = block_var;
36483
3.69k
            if (_n == _children_capacity) {
36484
0
                _children_capacity *= 2;
36485
0
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
36486
0
                if (!_new_children) {
36487
0
                    PyMem_Free(_children);
36488
0
                    p->error_indicator = 1;
36489
0
                    PyErr_NoMemory();
36490
0
                    p->level--;
36491
0
                    return NULL;
36492
0
                }
36493
0
                _children = _new_children;
36494
0
            }
36495
3.69k
            _children[_n++] = _res;
36496
3.69k
            _mark = p->mark;
36497
3.69k
        }
36498
3.86k
        p->mark = _mark;
36499
3.86k
        D(fprintf(stderr, "%*c%s _loop0_144[%d-%d]: %s failed!\n", p->level, ' ',
36500
3.86k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "block"));
36501
3.86k
    }
36502
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
36503
3.86k
    if (!_seq) {
36504
0
        PyMem_Free(_children);
36505
0
        p->error_indicator = 1;
36506
0
        PyErr_NoMemory();
36507
0
        p->level--;
36508
0
        return NULL;
36509
0
    }
36510
7.55k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
36511
3.86k
    PyMem_Free(_children);
36512
3.86k
    p->level--;
36513
3.86k
    return _seq;
36514
3.86k
}
36515
36516
// _tmp_145: expression ['as' NAME]
36517
static void *
36518
_tmp_145_rule(Parser *p)
36519
16
{
36520
16
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36521
0
        _Pypegen_stack_overflow(p);
36522
0
    }
36523
16
    if (p->error_indicator) {
36524
0
        p->level--;
36525
0
        return NULL;
36526
0
    }
36527
16
    void * _res = NULL;
36528
16
    int _mark = p->mark;
36529
16
    { // expression ['as' NAME]
36530
16
        if (p->error_indicator) {
36531
0
            p->level--;
36532
0
            return NULL;
36533
0
        }
36534
16
        D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' NAME]"));
36535
16
        void *_opt_var;
36536
16
        UNUSED(_opt_var); // Silence compiler warnings
36537
16
        expr_ty expression_var;
36538
16
        if (
36539
16
            (expression_var = expression_rule(p))  // expression
36540
3
            &&
36541
3
            (_opt_var = _tmp_21_rule(p), !p->error_indicator)  // ['as' NAME]
36542
16
        )
36543
2
        {
36544
2
            D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' NAME]"));
36545
2
            _res = _PyPegen_dummy_name(p, expression_var, _opt_var);
36546
2
            goto done;
36547
2
        }
36548
14
        p->mark = _mark;
36549
14
        D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ',
36550
14
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' NAME]"));
36551
14
    }
36552
14
    _res = NULL;
36553
16
  done:
36554
16
    p->level--;
36555
16
    return _res;
36556
14
}
36557
36558
// _tmp_146: NEWLINE | ':'
36559
static void *
36560
_tmp_146_rule(Parser *p)
36561
84
{
36562
84
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36563
0
        _Pypegen_stack_overflow(p);
36564
0
    }
36565
84
    if (p->error_indicator) {
36566
0
        p->level--;
36567
0
        return NULL;
36568
0
    }
36569
84
    void * _res = NULL;
36570
84
    int _mark = p->mark;
36571
84
    { // NEWLINE
36572
84
        if (p->error_indicator) {
36573
0
            p->level--;
36574
0
            return NULL;
36575
0
        }
36576
84
        D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
36577
84
        Token * newline_var;
36578
84
        if (
36579
84
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
36580
84
        )
36581
4
        {
36582
4
            D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
36583
4
            _res = newline_var;
36584
4
            goto done;
36585
4
        }
36586
80
        p->mark = _mark;
36587
80
        D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ',
36588
80
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
36589
80
    }
36590
0
    { // ':'
36591
80
        if (p->error_indicator) {
36592
0
            p->level--;
36593
0
            return NULL;
36594
0
        }
36595
80
        D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36596
80
        Token * _literal;
36597
80
        if (
36598
80
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36599
80
        )
36600
2
        {
36601
2
            D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36602
2
            _res = _literal;
36603
2
            goto done;
36604
2
        }
36605
78
        p->mark = _mark;
36606
78
        D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ',
36607
78
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36608
78
    }
36609
78
    _res = NULL;
36610
84
  done:
36611
84
    p->level--;
36612
84
    return _res;
36613
78
}
36614
36615
// _tmp_147: positional_patterns ','
36616
static void *
36617
_tmp_147_rule(Parser *p)
36618
3.12k
{
36619
3.12k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36620
0
        _Pypegen_stack_overflow(p);
36621
0
    }
36622
3.12k
    if (p->error_indicator) {
36623
0
        p->level--;
36624
0
        return NULL;
36625
0
    }
36626
3.12k
    void * _res = NULL;
36627
3.12k
    int _mark = p->mark;
36628
3.12k
    { // positional_patterns ','
36629
3.12k
        if (p->error_indicator) {
36630
0
            p->level--;
36631
0
            return NULL;
36632
0
        }
36633
3.12k
        D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
36634
3.12k
        Token * _literal;
36635
3.12k
        asdl_pattern_seq* positional_patterns_var;
36636
3.12k
        if (
36637
3.12k
            (positional_patterns_var = positional_patterns_rule(p))  // positional_patterns
36638
1.50k
            &&
36639
1.50k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36640
3.12k
        )
36641
583
        {
36642
583
            D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
36643
583
            _res = _PyPegen_dummy_name(p, positional_patterns_var, _literal);
36644
583
            goto done;
36645
583
        }
36646
2.53k
        p->mark = _mark;
36647
2.53k
        D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
36648
2.53k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "positional_patterns ','"));
36649
2.53k
    }
36650
2.53k
    _res = NULL;
36651
3.12k
  done:
36652
3.12k
    p->level--;
36653
3.12k
    return _res;
36654
2.53k
}
36655
36656
// _tmp_148: '}' | ','
36657
static void *
36658
_tmp_148_rule(Parser *p)
36659
3.75k
{
36660
3.75k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36661
0
        _Pypegen_stack_overflow(p);
36662
0
    }
36663
3.75k
    if (p->error_indicator) {
36664
0
        p->level--;
36665
0
        return NULL;
36666
0
    }
36667
3.75k
    void * _res = NULL;
36668
3.75k
    int _mark = p->mark;
36669
3.75k
    { // '}'
36670
3.75k
        if (p->error_indicator) {
36671
0
            p->level--;
36672
0
            return NULL;
36673
0
        }
36674
3.75k
        D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36675
3.75k
        Token * _literal;
36676
3.75k
        if (
36677
3.75k
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36678
3.75k
        )
36679
1
        {
36680
1
            D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
36681
1
            _res = _literal;
36682
1
            goto done;
36683
1
        }
36684
3.75k
        p->mark = _mark;
36685
3.75k
        D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
36686
3.75k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36687
3.75k
    }
36688
0
    { // ','
36689
3.75k
        if (p->error_indicator) {
36690
0
            p->level--;
36691
0
            return NULL;
36692
0
        }
36693
3.75k
        D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
36694
3.75k
        Token * _literal;
36695
3.75k
        if (
36696
3.75k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
36697
3.75k
        )
36698
2
        {
36699
2
            D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
36700
2
            _res = _literal;
36701
2
            goto done;
36702
2
        }
36703
3.74k
        p->mark = _mark;
36704
3.74k
        D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
36705
3.74k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
36706
3.74k
    }
36707
3.74k
    _res = NULL;
36708
3.75k
  done:
36709
3.75k
    p->level--;
36710
3.75k
    return _res;
36711
3.74k
}
36712
36713
// _tmp_149: '=' | '!' | ':' | '}'
36714
static void *
36715
_tmp_149_rule(Parser *p)
36716
225
{
36717
225
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36718
0
        _Pypegen_stack_overflow(p);
36719
0
    }
36720
225
    if (p->error_indicator) {
36721
0
        p->level--;
36722
0
        return NULL;
36723
0
    }
36724
225
    void * _res = NULL;
36725
225
    int _mark = p->mark;
36726
225
    { // '='
36727
225
        if (p->error_indicator) {
36728
0
            p->level--;
36729
0
            return NULL;
36730
0
        }
36731
225
        D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
36732
225
        Token * _literal;
36733
225
        if (
36734
225
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
36735
225
        )
36736
24
        {
36737
24
            D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
36738
24
            _res = _literal;
36739
24
            goto done;
36740
24
        }
36741
201
        p->mark = _mark;
36742
201
        D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
36743
201
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
36744
201
    }
36745
0
    { // '!'
36746
201
        if (p->error_indicator) {
36747
0
            p->level--;
36748
0
            return NULL;
36749
0
        }
36750
201
        D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!'"));
36751
201
        Token * _literal;
36752
201
        if (
36753
201
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
36754
201
        )
36755
26
        {
36756
26
            D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!'"));
36757
26
            _res = _literal;
36758
26
            goto done;
36759
26
        }
36760
175
        p->mark = _mark;
36761
175
        D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
36762
175
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!'"));
36763
175
    }
36764
0
    { // ':'
36765
175
        if (p->error_indicator) {
36766
0
            p->level--;
36767
0
            return NULL;
36768
0
        }
36769
175
        D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36770
175
        Token * _literal;
36771
175
        if (
36772
175
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36773
175
        )
36774
138
        {
36775
138
            D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36776
138
            _res = _literal;
36777
138
            goto done;
36778
138
        }
36779
37
        p->mark = _mark;
36780
37
        D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
36781
37
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36782
37
    }
36783
0
    { // '}'
36784
37
        if (p->error_indicator) {
36785
0
            p->level--;
36786
0
            return NULL;
36787
0
        }
36788
37
        D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36789
37
        Token * _literal;
36790
37
        if (
36791
37
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36792
37
        )
36793
0
        {
36794
0
            D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
36795
0
            _res = _literal;
36796
0
            goto done;
36797
0
        }
36798
37
        p->mark = _mark;
36799
37
        D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
36800
37
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36801
37
    }
36802
37
    _res = NULL;
36803
225
  done:
36804
225
    p->level--;
36805
225
    return _res;
36806
37
}
36807
36808
// _tmp_150: '!' | ':' | '}'
36809
static void *
36810
_tmp_150_rule(Parser *p)
36811
24
{
36812
24
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36813
0
        _Pypegen_stack_overflow(p);
36814
0
    }
36815
24
    if (p->error_indicator) {
36816
0
        p->level--;
36817
0
        return NULL;
36818
0
    }
36819
24
    void * _res = NULL;
36820
24
    int _mark = p->mark;
36821
24
    { // '!'
36822
24
        if (p->error_indicator) {
36823
0
            p->level--;
36824
0
            return NULL;
36825
0
        }
36826
24
        D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!'"));
36827
24
        Token * _literal;
36828
24
        if (
36829
24
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
36830
24
        )
36831
5
        {
36832
5
            D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!'"));
36833
5
            _res = _literal;
36834
5
            goto done;
36835
5
        }
36836
19
        p->mark = _mark;
36837
19
        D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ',
36838
19
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!'"));
36839
19
    }
36840
0
    { // ':'
36841
19
        if (p->error_indicator) {
36842
0
            p->level--;
36843
0
            return NULL;
36844
0
        }
36845
19
        D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36846
19
        Token * _literal;
36847
19
        if (
36848
19
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36849
19
        )
36850
3
        {
36851
3
            D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36852
3
            _res = _literal;
36853
3
            goto done;
36854
3
        }
36855
16
        p->mark = _mark;
36856
16
        D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ',
36857
16
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36858
16
    }
36859
0
    { // '}'
36860
16
        if (p->error_indicator) {
36861
0
            p->level--;
36862
0
            return NULL;
36863
0
        }
36864
16
        D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36865
16
        Token * _literal;
36866
16
        if (
36867
16
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36868
16
        )
36869
0
        {
36870
0
            D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
36871
0
            _res = _literal;
36872
0
            goto done;
36873
0
        }
36874
16
        p->mark = _mark;
36875
16
        D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ',
36876
16
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36877
16
    }
36878
16
    _res = NULL;
36879
24
  done:
36880
24
    p->level--;
36881
24
    return _res;
36882
16
}
36883
36884
// _tmp_151: '!' NAME
36885
static void *
36886
_tmp_151_rule(Parser *p)
36887
293
{
36888
293
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36889
0
        _Pypegen_stack_overflow(p);
36890
0
    }
36891
293
    if (p->error_indicator) {
36892
0
        p->level--;
36893
0
        return NULL;
36894
0
    }
36895
293
    void * _res = NULL;
36896
293
    int _mark = p->mark;
36897
293
    { // '!' NAME
36898
293
        if (p->error_indicator) {
36899
0
            p->level--;
36900
0
            return NULL;
36901
0
        }
36902
293
        D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!' NAME"));
36903
293
        Token * _literal;
36904
293
        expr_ty name_var;
36905
293
        if (
36906
293
            (_literal = _PyPegen_expect_token(p, 54))  // token='!'
36907
11
            &&
36908
11
            (name_var = _PyPegen_name_token(p))  // NAME
36909
293
        )
36910
11
        {
36911
11
            D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!' NAME"));
36912
11
            _res = _PyPegen_dummy_name(p, _literal, name_var);
36913
11
            goto done;
36914
11
        }
36915
282
        p->mark = _mark;
36916
282
        D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ',
36917
282
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!' NAME"));
36918
282
    }
36919
282
    _res = NULL;
36920
293
  done:
36921
293
    p->level--;
36922
293
    return _res;
36923
282
}
36924
36925
// _tmp_152: ':' | '}'
36926
static void *
36927
_tmp_152_rule(Parser *p)
36928
182
{
36929
182
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36930
0
        _Pypegen_stack_overflow(p);
36931
0
    }
36932
182
    if (p->error_indicator) {
36933
0
        p->level--;
36934
0
        return NULL;
36935
0
    }
36936
182
    void * _res = NULL;
36937
182
    int _mark = p->mark;
36938
182
    { // ':'
36939
182
        if (p->error_indicator) {
36940
0
            p->level--;
36941
0
            return NULL;
36942
0
        }
36943
182
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36944
182
        Token * _literal;
36945
182
        if (
36946
182
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36947
182
        )
36948
145
        {
36949
145
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36950
145
            _res = _literal;
36951
145
            goto done;
36952
145
        }
36953
37
        p->mark = _mark;
36954
37
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36955
37
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36956
37
    }
36957
0
    { // '}'
36958
37
        if (p->error_indicator) {
36959
0
            p->level--;
36960
0
            return NULL;
36961
0
        }
36962
37
        D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
36963
37
        Token * _literal;
36964
37
        if (
36965
37
            (_literal = _PyPegen_expect_token(p, 26))  // token='}'
36966
37
        )
36967
6
        {
36968
6
            D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
36969
6
            _res = _literal;
36970
6
            goto done;
36971
6
        }
36972
31
        p->mark = _mark;
36973
31
        D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
36974
31
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
36975
31
    }
36976
31
    _res = NULL;
36977
182
  done:
36978
182
    p->level--;
36979
182
    return _res;
36980
31
}
36981
36982
// _tmp_153: fstring | string
36983
static void *
36984
_tmp_153_rule(Parser *p)
36985
217k
{
36986
217k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
36987
1
        _Pypegen_stack_overflow(p);
36988
1
    }
36989
217k
    if (p->error_indicator) {
36990
5
        p->level--;
36991
5
        return NULL;
36992
5
    }
36993
217k
    void * _res = NULL;
36994
217k
    int _mark = p->mark;
36995
217k
    { // fstring
36996
217k
        if (p->error_indicator) {
36997
0
            p->level--;
36998
0
            return NULL;
36999
0
        }
37000
217k
        D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "fstring"));
37001
217k
        expr_ty fstring_var;
37002
217k
        if (
37003
217k
            (fstring_var = fstring_rule(p))  // fstring
37004
217k
        )
37005
13.3k
        {
37006
13.3k
            D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "fstring"));
37007
13.3k
            _res = fstring_var;
37008
13.3k
            goto done;
37009
13.3k
        }
37010
203k
        p->mark = _mark;
37011
203k
        D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
37012
203k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "fstring"));
37013
203k
    }
37014
0
    { // string
37015
203k
        if (p->error_indicator) {
37016
2.39k
            p->level--;
37017
2.39k
            return NULL;
37018
2.39k
        }
37019
201k
        D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "string"));
37020
201k
        expr_ty string_var;
37021
201k
        if (
37022
201k
            (string_var = string_rule(p))  // string
37023
201k
        )
37024
72.3k
        {
37025
72.3k
            D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "string"));
37026
72.3k
            _res = string_var;
37027
72.3k
            goto done;
37028
72.3k
        }
37029
129k
        p->mark = _mark;
37030
129k
        D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
37031
129k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "string"));
37032
129k
    }
37033
129k
    _res = NULL;
37034
214k
  done:
37035
214k
    p->level--;
37036
214k
    return _res;
37037
129k
}
37038
37039
// _tmp_154: '+' | '-' | '*' | '/' | '%' | '//' | '@'
37040
static void *
37041
_tmp_154_rule(Parser *p)
37042
209k
{
37043
209k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37044
0
        _Pypegen_stack_overflow(p);
37045
0
    }
37046
209k
    if (p->error_indicator) {
37047
0
        p->level--;
37048
0
        return NULL;
37049
0
    }
37050
209k
    void * _res = NULL;
37051
209k
    int _mark = p->mark;
37052
209k
    { // '+'
37053
209k
        if (p->error_indicator) {
37054
0
            p->level--;
37055
0
            return NULL;
37056
0
        }
37057
209k
        D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
37058
209k
        Token * _literal;
37059
209k
        if (
37060
209k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
37061
209k
        )
37062
1.18k
        {
37063
1.18k
            D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
37064
1.18k
            _res = _literal;
37065
1.18k
            goto done;
37066
1.18k
        }
37067
208k
        p->mark = _mark;
37068
208k
        D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
37069
208k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
37070
208k
    }
37071
0
    { // '-'
37072
208k
        if (p->error_indicator) {
37073
0
            p->level--;
37074
0
            return NULL;
37075
0
        }
37076
208k
        D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
37077
208k
        Token * _literal;
37078
208k
        if (
37079
208k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
37080
208k
        )
37081
538
        {
37082
538
            D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
37083
538
            _res = _literal;
37084
538
            goto done;
37085
538
        }
37086
207k
        p->mark = _mark;
37087
207k
        D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
37088
207k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
37089
207k
    }
37090
0
    { // '*'
37091
207k
        if (p->error_indicator) {
37092
0
            p->level--;
37093
0
            return NULL;
37094
0
        }
37095
207k
        D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
37096
207k
        Token * _literal;
37097
207k
        if (
37098
207k
            (_literal = _PyPegen_expect_token(p, 16))  // token='*'
37099
207k
        )
37100
656
        {
37101
656
            D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
37102
656
            _res = _literal;
37103
656
            goto done;
37104
656
        }
37105
207k
        p->mark = _mark;
37106
207k
        D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
37107
207k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
37108
207k
    }
37109
0
    { // '/'
37110
207k
        if (p->error_indicator) {
37111
0
            p->level--;
37112
0
            return NULL;
37113
0
        }
37114
207k
        D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/'"));
37115
207k
        Token * _literal;
37116
207k
        if (
37117
207k
            (_literal = _PyPegen_expect_token(p, 17))  // token='/'
37118
207k
        )
37119
322
        {
37120
322
            D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/'"));
37121
322
            _res = _literal;
37122
322
            goto done;
37123
322
        }
37124
206k
        p->mark = _mark;
37125
206k
        D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
37126
206k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/'"));
37127
206k
    }
37128
0
    { // '%'
37129
206k
        if (p->error_indicator) {
37130
0
            p->level--;
37131
0
            return NULL;
37132
0
        }
37133
206k
        D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'%'"));
37134
206k
        Token * _literal;
37135
206k
        if (
37136
206k
            (_literal = _PyPegen_expect_token(p, 24))  // token='%'
37137
206k
        )
37138
335
        {
37139
335
            D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'%'"));
37140
335
            _res = _literal;
37141
335
            goto done;
37142
335
        }
37143
206k
        p->mark = _mark;
37144
206k
        D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
37145
206k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'%'"));
37146
206k
    }
37147
0
    { // '//'
37148
206k
        if (p->error_indicator) {
37149
0
            p->level--;
37150
0
            return NULL;
37151
0
        }
37152
206k
        D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'//'"));
37153
206k
        Token * _literal;
37154
206k
        if (
37155
206k
            (_literal = _PyPegen_expect_token(p, 47))  // token='//'
37156
206k
        )
37157
206
        {
37158
206
            D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'//'"));
37159
206
            _res = _literal;
37160
206
            goto done;
37161
206
        }
37162
206k
        p->mark = _mark;
37163
206k
        D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
37164
206k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'//'"));
37165
206k
    }
37166
0
    { // '@'
37167
206k
        if (p->error_indicator) {
37168
0
            p->level--;
37169
0
            return NULL;
37170
0
        }
37171
206k
        D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
37172
206k
        Token * _literal;
37173
206k
        if (
37174
206k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
37175
206k
        )
37176
334
        {
37177
334
            D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
37178
334
            _res = _literal;
37179
334
            goto done;
37180
334
        }
37181
205k
        p->mark = _mark;
37182
205k
        D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
37183
205k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
37184
205k
    }
37185
205k
    _res = NULL;
37186
209k
  done:
37187
209k
    p->level--;
37188
209k
    return _res;
37189
205k
}
37190
37191
// _tmp_155: '+' | '-' | '~'
37192
static void *
37193
_tmp_155_rule(Parser *p)
37194
308k
{
37195
308k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37196
1
        _Pypegen_stack_overflow(p);
37197
1
    }
37198
308k
    if (p->error_indicator) {
37199
1
        p->level--;
37200
1
        return NULL;
37201
1
    }
37202
308k
    void * _res = NULL;
37203
308k
    int _mark = p->mark;
37204
308k
    { // '+'
37205
308k
        if (p->error_indicator) {
37206
0
            p->level--;
37207
0
            return NULL;
37208
0
        }
37209
308k
        D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
37210
308k
        Token * _literal;
37211
308k
        if (
37212
308k
            (_literal = _PyPegen_expect_token(p, 14))  // token='+'
37213
308k
        )
37214
4.95k
        {
37215
4.95k
            D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
37216
4.95k
            _res = _literal;
37217
4.95k
            goto done;
37218
4.95k
        }
37219
303k
        p->mark = _mark;
37220
303k
        D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
37221
303k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
37222
303k
    }
37223
0
    { // '-'
37224
303k
        if (p->error_indicator) {
37225
0
            p->level--;
37226
0
            return NULL;
37227
0
        }
37228
303k
        D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
37229
303k
        Token * _literal;
37230
303k
        if (
37231
303k
            (_literal = _PyPegen_expect_token(p, 15))  // token='-'
37232
303k
        )
37233
4.28k
        {
37234
4.28k
            D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
37235
4.28k
            _res = _literal;
37236
4.28k
            goto done;
37237
4.28k
        }
37238
299k
        p->mark = _mark;
37239
299k
        D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
37240
299k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
37241
299k
    }
37242
0
    { // '~'
37243
299k
        if (p->error_indicator) {
37244
0
            p->level--;
37245
0
            return NULL;
37246
0
        }
37247
299k
        D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'~'"));
37248
299k
        Token * _literal;
37249
299k
        if (
37250
299k
            (_literal = _PyPegen_expect_token(p, 31))  // token='~'
37251
299k
        )
37252
1.36k
        {
37253
1.36k
            D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'~'"));
37254
1.36k
            _res = _literal;
37255
1.36k
            goto done;
37256
1.36k
        }
37257
297k
        p->mark = _mark;
37258
297k
        D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
37259
297k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'~'"));
37260
297k
    }
37261
297k
    _res = NULL;
37262
308k
  done:
37263
308k
    p->level--;
37264
308k
    return _res;
37265
297k
}
37266
37267
// _tmp_156: star_targets '='
37268
static void *
37269
_tmp_156_rule(Parser *p)
37270
279k
{
37271
279k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37272
0
        _Pypegen_stack_overflow(p);
37273
0
    }
37274
279k
    if (p->error_indicator) {
37275
0
        p->level--;
37276
0
        return NULL;
37277
0
    }
37278
279k
    void * _res = NULL;
37279
279k
    int _mark = p->mark;
37280
279k
    { // star_targets '='
37281
279k
        if (p->error_indicator) {
37282
0
            p->level--;
37283
0
            return NULL;
37284
0
        }
37285
279k
        D(fprintf(stderr, "%*c> _tmp_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
37286
279k
        Token * _literal;
37287
279k
        expr_ty z;
37288
279k
        if (
37289
279k
            (z = star_targets_rule(p))  // star_targets
37290
139k
            &&
37291
139k
            (_literal = _PyPegen_expect_token(p, 22))  // token='='
37292
279k
        )
37293
18.3k
        {
37294
18.3k
            D(fprintf(stderr, "%*c+ _tmp_156[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
37295
18.3k
            _res = z;
37296
18.3k
            if (_res == NULL && PyErr_Occurred()) {
37297
0
                p->error_indicator = 1;
37298
0
                p->level--;
37299
0
                return NULL;
37300
0
            }
37301
18.3k
            goto done;
37302
18.3k
        }
37303
260k
        p->mark = _mark;
37304
260k
        D(fprintf(stderr, "%*c%s _tmp_156[%d-%d]: %s failed!\n", p->level, ' ',
37305
260k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
37306
260k
    }
37307
260k
    _res = NULL;
37308
279k
  done:
37309
279k
    p->level--;
37310
279k
    return _res;
37311
260k
}
37312
37313
// _tmp_157: '.' | '...'
37314
static void *
37315
_tmp_157_rule(Parser *p)
37316
10.0k
{
37317
10.0k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37318
0
        _Pypegen_stack_overflow(p);
37319
0
    }
37320
10.0k
    if (p->error_indicator) {
37321
0
        p->level--;
37322
0
        return NULL;
37323
0
    }
37324
10.0k
    void * _res = NULL;
37325
10.0k
    int _mark = p->mark;
37326
10.0k
    { // '.'
37327
10.0k
        if (p->error_indicator) {
37328
0
            p->level--;
37329
0
            return NULL;
37330
0
        }
37331
10.0k
        D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
37332
10.0k
        Token * _literal;
37333
10.0k
        if (
37334
10.0k
            (_literal = _PyPegen_expect_token(p, 23))  // token='.'
37335
10.0k
        )
37336
4.30k
        {
37337
4.30k
            D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
37338
4.30k
            _res = _literal;
37339
4.30k
            goto done;
37340
4.30k
        }
37341
5.73k
        p->mark = _mark;
37342
5.73k
        D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ',
37343
5.73k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
37344
5.73k
    }
37345
0
    { // '...'
37346
5.73k
        if (p->error_indicator) {
37347
10
            p->level--;
37348
10
            return NULL;
37349
10
        }
37350
5.72k
        D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
37351
5.72k
        Token * _literal;
37352
5.72k
        if (
37353
5.72k
            (_literal = _PyPegen_expect_token(p, 52))  // token='...'
37354
5.72k
        )
37355
1.28k
        {
37356
1.28k
            D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
37357
1.28k
            _res = _literal;
37358
1.28k
            goto done;
37359
1.28k
        }
37360
4.44k
        p->mark = _mark;
37361
4.44k
        D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ',
37362
4.44k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
37363
4.44k
    }
37364
4.44k
    _res = NULL;
37365
10.0k
  done:
37366
10.0k
    p->level--;
37367
10.0k
    return _res;
37368
4.44k
}
37369
37370
// _tmp_158: '@' named_expression NEWLINE
37371
static void *
37372
_tmp_158_rule(Parser *p)
37373
23.4k
{
37374
23.4k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37375
0
        _Pypegen_stack_overflow(p);
37376
0
    }
37377
23.4k
    if (p->error_indicator) {
37378
0
        p->level--;
37379
0
        return NULL;
37380
0
    }
37381
23.4k
    void * _res = NULL;
37382
23.4k
    int _mark = p->mark;
37383
23.4k
    { // '@' named_expression NEWLINE
37384
23.4k
        if (p->error_indicator) {
37385
0
            p->level--;
37386
0
            return NULL;
37387
0
        }
37388
23.4k
        D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
37389
23.4k
        Token * _literal;
37390
23.4k
        expr_ty f;
37391
23.4k
        Token * newline_var;
37392
23.4k
        if (
37393
23.4k
            (_literal = _PyPegen_expect_token(p, 49))  // token='@'
37394
4.26k
            &&
37395
4.26k
            (f = named_expression_rule(p))  // named_expression
37396
4.12k
            &&
37397
4.12k
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
37398
23.4k
        )
37399
4.08k
        {
37400
4.08k
            D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
37401
4.08k
            _res = f;
37402
4.08k
            if (_res == NULL && PyErr_Occurred()) {
37403
0
                p->error_indicator = 1;
37404
0
                p->level--;
37405
0
                return NULL;
37406
0
            }
37407
4.08k
            goto done;
37408
4.08k
        }
37409
19.3k
        p->mark = _mark;
37410
19.3k
        D(fprintf(stderr, "%*c%s _tmp_158[%d-%d]: %s failed!\n", p->level, ' ',
37411
19.3k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE"));
37412
19.3k
    }
37413
19.3k
    _res = NULL;
37414
23.4k
  done:
37415
23.4k
    p->level--;
37416
23.4k
    return _res;
37417
19.3k
}
37418
37419
// _tmp_159: ',' star_expression
37420
static void *
37421
_tmp_159_rule(Parser *p)
37422
232k
{
37423
232k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37424
0
        _Pypegen_stack_overflow(p);
37425
0
    }
37426
232k
    if (p->error_indicator) {
37427
0
        p->level--;
37428
0
        return NULL;
37429
0
    }
37430
232k
    void * _res = NULL;
37431
232k
    int _mark = p->mark;
37432
232k
    { // ',' star_expression
37433
232k
        if (p->error_indicator) {
37434
0
            p->level--;
37435
0
            return NULL;
37436
0
        }
37437
232k
        D(fprintf(stderr, "%*c> _tmp_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
37438
232k
        Token * _literal;
37439
232k
        expr_ty c;
37440
232k
        if (
37441
232k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37442
25.0k
            &&
37443
25.0k
            (c = star_expression_rule(p))  // star_expression
37444
232k
        )
37445
16.3k
        {
37446
16.3k
            D(fprintf(stderr, "%*c+ _tmp_159[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
37447
16.3k
            _res = c;
37448
16.3k
            if (_res == NULL && PyErr_Occurred()) {
37449
0
                p->error_indicator = 1;
37450
0
                p->level--;
37451
0
                return NULL;
37452
0
            }
37453
16.3k
            goto done;
37454
16.3k
        }
37455
215k
        p->mark = _mark;
37456
215k
        D(fprintf(stderr, "%*c%s _tmp_159[%d-%d]: %s failed!\n", p->level, ' ',
37457
215k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression"));
37458
215k
    }
37459
215k
    _res = NULL;
37460
232k
  done:
37461
232k
    p->level--;
37462
232k
    return _res;
37463
215k
}
37464
37465
// _tmp_160: 'or' conjunction
37466
static void *
37467
_tmp_160_rule(Parser *p)
37468
398k
{
37469
398k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37470
0
        _Pypegen_stack_overflow(p);
37471
0
    }
37472
398k
    if (p->error_indicator) {
37473
0
        p->level--;
37474
0
        return NULL;
37475
0
    }
37476
398k
    void * _res = NULL;
37477
398k
    int _mark = p->mark;
37478
398k
    { // 'or' conjunction
37479
398k
        if (p->error_indicator) {
37480
0
            p->level--;
37481
0
            return NULL;
37482
0
        }
37483
398k
        D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
37484
398k
        Token * _keyword;
37485
398k
        expr_ty c;
37486
398k
        if (
37487
398k
            (_keyword = _PyPegen_expect_token(p, 589))  // token='or'
37488
4.88k
            &&
37489
4.88k
            (c = conjunction_rule(p))  // conjunction
37490
398k
        )
37491
4.58k
        {
37492
4.58k
            D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
37493
4.58k
            _res = c;
37494
4.58k
            if (_res == NULL && PyErr_Occurred()) {
37495
0
                p->error_indicator = 1;
37496
0
                p->level--;
37497
0
                return NULL;
37498
0
            }
37499
4.58k
            goto done;
37500
4.58k
        }
37501
394k
        p->mark = _mark;
37502
394k
        D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ',
37503
394k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction"));
37504
394k
    }
37505
394k
    _res = NULL;
37506
398k
  done:
37507
398k
    p->level--;
37508
398k
    return _res;
37509
394k
}
37510
37511
// _tmp_161: 'and' inversion
37512
static void *
37513
_tmp_161_rule(Parser *p)
37514
402k
{
37515
402k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37516
0
        _Pypegen_stack_overflow(p);
37517
0
    }
37518
402k
    if (p->error_indicator) {
37519
0
        p->level--;
37520
0
        return NULL;
37521
0
    }
37522
402k
    void * _res = NULL;
37523
402k
    int _mark = p->mark;
37524
402k
    { // 'and' inversion
37525
402k
        if (p->error_indicator) {
37526
0
            p->level--;
37527
0
            return NULL;
37528
0
        }
37529
402k
        D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
37530
402k
        Token * _keyword;
37531
402k
        expr_ty c;
37532
402k
        if (
37533
402k
            (_keyword = _PyPegen_expect_token(p, 590))  // token='and'
37534
4.19k
            &&
37535
4.19k
            (c = inversion_rule(p))  // inversion
37536
402k
        )
37537
3.74k
        {
37538
3.74k
            D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
37539
3.74k
            _res = c;
37540
3.74k
            if (_res == NULL && PyErr_Occurred()) {
37541
0
                p->error_indicator = 1;
37542
0
                p->level--;
37543
0
                return NULL;
37544
0
            }
37545
3.74k
            goto done;
37546
3.74k
        }
37547
398k
        p->mark = _mark;
37548
398k
        D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ',
37549
398k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion"));
37550
398k
    }
37551
398k
    _res = NULL;
37552
402k
  done:
37553
402k
    p->level--;
37554
402k
    return _res;
37555
398k
}
37556
37557
// _tmp_162: slice | starred_expression
37558
static void *
37559
_tmp_162_rule(Parser *p)
37560
21.5k
{
37561
21.5k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37562
0
        _Pypegen_stack_overflow(p);
37563
0
    }
37564
21.5k
    if (p->error_indicator) {
37565
0
        p->level--;
37566
0
        return NULL;
37567
0
    }
37568
21.5k
    void * _res = NULL;
37569
21.5k
    int _mark = p->mark;
37570
21.5k
    { // slice
37571
21.5k
        if (p->error_indicator) {
37572
0
            p->level--;
37573
0
            return NULL;
37574
0
        }
37575
21.5k
        D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice"));
37576
21.5k
        expr_ty slice_var;
37577
21.5k
        if (
37578
21.5k
            (slice_var = slice_rule(p))  // slice
37579
21.5k
        )
37580
17.8k
        {
37581
17.8k
            D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice"));
37582
17.8k
            _res = slice_var;
37583
17.8k
            goto done;
37584
17.8k
        }
37585
3.74k
        p->mark = _mark;
37586
3.74k
        D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ',
37587
3.74k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice"));
37588
3.74k
    }
37589
0
    { // starred_expression
37590
3.74k
        if (p->error_indicator) {
37591
208
            p->level--;
37592
208
            return NULL;
37593
208
        }
37594
3.53k
        D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37595
3.53k
        expr_ty starred_expression_var;
37596
3.53k
        if (
37597
3.53k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
37598
3.53k
        )
37599
532
        {
37600
532
            D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37601
532
            _res = starred_expression_var;
37602
532
            goto done;
37603
532
        }
37604
3.00k
        p->mark = _mark;
37605
3.00k
        D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ',
37606
3.00k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
37607
3.00k
    }
37608
3.00k
    _res = NULL;
37609
21.3k
  done:
37610
21.3k
    p->level--;
37611
21.3k
    return _res;
37612
3.00k
}
37613
37614
// _tmp_163: 'if' disjunction
37615
static void *
37616
_tmp_163_rule(Parser *p)
37617
16.9k
{
37618
16.9k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37619
0
        _Pypegen_stack_overflow(p);
37620
0
    }
37621
16.9k
    if (p->error_indicator) {
37622
0
        p->level--;
37623
0
        return NULL;
37624
0
    }
37625
16.9k
    void * _res = NULL;
37626
16.9k
    int _mark = p->mark;
37627
16.9k
    { // 'if' disjunction
37628
16.9k
        if (p->error_indicator) {
37629
0
            p->level--;
37630
0
            return NULL;
37631
0
        }
37632
16.9k
        D(fprintf(stderr, "%*c> _tmp_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
37633
16.9k
        Token * _keyword;
37634
16.9k
        expr_ty z;
37635
16.9k
        if (
37636
16.9k
            (_keyword = _PyPegen_expect_token(p, 691))  // token='if'
37637
7.03k
            &&
37638
7.03k
            (z = disjunction_rule(p))  // disjunction
37639
16.9k
        )
37640
5.84k
        {
37641
5.84k
            D(fprintf(stderr, "%*c+ _tmp_163[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
37642
5.84k
            _res = z;
37643
5.84k
            if (_res == NULL && PyErr_Occurred()) {
37644
0
                p->error_indicator = 1;
37645
0
                p->level--;
37646
0
                return NULL;
37647
0
            }
37648
5.84k
            goto done;
37649
5.84k
        }
37650
11.0k
        p->mark = _mark;
37651
11.0k
        D(fprintf(stderr, "%*c%s _tmp_163[%d-%d]: %s failed!\n", p->level, ' ',
37652
11.0k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
37653
11.0k
    }
37654
11.0k
    _res = NULL;
37655
16.9k
  done:
37656
16.9k
    p->level--;
37657
16.9k
    return _res;
37658
11.0k
}
37659
37660
// _tmp_164: starred_expression | (assignment_expression | expression !':=') !'='
37661
static void *
37662
_tmp_164_rule(Parser *p)
37663
104k
{
37664
104k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37665
0
        _Pypegen_stack_overflow(p);
37666
0
    }
37667
104k
    if (p->error_indicator) {
37668
0
        p->level--;
37669
0
        return NULL;
37670
0
    }
37671
104k
    void * _res = NULL;
37672
104k
    int _mark = p->mark;
37673
104k
    { // starred_expression
37674
104k
        if (p->error_indicator) {
37675
0
            p->level--;
37676
0
            return NULL;
37677
0
        }
37678
104k
        D(fprintf(stderr, "%*c> _tmp_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37679
104k
        expr_ty starred_expression_var;
37680
104k
        if (
37681
104k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
37682
104k
        )
37683
5.33k
        {
37684
5.33k
            D(fprintf(stderr, "%*c+ _tmp_164[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37685
5.33k
            _res = starred_expression_var;
37686
5.33k
            goto done;
37687
5.33k
        }
37688
99.1k
        p->mark = _mark;
37689
99.1k
        D(fprintf(stderr, "%*c%s _tmp_164[%d-%d]: %s failed!\n", p->level, ' ',
37690
99.1k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
37691
99.1k
    }
37692
0
    { // (assignment_expression | expression !':=') !'='
37693
99.1k
        if (p->error_indicator) {
37694
276
            p->level--;
37695
276
            return NULL;
37696
276
        }
37697
98.9k
        D(fprintf(stderr, "%*c> _tmp_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37698
98.9k
        void *_tmp_87_var;
37699
98.9k
        if (
37700
98.9k
            (_tmp_87_var = _tmp_87_rule(p))  // assignment_expression | expression !':='
37701
59.0k
            &&
37702
59.0k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
37703
98.9k
        )
37704
48.6k
        {
37705
48.6k
            D(fprintf(stderr, "%*c+ _tmp_164[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37706
48.6k
            _res = _tmp_87_var;
37707
48.6k
            goto done;
37708
48.6k
        }
37709
50.2k
        p->mark = _mark;
37710
50.2k
        D(fprintf(stderr, "%*c%s _tmp_164[%d-%d]: %s failed!\n", p->level, ' ',
37711
50.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37712
50.2k
    }
37713
50.2k
    _res = NULL;
37714
104k
  done:
37715
104k
    p->level--;
37716
104k
    return _res;
37717
50.2k
}
37718
37719
// _tmp_165: ',' star_target
37720
static void *
37721
_tmp_165_rule(Parser *p)
37722
23.6k
{
37723
23.6k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37724
0
        _Pypegen_stack_overflow(p);
37725
0
    }
37726
23.6k
    if (p->error_indicator) {
37727
0
        p->level--;
37728
0
        return NULL;
37729
0
    }
37730
23.6k
    void * _res = NULL;
37731
23.6k
    int _mark = p->mark;
37732
23.6k
    { // ',' star_target
37733
23.6k
        if (p->error_indicator) {
37734
0
            p->level--;
37735
0
            return NULL;
37736
0
        }
37737
23.6k
        D(fprintf(stderr, "%*c> _tmp_165[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
37738
23.6k
        Token * _literal;
37739
23.6k
        expr_ty c;
37740
23.6k
        if (
37741
23.6k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37742
17.2k
            &&
37743
17.2k
            (c = star_target_rule(p))  // star_target
37744
23.6k
        )
37745
9.34k
        {
37746
9.34k
            D(fprintf(stderr, "%*c+ _tmp_165[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target"));
37747
9.34k
            _res = c;
37748
9.34k
            if (_res == NULL && PyErr_Occurred()) {
37749
0
                p->error_indicator = 1;
37750
0
                p->level--;
37751
0
                return NULL;
37752
0
            }
37753
9.34k
            goto done;
37754
9.34k
        }
37755
14.2k
        p->mark = _mark;
37756
14.2k
        D(fprintf(stderr, "%*c%s _tmp_165[%d-%d]: %s failed!\n", p->level, ' ',
37757
14.2k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
37758
14.2k
    }
37759
14.2k
    _res = NULL;
37760
23.6k
  done:
37761
23.6k
    p->level--;
37762
23.6k
    return _res;
37763
14.2k
}
37764
37765
// _tmp_166:
37766
//     | ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs
37767
static void *
37768
_tmp_166_rule(Parser *p)
37769
8.03k
{
37770
8.03k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37771
0
        _Pypegen_stack_overflow(p);
37772
0
    }
37773
8.03k
    if (p->error_indicator) {
37774
0
        p->level--;
37775
0
        return NULL;
37776
0
    }
37777
8.03k
    void * _res = NULL;
37778
8.03k
    int _mark = p->mark;
37779
8.03k
    { // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs
37780
8.03k
        if (p->error_indicator) {
37781
0
            p->level--;
37782
0
            return NULL;
37783
0
        }
37784
8.03k
        D(fprintf(stderr, "%*c> _tmp_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs"));
37785
8.03k
        asdl_seq * _gather_89_var;
37786
8.03k
        Token * _literal;
37787
8.03k
        asdl_seq* kwargs_var;
37788
8.03k
        if (
37789
8.03k
            (_gather_89_var = _gather_89_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+
37790
2.79k
            &&
37791
2.79k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
37792
607
            &&
37793
607
            (kwargs_var = kwargs_rule(p))  // kwargs
37794
8.03k
        )
37795
326
        {
37796
326
            D(fprintf(stderr, "%*c+ _tmp_166[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs"));
37797
326
            _res = _PyPegen_dummy_name(p, _gather_89_var, _literal, kwargs_var);
37798
326
            goto done;
37799
326
        }
37800
7.70k
        p->mark = _mark;
37801
7.70k
        D(fprintf(stderr, "%*c%s _tmp_166[%d-%d]: %s failed!\n", p->level, ' ',
37802
7.70k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ ',' kwargs"));
37803
7.70k
    }
37804
7.70k
    _res = NULL;
37805
8.03k
  done:
37806
8.03k
    p->level--;
37807
8.03k
    return _res;
37808
7.70k
}
37809
37810
// _tmp_167: starred_expression !'='
37811
static void *
37812
_tmp_167_rule(Parser *p)
37813
2.60k
{
37814
2.60k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37815
0
        _Pypegen_stack_overflow(p);
37816
0
    }
37817
2.60k
    if (p->error_indicator) {
37818
0
        p->level--;
37819
0
        return NULL;
37820
0
    }
37821
2.60k
    void * _res = NULL;
37822
2.60k
    int _mark = p->mark;
37823
2.60k
    { // starred_expression !'='
37824
2.60k
        if (p->error_indicator) {
37825
0
            p->level--;
37826
0
            return NULL;
37827
0
        }
37828
2.60k
        D(fprintf(stderr, "%*c> _tmp_167[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression !'='"));
37829
2.60k
        expr_ty starred_expression_var;
37830
2.60k
        if (
37831
2.60k
            (starred_expression_var = starred_expression_rule(p))  // starred_expression
37832
1.05k
            &&
37833
1.05k
            _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
37834
2.60k
        )
37835
1.05k
        {
37836
1.05k
            D(fprintf(stderr, "%*c+ _tmp_167[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression !'='"));
37837
1.05k
            _res = starred_expression_var;
37838
1.05k
            goto done;
37839
1.05k
        }
37840
1.55k
        p->mark = _mark;
37841
1.55k
        D(fprintf(stderr, "%*c%s _tmp_167[%d-%d]: %s failed!\n", p->level, ' ',
37842
1.55k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression !'='"));
37843
1.55k
    }
37844
1.55k
    _res = NULL;
37845
2.60k
  done:
37846
2.60k
    p->level--;
37847
2.60k
    return _res;
37848
1.55k
}
37849
37850
// _tmp_168: !STRING expression_without_invalid
37851
static void *
37852
_tmp_168_rule(Parser *p)
37853
6.19k
{
37854
6.19k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37855
1
        _Pypegen_stack_overflow(p);
37856
1
    }
37857
6.19k
    if (p->error_indicator) {
37858
1
        p->level--;
37859
1
        return NULL;
37860
1
    }
37861
6.19k
    void * _res = NULL;
37862
6.19k
    int _mark = p->mark;
37863
6.19k
    { // !STRING expression_without_invalid
37864
6.19k
        if (p->error_indicator) {
37865
0
            p->level--;
37866
0
            return NULL;
37867
0
        }
37868
6.19k
        D(fprintf(stderr, "%*c> _tmp_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!STRING expression_without_invalid"));
37869
6.19k
        expr_ty expression_without_invalid_var;
37870
6.19k
        if (
37871
6.19k
            _PyPegen_lookahead(0, _PyPegen_string_token, p)
37872
5.65k
            &&
37873
5.65k
            (expression_without_invalid_var = expression_without_invalid_rule(p))  // expression_without_invalid
37874
6.19k
        )
37875
2.69k
        {
37876
2.69k
            D(fprintf(stderr, "%*c+ _tmp_168[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!STRING expression_without_invalid"));
37877
2.69k
            _res = expression_without_invalid_var;
37878
2.69k
            goto done;
37879
2.69k
        }
37880
3.50k
        p->mark = _mark;
37881
3.50k
        D(fprintf(stderr, "%*c%s _tmp_168[%d-%d]: %s failed!\n", p->level, ' ',
37882
3.50k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!STRING expression_without_invalid"));
37883
3.50k
    }
37884
3.50k
    _res = NULL;
37885
6.19k
  done:
37886
6.19k
    p->level--;
37887
6.19k
    return _res;
37888
3.50k
}
37889
37890
// _tmp_169: ')' | '**'
37891
static void *
37892
_tmp_169_rule(Parser *p)
37893
572
{
37894
572
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37895
0
        _Pypegen_stack_overflow(p);
37896
0
    }
37897
572
    if (p->error_indicator) {
37898
0
        p->level--;
37899
0
        return NULL;
37900
0
    }
37901
572
    void * _res = NULL;
37902
572
    int _mark = p->mark;
37903
572
    { // ')'
37904
572
        if (p->error_indicator) {
37905
0
            p->level--;
37906
0
            return NULL;
37907
0
        }
37908
572
        D(fprintf(stderr, "%*c> _tmp_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
37909
572
        Token * _literal;
37910
572
        if (
37911
572
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
37912
572
        )
37913
1
        {
37914
1
            D(fprintf(stderr, "%*c+ _tmp_169[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
37915
1
            _res = _literal;
37916
1
            goto done;
37917
1
        }
37918
571
        p->mark = _mark;
37919
571
        D(fprintf(stderr, "%*c%s _tmp_169[%d-%d]: %s failed!\n", p->level, ' ',
37920
571
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
37921
571
    }
37922
0
    { // '**'
37923
571
        if (p->error_indicator) {
37924
0
            p->level--;
37925
0
            return NULL;
37926
0
        }
37927
571
        D(fprintf(stderr, "%*c> _tmp_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
37928
571
        Token * _literal;
37929
571
        if (
37930
571
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
37931
571
        )
37932
1
        {
37933
1
            D(fprintf(stderr, "%*c+ _tmp_169[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
37934
1
            _res = _literal;
37935
1
            goto done;
37936
1
        }
37937
570
        p->mark = _mark;
37938
570
        D(fprintf(stderr, "%*c%s _tmp_169[%d-%d]: %s failed!\n", p->level, ' ',
37939
570
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
37940
570
    }
37941
570
    _res = NULL;
37942
572
  done:
37943
572
    p->level--;
37944
572
    return _res;
37945
570
}
37946
37947
// _tmp_170: ':' | '**'
37948
static void *
37949
_tmp_170_rule(Parser *p)
37950
1.31k
{
37951
1.31k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
37952
0
        _Pypegen_stack_overflow(p);
37953
0
    }
37954
1.31k
    if (p->error_indicator) {
37955
0
        p->level--;
37956
0
        return NULL;
37957
0
    }
37958
1.31k
    void * _res = NULL;
37959
1.31k
    int _mark = p->mark;
37960
1.31k
    { // ':'
37961
1.31k
        if (p->error_indicator) {
37962
0
            p->level--;
37963
0
            return NULL;
37964
0
        }
37965
1.31k
        D(fprintf(stderr, "%*c> _tmp_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
37966
1.31k
        Token * _literal;
37967
1.31k
        if (
37968
1.31k
            (_literal = _PyPegen_expect_token(p, 11))  // token=':'
37969
1.31k
        )
37970
2
        {
37971
2
            D(fprintf(stderr, "%*c+ _tmp_170[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
37972
2
            _res = _literal;
37973
2
            goto done;
37974
2
        }
37975
1.30k
        p->mark = _mark;
37976
1.30k
        D(fprintf(stderr, "%*c%s _tmp_170[%d-%d]: %s failed!\n", p->level, ' ',
37977
1.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
37978
1.30k
    }
37979
0
    { // '**'
37980
1.30k
        if (p->error_indicator) {
37981
0
            p->level--;
37982
0
            return NULL;
37983
0
        }
37984
1.30k
        D(fprintf(stderr, "%*c> _tmp_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
37985
1.30k
        Token * _literal;
37986
1.30k
        if (
37987
1.30k
            (_literal = _PyPegen_expect_token(p, 35))  // token='**'
37988
1.30k
        )
37989
1
        {
37990
1
            D(fprintf(stderr, "%*c+ _tmp_170[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
37991
1
            _res = _literal;
37992
1
            goto done;
37993
1
        }
37994
1.30k
        p->mark = _mark;
37995
1.30k
        D(fprintf(stderr, "%*c%s _tmp_170[%d-%d]: %s failed!\n", p->level, ' ',
37996
1.30k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
37997
1.30k
    }
37998
1.30k
    _res = NULL;
37999
1.31k
  done:
38000
1.31k
    p->level--;
38001
1.31k
    return _res;
38002
1.30k
}
38003
38004
// _loop0_171: (',' bitwise_or)
38005
static asdl_seq *
38006
_loop0_171_rule(Parser *p)
38007
632
{
38008
632
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
38009
0
        _Pypegen_stack_overflow(p);
38010
0
    }
38011
632
    if (p->error_indicator) {
38012
0
        p->level--;
38013
0
        return NULL;
38014
0
    }
38015
632
    void *_res = NULL;
38016
632
    int _mark = p->mark;
38017
632
    void **_children = PyMem_Malloc(sizeof(void *));
38018
632
    if (!_children) {
38019
0
        p->error_indicator = 1;
38020
0
        PyErr_NoMemory();
38021
0
        p->level--;
38022
0
        return NULL;
38023
0
    }
38024
632
    Py_ssize_t _children_capacity = 1;
38025
632
    Py_ssize_t _n = 0;
38026
632
    { // (',' bitwise_or)
38027
632
        if (p->error_indicator) {
38028
0
            p->level--;
38029
0
            return NULL;
38030
0
        }
38031
632
        D(fprintf(stderr, "%*c> _loop0_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' bitwise_or)"));
38032
632
        void *_tmp_175_var;
38033
632
        while (
38034
2.08k
            (_tmp_175_var = _tmp_175_rule(p))  // ',' bitwise_or
38035
632
        )
38036
1.45k
        {
38037
1.45k
            _res = _tmp_175_var;
38038
1.45k
            if (_n == _children_capacity) {
38039
618
                _children_capacity *= 2;
38040
618
                void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
38041
618
                if (!_new_children) {
38042
0
                    PyMem_Free(_children);
38043
0
                    p->error_indicator = 1;
38044
0
                    PyErr_NoMemory();
38045
0
                    p->level--;
38046
0
                    return NULL;
38047
0
                }
38048
618
                _children = _new_children;
38049
618
            }
38050
1.45k
            _children[_n++] = _res;
38051
1.45k
            _mark = p->mark;
38052
1.45k
        }
38053
632
        p->mark = _mark;
38054
632
        D(fprintf(stderr, "%*c%s _loop0_171[%d-%d]: %s failed!\n", p->level, ' ',
38055
632
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' bitwise_or)"));
38056
632
    }
38057
0
    asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
38058
632
    if (!_seq) {
38059
0
        PyMem_Free(_children);
38060
0
        p->error_indicator = 1;
38061
0
        PyErr_NoMemory();
38062
0
        p->level--;
38063
0
        return NULL;
38064
0
    }
38065
2.08k
    for (Py_ssize_t i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
38066
632
    PyMem_Free(_children);
38067
632
    p->level--;
38068
632
    return _seq;
38069
632
}
38070
38071
// _tmp_172: ',' | ')' | NEWLINE
38072
static void *
38073
_tmp_172_rule(Parser *p)
38074
578
{
38075
578
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
38076
0
        _Pypegen_stack_overflow(p);
38077
0
    }
38078
578
    if (p->error_indicator) {
38079
0
        p->level--;
38080
0
        return NULL;
38081
0
    }
38082
578
    void * _res = NULL;
38083
578
    int _mark = p->mark;
38084
578
    { // ','
38085
578
        if (p->error_indicator) {
38086
0
            p->level--;
38087
0
            return NULL;
38088
0
        }
38089
578
        D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
38090
578
        Token * _literal;
38091
578
        if (
38092
578
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
38093
578
        )
38094
315
        {
38095
315
            D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
38096
315
            _res = _literal;
38097
315
            goto done;
38098
315
        }
38099
263
        p->mark = _mark;
38100
263
        D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ',
38101
263
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
38102
263
    }
38103
0
    { // ')'
38104
263
        if (p->error_indicator) {
38105
1
            p->level--;
38106
1
            return NULL;
38107
1
        }
38108
262
        D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
38109
262
        Token * _literal;
38110
262
        if (
38111
262
            (_literal = _PyPegen_expect_token(p, 8))  // token=')'
38112
262
        )
38113
16
        {
38114
16
            D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
38115
16
            _res = _literal;
38116
16
            goto done;
38117
16
        }
38118
246
        p->mark = _mark;
38119
246
        D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ',
38120
246
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
38121
246
    }
38122
0
    { // NEWLINE
38123
246
        if (p->error_indicator) {
38124
0
            p->level--;
38125
0
            return NULL;
38126
0
        }
38127
246
        D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
38128
246
        Token * newline_var;
38129
246
        if (
38130
246
            (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
38131
246
        )
38132
229
        {
38133
229
            D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
38134
229
            _res = newline_var;
38135
229
            goto done;
38136
229
        }
38137
17
        p->mark = _mark;
38138
17
        D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ',
38139
17
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
38140
17
    }
38141
17
    _res = NULL;
38142
577
  done:
38143
577
    p->level--;
38144
577
    return _res;
38145
17
}
38146
38147
// _tmp_173: expression ['as' star_target]
38148
static void *
38149
_tmp_173_rule(Parser *p)
38150
4.58k
{
38151
4.58k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
38152
0
        _Pypegen_stack_overflow(p);
38153
0
    }
38154
4.58k
    if (p->error_indicator) {
38155
0
        p->level--;
38156
0
        return NULL;
38157
0
    }
38158
4.58k
    void * _res = NULL;
38159
4.58k
    int _mark = p->mark;
38160
4.58k
    { // expression ['as' star_target]
38161
4.58k
        if (p->error_indicator) {
38162
0
            p->level--;
38163
0
            return NULL;
38164
0
        }
38165
4.58k
        D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
38166
4.58k
        void *_opt_var;
38167
4.58k
        UNUSED(_opt_var); // Silence compiler warnings
38168
4.58k
        expr_ty expression_var;
38169
4.58k
        if (
38170
4.58k
            (expression_var = expression_rule(p))  // expression
38171
4.14k
            &&
38172
4.14k
            (_opt_var = _tmp_176_rule(p), !p->error_indicator)  // ['as' star_target]
38173
4.58k
        )
38174
4.14k
        {
38175
4.14k
            D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
38176
4.14k
            _res = _PyPegen_dummy_name(p, expression_var, _opt_var);
38177
4.14k
            goto done;
38178
4.14k
        }
38179
437
        p->mark = _mark;
38180
437
        D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ',
38181
437
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]"));
38182
437
    }
38183
437
    _res = NULL;
38184
4.58k
  done:
38185
4.58k
    p->level--;
38186
4.58k
    return _res;
38187
437
}
38188
38189
// _tmp_174: expressions ['as' star_target]
38190
static void *
38191
_tmp_174_rule(Parser *p)
38192
3.51k
{
38193
3.51k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
38194
0
        _Pypegen_stack_overflow(p);
38195
0
    }
38196
3.51k
    if (p->error_indicator) {
38197
0
        p->level--;
38198
0
        return NULL;
38199
0
    }
38200
3.51k
    void * _res = NULL;
38201
3.51k
    int _mark = p->mark;
38202
3.51k
    { // expressions ['as' star_target]
38203
3.51k
        if (p->error_indicator) {
38204
0
            p->level--;
38205
0
            return NULL;
38206
0
        }
38207
3.51k
        D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
38208
3.51k
        void *_opt_var;
38209
3.51k
        UNUSED(_opt_var); // Silence compiler warnings
38210
3.51k
        expr_ty expressions_var;
38211
3.51k
        if (
38212
3.51k
            (expressions_var = expressions_rule(p))  // expressions
38213
3.05k
            &&
38214
3.05k
            (_opt_var = _tmp_176_rule(p), !p->error_indicator)  // ['as' star_target]
38215
3.51k
        )
38216
3.05k
        {
38217
3.05k
            D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
38218
3.05k
            _res = _PyPegen_dummy_name(p, expressions_var, _opt_var);
38219
3.05k
            goto done;
38220
3.05k
        }
38221
460
        p->mark = _mark;
38222
460
        D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ',
38223
460
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]"));
38224
460
    }
38225
460
    _res = NULL;
38226
3.51k
  done:
38227
3.51k
    p->level--;
38228
3.51k
    return _res;
38229
460
}
38230
38231
// _tmp_175: ',' bitwise_or
38232
static void *
38233
_tmp_175_rule(Parser *p)
38234
2.08k
{
38235
2.08k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
38236
0
        _Pypegen_stack_overflow(p);
38237
0
    }
38238
2.08k
    if (p->error_indicator) {
38239
0
        p->level--;
38240
0
        return NULL;
38241
0
    }
38242
2.08k
    void * _res = NULL;
38243
2.08k
    int _mark = p->mark;
38244
2.08k
    { // ',' bitwise_or
38245
2.08k
        if (p->error_indicator) {
38246
0
            p->level--;
38247
0
            return NULL;
38248
0
        }
38249
2.08k
        D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' bitwise_or"));
38250
2.08k
        Token * _literal;
38251
2.08k
        expr_ty bitwise_or_var;
38252
2.08k
        if (
38253
2.08k
            (_literal = _PyPegen_expect_token(p, 12))  // token=','
38254
1.97k
            &&
38255
1.97k
            (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
38256
2.08k
        )
38257
1.45k
        {
38258
1.45k
            D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' bitwise_or"));
38259
1.45k
            _res = _PyPegen_dummy_name(p, _literal, bitwise_or_var);
38260
1.45k
            goto done;
38261
1.45k
        }
38262
632
        p->mark = _mark;
38263
632
        D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ',
38264
632
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' bitwise_or"));
38265
632
    }
38266
632
    _res = NULL;
38267
2.08k
  done:
38268
2.08k
    p->level--;
38269
2.08k
    return _res;
38270
632
}
38271
38272
// _tmp_176: 'as' star_target
38273
static void *
38274
_tmp_176_rule(Parser *p)
38275
7.20k
{
38276
7.20k
    if (p->level++ == MAXSTACK || _Py_ReachedRecursionLimitWithMargin(PyThreadState_Get(), 1)) {
38277
0
        _Pypegen_stack_overflow(p);
38278
0
    }
38279
7.20k
    if (p->error_indicator) {
38280
0
        p->level--;
38281
0
        return NULL;
38282
0
    }
38283
7.20k
    void * _res = NULL;
38284
7.20k
    int _mark = p->mark;
38285
7.20k
    { // 'as' star_target
38286
7.20k
        if (p->error_indicator) {
38287
0
            p->level--;
38288
0
            return NULL;
38289
0
        }
38290
7.20k
        D(fprintf(stderr, "%*c> _tmp_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
38291
7.20k
        Token * _keyword;
38292
7.20k
        expr_ty star_target_var;
38293
7.20k
        if (
38294
7.20k
            (_keyword = _PyPegen_expect_token(p, 689))  // token='as'
38295
1.15k
            &&
38296
1.15k
            (star_target_var = star_target_rule(p))  // star_target
38297
7.20k
        )
38298
1.13k
        {
38299
1.13k
            D(fprintf(stderr, "%*c+ _tmp_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
38300
1.13k
            _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
38301
1.13k
            goto done;
38302
1.13k
        }
38303
6.06k
        p->mark = _mark;
38304
6.06k
        D(fprintf(stderr, "%*c%s _tmp_176[%d-%d]: %s failed!\n", p->level, ' ',
38305
6.06k
                  p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
38306
6.06k
    }
38307
6.06k
    _res = NULL;
38308
7.20k
  done:
38309
7.20k
    p->level--;
38310
7.20k
    return _res;
38311
6.06k
}
38312
38313
void *
38314
_PyPegen_parse(Parser *p)
38315
33.7k
{
38316
    // Initialize keywords
38317
33.7k
    p->keywords = reserved_keywords;
38318
33.7k
    p->n_keyword_lists = n_keyword_lists;
38319
33.7k
    p->soft_keywords = soft_keywords;
38320
38321
    // Run parser
38322
33.7k
    void *result = NULL;
38323
33.7k
    if (p->start_rule == Py_file_input) {
38324
33.6k
        result = file_rule(p);
38325
33.6k
    } else if (p->start_rule == Py_single_input) {
38326
0
        result = interactive_rule(p);
38327
66
    } else if (p->start_rule == Py_eval_input) {
38328
66
        result = eval_rule(p);
38329
66
    } else if (p->start_rule == Py_func_type_input) {
38330
0
        result = func_type_rule(p);
38331
0
    }
38332
38333
33.7k
    return result;
38334
33.7k
}