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 (Py_DebugFlag) x;
6 #else
7 #  define D(x)
8 #endif
9 
10 #ifdef __wasi__
11 #  define MAXSTACK 4000
12 #else
13 #  define MAXSTACK 6000
14 #endif
15 static const int n_keyword_lists = 9;
16 static KeywordToken *reserved_keywords[] = {
17     (KeywordToken[]) {{NULL, -1}},
18     (KeywordToken[]) {{NULL, -1}},
19     (KeywordToken[]) {
20         {"if", 639},
21         {"as", 637},
22         {"in", 648},
23         {"or", 574},
24         {"is", 582},
25         {NULL, -1},
26     },
27     (KeywordToken[]) {
28         {"del", 603},
29         {"def", 649},
30         {"for", 647},
31         {"try", 621},
32         {"and", 575},
33         {"not", 581},
34         {NULL, -1},
35     },
36     (KeywordToken[]) {
37         {"from", 572},
38         {"pass", 504},
39         {"with", 612},
40         {"elif", 641},
41         {"else", 642},
42         {"None", 601},
43         {"True", 600},
44         {NULL, -1},
45     },
46     (KeywordToken[]) {
47         {"raise", 522},
48         {"yield", 573},
49         {"break", 508},
50         {"class", 651},
51         {"while", 644},
52         {"False", 602},
53         {NULL, -1},
54     },
55     (KeywordToken[]) {
56         {"return", 519},
57         {"import", 531},
58         {"assert", 526},
59         {"global", 523},
60         {"except", 634},
61         {"lambda", 586},
62         {NULL, -1},
63     },
64     (KeywordToken[]) {
65         {"finally", 630},
66         {NULL, -1},
67     },
68     (KeywordToken[]) {
69         {"continue", 509},
70         {"nonlocal", 524},
71         {NULL, -1},
72     },
73 };
74 static char *soft_keywords[] = {
75     "_",
76     "case",
77     "match",
78     NULL,
79 };
80 #define file_type 1000
81 #define interactive_type 1001
82 #define eval_type 1002
83 #define func_type_type 1003
84 #define fstring_type 1004
85 #define statements_type 1005
86 #define statement_type 1006
87 #define statement_newline_type 1007
88 #define simple_stmts_type 1008
89 #define simple_stmt_type 1009
90 #define compound_stmt_type 1010
91 #define assignment_type 1011
92 #define annotated_rhs_type 1012
93 #define augassign_type 1013
94 #define return_stmt_type 1014
95 #define raise_stmt_type 1015
96 #define global_stmt_type 1016
97 #define nonlocal_stmt_type 1017
98 #define del_stmt_type 1018
99 #define yield_stmt_type 1019
100 #define assert_stmt_type 1020
101 #define import_stmt_type 1021
102 #define import_name_type 1022
103 #define import_from_type 1023
104 #define import_from_targets_type 1024
105 #define import_from_as_names_type 1025
106 #define import_from_as_name_type 1026
107 #define dotted_as_names_type 1027
108 #define dotted_as_name_type 1028
109 #define dotted_name_type 1029  // Left-recursive
110 #define block_type 1030
111 #define decorators_type 1031
112 #define class_def_type 1032
113 #define class_def_raw_type 1033
114 #define function_def_type 1034
115 #define function_def_raw_type 1035
116 #define params_type 1036
117 #define parameters_type 1037
118 #define slash_no_default_type 1038
119 #define slash_with_default_type 1039
120 #define star_etc_type 1040
121 #define kwds_type 1041
122 #define param_no_default_type 1042
123 #define param_no_default_star_annotation_type 1043
124 #define param_with_default_type 1044
125 #define param_maybe_default_type 1045
126 #define param_type 1046
127 #define param_star_annotation_type 1047
128 #define annotation_type 1048
129 #define star_annotation_type 1049
130 #define default_type 1050
131 #define if_stmt_type 1051
132 #define elif_stmt_type 1052
133 #define else_block_type 1053
134 #define while_stmt_type 1054
135 #define for_stmt_type 1055
136 #define with_stmt_type 1056
137 #define with_item_type 1057
138 #define try_stmt_type 1058
139 #define except_block_type 1059
140 #define except_star_block_type 1060
141 #define finally_block_type 1061
142 #define match_stmt_type 1062
143 #define subject_expr_type 1063
144 #define case_block_type 1064
145 #define guard_type 1065
146 #define patterns_type 1066
147 #define pattern_type 1067
148 #define as_pattern_type 1068
149 #define or_pattern_type 1069
150 #define closed_pattern_type 1070
151 #define literal_pattern_type 1071
152 #define literal_expr_type 1072
153 #define complex_number_type 1073
154 #define signed_number_type 1074
155 #define signed_real_number_type 1075
156 #define real_number_type 1076
157 #define imaginary_number_type 1077
158 #define capture_pattern_type 1078
159 #define pattern_capture_target_type 1079
160 #define wildcard_pattern_type 1080
161 #define value_pattern_type 1081
162 #define attr_type 1082  // Left-recursive
163 #define name_or_attr_type 1083  // Left-recursive
164 #define group_pattern_type 1084
165 #define sequence_pattern_type 1085
166 #define open_sequence_pattern_type 1086
167 #define maybe_sequence_pattern_type 1087
168 #define maybe_star_pattern_type 1088
169 #define star_pattern_type 1089
170 #define mapping_pattern_type 1090
171 #define items_pattern_type 1091
172 #define key_value_pattern_type 1092
173 #define double_star_pattern_type 1093
174 #define class_pattern_type 1094
175 #define positional_patterns_type 1095
176 #define keyword_patterns_type 1096
177 #define keyword_pattern_type 1097
178 #define expressions_type 1098
179 #define expression_type 1099
180 #define yield_expr_type 1100
181 #define star_expressions_type 1101
182 #define star_expression_type 1102
183 #define star_named_expressions_type 1103
184 #define star_named_expression_type 1104
185 #define assignment_expression_type 1105
186 #define named_expression_type 1106
187 #define disjunction_type 1107
188 #define conjunction_type 1108
189 #define inversion_type 1109
190 #define comparison_type 1110
191 #define compare_op_bitwise_or_pair_type 1111
192 #define eq_bitwise_or_type 1112
193 #define noteq_bitwise_or_type 1113
194 #define lte_bitwise_or_type 1114
195 #define lt_bitwise_or_type 1115
196 #define gte_bitwise_or_type 1116
197 #define gt_bitwise_or_type 1117
198 #define notin_bitwise_or_type 1118
199 #define in_bitwise_or_type 1119
200 #define isnot_bitwise_or_type 1120
201 #define is_bitwise_or_type 1121
202 #define bitwise_or_type 1122  // Left-recursive
203 #define bitwise_xor_type 1123  // Left-recursive
204 #define bitwise_and_type 1124  // Left-recursive
205 #define shift_expr_type 1125  // Left-recursive
206 #define sum_type 1126  // Left-recursive
207 #define term_type 1127  // Left-recursive
208 #define factor_type 1128
209 #define power_type 1129
210 #define await_primary_type 1130
211 #define primary_type 1131  // Left-recursive
212 #define slices_type 1132
213 #define slice_type 1133
214 #define atom_type 1134
215 #define group_type 1135
216 #define lambdef_type 1136
217 #define lambda_params_type 1137
218 #define lambda_parameters_type 1138
219 #define lambda_slash_no_default_type 1139
220 #define lambda_slash_with_default_type 1140
221 #define lambda_star_etc_type 1141
222 #define lambda_kwds_type 1142
223 #define lambda_param_no_default_type 1143
224 #define lambda_param_with_default_type 1144
225 #define lambda_param_maybe_default_type 1145
226 #define lambda_param_type 1146
227 #define strings_type 1147
228 #define list_type 1148
229 #define tuple_type 1149
230 #define set_type 1150
231 #define dict_type 1151
232 #define double_starred_kvpairs_type 1152
233 #define double_starred_kvpair_type 1153
234 #define kvpair_type 1154
235 #define for_if_clauses_type 1155
236 #define for_if_clause_type 1156
237 #define listcomp_type 1157
238 #define setcomp_type 1158
239 #define genexp_type 1159
240 #define dictcomp_type 1160
241 #define arguments_type 1161
242 #define args_type 1162
243 #define kwargs_type 1163
244 #define starred_expression_type 1164
245 #define kwarg_or_starred_type 1165
246 #define kwarg_or_double_starred_type 1166
247 #define star_targets_type 1167
248 #define star_targets_list_seq_type 1168
249 #define star_targets_tuple_seq_type 1169
250 #define star_target_type 1170
251 #define target_with_star_atom_type 1171
252 #define star_atom_type 1172
253 #define single_target_type 1173
254 #define single_subscript_attribute_target_type 1174
255 #define t_primary_type 1175  // Left-recursive
256 #define t_lookahead_type 1176
257 #define del_targets_type 1177
258 #define del_target_type 1178
259 #define del_t_atom_type 1179
260 #define type_expressions_type 1180
261 #define func_type_comment_type 1181
262 #define invalid_arguments_type 1182
263 #define invalid_kwarg_type 1183
264 #define expression_without_invalid_type 1184
265 #define invalid_legacy_expression_type 1185
266 #define invalid_expression_type 1186
267 #define invalid_named_expression_type 1187
268 #define invalid_assignment_type 1188
269 #define invalid_ann_assign_target_type 1189
270 #define invalid_del_stmt_type 1190
271 #define invalid_block_type 1191
272 #define invalid_comprehension_type 1192
273 #define invalid_dict_comprehension_type 1193
274 #define invalid_parameters_type 1194
275 #define invalid_default_type 1195
276 #define invalid_star_etc_type 1196
277 #define invalid_kwds_type 1197
278 #define invalid_parameters_helper_type 1198
279 #define invalid_lambda_parameters_type 1199
280 #define invalid_lambda_parameters_helper_type 1200
281 #define invalid_lambda_star_etc_type 1201
282 #define invalid_lambda_kwds_type 1202
283 #define invalid_double_type_comments_type 1203
284 #define invalid_with_item_type 1204
285 #define invalid_for_target_type 1205
286 #define invalid_group_type 1206
287 #define invalid_import_from_targets_type 1207
288 #define invalid_with_stmt_type 1208
289 #define invalid_with_stmt_indent_type 1209
290 #define invalid_try_stmt_type 1210
291 #define invalid_except_stmt_type 1211
292 #define invalid_finally_stmt_type 1212
293 #define invalid_except_stmt_indent_type 1213
294 #define invalid_except_star_stmt_indent_type 1214
295 #define invalid_match_stmt_type 1215
296 #define invalid_case_block_type 1216
297 #define invalid_as_pattern_type 1217
298 #define invalid_class_pattern_type 1218
299 #define invalid_class_argument_pattern_type 1219
300 #define invalid_if_stmt_type 1220
301 #define invalid_elif_stmt_type 1221
302 #define invalid_else_stmt_type 1222
303 #define invalid_while_stmt_type 1223
304 #define invalid_for_stmt_type 1224
305 #define invalid_def_raw_type 1225
306 #define invalid_class_def_raw_type 1226
307 #define invalid_double_starred_kvpairs_type 1227
308 #define invalid_kvpair_type 1228
309 #define _loop0_1_type 1229
310 #define _loop0_2_type 1230
311 #define _loop1_3_type 1231
312 #define _loop0_5_type 1232
313 #define _gather_4_type 1233
314 #define _tmp_6_type 1234
315 #define _tmp_7_type 1235
316 #define _tmp_8_type 1236
317 #define _tmp_9_type 1237
318 #define _tmp_10_type 1238
319 #define _tmp_11_type 1239
320 #define _tmp_12_type 1240
321 #define _tmp_13_type 1241
322 #define _loop1_14_type 1242
323 #define _tmp_15_type 1243
324 #define _tmp_16_type 1244
325 #define _tmp_17_type 1245
326 #define _loop0_19_type 1246
327 #define _gather_18_type 1247
328 #define _loop0_21_type 1248
329 #define _gather_20_type 1249
330 #define _tmp_22_type 1250
331 #define _tmp_23_type 1251
332 #define _loop0_24_type 1252
333 #define _loop1_25_type 1253
334 #define _loop0_27_type 1254
335 #define _gather_26_type 1255
336 #define _tmp_28_type 1256
337 #define _loop0_30_type 1257
338 #define _gather_29_type 1258
339 #define _tmp_31_type 1259
340 #define _loop1_32_type 1260
341 #define _tmp_33_type 1261
342 #define _tmp_34_type 1262
343 #define _tmp_35_type 1263
344 #define _loop0_36_type 1264
345 #define _loop0_37_type 1265
346 #define _loop0_38_type 1266
347 #define _loop1_39_type 1267
348 #define _loop0_40_type 1268
349 #define _loop1_41_type 1269
350 #define _loop1_42_type 1270
351 #define _loop1_43_type 1271
352 #define _loop0_44_type 1272
353 #define _loop1_45_type 1273
354 #define _loop0_46_type 1274
355 #define _loop1_47_type 1275
356 #define _loop0_48_type 1276
357 #define _loop0_49_type 1277
358 #define _loop1_50_type 1278
359 #define _loop0_52_type 1279
360 #define _gather_51_type 1280
361 #define _loop0_54_type 1281
362 #define _gather_53_type 1282
363 #define _loop0_56_type 1283
364 #define _gather_55_type 1284
365 #define _loop0_58_type 1285
366 #define _gather_57_type 1286
367 #define _tmp_59_type 1287
368 #define _loop1_60_type 1288
369 #define _loop1_61_type 1289
370 #define _tmp_62_type 1290
371 #define _tmp_63_type 1291
372 #define _loop1_64_type 1292
373 #define _loop0_66_type 1293
374 #define _gather_65_type 1294
375 #define _tmp_67_type 1295
376 #define _tmp_68_type 1296
377 #define _tmp_69_type 1297
378 #define _tmp_70_type 1298
379 #define _loop0_72_type 1299
380 #define _gather_71_type 1300
381 #define _loop0_74_type 1301
382 #define _gather_73_type 1302
383 #define _tmp_75_type 1303
384 #define _loop0_77_type 1304
385 #define _gather_76_type 1305
386 #define _loop0_79_type 1306
387 #define _gather_78_type 1307
388 #define _loop1_80_type 1308
389 #define _loop1_81_type 1309
390 #define _loop0_83_type 1310
391 #define _gather_82_type 1311
392 #define _loop1_84_type 1312
393 #define _loop1_85_type 1313
394 #define _loop1_86_type 1314
395 #define _tmp_87_type 1315
396 #define _loop0_89_type 1316
397 #define _gather_88_type 1317
398 #define _tmp_90_type 1318
399 #define _tmp_91_type 1319
400 #define _tmp_92_type 1320
401 #define _tmp_93_type 1321
402 #define _tmp_94_type 1322
403 #define _loop0_95_type 1323
404 #define _loop0_96_type 1324
405 #define _loop0_97_type 1325
406 #define _loop1_98_type 1326
407 #define _loop0_99_type 1327
408 #define _loop1_100_type 1328
409 #define _loop1_101_type 1329
410 #define _loop1_102_type 1330
411 #define _loop0_103_type 1331
412 #define _loop1_104_type 1332
413 #define _loop0_105_type 1333
414 #define _loop1_106_type 1334
415 #define _loop0_107_type 1335
416 #define _loop1_108_type 1336
417 #define _loop1_109_type 1337
418 #define _tmp_110_type 1338
419 #define _loop0_112_type 1339
420 #define _gather_111_type 1340
421 #define _loop1_113_type 1341
422 #define _loop0_114_type 1342
423 #define _loop0_115_type 1343
424 #define _tmp_116_type 1344
425 #define _loop0_118_type 1345
426 #define _gather_117_type 1346
427 #define _tmp_119_type 1347
428 #define _loop0_121_type 1348
429 #define _gather_120_type 1349
430 #define _loop0_123_type 1350
431 #define _gather_122_type 1351
432 #define _loop0_125_type 1352
433 #define _gather_124_type 1353
434 #define _loop0_127_type 1354
435 #define _gather_126_type 1355
436 #define _loop0_128_type 1356
437 #define _loop0_130_type 1357
438 #define _gather_129_type 1358
439 #define _loop1_131_type 1359
440 #define _tmp_132_type 1360
441 #define _loop0_134_type 1361
442 #define _gather_133_type 1362
443 #define _loop0_136_type 1363
444 #define _gather_135_type 1364
445 #define _loop0_138_type 1365
446 #define _gather_137_type 1366
447 #define _loop0_140_type 1367
448 #define _gather_139_type 1368
449 #define _loop0_142_type 1369
450 #define _gather_141_type 1370
451 #define _tmp_143_type 1371
452 #define _tmp_144_type 1372
453 #define _tmp_145_type 1373
454 #define _tmp_146_type 1374
455 #define _tmp_147_type 1375
456 #define _tmp_148_type 1376
457 #define _tmp_149_type 1377
458 #define _tmp_150_type 1378
459 #define _tmp_151_type 1379
460 #define _loop0_152_type 1380
461 #define _loop0_153_type 1381
462 #define _loop0_154_type 1382
463 #define _tmp_155_type 1383
464 #define _tmp_156_type 1384
465 #define _tmp_157_type 1385
466 #define _tmp_158_type 1386
467 #define _loop0_159_type 1387
468 #define _loop0_160_type 1388
469 #define _loop1_161_type 1389
470 #define _tmp_162_type 1390
471 #define _loop0_163_type 1391
472 #define _tmp_164_type 1392
473 #define _loop0_165_type 1393
474 #define _tmp_166_type 1394
475 #define _loop0_167_type 1395
476 #define _loop1_168_type 1396
477 #define _tmp_169_type 1397
478 #define _tmp_170_type 1398
479 #define _tmp_171_type 1399
480 #define _loop0_172_type 1400
481 #define _tmp_173_type 1401
482 #define _tmp_174_type 1402
483 #define _loop1_175_type 1403
484 #define _loop0_176_type 1404
485 #define _loop0_177_type 1405
486 #define _loop0_179_type 1406
487 #define _gather_178_type 1407
488 #define _tmp_180_type 1408
489 #define _loop0_181_type 1409
490 #define _tmp_182_type 1410
491 #define _loop0_183_type 1411
492 #define _tmp_184_type 1412
493 #define _loop0_185_type 1413
494 #define _loop1_186_type 1414
495 #define _loop1_187_type 1415
496 #define _tmp_188_type 1416
497 #define _tmp_189_type 1417
498 #define _loop0_190_type 1418
499 #define _tmp_191_type 1419
500 #define _tmp_192_type 1420
501 #define _tmp_193_type 1421
502 #define _loop0_195_type 1422
503 #define _gather_194_type 1423
504 #define _loop0_197_type 1424
505 #define _gather_196_type 1425
506 #define _loop0_199_type 1426
507 #define _gather_198_type 1427
508 #define _loop0_201_type 1428
509 #define _gather_200_type 1429
510 #define _tmp_202_type 1430
511 #define _loop0_203_type 1431
512 #define _loop1_204_type 1432
513 #define _tmp_205_type 1433
514 #define _loop0_206_type 1434
515 #define _loop1_207_type 1435
516 #define _tmp_208_type 1436
517 #define _tmp_209_type 1437
518 #define _tmp_210_type 1438
519 #define _tmp_211_type 1439
520 #define _tmp_212_type 1440
521 #define _tmp_213_type 1441
522 #define _tmp_214_type 1442
523 #define _tmp_215_type 1443
524 #define _tmp_216_type 1444
525 #define _tmp_217_type 1445
526 #define _loop0_219_type 1446
527 #define _gather_218_type 1447
528 #define _tmp_220_type 1448
529 #define _tmp_221_type 1449
530 #define _tmp_222_type 1450
531 #define _tmp_223_type 1451
532 #define _tmp_224_type 1452
533 #define _tmp_225_type 1453
534 #define _tmp_226_type 1454
535 #define _tmp_227_type 1455
536 #define _tmp_228_type 1456
537 #define _tmp_229_type 1457
538 #define _tmp_230_type 1458
539 #define _tmp_231_type 1459
540 #define _tmp_232_type 1460
541 #define _tmp_233_type 1461
542 #define _tmp_234_type 1462
543 #define _tmp_235_type 1463
544 #define _tmp_236_type 1464
545 #define _tmp_237_type 1465
546 #define _tmp_238_type 1466
547 #define _tmp_239_type 1467
548 #define _tmp_240_type 1468
549 #define _tmp_241_type 1469
550 #define _tmp_242_type 1470
551 #define _tmp_243_type 1471
552 #define _tmp_244_type 1472
553 #define _tmp_245_type 1473
554 #define _tmp_246_type 1474
555 #define _tmp_247_type 1475
556 #define _tmp_248_type 1476
557 #define _tmp_249_type 1477
558 
559 static mod_ty file_rule(Parser *p);
560 static mod_ty interactive_rule(Parser *p);
561 static mod_ty eval_rule(Parser *p);
562 static mod_ty func_type_rule(Parser *p);
563 static expr_ty fstring_rule(Parser *p);
564 static asdl_stmt_seq* statements_rule(Parser *p);
565 static asdl_stmt_seq* statement_rule(Parser *p);
566 static asdl_stmt_seq* statement_newline_rule(Parser *p);
567 static asdl_stmt_seq* simple_stmts_rule(Parser *p);
568 static stmt_ty simple_stmt_rule(Parser *p);
569 static stmt_ty compound_stmt_rule(Parser *p);
570 static stmt_ty assignment_rule(Parser *p);
571 static expr_ty annotated_rhs_rule(Parser *p);
572 static AugOperator* augassign_rule(Parser *p);
573 static stmt_ty return_stmt_rule(Parser *p);
574 static stmt_ty raise_stmt_rule(Parser *p);
575 static stmt_ty global_stmt_rule(Parser *p);
576 static stmt_ty nonlocal_stmt_rule(Parser *p);
577 static stmt_ty del_stmt_rule(Parser *p);
578 static stmt_ty yield_stmt_rule(Parser *p);
579 static stmt_ty assert_stmt_rule(Parser *p);
580 static stmt_ty import_stmt_rule(Parser *p);
581 static stmt_ty import_name_rule(Parser *p);
582 static stmt_ty import_from_rule(Parser *p);
583 static asdl_alias_seq* import_from_targets_rule(Parser *p);
584 static asdl_alias_seq* import_from_as_names_rule(Parser *p);
585 static alias_ty import_from_as_name_rule(Parser *p);
586 static asdl_alias_seq* dotted_as_names_rule(Parser *p);
587 static alias_ty dotted_as_name_rule(Parser *p);
588 static expr_ty dotted_name_rule(Parser *p);
589 static asdl_stmt_seq* block_rule(Parser *p);
590 static asdl_expr_seq* decorators_rule(Parser *p);
591 static stmt_ty class_def_rule(Parser *p);
592 static stmt_ty class_def_raw_rule(Parser *p);
593 static stmt_ty function_def_rule(Parser *p);
594 static stmt_ty function_def_raw_rule(Parser *p);
595 static arguments_ty params_rule(Parser *p);
596 static arguments_ty parameters_rule(Parser *p);
597 static asdl_arg_seq* slash_no_default_rule(Parser *p);
598 static SlashWithDefault* slash_with_default_rule(Parser *p);
599 static StarEtc* star_etc_rule(Parser *p);
600 static arg_ty kwds_rule(Parser *p);
601 static arg_ty param_no_default_rule(Parser *p);
602 static arg_ty param_no_default_star_annotation_rule(Parser *p);
603 static NameDefaultPair* param_with_default_rule(Parser *p);
604 static NameDefaultPair* param_maybe_default_rule(Parser *p);
605 static arg_ty param_rule(Parser *p);
606 static arg_ty param_star_annotation_rule(Parser *p);
607 static expr_ty annotation_rule(Parser *p);
608 static expr_ty star_annotation_rule(Parser *p);
609 static expr_ty default_rule(Parser *p);
610 static stmt_ty if_stmt_rule(Parser *p);
611 static stmt_ty elif_stmt_rule(Parser *p);
612 static asdl_stmt_seq* else_block_rule(Parser *p);
613 static stmt_ty while_stmt_rule(Parser *p);
614 static stmt_ty for_stmt_rule(Parser *p);
615 static stmt_ty with_stmt_rule(Parser *p);
616 static withitem_ty with_item_rule(Parser *p);
617 static stmt_ty try_stmt_rule(Parser *p);
618 static excepthandler_ty except_block_rule(Parser *p);
619 static excepthandler_ty except_star_block_rule(Parser *p);
620 static asdl_stmt_seq* finally_block_rule(Parser *p);
621 static stmt_ty match_stmt_rule(Parser *p);
622 static expr_ty subject_expr_rule(Parser *p);
623 static match_case_ty case_block_rule(Parser *p);
624 static expr_ty guard_rule(Parser *p);
625 static pattern_ty patterns_rule(Parser *p);
626 static pattern_ty pattern_rule(Parser *p);
627 static pattern_ty as_pattern_rule(Parser *p);
628 static pattern_ty or_pattern_rule(Parser *p);
629 static pattern_ty closed_pattern_rule(Parser *p);
630 static pattern_ty literal_pattern_rule(Parser *p);
631 static expr_ty literal_expr_rule(Parser *p);
632 static expr_ty complex_number_rule(Parser *p);
633 static expr_ty signed_number_rule(Parser *p);
634 static expr_ty signed_real_number_rule(Parser *p);
635 static expr_ty real_number_rule(Parser *p);
636 static expr_ty imaginary_number_rule(Parser *p);
637 static pattern_ty capture_pattern_rule(Parser *p);
638 static expr_ty pattern_capture_target_rule(Parser *p);
639 static pattern_ty wildcard_pattern_rule(Parser *p);
640 static pattern_ty value_pattern_rule(Parser *p);
641 static expr_ty attr_rule(Parser *p);
642 static expr_ty name_or_attr_rule(Parser *p);
643 static pattern_ty group_pattern_rule(Parser *p);
644 static pattern_ty sequence_pattern_rule(Parser *p);
645 static asdl_seq* open_sequence_pattern_rule(Parser *p);
646 static asdl_seq* maybe_sequence_pattern_rule(Parser *p);
647 static pattern_ty maybe_star_pattern_rule(Parser *p);
648 static pattern_ty star_pattern_rule(Parser *p);
649 static pattern_ty mapping_pattern_rule(Parser *p);
650 static asdl_seq* items_pattern_rule(Parser *p);
651 static KeyPatternPair* key_value_pattern_rule(Parser *p);
652 static expr_ty double_star_pattern_rule(Parser *p);
653 static pattern_ty class_pattern_rule(Parser *p);
654 static asdl_pattern_seq* positional_patterns_rule(Parser *p);
655 static asdl_seq* keyword_patterns_rule(Parser *p);
656 static KeyPatternPair* keyword_pattern_rule(Parser *p);
657 static expr_ty expressions_rule(Parser *p);
658 static expr_ty expression_rule(Parser *p);
659 static expr_ty yield_expr_rule(Parser *p);
660 static expr_ty star_expressions_rule(Parser *p);
661 static expr_ty star_expression_rule(Parser *p);
662 static asdl_expr_seq* star_named_expressions_rule(Parser *p);
663 static expr_ty star_named_expression_rule(Parser *p);
664 static expr_ty assignment_expression_rule(Parser *p);
665 static expr_ty named_expression_rule(Parser *p);
666 static expr_ty disjunction_rule(Parser *p);
667 static expr_ty conjunction_rule(Parser *p);
668 static expr_ty inversion_rule(Parser *p);
669 static expr_ty comparison_rule(Parser *p);
670 static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
671 static CmpopExprPair* eq_bitwise_or_rule(Parser *p);
672 static CmpopExprPair* noteq_bitwise_or_rule(Parser *p);
673 static CmpopExprPair* lte_bitwise_or_rule(Parser *p);
674 static CmpopExprPair* lt_bitwise_or_rule(Parser *p);
675 static CmpopExprPair* gte_bitwise_or_rule(Parser *p);
676 static CmpopExprPair* gt_bitwise_or_rule(Parser *p);
677 static CmpopExprPair* notin_bitwise_or_rule(Parser *p);
678 static CmpopExprPair* in_bitwise_or_rule(Parser *p);
679 static CmpopExprPair* isnot_bitwise_or_rule(Parser *p);
680 static CmpopExprPair* is_bitwise_or_rule(Parser *p);
681 static expr_ty bitwise_or_rule(Parser *p);
682 static expr_ty bitwise_xor_rule(Parser *p);
683 static expr_ty bitwise_and_rule(Parser *p);
684 static expr_ty shift_expr_rule(Parser *p);
685 static expr_ty sum_rule(Parser *p);
686 static expr_ty term_rule(Parser *p);
687 static expr_ty factor_rule(Parser *p);
688 static expr_ty power_rule(Parser *p);
689 static expr_ty await_primary_rule(Parser *p);
690 static expr_ty primary_rule(Parser *p);
691 static expr_ty slices_rule(Parser *p);
692 static expr_ty slice_rule(Parser *p);
693 static expr_ty atom_rule(Parser *p);
694 static expr_ty group_rule(Parser *p);
695 static expr_ty lambdef_rule(Parser *p);
696 static arguments_ty lambda_params_rule(Parser *p);
697 static arguments_ty lambda_parameters_rule(Parser *p);
698 static asdl_arg_seq* lambda_slash_no_default_rule(Parser *p);
699 static SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
700 static StarEtc* lambda_star_etc_rule(Parser *p);
701 static arg_ty lambda_kwds_rule(Parser *p);
702 static arg_ty lambda_param_no_default_rule(Parser *p);
703 static NameDefaultPair* lambda_param_with_default_rule(Parser *p);
704 static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
705 static arg_ty lambda_param_rule(Parser *p);
706 static expr_ty strings_rule(Parser *p);
707 static expr_ty list_rule(Parser *p);
708 static expr_ty tuple_rule(Parser *p);
709 static expr_ty set_rule(Parser *p);
710 static expr_ty dict_rule(Parser *p);
711 static asdl_seq* double_starred_kvpairs_rule(Parser *p);
712 static KeyValuePair* double_starred_kvpair_rule(Parser *p);
713 static KeyValuePair* kvpair_rule(Parser *p);
714 static asdl_comprehension_seq* for_if_clauses_rule(Parser *p);
715 static comprehension_ty for_if_clause_rule(Parser *p);
716 static expr_ty listcomp_rule(Parser *p);
717 static expr_ty setcomp_rule(Parser *p);
718 static expr_ty genexp_rule(Parser *p);
719 static expr_ty dictcomp_rule(Parser *p);
720 static expr_ty arguments_rule(Parser *p);
721 static expr_ty args_rule(Parser *p);
722 static asdl_seq* kwargs_rule(Parser *p);
723 static expr_ty starred_expression_rule(Parser *p);
724 static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
725 static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
726 static expr_ty star_targets_rule(Parser *p);
727 static asdl_expr_seq* star_targets_list_seq_rule(Parser *p);
728 static asdl_expr_seq* star_targets_tuple_seq_rule(Parser *p);
729 static expr_ty star_target_rule(Parser *p);
730 static expr_ty target_with_star_atom_rule(Parser *p);
731 static expr_ty star_atom_rule(Parser *p);
732 static expr_ty single_target_rule(Parser *p);
733 static expr_ty single_subscript_attribute_target_rule(Parser *p);
734 static expr_ty t_primary_rule(Parser *p);
735 static void *t_lookahead_rule(Parser *p);
736 static asdl_expr_seq* del_targets_rule(Parser *p);
737 static expr_ty del_target_rule(Parser *p);
738 static expr_ty del_t_atom_rule(Parser *p);
739 static asdl_expr_seq* type_expressions_rule(Parser *p);
740 static Token* func_type_comment_rule(Parser *p);
741 static void *invalid_arguments_rule(Parser *p);
742 static void *invalid_kwarg_rule(Parser *p);
743 static expr_ty expression_without_invalid_rule(Parser *p);
744 static void *invalid_legacy_expression_rule(Parser *p);
745 static void *invalid_expression_rule(Parser *p);
746 static void *invalid_named_expression_rule(Parser *p);
747 static void *invalid_assignment_rule(Parser *p);
748 static expr_ty invalid_ann_assign_target_rule(Parser *p);
749 static void *invalid_del_stmt_rule(Parser *p);
750 static void *invalid_block_rule(Parser *p);
751 static void *invalid_comprehension_rule(Parser *p);
752 static void *invalid_dict_comprehension_rule(Parser *p);
753 static void *invalid_parameters_rule(Parser *p);
754 static void *invalid_default_rule(Parser *p);
755 static void *invalid_star_etc_rule(Parser *p);
756 static void *invalid_kwds_rule(Parser *p);
757 static void *invalid_parameters_helper_rule(Parser *p);
758 static void *invalid_lambda_parameters_rule(Parser *p);
759 static void *invalid_lambda_parameters_helper_rule(Parser *p);
760 static void *invalid_lambda_star_etc_rule(Parser *p);
761 static void *invalid_lambda_kwds_rule(Parser *p);
762 static void *invalid_double_type_comments_rule(Parser *p);
763 static void *invalid_with_item_rule(Parser *p);
764 static void *invalid_for_target_rule(Parser *p);
765 static void *invalid_group_rule(Parser *p);
766 static void *invalid_import_from_targets_rule(Parser *p);
767 static void *invalid_with_stmt_rule(Parser *p);
768 static void *invalid_with_stmt_indent_rule(Parser *p);
769 static void *invalid_try_stmt_rule(Parser *p);
770 static void *invalid_except_stmt_rule(Parser *p);
771 static void *invalid_finally_stmt_rule(Parser *p);
772 static void *invalid_except_stmt_indent_rule(Parser *p);
773 static void *invalid_except_star_stmt_indent_rule(Parser *p);
774 static void *invalid_match_stmt_rule(Parser *p);
775 static void *invalid_case_block_rule(Parser *p);
776 static void *invalid_as_pattern_rule(Parser *p);
777 static void *invalid_class_pattern_rule(Parser *p);
778 static asdl_pattern_seq* invalid_class_argument_pattern_rule(Parser *p);
779 static void *invalid_if_stmt_rule(Parser *p);
780 static void *invalid_elif_stmt_rule(Parser *p);
781 static void *invalid_else_stmt_rule(Parser *p);
782 static void *invalid_while_stmt_rule(Parser *p);
783 static void *invalid_for_stmt_rule(Parser *p);
784 static void *invalid_def_raw_rule(Parser *p);
785 static void *invalid_class_def_raw_rule(Parser *p);
786 static void *invalid_double_starred_kvpairs_rule(Parser *p);
787 static void *invalid_kvpair_rule(Parser *p);
788 static asdl_seq *_loop0_1_rule(Parser *p);
789 static asdl_seq *_loop0_2_rule(Parser *p);
790 static asdl_seq *_loop1_3_rule(Parser *p);
791 static asdl_seq *_loop0_5_rule(Parser *p);
792 static asdl_seq *_gather_4_rule(Parser *p);
793 static void *_tmp_6_rule(Parser *p);
794 static void *_tmp_7_rule(Parser *p);
795 static void *_tmp_8_rule(Parser *p);
796 static void *_tmp_9_rule(Parser *p);
797 static void *_tmp_10_rule(Parser *p);
798 static void *_tmp_11_rule(Parser *p);
799 static void *_tmp_12_rule(Parser *p);
800 static void *_tmp_13_rule(Parser *p);
801 static asdl_seq *_loop1_14_rule(Parser *p);
802 static void *_tmp_15_rule(Parser *p);
803 static void *_tmp_16_rule(Parser *p);
804 static void *_tmp_17_rule(Parser *p);
805 static asdl_seq *_loop0_19_rule(Parser *p);
806 static asdl_seq *_gather_18_rule(Parser *p);
807 static asdl_seq *_loop0_21_rule(Parser *p);
808 static asdl_seq *_gather_20_rule(Parser *p);
809 static void *_tmp_22_rule(Parser *p);
810 static void *_tmp_23_rule(Parser *p);
811 static asdl_seq *_loop0_24_rule(Parser *p);
812 static asdl_seq *_loop1_25_rule(Parser *p);
813 static asdl_seq *_loop0_27_rule(Parser *p);
814 static asdl_seq *_gather_26_rule(Parser *p);
815 static void *_tmp_28_rule(Parser *p);
816 static asdl_seq *_loop0_30_rule(Parser *p);
817 static asdl_seq *_gather_29_rule(Parser *p);
818 static void *_tmp_31_rule(Parser *p);
819 static asdl_seq *_loop1_32_rule(Parser *p);
820 static void *_tmp_33_rule(Parser *p);
821 static void *_tmp_34_rule(Parser *p);
822 static void *_tmp_35_rule(Parser *p);
823 static asdl_seq *_loop0_36_rule(Parser *p);
824 static asdl_seq *_loop0_37_rule(Parser *p);
825 static asdl_seq *_loop0_38_rule(Parser *p);
826 static asdl_seq *_loop1_39_rule(Parser *p);
827 static asdl_seq *_loop0_40_rule(Parser *p);
828 static asdl_seq *_loop1_41_rule(Parser *p);
829 static asdl_seq *_loop1_42_rule(Parser *p);
830 static asdl_seq *_loop1_43_rule(Parser *p);
831 static asdl_seq *_loop0_44_rule(Parser *p);
832 static asdl_seq *_loop1_45_rule(Parser *p);
833 static asdl_seq *_loop0_46_rule(Parser *p);
834 static asdl_seq *_loop1_47_rule(Parser *p);
835 static asdl_seq *_loop0_48_rule(Parser *p);
836 static asdl_seq *_loop0_49_rule(Parser *p);
837 static asdl_seq *_loop1_50_rule(Parser *p);
838 static asdl_seq *_loop0_52_rule(Parser *p);
839 static asdl_seq *_gather_51_rule(Parser *p);
840 static asdl_seq *_loop0_54_rule(Parser *p);
841 static asdl_seq *_gather_53_rule(Parser *p);
842 static asdl_seq *_loop0_56_rule(Parser *p);
843 static asdl_seq *_gather_55_rule(Parser *p);
844 static asdl_seq *_loop0_58_rule(Parser *p);
845 static asdl_seq *_gather_57_rule(Parser *p);
846 static void *_tmp_59_rule(Parser *p);
847 static asdl_seq *_loop1_60_rule(Parser *p);
848 static asdl_seq *_loop1_61_rule(Parser *p);
849 static void *_tmp_62_rule(Parser *p);
850 static void *_tmp_63_rule(Parser *p);
851 static asdl_seq *_loop1_64_rule(Parser *p);
852 static asdl_seq *_loop0_66_rule(Parser *p);
853 static asdl_seq *_gather_65_rule(Parser *p);
854 static void *_tmp_67_rule(Parser *p);
855 static void *_tmp_68_rule(Parser *p);
856 static void *_tmp_69_rule(Parser *p);
857 static void *_tmp_70_rule(Parser *p);
858 static asdl_seq *_loop0_72_rule(Parser *p);
859 static asdl_seq *_gather_71_rule(Parser *p);
860 static asdl_seq *_loop0_74_rule(Parser *p);
861 static asdl_seq *_gather_73_rule(Parser *p);
862 static void *_tmp_75_rule(Parser *p);
863 static asdl_seq *_loop0_77_rule(Parser *p);
864 static asdl_seq *_gather_76_rule(Parser *p);
865 static asdl_seq *_loop0_79_rule(Parser *p);
866 static asdl_seq *_gather_78_rule(Parser *p);
867 static asdl_seq *_loop1_80_rule(Parser *p);
868 static asdl_seq *_loop1_81_rule(Parser *p);
869 static asdl_seq *_loop0_83_rule(Parser *p);
870 static asdl_seq *_gather_82_rule(Parser *p);
871 static asdl_seq *_loop1_84_rule(Parser *p);
872 static asdl_seq *_loop1_85_rule(Parser *p);
873 static asdl_seq *_loop1_86_rule(Parser *p);
874 static void *_tmp_87_rule(Parser *p);
875 static asdl_seq *_loop0_89_rule(Parser *p);
876 static asdl_seq *_gather_88_rule(Parser *p);
877 static void *_tmp_90_rule(Parser *p);
878 static void *_tmp_91_rule(Parser *p);
879 static void *_tmp_92_rule(Parser *p);
880 static void *_tmp_93_rule(Parser *p);
881 static void *_tmp_94_rule(Parser *p);
882 static asdl_seq *_loop0_95_rule(Parser *p);
883 static asdl_seq *_loop0_96_rule(Parser *p);
884 static asdl_seq *_loop0_97_rule(Parser *p);
885 static asdl_seq *_loop1_98_rule(Parser *p);
886 static asdl_seq *_loop0_99_rule(Parser *p);
887 static asdl_seq *_loop1_100_rule(Parser *p);
888 static asdl_seq *_loop1_101_rule(Parser *p);
889 static asdl_seq *_loop1_102_rule(Parser *p);
890 static asdl_seq *_loop0_103_rule(Parser *p);
891 static asdl_seq *_loop1_104_rule(Parser *p);
892 static asdl_seq *_loop0_105_rule(Parser *p);
893 static asdl_seq *_loop1_106_rule(Parser *p);
894 static asdl_seq *_loop0_107_rule(Parser *p);
895 static asdl_seq *_loop1_108_rule(Parser *p);
896 static asdl_seq *_loop1_109_rule(Parser *p);
897 static void *_tmp_110_rule(Parser *p);
898 static asdl_seq *_loop0_112_rule(Parser *p);
899 static asdl_seq *_gather_111_rule(Parser *p);
900 static asdl_seq *_loop1_113_rule(Parser *p);
901 static asdl_seq *_loop0_114_rule(Parser *p);
902 static asdl_seq *_loop0_115_rule(Parser *p);
903 static void *_tmp_116_rule(Parser *p);
904 static asdl_seq *_loop0_118_rule(Parser *p);
905 static asdl_seq *_gather_117_rule(Parser *p);
906 static void *_tmp_119_rule(Parser *p);
907 static asdl_seq *_loop0_121_rule(Parser *p);
908 static asdl_seq *_gather_120_rule(Parser *p);
909 static asdl_seq *_loop0_123_rule(Parser *p);
910 static asdl_seq *_gather_122_rule(Parser *p);
911 static asdl_seq *_loop0_125_rule(Parser *p);
912 static asdl_seq *_gather_124_rule(Parser *p);
913 static asdl_seq *_loop0_127_rule(Parser *p);
914 static asdl_seq *_gather_126_rule(Parser *p);
915 static asdl_seq *_loop0_128_rule(Parser *p);
916 static asdl_seq *_loop0_130_rule(Parser *p);
917 static asdl_seq *_gather_129_rule(Parser *p);
918 static asdl_seq *_loop1_131_rule(Parser *p);
919 static void *_tmp_132_rule(Parser *p);
920 static asdl_seq *_loop0_134_rule(Parser *p);
921 static asdl_seq *_gather_133_rule(Parser *p);
922 static asdl_seq *_loop0_136_rule(Parser *p);
923 static asdl_seq *_gather_135_rule(Parser *p);
924 static asdl_seq *_loop0_138_rule(Parser *p);
925 static asdl_seq *_gather_137_rule(Parser *p);
926 static asdl_seq *_loop0_140_rule(Parser *p);
927 static asdl_seq *_gather_139_rule(Parser *p);
928 static asdl_seq *_loop0_142_rule(Parser *p);
929 static asdl_seq *_gather_141_rule(Parser *p);
930 static void *_tmp_143_rule(Parser *p);
931 static void *_tmp_144_rule(Parser *p);
932 static void *_tmp_145_rule(Parser *p);
933 static void *_tmp_146_rule(Parser *p);
934 static void *_tmp_147_rule(Parser *p);
935 static void *_tmp_148_rule(Parser *p);
936 static void *_tmp_149_rule(Parser *p);
937 static void *_tmp_150_rule(Parser *p);
938 static void *_tmp_151_rule(Parser *p);
939 static asdl_seq *_loop0_152_rule(Parser *p);
940 static asdl_seq *_loop0_153_rule(Parser *p);
941 static asdl_seq *_loop0_154_rule(Parser *p);
942 static void *_tmp_155_rule(Parser *p);
943 static void *_tmp_156_rule(Parser *p);
944 static void *_tmp_157_rule(Parser *p);
945 static void *_tmp_158_rule(Parser *p);
946 static asdl_seq *_loop0_159_rule(Parser *p);
947 static asdl_seq *_loop0_160_rule(Parser *p);
948 static asdl_seq *_loop1_161_rule(Parser *p);
949 static void *_tmp_162_rule(Parser *p);
950 static asdl_seq *_loop0_163_rule(Parser *p);
951 static void *_tmp_164_rule(Parser *p);
952 static asdl_seq *_loop0_165_rule(Parser *p);
953 static void *_tmp_166_rule(Parser *p);
954 static asdl_seq *_loop0_167_rule(Parser *p);
955 static asdl_seq *_loop1_168_rule(Parser *p);
956 static void *_tmp_169_rule(Parser *p);
957 static void *_tmp_170_rule(Parser *p);
958 static void *_tmp_171_rule(Parser *p);
959 static asdl_seq *_loop0_172_rule(Parser *p);
960 static void *_tmp_173_rule(Parser *p);
961 static void *_tmp_174_rule(Parser *p);
962 static asdl_seq *_loop1_175_rule(Parser *p);
963 static asdl_seq *_loop0_176_rule(Parser *p);
964 static asdl_seq *_loop0_177_rule(Parser *p);
965 static asdl_seq *_loop0_179_rule(Parser *p);
966 static asdl_seq *_gather_178_rule(Parser *p);
967 static void *_tmp_180_rule(Parser *p);
968 static asdl_seq *_loop0_181_rule(Parser *p);
969 static void *_tmp_182_rule(Parser *p);
970 static asdl_seq *_loop0_183_rule(Parser *p);
971 static void *_tmp_184_rule(Parser *p);
972 static asdl_seq *_loop0_185_rule(Parser *p);
973 static asdl_seq *_loop1_186_rule(Parser *p);
974 static asdl_seq *_loop1_187_rule(Parser *p);
975 static void *_tmp_188_rule(Parser *p);
976 static void *_tmp_189_rule(Parser *p);
977 static asdl_seq *_loop0_190_rule(Parser *p);
978 static void *_tmp_191_rule(Parser *p);
979 static void *_tmp_192_rule(Parser *p);
980 static void *_tmp_193_rule(Parser *p);
981 static asdl_seq *_loop0_195_rule(Parser *p);
982 static asdl_seq *_gather_194_rule(Parser *p);
983 static asdl_seq *_loop0_197_rule(Parser *p);
984 static asdl_seq *_gather_196_rule(Parser *p);
985 static asdl_seq *_loop0_199_rule(Parser *p);
986 static asdl_seq *_gather_198_rule(Parser *p);
987 static asdl_seq *_loop0_201_rule(Parser *p);
988 static asdl_seq *_gather_200_rule(Parser *p);
989 static void *_tmp_202_rule(Parser *p);
990 static asdl_seq *_loop0_203_rule(Parser *p);
991 static asdl_seq *_loop1_204_rule(Parser *p);
992 static void *_tmp_205_rule(Parser *p);
993 static asdl_seq *_loop0_206_rule(Parser *p);
994 static asdl_seq *_loop1_207_rule(Parser *p);
995 static void *_tmp_208_rule(Parser *p);
996 static void *_tmp_209_rule(Parser *p);
997 static void *_tmp_210_rule(Parser *p);
998 static void *_tmp_211_rule(Parser *p);
999 static void *_tmp_212_rule(Parser *p);
1000 static void *_tmp_213_rule(Parser *p);
1001 static void *_tmp_214_rule(Parser *p);
1002 static void *_tmp_215_rule(Parser *p);
1003 static void *_tmp_216_rule(Parser *p);
1004 static void *_tmp_217_rule(Parser *p);
1005 static asdl_seq *_loop0_219_rule(Parser *p);
1006 static asdl_seq *_gather_218_rule(Parser *p);
1007 static void *_tmp_220_rule(Parser *p);
1008 static void *_tmp_221_rule(Parser *p);
1009 static void *_tmp_222_rule(Parser *p);
1010 static void *_tmp_223_rule(Parser *p);
1011 static void *_tmp_224_rule(Parser *p);
1012 static void *_tmp_225_rule(Parser *p);
1013 static void *_tmp_226_rule(Parser *p);
1014 static void *_tmp_227_rule(Parser *p);
1015 static void *_tmp_228_rule(Parser *p);
1016 static void *_tmp_229_rule(Parser *p);
1017 static void *_tmp_230_rule(Parser *p);
1018 static void *_tmp_231_rule(Parser *p);
1019 static void *_tmp_232_rule(Parser *p);
1020 static void *_tmp_233_rule(Parser *p);
1021 static void *_tmp_234_rule(Parser *p);
1022 static void *_tmp_235_rule(Parser *p);
1023 static void *_tmp_236_rule(Parser *p);
1024 static void *_tmp_237_rule(Parser *p);
1025 static void *_tmp_238_rule(Parser *p);
1026 static void *_tmp_239_rule(Parser *p);
1027 static void *_tmp_240_rule(Parser *p);
1028 static void *_tmp_241_rule(Parser *p);
1029 static void *_tmp_242_rule(Parser *p);
1030 static void *_tmp_243_rule(Parser *p);
1031 static void *_tmp_244_rule(Parser *p);
1032 static void *_tmp_245_rule(Parser *p);
1033 static void *_tmp_246_rule(Parser *p);
1034 static void *_tmp_247_rule(Parser *p);
1035 static void *_tmp_248_rule(Parser *p);
1036 static void *_tmp_249_rule(Parser *p);
1037 
1038 
1039 // file: statements? $
1040 static mod_ty
file_rule(Parser * p)1041 file_rule(Parser *p)
1042 {
1043     if (p->level++ == MAXSTACK) {
1044         p->error_indicator = 1;
1045         PyErr_NoMemory();
1046     }
1047     if (p->error_indicator) {
1048         p->level--;
1049         return NULL;
1050     }
1051     mod_ty _res = NULL;
1052     int _mark = p->mark;
1053     { // statements? $
1054         if (p->error_indicator) {
1055             p->level--;
1056             return NULL;
1057         }
1058         D(fprintf(stderr, "%*c> file[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statements? $"));
1059         void *a;
1060         Token * endmarker_var;
1061         if (
1062             (a = statements_rule(p), !p->error_indicator)  // statements?
1063             &&
1064             (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1065         )
1066         {
1067             D(fprintf(stderr, "%*c+ file[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statements? $"));
1068             _res = _PyPegen_make_module ( p , a );
1069             if (_res == NULL && PyErr_Occurred()) {
1070                 p->error_indicator = 1;
1071                 p->level--;
1072                 return NULL;
1073             }
1074             goto done;
1075         }
1076         p->mark = _mark;
1077         D(fprintf(stderr, "%*c%s file[%d-%d]: %s failed!\n", p->level, ' ',
1078                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statements? $"));
1079     }
1080     _res = NULL;
1081   done:
1082     p->level--;
1083     return _res;
1084 }
1085 
1086 // interactive: statement_newline
1087 static mod_ty
interactive_rule(Parser * p)1088 interactive_rule(Parser *p)
1089 {
1090     if (p->level++ == MAXSTACK) {
1091         p->error_indicator = 1;
1092         PyErr_NoMemory();
1093     }
1094     if (p->error_indicator) {
1095         p->level--;
1096         return NULL;
1097     }
1098     mod_ty _res = NULL;
1099     int _mark = p->mark;
1100     { // statement_newline
1101         if (p->error_indicator) {
1102             p->level--;
1103             return NULL;
1104         }
1105         D(fprintf(stderr, "%*c> interactive[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement_newline"));
1106         asdl_stmt_seq* a;
1107         if (
1108             (a = statement_newline_rule(p))  // statement_newline
1109         )
1110         {
1111             D(fprintf(stderr, "%*c+ interactive[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement_newline"));
1112             _res = _PyAST_Interactive ( a , p -> arena );
1113             if (_res == NULL && PyErr_Occurred()) {
1114                 p->error_indicator = 1;
1115                 p->level--;
1116                 return NULL;
1117             }
1118             goto done;
1119         }
1120         p->mark = _mark;
1121         D(fprintf(stderr, "%*c%s interactive[%d-%d]: %s failed!\n", p->level, ' ',
1122                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement_newline"));
1123     }
1124     _res = NULL;
1125   done:
1126     p->level--;
1127     return _res;
1128 }
1129 
1130 // eval: expressions NEWLINE* $
1131 static mod_ty
eval_rule(Parser * p)1132 eval_rule(Parser *p)
1133 {
1134     if (p->level++ == MAXSTACK) {
1135         p->error_indicator = 1;
1136         PyErr_NoMemory();
1137     }
1138     if (p->error_indicator) {
1139         p->level--;
1140         return NULL;
1141     }
1142     mod_ty _res = NULL;
1143     int _mark = p->mark;
1144     { // expressions NEWLINE* $
1145         if (p->error_indicator) {
1146             p->level--;
1147             return NULL;
1148         }
1149         D(fprintf(stderr, "%*c> eval[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1150         asdl_seq * _loop0_1_var;
1151         expr_ty a;
1152         Token * endmarker_var;
1153         if (
1154             (a = expressions_rule(p))  // expressions
1155             &&
1156             (_loop0_1_var = _loop0_1_rule(p))  // NEWLINE*
1157             &&
1158             (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1159         )
1160         {
1161             D(fprintf(stderr, "%*c+ eval[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1162             _res = _PyAST_Expression ( a , p -> arena );
1163             if (_res == NULL && PyErr_Occurred()) {
1164                 p->error_indicator = 1;
1165                 p->level--;
1166                 return NULL;
1167             }
1168             goto done;
1169         }
1170         p->mark = _mark;
1171         D(fprintf(stderr, "%*c%s eval[%d-%d]: %s failed!\n", p->level, ' ',
1172                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions NEWLINE* $"));
1173     }
1174     _res = NULL;
1175   done:
1176     p->level--;
1177     return _res;
1178 }
1179 
1180 // func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
1181 static mod_ty
func_type_rule(Parser * p)1182 func_type_rule(Parser *p)
1183 {
1184     if (p->level++ == MAXSTACK) {
1185         p->error_indicator = 1;
1186         PyErr_NoMemory();
1187     }
1188     if (p->error_indicator) {
1189         p->level--;
1190         return NULL;
1191     }
1192     mod_ty _res = NULL;
1193     int _mark = p->mark;
1194     { // '(' type_expressions? ')' '->' expression NEWLINE* $
1195         if (p->error_indicator) {
1196             p->level--;
1197             return NULL;
1198         }
1199         D(fprintf(stderr, "%*c> func_type[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1200         Token * _literal;
1201         Token * _literal_1;
1202         Token * _literal_2;
1203         asdl_seq * _loop0_2_var;
1204         void *a;
1205         expr_ty b;
1206         Token * endmarker_var;
1207         if (
1208             (_literal = _PyPegen_expect_token(p, 7))  // token='('
1209             &&
1210             (a = type_expressions_rule(p), !p->error_indicator)  // type_expressions?
1211             &&
1212             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
1213             &&
1214             (_literal_2 = _PyPegen_expect_token(p, 51))  // token='->'
1215             &&
1216             (b = expression_rule(p))  // expression
1217             &&
1218             (_loop0_2_var = _loop0_2_rule(p))  // NEWLINE*
1219             &&
1220             (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1221         )
1222         {
1223             D(fprintf(stderr, "%*c+ func_type[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1224             _res = _PyAST_FunctionType ( a , b , p -> arena );
1225             if (_res == NULL && PyErr_Occurred()) {
1226                 p->error_indicator = 1;
1227                 p->level--;
1228                 return NULL;
1229             }
1230             goto done;
1231         }
1232         p->mark = _mark;
1233         D(fprintf(stderr, "%*c%s func_type[%d-%d]: %s failed!\n", p->level, ' ',
1234                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1235     }
1236     _res = NULL;
1237   done:
1238     p->level--;
1239     return _res;
1240 }
1241 
1242 // fstring: star_expressions
1243 static expr_ty
fstring_rule(Parser * p)1244 fstring_rule(Parser *p)
1245 {
1246     if (p->level++ == MAXSTACK) {
1247         p->error_indicator = 1;
1248         PyErr_NoMemory();
1249     }
1250     if (p->error_indicator) {
1251         p->level--;
1252         return NULL;
1253     }
1254     expr_ty _res = NULL;
1255     int _mark = p->mark;
1256     { // star_expressions
1257         if (p->error_indicator) {
1258             p->level--;
1259             return NULL;
1260         }
1261         D(fprintf(stderr, "%*c> fstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1262         expr_ty star_expressions_var;
1263         if (
1264             (star_expressions_var = star_expressions_rule(p))  // star_expressions
1265         )
1266         {
1267             D(fprintf(stderr, "%*c+ fstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1268             _res = star_expressions_var;
1269             goto done;
1270         }
1271         p->mark = _mark;
1272         D(fprintf(stderr, "%*c%s fstring[%d-%d]: %s failed!\n", p->level, ' ',
1273                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
1274     }
1275     _res = NULL;
1276   done:
1277     p->level--;
1278     return _res;
1279 }
1280 
1281 // statements: statement+
1282 static asdl_stmt_seq*
statements_rule(Parser * p)1283 statements_rule(Parser *p)
1284 {
1285     if (p->level++ == MAXSTACK) {
1286         p->error_indicator = 1;
1287         PyErr_NoMemory();
1288     }
1289     if (p->error_indicator) {
1290         p->level--;
1291         return NULL;
1292     }
1293     asdl_stmt_seq* _res = NULL;
1294     int _mark = p->mark;
1295     { // statement+
1296         if (p->error_indicator) {
1297             p->level--;
1298             return NULL;
1299         }
1300         D(fprintf(stderr, "%*c> statements[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement+"));
1301         asdl_seq * a;
1302         if (
1303             (a = _loop1_3_rule(p))  // statement+
1304         )
1305         {
1306             D(fprintf(stderr, "%*c+ statements[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement+"));
1307             _res = ( asdl_stmt_seq* ) _PyPegen_seq_flatten ( p , a );
1308             if (_res == NULL && PyErr_Occurred()) {
1309                 p->error_indicator = 1;
1310                 p->level--;
1311                 return NULL;
1312             }
1313             goto done;
1314         }
1315         p->mark = _mark;
1316         D(fprintf(stderr, "%*c%s statements[%d-%d]: %s failed!\n", p->level, ' ',
1317                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement+"));
1318     }
1319     _res = NULL;
1320   done:
1321     p->level--;
1322     return _res;
1323 }
1324 
1325 // statement: compound_stmt | simple_stmts
1326 static asdl_stmt_seq*
statement_rule(Parser * p)1327 statement_rule(Parser *p)
1328 {
1329     if (p->level++ == MAXSTACK) {
1330         p->error_indicator = 1;
1331         PyErr_NoMemory();
1332     }
1333     if (p->error_indicator) {
1334         p->level--;
1335         return NULL;
1336     }
1337     asdl_stmt_seq* _res = NULL;
1338     int _mark = p->mark;
1339     { // compound_stmt
1340         if (p->error_indicator) {
1341             p->level--;
1342             return NULL;
1343         }
1344         D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1345         stmt_ty a;
1346         if (
1347             (a = compound_stmt_rule(p))  // compound_stmt
1348         )
1349         {
1350             D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1351             _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a );
1352             if (_res == NULL && PyErr_Occurred()) {
1353                 p->error_indicator = 1;
1354                 p->level--;
1355                 return NULL;
1356             }
1357             goto done;
1358         }
1359         p->mark = _mark;
1360         D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1361                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt"));
1362     }
1363     { // simple_stmts
1364         if (p->error_indicator) {
1365             p->level--;
1366             return NULL;
1367         }
1368         D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1369         asdl_stmt_seq* a;
1370         if (
1371             (a = (asdl_stmt_seq*)simple_stmts_rule(p))  // simple_stmts
1372         )
1373         {
1374             D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1375             _res = a;
1376             if (_res == NULL && PyErr_Occurred()) {
1377                 p->error_indicator = 1;
1378                 p->level--;
1379                 return NULL;
1380             }
1381             goto done;
1382         }
1383         p->mark = _mark;
1384         D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1385                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1386     }
1387     _res = NULL;
1388   done:
1389     p->level--;
1390     return _res;
1391 }
1392 
1393 // statement_newline: compound_stmt NEWLINE | simple_stmts | NEWLINE | $
1394 static asdl_stmt_seq*
statement_newline_rule(Parser * p)1395 statement_newline_rule(Parser *p)
1396 {
1397     if (p->level++ == MAXSTACK) {
1398         p->error_indicator = 1;
1399         PyErr_NoMemory();
1400     }
1401     if (p->error_indicator) {
1402         p->level--;
1403         return NULL;
1404     }
1405     asdl_stmt_seq* _res = NULL;
1406     int _mark = p->mark;
1407     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1408         p->error_indicator = 1;
1409         p->level--;
1410         return NULL;
1411     }
1412     int _start_lineno = p->tokens[_mark]->lineno;
1413     UNUSED(_start_lineno); // Only used by EXTRA macro
1414     int _start_col_offset = p->tokens[_mark]->col_offset;
1415     UNUSED(_start_col_offset); // Only used by EXTRA macro
1416     { // compound_stmt NEWLINE
1417         if (p->error_indicator) {
1418             p->level--;
1419             return NULL;
1420         }
1421         D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt NEWLINE"));
1422         stmt_ty a;
1423         Token * newline_var;
1424         if (
1425             (a = compound_stmt_rule(p))  // compound_stmt
1426             &&
1427             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1428         )
1429         {
1430             D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt NEWLINE"));
1431             _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a );
1432             if (_res == NULL && PyErr_Occurred()) {
1433                 p->error_indicator = 1;
1434                 p->level--;
1435                 return NULL;
1436             }
1437             goto done;
1438         }
1439         p->mark = _mark;
1440         D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1441                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt NEWLINE"));
1442     }
1443     { // simple_stmts
1444         if (p->error_indicator) {
1445             p->level--;
1446             return NULL;
1447         }
1448         D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1449         asdl_stmt_seq* simple_stmts_var;
1450         if (
1451             (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
1452         )
1453         {
1454             D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1455             _res = simple_stmts_var;
1456             goto done;
1457         }
1458         p->mark = _mark;
1459         D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1460                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1461     }
1462     { // NEWLINE
1463         if (p->error_indicator) {
1464             p->level--;
1465             return NULL;
1466         }
1467         D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
1468         Token * newline_var;
1469         if (
1470             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1471         )
1472         {
1473             D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
1474             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1475             if (_token == NULL) {
1476                 p->level--;
1477                 return NULL;
1478             }
1479             int _end_lineno = _token->end_lineno;
1480             UNUSED(_end_lineno); // Only used by EXTRA macro
1481             int _end_col_offset = _token->end_col_offset;
1482             UNUSED(_end_col_offset); // Only used by EXTRA macro
1483             _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , CHECK ( stmt_ty , _PyAST_Pass ( EXTRA ) ) );
1484             if (_res == NULL && PyErr_Occurred()) {
1485                 p->error_indicator = 1;
1486                 p->level--;
1487                 return NULL;
1488             }
1489             goto done;
1490         }
1491         p->mark = _mark;
1492         D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1493                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
1494     }
1495     { // $
1496         if (p->error_indicator) {
1497             p->level--;
1498             return NULL;
1499         }
1500         D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "$"));
1501         Token * endmarker_var;
1502         if (
1503             (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1504         )
1505         {
1506             D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "$"));
1507             _res = _PyPegen_interactive_exit ( p );
1508             if (_res == NULL && PyErr_Occurred()) {
1509                 p->error_indicator = 1;
1510                 p->level--;
1511                 return NULL;
1512             }
1513             goto done;
1514         }
1515         p->mark = _mark;
1516         D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1517                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "$"));
1518     }
1519     _res = NULL;
1520   done:
1521     p->level--;
1522     return _res;
1523 }
1524 
1525 // simple_stmts: simple_stmt !';' NEWLINE | ';'.simple_stmt+ ';'? NEWLINE
1526 static asdl_stmt_seq*
simple_stmts_rule(Parser * p)1527 simple_stmts_rule(Parser *p)
1528 {
1529     if (p->level++ == MAXSTACK) {
1530         p->error_indicator = 1;
1531         PyErr_NoMemory();
1532     }
1533     if (p->error_indicator) {
1534         p->level--;
1535         return NULL;
1536     }
1537     asdl_stmt_seq* _res = NULL;
1538     int _mark = p->mark;
1539     { // simple_stmt !';' NEWLINE
1540         if (p->error_indicator) {
1541             p->level--;
1542             return NULL;
1543         }
1544         D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1545         stmt_ty a;
1546         Token * newline_var;
1547         if (
1548             (a = simple_stmt_rule(p))  // simple_stmt
1549             &&
1550             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13)  // token=';'
1551             &&
1552             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1553         )
1554         {
1555             D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1556             _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a );
1557             if (_res == NULL && PyErr_Occurred()) {
1558                 p->error_indicator = 1;
1559                 p->level--;
1560                 return NULL;
1561             }
1562             goto done;
1563         }
1564         p->mark = _mark;
1565         D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1566                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt !';' NEWLINE"));
1567     }
1568     { // ';'.simple_stmt+ ';'? NEWLINE
1569         if (p->error_indicator) {
1570             p->level--;
1571             return NULL;
1572         }
1573         D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1574         void *_opt_var;
1575         UNUSED(_opt_var); // Silence compiler warnings
1576         asdl_stmt_seq* a;
1577         Token * newline_var;
1578         if (
1579             (a = (asdl_stmt_seq*)_gather_4_rule(p))  // ';'.simple_stmt+
1580             &&
1581             (_opt_var = _PyPegen_expect_token(p, 13), !p->error_indicator)  // ';'?
1582             &&
1583             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1584         )
1585         {
1586             D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1587             _res = a;
1588             if (_res == NULL && PyErr_Occurred()) {
1589                 p->error_indicator = 1;
1590                 p->level--;
1591                 return NULL;
1592             }
1593             goto done;
1594         }
1595         p->mark = _mark;
1596         D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1597                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1598     }
1599     _res = NULL;
1600   done:
1601     p->level--;
1602     return _res;
1603 }
1604 
1605 // simple_stmt:
1606 //     | assignment
1607 //     | star_expressions
1608 //     | &'return' return_stmt
1609 //     | &('import' | 'from') import_stmt
1610 //     | &'raise' raise_stmt
1611 //     | 'pass'
1612 //     | &'del' del_stmt
1613 //     | &'yield' yield_stmt
1614 //     | &'assert' assert_stmt
1615 //     | 'break'
1616 //     | 'continue'
1617 //     | &'global' global_stmt
1618 //     | &'nonlocal' nonlocal_stmt
1619 static stmt_ty
simple_stmt_rule(Parser * p)1620 simple_stmt_rule(Parser *p)
1621 {
1622     if (p->level++ == MAXSTACK) {
1623         p->error_indicator = 1;
1624         PyErr_NoMemory();
1625     }
1626     if (p->error_indicator) {
1627         p->level--;
1628         return NULL;
1629     }
1630     stmt_ty _res = NULL;
1631     if (_PyPegen_is_memoized(p, simple_stmt_type, &_res)) {
1632         p->level--;
1633         return _res;
1634     }
1635     int _mark = p->mark;
1636     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1637         p->error_indicator = 1;
1638         p->level--;
1639         return NULL;
1640     }
1641     int _start_lineno = p->tokens[_mark]->lineno;
1642     UNUSED(_start_lineno); // Only used by EXTRA macro
1643     int _start_col_offset = p->tokens[_mark]->col_offset;
1644     UNUSED(_start_col_offset); // Only used by EXTRA macro
1645     { // assignment
1646         if (p->error_indicator) {
1647             p->level--;
1648             return NULL;
1649         }
1650         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment"));
1651         stmt_ty assignment_var;
1652         if (
1653             (assignment_var = assignment_rule(p))  // assignment
1654         )
1655         {
1656             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment"));
1657             _res = assignment_var;
1658             goto done;
1659         }
1660         p->mark = _mark;
1661         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1662                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment"));
1663     }
1664     { // star_expressions
1665         if (p->error_indicator) {
1666             p->level--;
1667             return NULL;
1668         }
1669         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1670         expr_ty e;
1671         if (
1672             (e = star_expressions_rule(p))  // star_expressions
1673         )
1674         {
1675             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1676             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1677             if (_token == NULL) {
1678                 p->level--;
1679                 return NULL;
1680             }
1681             int _end_lineno = _token->end_lineno;
1682             UNUSED(_end_lineno); // Only used by EXTRA macro
1683             int _end_col_offset = _token->end_col_offset;
1684             UNUSED(_end_col_offset); // Only used by EXTRA macro
1685             _res = _PyAST_Expr ( e , EXTRA );
1686             if (_res == NULL && PyErr_Occurred()) {
1687                 p->error_indicator = 1;
1688                 p->level--;
1689                 return NULL;
1690             }
1691             goto done;
1692         }
1693         p->mark = _mark;
1694         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1695                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
1696     }
1697     { // &'return' return_stmt
1698         if (p->error_indicator) {
1699             p->level--;
1700             return NULL;
1701         }
1702         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1703         stmt_ty return_stmt_var;
1704         if (
1705             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 519)  // token='return'
1706             &&
1707             (return_stmt_var = return_stmt_rule(p))  // return_stmt
1708         )
1709         {
1710             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1711             _res = return_stmt_var;
1712             goto done;
1713         }
1714         p->mark = _mark;
1715         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1716                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'return' return_stmt"));
1717     }
1718     { // &('import' | 'from') import_stmt
1719         if (p->error_indicator) {
1720             p->level--;
1721             return NULL;
1722         }
1723         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1724         stmt_ty import_stmt_var;
1725         if (
1726             _PyPegen_lookahead(1, _tmp_6_rule, p)
1727             &&
1728             (import_stmt_var = import_stmt_rule(p))  // import_stmt
1729         )
1730         {
1731             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1732             _res = import_stmt_var;
1733             goto done;
1734         }
1735         p->mark = _mark;
1736         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1737                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('import' | 'from') import_stmt"));
1738     }
1739     { // &'raise' raise_stmt
1740         if (p->error_indicator) {
1741             p->level--;
1742             return NULL;
1743         }
1744         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1745         stmt_ty raise_stmt_var;
1746         if (
1747             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 522)  // token='raise'
1748             &&
1749             (raise_stmt_var = raise_stmt_rule(p))  // raise_stmt
1750         )
1751         {
1752             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1753             _res = raise_stmt_var;
1754             goto done;
1755         }
1756         p->mark = _mark;
1757         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1758                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'raise' raise_stmt"));
1759     }
1760     { // 'pass'
1761         if (p->error_indicator) {
1762             p->level--;
1763             return NULL;
1764         }
1765         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'pass'"));
1766         Token * _keyword;
1767         if (
1768             (_keyword = _PyPegen_expect_token(p, 504))  // token='pass'
1769         )
1770         {
1771             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'pass'"));
1772             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1773             if (_token == NULL) {
1774                 p->level--;
1775                 return NULL;
1776             }
1777             int _end_lineno = _token->end_lineno;
1778             UNUSED(_end_lineno); // Only used by EXTRA macro
1779             int _end_col_offset = _token->end_col_offset;
1780             UNUSED(_end_col_offset); // Only used by EXTRA macro
1781             _res = _PyAST_Pass ( EXTRA );
1782             if (_res == NULL && PyErr_Occurred()) {
1783                 p->error_indicator = 1;
1784                 p->level--;
1785                 return NULL;
1786             }
1787             goto done;
1788         }
1789         p->mark = _mark;
1790         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1791                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'pass'"));
1792     }
1793     { // &'del' del_stmt
1794         if (p->error_indicator) {
1795             p->level--;
1796             return NULL;
1797         }
1798         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1799         stmt_ty del_stmt_var;
1800         if (
1801             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 603)  // token='del'
1802             &&
1803             (del_stmt_var = del_stmt_rule(p))  // del_stmt
1804         )
1805         {
1806             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1807             _res = del_stmt_var;
1808             goto done;
1809         }
1810         p->mark = _mark;
1811         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1812                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'del' del_stmt"));
1813     }
1814     { // &'yield' yield_stmt
1815         if (p->error_indicator) {
1816             p->level--;
1817             return NULL;
1818         }
1819         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1820         stmt_ty yield_stmt_var;
1821         if (
1822             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 573)  // token='yield'
1823             &&
1824             (yield_stmt_var = yield_stmt_rule(p))  // yield_stmt
1825         )
1826         {
1827             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1828             _res = yield_stmt_var;
1829             goto done;
1830         }
1831         p->mark = _mark;
1832         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1833                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'yield' yield_stmt"));
1834     }
1835     { // &'assert' assert_stmt
1836         if (p->error_indicator) {
1837             p->level--;
1838             return NULL;
1839         }
1840         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1841         stmt_ty assert_stmt_var;
1842         if (
1843             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 526)  // token='assert'
1844             &&
1845             (assert_stmt_var = assert_stmt_rule(p))  // assert_stmt
1846         )
1847         {
1848             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1849             _res = assert_stmt_var;
1850             goto done;
1851         }
1852         p->mark = _mark;
1853         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1854                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'assert' assert_stmt"));
1855     }
1856     { // 'break'
1857         if (p->error_indicator) {
1858             p->level--;
1859             return NULL;
1860         }
1861         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'break'"));
1862         Token * _keyword;
1863         if (
1864             (_keyword = _PyPegen_expect_token(p, 508))  // token='break'
1865         )
1866         {
1867             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'break'"));
1868             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1869             if (_token == NULL) {
1870                 p->level--;
1871                 return NULL;
1872             }
1873             int _end_lineno = _token->end_lineno;
1874             UNUSED(_end_lineno); // Only used by EXTRA macro
1875             int _end_col_offset = _token->end_col_offset;
1876             UNUSED(_end_col_offset); // Only used by EXTRA macro
1877             _res = _PyAST_Break ( EXTRA );
1878             if (_res == NULL && PyErr_Occurred()) {
1879                 p->error_indicator = 1;
1880                 p->level--;
1881                 return NULL;
1882             }
1883             goto done;
1884         }
1885         p->mark = _mark;
1886         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1887                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'break'"));
1888     }
1889     { // 'continue'
1890         if (p->error_indicator) {
1891             p->level--;
1892             return NULL;
1893         }
1894         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'continue'"));
1895         Token * _keyword;
1896         if (
1897             (_keyword = _PyPegen_expect_token(p, 509))  // token='continue'
1898         )
1899         {
1900             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'continue'"));
1901             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1902             if (_token == NULL) {
1903                 p->level--;
1904                 return NULL;
1905             }
1906             int _end_lineno = _token->end_lineno;
1907             UNUSED(_end_lineno); // Only used by EXTRA macro
1908             int _end_col_offset = _token->end_col_offset;
1909             UNUSED(_end_col_offset); // Only used by EXTRA macro
1910             _res = _PyAST_Continue ( EXTRA );
1911             if (_res == NULL && PyErr_Occurred()) {
1912                 p->error_indicator = 1;
1913                 p->level--;
1914                 return NULL;
1915             }
1916             goto done;
1917         }
1918         p->mark = _mark;
1919         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1920                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'continue'"));
1921     }
1922     { // &'global' global_stmt
1923         if (p->error_indicator) {
1924             p->level--;
1925             return NULL;
1926         }
1927         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
1928         stmt_ty global_stmt_var;
1929         if (
1930             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 523)  // token='global'
1931             &&
1932             (global_stmt_var = global_stmt_rule(p))  // global_stmt
1933         )
1934         {
1935             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
1936             _res = global_stmt_var;
1937             goto done;
1938         }
1939         p->mark = _mark;
1940         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1941                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'global' global_stmt"));
1942     }
1943     { // &'nonlocal' nonlocal_stmt
1944         if (p->error_indicator) {
1945             p->level--;
1946             return NULL;
1947         }
1948         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1949         stmt_ty nonlocal_stmt_var;
1950         if (
1951             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 524)  // token='nonlocal'
1952             &&
1953             (nonlocal_stmt_var = nonlocal_stmt_rule(p))  // nonlocal_stmt
1954         )
1955         {
1956             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1957             _res = nonlocal_stmt_var;
1958             goto done;
1959         }
1960         p->mark = _mark;
1961         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1962                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1963     }
1964     _res = NULL;
1965   done:
1966     _PyPegen_insert_memo(p, _mark, simple_stmt_type, _res);
1967     p->level--;
1968     return _res;
1969 }
1970 
1971 // compound_stmt:
1972 //     | &('def' | '@' | ASYNC) function_def
1973 //     | &'if' if_stmt
1974 //     | &('class' | '@') class_def
1975 //     | &('with' | ASYNC) with_stmt
1976 //     | &('for' | ASYNC) for_stmt
1977 //     | &'try' try_stmt
1978 //     | &'while' while_stmt
1979 //     | match_stmt
1980 static stmt_ty
compound_stmt_rule(Parser * p)1981 compound_stmt_rule(Parser *p)
1982 {
1983     if (p->level++ == MAXSTACK) {
1984         p->error_indicator = 1;
1985         PyErr_NoMemory();
1986     }
1987     if (p->error_indicator) {
1988         p->level--;
1989         return NULL;
1990     }
1991     stmt_ty _res = NULL;
1992     int _mark = p->mark;
1993     { // &('def' | '@' | ASYNC) function_def
1994         if (p->error_indicator) {
1995             p->level--;
1996             return NULL;
1997         }
1998         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | ASYNC) function_def"));
1999         stmt_ty function_def_var;
2000         if (
2001             _PyPegen_lookahead(1, _tmp_7_rule, p)
2002             &&
2003             (function_def_var = function_def_rule(p))  // function_def
2004         )
2005         {
2006             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | ASYNC) function_def"));
2007             _res = function_def_var;
2008             goto done;
2009         }
2010         p->mark = _mark;
2011         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2012                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('def' | '@' | ASYNC) function_def"));
2013     }
2014     { // &'if' if_stmt
2015         if (p->error_indicator) {
2016             p->level--;
2017             return NULL;
2018         }
2019         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
2020         stmt_ty if_stmt_var;
2021         if (
2022             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 639)  // token='if'
2023             &&
2024             (if_stmt_var = if_stmt_rule(p))  // if_stmt
2025         )
2026         {
2027             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
2028             _res = if_stmt_var;
2029             goto done;
2030         }
2031         p->mark = _mark;
2032         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2033                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'if' if_stmt"));
2034     }
2035     { // &('class' | '@') class_def
2036         if (p->error_indicator) {
2037             p->level--;
2038             return NULL;
2039         }
2040         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
2041         stmt_ty class_def_var;
2042         if (
2043             _PyPegen_lookahead(1, _tmp_8_rule, p)
2044             &&
2045             (class_def_var = class_def_rule(p))  // class_def
2046         )
2047         {
2048             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
2049             _res = class_def_var;
2050             goto done;
2051         }
2052         p->mark = _mark;
2053         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2054                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('class' | '@') class_def"));
2055     }
2056     { // &('with' | ASYNC) with_stmt
2057         if (p->error_indicator) {
2058             p->level--;
2059             return NULL;
2060         }
2061         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('with' | ASYNC) with_stmt"));
2062         stmt_ty with_stmt_var;
2063         if (
2064             _PyPegen_lookahead(1, _tmp_9_rule, p)
2065             &&
2066             (with_stmt_var = with_stmt_rule(p))  // with_stmt
2067         )
2068         {
2069             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('with' | ASYNC) with_stmt"));
2070             _res = with_stmt_var;
2071             goto done;
2072         }
2073         p->mark = _mark;
2074         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2075                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('with' | ASYNC) with_stmt"));
2076     }
2077     { // &('for' | ASYNC) for_stmt
2078         if (p->error_indicator) {
2079             p->level--;
2080             return NULL;
2081         }
2082         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('for' | ASYNC) for_stmt"));
2083         stmt_ty for_stmt_var;
2084         if (
2085             _PyPegen_lookahead(1, _tmp_10_rule, p)
2086             &&
2087             (for_stmt_var = for_stmt_rule(p))  // for_stmt
2088         )
2089         {
2090             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('for' | ASYNC) for_stmt"));
2091             _res = for_stmt_var;
2092             goto done;
2093         }
2094         p->mark = _mark;
2095         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2096                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('for' | ASYNC) for_stmt"));
2097     }
2098     { // &'try' try_stmt
2099         if (p->error_indicator) {
2100             p->level--;
2101             return NULL;
2102         }
2103         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
2104         stmt_ty try_stmt_var;
2105         if (
2106             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 621)  // token='try'
2107             &&
2108             (try_stmt_var = try_stmt_rule(p))  // try_stmt
2109         )
2110         {
2111             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
2112             _res = try_stmt_var;
2113             goto done;
2114         }
2115         p->mark = _mark;
2116         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2117                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'try' try_stmt"));
2118     }
2119     { // &'while' while_stmt
2120         if (p->error_indicator) {
2121             p->level--;
2122             return NULL;
2123         }
2124         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
2125         stmt_ty while_stmt_var;
2126         if (
2127             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 644)  // token='while'
2128             &&
2129             (while_stmt_var = while_stmt_rule(p))  // while_stmt
2130         )
2131         {
2132             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
2133             _res = while_stmt_var;
2134             goto done;
2135         }
2136         p->mark = _mark;
2137         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2138                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'while' while_stmt"));
2139     }
2140     { // match_stmt
2141         if (p->error_indicator) {
2142             p->level--;
2143             return NULL;
2144         }
2145         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2146         stmt_ty match_stmt_var;
2147         if (
2148             (match_stmt_var = match_stmt_rule(p))  // match_stmt
2149         )
2150         {
2151             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2152             _res = match_stmt_var;
2153             goto done;
2154         }
2155         p->mark = _mark;
2156         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2157                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "match_stmt"));
2158     }
2159     _res = NULL;
2160   done:
2161     p->level--;
2162     return _res;
2163 }
2164 
2165 // assignment:
2166 //     | NAME ':' expression ['=' annotated_rhs]
2167 //     | ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
2168 //     | ((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?
2169 //     | single_target augassign ~ (yield_expr | star_expressions)
2170 //     | invalid_assignment
2171 static stmt_ty
assignment_rule(Parser * p)2172 assignment_rule(Parser *p)
2173 {
2174     if (p->level++ == MAXSTACK) {
2175         p->error_indicator = 1;
2176         PyErr_NoMemory();
2177     }
2178     if (p->error_indicator) {
2179         p->level--;
2180         return NULL;
2181     }
2182     stmt_ty _res = NULL;
2183     int _mark = p->mark;
2184     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2185         p->error_indicator = 1;
2186         p->level--;
2187         return NULL;
2188     }
2189     int _start_lineno = p->tokens[_mark]->lineno;
2190     UNUSED(_start_lineno); // Only used by EXTRA macro
2191     int _start_col_offset = p->tokens[_mark]->col_offset;
2192     UNUSED(_start_col_offset); // Only used by EXTRA macro
2193     { // NAME ':' expression ['=' annotated_rhs]
2194         if (p->error_indicator) {
2195             p->level--;
2196             return NULL;
2197         }
2198         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2199         Token * _literal;
2200         expr_ty a;
2201         expr_ty b;
2202         void *c;
2203         if (
2204             (a = _PyPegen_name_token(p))  // NAME
2205             &&
2206             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2207             &&
2208             (b = expression_rule(p))  // expression
2209             &&
2210             (c = _tmp_11_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2211         )
2212         {
2213             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2214             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2215             if (_token == NULL) {
2216                 p->level--;
2217                 return NULL;
2218             }
2219             int _end_lineno = _token->end_lineno;
2220             UNUSED(_end_lineno); // Only used by EXTRA macro
2221             int _end_col_offset = _token->end_col_offset;
2222             UNUSED(_end_col_offset); // Only used by EXTRA macro
2223             _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 ) );
2224             if (_res == NULL && PyErr_Occurred()) {
2225                 p->error_indicator = 1;
2226                 p->level--;
2227                 return NULL;
2228             }
2229             goto done;
2230         }
2231         p->mark = _mark;
2232         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2233                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2234     }
2235     { // ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
2236         if (p->error_indicator) {
2237             p->level--;
2238             return NULL;
2239         }
2240         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2241         Token * _literal;
2242         void *a;
2243         expr_ty b;
2244         void *c;
2245         if (
2246             (a = _tmp_12_rule(p))  // '(' single_target ')' | single_subscript_attribute_target
2247             &&
2248             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2249             &&
2250             (b = expression_rule(p))  // expression
2251             &&
2252             (c = _tmp_13_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2253         )
2254         {
2255             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2256             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2257             if (_token == NULL) {
2258                 p->level--;
2259                 return NULL;
2260             }
2261             int _end_lineno = _token->end_lineno;
2262             UNUSED(_end_lineno); // Only used by EXTRA macro
2263             int _end_col_offset = _token->end_col_offset;
2264             UNUSED(_end_col_offset); // Only used by EXTRA macro
2265             _res = CHECK_VERSION ( stmt_ty , 6 , "Variable annotations syntax is" , _PyAST_AnnAssign ( a , b , c , 0 , EXTRA ) );
2266             if (_res == NULL && PyErr_Occurred()) {
2267                 p->error_indicator = 1;
2268                 p->level--;
2269                 return NULL;
2270             }
2271             goto done;
2272         }
2273         p->mark = _mark;
2274         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2275                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2276     }
2277     { // ((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?
2278         if (p->error_indicator) {
2279             p->level--;
2280             return NULL;
2281         }
2282         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?"));
2283         asdl_expr_seq* a;
2284         void *b;
2285         void *tc;
2286         if (
2287             (a = (asdl_expr_seq*)_loop1_14_rule(p))  // ((star_targets '='))+
2288             &&
2289             (b = _tmp_15_rule(p))  // yield_expr | star_expressions
2290             &&
2291             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
2292             &&
2293             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
2294         )
2295         {
2296             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?"));
2297             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2298             if (_token == NULL) {
2299                 p->level--;
2300                 return NULL;
2301             }
2302             int _end_lineno = _token->end_lineno;
2303             UNUSED(_end_lineno); // Only used by EXTRA macro
2304             int _end_col_offset = _token->end_col_offset;
2305             UNUSED(_end_col_offset); // Only used by EXTRA macro
2306             _res = _PyAST_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
2307             if (_res == NULL && PyErr_Occurred()) {
2308                 p->error_indicator = 1;
2309                 p->level--;
2310                 return NULL;
2311             }
2312             goto done;
2313         }
2314         p->mark = _mark;
2315         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2316                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?"));
2317     }
2318     { // single_target augassign ~ (yield_expr | star_expressions)
2319         if (p->error_indicator) {
2320             p->level--;
2321             return NULL;
2322         }
2323         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ (yield_expr | star_expressions)"));
2324         int _cut_var = 0;
2325         expr_ty a;
2326         AugOperator* b;
2327         void *c;
2328         if (
2329             (a = single_target_rule(p))  // single_target
2330             &&
2331             (b = augassign_rule(p))  // augassign
2332             &&
2333             (_cut_var = 1)
2334             &&
2335             (c = _tmp_16_rule(p))  // yield_expr | star_expressions
2336         )
2337         {
2338             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ (yield_expr | star_expressions)"));
2339             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2340             if (_token == NULL) {
2341                 p->level--;
2342                 return NULL;
2343             }
2344             int _end_lineno = _token->end_lineno;
2345             UNUSED(_end_lineno); // Only used by EXTRA macro
2346             int _end_col_offset = _token->end_col_offset;
2347             UNUSED(_end_col_offset); // Only used by EXTRA macro
2348             _res = _PyAST_AugAssign ( a , b -> kind , c , EXTRA );
2349             if (_res == NULL && PyErr_Occurred()) {
2350                 p->error_indicator = 1;
2351                 p->level--;
2352                 return NULL;
2353             }
2354             goto done;
2355         }
2356         p->mark = _mark;
2357         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2358                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_target augassign ~ (yield_expr | star_expressions)"));
2359         if (_cut_var) {
2360             p->level--;
2361             return NULL;
2362         }
2363     }
2364     if (p->call_invalid_rules) { // invalid_assignment
2365         if (p->error_indicator) {
2366             p->level--;
2367             return NULL;
2368         }
2369         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2370         void *invalid_assignment_var;
2371         if (
2372             (invalid_assignment_var = invalid_assignment_rule(p))  // invalid_assignment
2373         )
2374         {
2375             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2376             _res = invalid_assignment_var;
2377             goto done;
2378         }
2379         p->mark = _mark;
2380         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2381                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_assignment"));
2382     }
2383     _res = NULL;
2384   done:
2385     p->level--;
2386     return _res;
2387 }
2388 
2389 // annotated_rhs: yield_expr | star_expressions
2390 static expr_ty
annotated_rhs_rule(Parser * p)2391 annotated_rhs_rule(Parser *p)
2392 {
2393     if (p->level++ == MAXSTACK) {
2394         p->error_indicator = 1;
2395         PyErr_NoMemory();
2396     }
2397     if (p->error_indicator) {
2398         p->level--;
2399         return NULL;
2400     }
2401     expr_ty _res = NULL;
2402     int _mark = p->mark;
2403     { // yield_expr
2404         if (p->error_indicator) {
2405             p->level--;
2406             return NULL;
2407         }
2408         D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
2409         expr_ty yield_expr_var;
2410         if (
2411             (yield_expr_var = yield_expr_rule(p))  // yield_expr
2412         )
2413         {
2414             D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
2415             _res = yield_expr_var;
2416             goto done;
2417         }
2418         p->mark = _mark;
2419         D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
2420                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
2421     }
2422     { // star_expressions
2423         if (p->error_indicator) {
2424             p->level--;
2425             return NULL;
2426         }
2427         D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
2428         expr_ty star_expressions_var;
2429         if (
2430             (star_expressions_var = star_expressions_rule(p))  // star_expressions
2431         )
2432         {
2433             D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
2434             _res = star_expressions_var;
2435             goto done;
2436         }
2437         p->mark = _mark;
2438         D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
2439                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
2440     }
2441     _res = NULL;
2442   done:
2443     p->level--;
2444     return _res;
2445 }
2446 
2447 // augassign:
2448 //     | '+='
2449 //     | '-='
2450 //     | '*='
2451 //     | '@='
2452 //     | '/='
2453 //     | '%='
2454 //     | '&='
2455 //     | '|='
2456 //     | '^='
2457 //     | '<<='
2458 //     | '>>='
2459 //     | '**='
2460 //     | '//='
2461 static AugOperator*
augassign_rule(Parser * p)2462 augassign_rule(Parser *p)
2463 {
2464     if (p->level++ == MAXSTACK) {
2465         p->error_indicator = 1;
2466         PyErr_NoMemory();
2467     }
2468     if (p->error_indicator) {
2469         p->level--;
2470         return NULL;
2471     }
2472     AugOperator* _res = NULL;
2473     int _mark = p->mark;
2474     { // '+='
2475         if (p->error_indicator) {
2476             p->level--;
2477             return NULL;
2478         }
2479         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+='"));
2480         Token * _literal;
2481         if (
2482             (_literal = _PyPegen_expect_token(p, 36))  // token='+='
2483         )
2484         {
2485             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+='"));
2486             _res = _PyPegen_augoperator ( p , Add );
2487             if (_res == NULL && PyErr_Occurred()) {
2488                 p->error_indicator = 1;
2489                 p->level--;
2490                 return NULL;
2491             }
2492             goto done;
2493         }
2494         p->mark = _mark;
2495         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2496                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+='"));
2497     }
2498     { // '-='
2499         if (p->error_indicator) {
2500             p->level--;
2501             return NULL;
2502         }
2503         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-='"));
2504         Token * _literal;
2505         if (
2506             (_literal = _PyPegen_expect_token(p, 37))  // token='-='
2507         )
2508         {
2509             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-='"));
2510             _res = _PyPegen_augoperator ( p , Sub );
2511             if (_res == NULL && PyErr_Occurred()) {
2512                 p->error_indicator = 1;
2513                 p->level--;
2514                 return NULL;
2515             }
2516             goto done;
2517         }
2518         p->mark = _mark;
2519         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2520                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-='"));
2521     }
2522     { // '*='
2523         if (p->error_indicator) {
2524             p->level--;
2525             return NULL;
2526         }
2527         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*='"));
2528         Token * _literal;
2529         if (
2530             (_literal = _PyPegen_expect_token(p, 38))  // token='*='
2531         )
2532         {
2533             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*='"));
2534             _res = _PyPegen_augoperator ( p , Mult );
2535             if (_res == NULL && PyErr_Occurred()) {
2536                 p->error_indicator = 1;
2537                 p->level--;
2538                 return NULL;
2539             }
2540             goto done;
2541         }
2542         p->mark = _mark;
2543         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2544                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*='"));
2545     }
2546     { // '@='
2547         if (p->error_indicator) {
2548             p->level--;
2549             return NULL;
2550         }
2551         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@='"));
2552         Token * _literal;
2553         if (
2554             (_literal = _PyPegen_expect_token(p, 50))  // token='@='
2555         )
2556         {
2557             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@='"));
2558             _res = CHECK_VERSION ( AugOperator* , 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
2559             if (_res == NULL && PyErr_Occurred()) {
2560                 p->error_indicator = 1;
2561                 p->level--;
2562                 return NULL;
2563             }
2564             goto done;
2565         }
2566         p->mark = _mark;
2567         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2568                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@='"));
2569     }
2570     { // '/='
2571         if (p->error_indicator) {
2572             p->level--;
2573             return NULL;
2574         }
2575         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/='"));
2576         Token * _literal;
2577         if (
2578             (_literal = _PyPegen_expect_token(p, 39))  // token='/='
2579         )
2580         {
2581             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/='"));
2582             _res = _PyPegen_augoperator ( p , Div );
2583             if (_res == NULL && PyErr_Occurred()) {
2584                 p->error_indicator = 1;
2585                 p->level--;
2586                 return NULL;
2587             }
2588             goto done;
2589         }
2590         p->mark = _mark;
2591         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2592                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/='"));
2593     }
2594     { // '%='
2595         if (p->error_indicator) {
2596             p->level--;
2597             return NULL;
2598         }
2599         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'%='"));
2600         Token * _literal;
2601         if (
2602             (_literal = _PyPegen_expect_token(p, 40))  // token='%='
2603         )
2604         {
2605             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'%='"));
2606             _res = _PyPegen_augoperator ( p , Mod );
2607             if (_res == NULL && PyErr_Occurred()) {
2608                 p->error_indicator = 1;
2609                 p->level--;
2610                 return NULL;
2611             }
2612             goto done;
2613         }
2614         p->mark = _mark;
2615         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2616                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'%='"));
2617     }
2618     { // '&='
2619         if (p->error_indicator) {
2620             p->level--;
2621             return NULL;
2622         }
2623         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'&='"));
2624         Token * _literal;
2625         if (
2626             (_literal = _PyPegen_expect_token(p, 41))  // token='&='
2627         )
2628         {
2629             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'&='"));
2630             _res = _PyPegen_augoperator ( p , BitAnd );
2631             if (_res == NULL && PyErr_Occurred()) {
2632                 p->error_indicator = 1;
2633                 p->level--;
2634                 return NULL;
2635             }
2636             goto done;
2637         }
2638         p->mark = _mark;
2639         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2640                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'&='"));
2641     }
2642     { // '|='
2643         if (p->error_indicator) {
2644             p->level--;
2645             return NULL;
2646         }
2647         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|='"));
2648         Token * _literal;
2649         if (
2650             (_literal = _PyPegen_expect_token(p, 42))  // token='|='
2651         )
2652         {
2653             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|='"));
2654             _res = _PyPegen_augoperator ( p , BitOr );
2655             if (_res == NULL && PyErr_Occurred()) {
2656                 p->error_indicator = 1;
2657                 p->level--;
2658                 return NULL;
2659             }
2660             goto done;
2661         }
2662         p->mark = _mark;
2663         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2664                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|='"));
2665     }
2666     { // '^='
2667         if (p->error_indicator) {
2668             p->level--;
2669             return NULL;
2670         }
2671         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'^='"));
2672         Token * _literal;
2673         if (
2674             (_literal = _PyPegen_expect_token(p, 43))  // token='^='
2675         )
2676         {
2677             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'^='"));
2678             _res = _PyPegen_augoperator ( p , BitXor );
2679             if (_res == NULL && PyErr_Occurred()) {
2680                 p->error_indicator = 1;
2681                 p->level--;
2682                 return NULL;
2683             }
2684             goto done;
2685         }
2686         p->mark = _mark;
2687         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2688                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'^='"));
2689     }
2690     { // '<<='
2691         if (p->error_indicator) {
2692             p->level--;
2693             return NULL;
2694         }
2695         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<<='"));
2696         Token * _literal;
2697         if (
2698             (_literal = _PyPegen_expect_token(p, 44))  // token='<<='
2699         )
2700         {
2701             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<<='"));
2702             _res = _PyPegen_augoperator ( p , LShift );
2703             if (_res == NULL && PyErr_Occurred()) {
2704                 p->error_indicator = 1;
2705                 p->level--;
2706                 return NULL;
2707             }
2708             goto done;
2709         }
2710         p->mark = _mark;
2711         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2712                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<<='"));
2713     }
2714     { // '>>='
2715         if (p->error_indicator) {
2716             p->level--;
2717             return NULL;
2718         }
2719         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>>='"));
2720         Token * _literal;
2721         if (
2722             (_literal = _PyPegen_expect_token(p, 45))  // token='>>='
2723         )
2724         {
2725             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>>='"));
2726             _res = _PyPegen_augoperator ( p , RShift );
2727             if (_res == NULL && PyErr_Occurred()) {
2728                 p->error_indicator = 1;
2729                 p->level--;
2730                 return NULL;
2731             }
2732             goto done;
2733         }
2734         p->mark = _mark;
2735         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2736                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>>='"));
2737     }
2738     { // '**='
2739         if (p->error_indicator) {
2740             p->level--;
2741             return NULL;
2742         }
2743         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**='"));
2744         Token * _literal;
2745         if (
2746             (_literal = _PyPegen_expect_token(p, 46))  // token='**='
2747         )
2748         {
2749             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**='"));
2750             _res = _PyPegen_augoperator ( p , Pow );
2751             if (_res == NULL && PyErr_Occurred()) {
2752                 p->error_indicator = 1;
2753                 p->level--;
2754                 return NULL;
2755             }
2756             goto done;
2757         }
2758         p->mark = _mark;
2759         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2760                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**='"));
2761     }
2762     { // '//='
2763         if (p->error_indicator) {
2764             p->level--;
2765             return NULL;
2766         }
2767         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'//='"));
2768         Token * _literal;
2769         if (
2770             (_literal = _PyPegen_expect_token(p, 48))  // token='//='
2771         )
2772         {
2773             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'//='"));
2774             _res = _PyPegen_augoperator ( p , FloorDiv );
2775             if (_res == NULL && PyErr_Occurred()) {
2776                 p->error_indicator = 1;
2777                 p->level--;
2778                 return NULL;
2779             }
2780             goto done;
2781         }
2782         p->mark = _mark;
2783         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2784                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'//='"));
2785     }
2786     _res = NULL;
2787   done:
2788     p->level--;
2789     return _res;
2790 }
2791 
2792 // return_stmt: 'return' star_expressions?
2793 static stmt_ty
return_stmt_rule(Parser * p)2794 return_stmt_rule(Parser *p)
2795 {
2796     if (p->level++ == MAXSTACK) {
2797         p->error_indicator = 1;
2798         PyErr_NoMemory();
2799     }
2800     if (p->error_indicator) {
2801         p->level--;
2802         return NULL;
2803     }
2804     stmt_ty _res = NULL;
2805     int _mark = p->mark;
2806     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2807         p->error_indicator = 1;
2808         p->level--;
2809         return NULL;
2810     }
2811     int _start_lineno = p->tokens[_mark]->lineno;
2812     UNUSED(_start_lineno); // Only used by EXTRA macro
2813     int _start_col_offset = p->tokens[_mark]->col_offset;
2814     UNUSED(_start_col_offset); // Only used by EXTRA macro
2815     { // 'return' star_expressions?
2816         if (p->error_indicator) {
2817             p->level--;
2818             return NULL;
2819         }
2820         D(fprintf(stderr, "%*c> return_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
2821         Token * _keyword;
2822         void *a;
2823         if (
2824             (_keyword = _PyPegen_expect_token(p, 519))  // token='return'
2825             &&
2826             (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
2827         )
2828         {
2829             D(fprintf(stderr, "%*c+ return_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
2830             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2831             if (_token == NULL) {
2832                 p->level--;
2833                 return NULL;
2834             }
2835             int _end_lineno = _token->end_lineno;
2836             UNUSED(_end_lineno); // Only used by EXTRA macro
2837             int _end_col_offset = _token->end_col_offset;
2838             UNUSED(_end_col_offset); // Only used by EXTRA macro
2839             _res = _PyAST_Return ( a , EXTRA );
2840             if (_res == NULL && PyErr_Occurred()) {
2841                 p->error_indicator = 1;
2842                 p->level--;
2843                 return NULL;
2844             }
2845             goto done;
2846         }
2847         p->mark = _mark;
2848         D(fprintf(stderr, "%*c%s return_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2849                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'return' star_expressions?"));
2850     }
2851     _res = NULL;
2852   done:
2853     p->level--;
2854     return _res;
2855 }
2856 
2857 // raise_stmt: 'raise' expression ['from' expression] | 'raise'
2858 static stmt_ty
raise_stmt_rule(Parser * p)2859 raise_stmt_rule(Parser *p)
2860 {
2861     if (p->level++ == MAXSTACK) {
2862         p->error_indicator = 1;
2863         PyErr_NoMemory();
2864     }
2865     if (p->error_indicator) {
2866         p->level--;
2867         return NULL;
2868     }
2869     stmt_ty _res = NULL;
2870     int _mark = p->mark;
2871     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2872         p->error_indicator = 1;
2873         p->level--;
2874         return NULL;
2875     }
2876     int _start_lineno = p->tokens[_mark]->lineno;
2877     UNUSED(_start_lineno); // Only used by EXTRA macro
2878     int _start_col_offset = p->tokens[_mark]->col_offset;
2879     UNUSED(_start_col_offset); // Only used by EXTRA macro
2880     { // 'raise' expression ['from' expression]
2881         if (p->error_indicator) {
2882             p->level--;
2883             return NULL;
2884         }
2885         D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression ['from' expression]"));
2886         Token * _keyword;
2887         expr_ty a;
2888         void *b;
2889         if (
2890             (_keyword = _PyPegen_expect_token(p, 522))  // token='raise'
2891             &&
2892             (a = expression_rule(p))  // expression
2893             &&
2894             (b = _tmp_17_rule(p), !p->error_indicator)  // ['from' expression]
2895         )
2896         {
2897             D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression ['from' expression]"));
2898             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2899             if (_token == NULL) {
2900                 p->level--;
2901                 return NULL;
2902             }
2903             int _end_lineno = _token->end_lineno;
2904             UNUSED(_end_lineno); // Only used by EXTRA macro
2905             int _end_col_offset = _token->end_col_offset;
2906             UNUSED(_end_col_offset); // Only used by EXTRA macro
2907             _res = _PyAST_Raise ( a , b , EXTRA );
2908             if (_res == NULL && PyErr_Occurred()) {
2909                 p->error_indicator = 1;
2910                 p->level--;
2911                 return NULL;
2912             }
2913             goto done;
2914         }
2915         p->mark = _mark;
2916         D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2917                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression ['from' expression]"));
2918     }
2919     { // 'raise'
2920         if (p->error_indicator) {
2921             p->level--;
2922             return NULL;
2923         }
2924         D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise'"));
2925         Token * _keyword;
2926         if (
2927             (_keyword = _PyPegen_expect_token(p, 522))  // token='raise'
2928         )
2929         {
2930             D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise'"));
2931             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2932             if (_token == NULL) {
2933                 p->level--;
2934                 return NULL;
2935             }
2936             int _end_lineno = _token->end_lineno;
2937             UNUSED(_end_lineno); // Only used by EXTRA macro
2938             int _end_col_offset = _token->end_col_offset;
2939             UNUSED(_end_col_offset); // Only used by EXTRA macro
2940             _res = _PyAST_Raise ( NULL , NULL , EXTRA );
2941             if (_res == NULL && PyErr_Occurred()) {
2942                 p->error_indicator = 1;
2943                 p->level--;
2944                 return NULL;
2945             }
2946             goto done;
2947         }
2948         p->mark = _mark;
2949         D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2950                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise'"));
2951     }
2952     _res = NULL;
2953   done:
2954     p->level--;
2955     return _res;
2956 }
2957 
2958 // global_stmt: 'global' ','.NAME+
2959 static stmt_ty
global_stmt_rule(Parser * p)2960 global_stmt_rule(Parser *p)
2961 {
2962     if (p->level++ == MAXSTACK) {
2963         p->error_indicator = 1;
2964         PyErr_NoMemory();
2965     }
2966     if (p->error_indicator) {
2967         p->level--;
2968         return NULL;
2969     }
2970     stmt_ty _res = NULL;
2971     int _mark = p->mark;
2972     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2973         p->error_indicator = 1;
2974         p->level--;
2975         return NULL;
2976     }
2977     int _start_lineno = p->tokens[_mark]->lineno;
2978     UNUSED(_start_lineno); // Only used by EXTRA macro
2979     int _start_col_offset = p->tokens[_mark]->col_offset;
2980     UNUSED(_start_col_offset); // Only used by EXTRA macro
2981     { // 'global' ','.NAME+
2982         if (p->error_indicator) {
2983             p->level--;
2984             return NULL;
2985         }
2986         D(fprintf(stderr, "%*c> global_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
2987         Token * _keyword;
2988         asdl_expr_seq* a;
2989         if (
2990             (_keyword = _PyPegen_expect_token(p, 523))  // token='global'
2991             &&
2992             (a = (asdl_expr_seq*)_gather_18_rule(p))  // ','.NAME+
2993         )
2994         {
2995             D(fprintf(stderr, "%*c+ global_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
2996             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2997             if (_token == NULL) {
2998                 p->level--;
2999                 return NULL;
3000             }
3001             int _end_lineno = _token->end_lineno;
3002             UNUSED(_end_lineno); // Only used by EXTRA macro
3003             int _end_col_offset = _token->end_col_offset;
3004             UNUSED(_end_col_offset); // Only used by EXTRA macro
3005             _res = _PyAST_Global ( CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
3006             if (_res == NULL && PyErr_Occurred()) {
3007                 p->error_indicator = 1;
3008                 p->level--;
3009                 return NULL;
3010             }
3011             goto done;
3012         }
3013         p->mark = _mark;
3014         D(fprintf(stderr, "%*c%s global_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3015                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'global' ','.NAME+"));
3016     }
3017     _res = NULL;
3018   done:
3019     p->level--;
3020     return _res;
3021 }
3022 
3023 // nonlocal_stmt: 'nonlocal' ','.NAME+
3024 static stmt_ty
nonlocal_stmt_rule(Parser * p)3025 nonlocal_stmt_rule(Parser *p)
3026 {
3027     if (p->level++ == MAXSTACK) {
3028         p->error_indicator = 1;
3029         PyErr_NoMemory();
3030     }
3031     if (p->error_indicator) {
3032         p->level--;
3033         return NULL;
3034     }
3035     stmt_ty _res = NULL;
3036     int _mark = p->mark;
3037     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3038         p->error_indicator = 1;
3039         p->level--;
3040         return NULL;
3041     }
3042     int _start_lineno = p->tokens[_mark]->lineno;
3043     UNUSED(_start_lineno); // Only used by EXTRA macro
3044     int _start_col_offset = p->tokens[_mark]->col_offset;
3045     UNUSED(_start_col_offset); // Only used by EXTRA macro
3046     { // 'nonlocal' ','.NAME+
3047         if (p->error_indicator) {
3048             p->level--;
3049             return NULL;
3050         }
3051         D(fprintf(stderr, "%*c> nonlocal_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
3052         Token * _keyword;
3053         asdl_expr_seq* a;
3054         if (
3055             (_keyword = _PyPegen_expect_token(p, 524))  // token='nonlocal'
3056             &&
3057             (a = (asdl_expr_seq*)_gather_20_rule(p))  // ','.NAME+
3058         )
3059         {
3060             D(fprintf(stderr, "%*c+ nonlocal_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
3061             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3062             if (_token == NULL) {
3063                 p->level--;
3064                 return NULL;
3065             }
3066             int _end_lineno = _token->end_lineno;
3067             UNUSED(_end_lineno); // Only used by EXTRA macro
3068             int _end_col_offset = _token->end_col_offset;
3069             UNUSED(_end_col_offset); // Only used by EXTRA macro
3070             _res = _PyAST_Nonlocal ( CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
3071             if (_res == NULL && PyErr_Occurred()) {
3072                 p->error_indicator = 1;
3073                 p->level--;
3074                 return NULL;
3075             }
3076             goto done;
3077         }
3078         p->mark = _mark;
3079         D(fprintf(stderr, "%*c%s nonlocal_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3080                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'nonlocal' ','.NAME+"));
3081     }
3082     _res = NULL;
3083   done:
3084     p->level--;
3085     return _res;
3086 }
3087 
3088 // del_stmt: 'del' del_targets &(';' | NEWLINE) | invalid_del_stmt
3089 static stmt_ty
del_stmt_rule(Parser * p)3090 del_stmt_rule(Parser *p)
3091 {
3092     if (p->level++ == MAXSTACK) {
3093         p->error_indicator = 1;
3094         PyErr_NoMemory();
3095     }
3096     if (p->error_indicator) {
3097         p->level--;
3098         return NULL;
3099     }
3100     stmt_ty _res = NULL;
3101     int _mark = p->mark;
3102     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3103         p->error_indicator = 1;
3104         p->level--;
3105         return NULL;
3106     }
3107     int _start_lineno = p->tokens[_mark]->lineno;
3108     UNUSED(_start_lineno); // Only used by EXTRA macro
3109     int _start_col_offset = p->tokens[_mark]->col_offset;
3110     UNUSED(_start_col_offset); // Only used by EXTRA macro
3111     { // 'del' del_targets &(';' | NEWLINE)
3112         if (p->error_indicator) {
3113             p->level--;
3114             return NULL;
3115         }
3116         D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3117         Token * _keyword;
3118         asdl_expr_seq* a;
3119         if (
3120             (_keyword = _PyPegen_expect_token(p, 603))  // token='del'
3121             &&
3122             (a = del_targets_rule(p))  // del_targets
3123             &&
3124             _PyPegen_lookahead(1, _tmp_22_rule, p)
3125         )
3126         {
3127             D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3128             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3129             if (_token == NULL) {
3130                 p->level--;
3131                 return NULL;
3132             }
3133             int _end_lineno = _token->end_lineno;
3134             UNUSED(_end_lineno); // Only used by EXTRA macro
3135             int _end_col_offset = _token->end_col_offset;
3136             UNUSED(_end_col_offset); // Only used by EXTRA macro
3137             _res = _PyAST_Delete ( a , EXTRA );
3138             if (_res == NULL && PyErr_Occurred()) {
3139                 p->error_indicator = 1;
3140                 p->level--;
3141                 return NULL;
3142             }
3143             goto done;
3144         }
3145         p->mark = _mark;
3146         D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3147                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3148     }
3149     if (p->call_invalid_rules) { // invalid_del_stmt
3150         if (p->error_indicator) {
3151             p->level--;
3152             return NULL;
3153         }
3154         D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3155         void *invalid_del_stmt_var;
3156         if (
3157             (invalid_del_stmt_var = invalid_del_stmt_rule(p))  // invalid_del_stmt
3158         )
3159         {
3160             D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3161             _res = invalid_del_stmt_var;
3162             goto done;
3163         }
3164         p->mark = _mark;
3165         D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3166                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_del_stmt"));
3167     }
3168     _res = NULL;
3169   done:
3170     p->level--;
3171     return _res;
3172 }
3173 
3174 // yield_stmt: yield_expr
3175 static stmt_ty
yield_stmt_rule(Parser * p)3176 yield_stmt_rule(Parser *p)
3177 {
3178     if (p->level++ == MAXSTACK) {
3179         p->error_indicator = 1;
3180         PyErr_NoMemory();
3181     }
3182     if (p->error_indicator) {
3183         p->level--;
3184         return NULL;
3185     }
3186     stmt_ty _res = NULL;
3187     int _mark = p->mark;
3188     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3189         p->error_indicator = 1;
3190         p->level--;
3191         return NULL;
3192     }
3193     int _start_lineno = p->tokens[_mark]->lineno;
3194     UNUSED(_start_lineno); // Only used by EXTRA macro
3195     int _start_col_offset = p->tokens[_mark]->col_offset;
3196     UNUSED(_start_col_offset); // Only used by EXTRA macro
3197     { // yield_expr
3198         if (p->error_indicator) {
3199             p->level--;
3200             return NULL;
3201         }
3202         D(fprintf(stderr, "%*c> yield_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3203         expr_ty y;
3204         if (
3205             (y = yield_expr_rule(p))  // yield_expr
3206         )
3207         {
3208             D(fprintf(stderr, "%*c+ yield_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3209             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3210             if (_token == NULL) {
3211                 p->level--;
3212                 return NULL;
3213             }
3214             int _end_lineno = _token->end_lineno;
3215             UNUSED(_end_lineno); // Only used by EXTRA macro
3216             int _end_col_offset = _token->end_col_offset;
3217             UNUSED(_end_col_offset); // Only used by EXTRA macro
3218             _res = _PyAST_Expr ( y , EXTRA );
3219             if (_res == NULL && PyErr_Occurred()) {
3220                 p->error_indicator = 1;
3221                 p->level--;
3222                 return NULL;
3223             }
3224             goto done;
3225         }
3226         p->mark = _mark;
3227         D(fprintf(stderr, "%*c%s yield_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3228                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
3229     }
3230     _res = NULL;
3231   done:
3232     p->level--;
3233     return _res;
3234 }
3235 
3236 // assert_stmt: 'assert' expression [',' expression]
3237 static stmt_ty
assert_stmt_rule(Parser * p)3238 assert_stmt_rule(Parser *p)
3239 {
3240     if (p->level++ == MAXSTACK) {
3241         p->error_indicator = 1;
3242         PyErr_NoMemory();
3243     }
3244     if (p->error_indicator) {
3245         p->level--;
3246         return NULL;
3247     }
3248     stmt_ty _res = NULL;
3249     int _mark = p->mark;
3250     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3251         p->error_indicator = 1;
3252         p->level--;
3253         return NULL;
3254     }
3255     int _start_lineno = p->tokens[_mark]->lineno;
3256     UNUSED(_start_lineno); // Only used by EXTRA macro
3257     int _start_col_offset = p->tokens[_mark]->col_offset;
3258     UNUSED(_start_col_offset); // Only used by EXTRA macro
3259     { // 'assert' expression [',' expression]
3260         if (p->error_indicator) {
3261             p->level--;
3262             return NULL;
3263         }
3264         D(fprintf(stderr, "%*c> assert_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3265         Token * _keyword;
3266         expr_ty a;
3267         void *b;
3268         if (
3269             (_keyword = _PyPegen_expect_token(p, 526))  // token='assert'
3270             &&
3271             (a = expression_rule(p))  // expression
3272             &&
3273             (b = _tmp_23_rule(p), !p->error_indicator)  // [',' expression]
3274         )
3275         {
3276             D(fprintf(stderr, "%*c+ assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3277             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3278             if (_token == NULL) {
3279                 p->level--;
3280                 return NULL;
3281             }
3282             int _end_lineno = _token->end_lineno;
3283             UNUSED(_end_lineno); // Only used by EXTRA macro
3284             int _end_col_offset = _token->end_col_offset;
3285             UNUSED(_end_col_offset); // Only used by EXTRA macro
3286             _res = _PyAST_Assert ( a , b , EXTRA );
3287             if (_res == NULL && PyErr_Occurred()) {
3288                 p->error_indicator = 1;
3289                 p->level--;
3290                 return NULL;
3291             }
3292             goto done;
3293         }
3294         p->mark = _mark;
3295         D(fprintf(stderr, "%*c%s assert_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3296                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'assert' expression [',' expression]"));
3297     }
3298     _res = NULL;
3299   done:
3300     p->level--;
3301     return _res;
3302 }
3303 
3304 // import_stmt: import_name | import_from
3305 static stmt_ty
import_stmt_rule(Parser * p)3306 import_stmt_rule(Parser *p)
3307 {
3308     if (p->level++ == MAXSTACK) {
3309         p->error_indicator = 1;
3310         PyErr_NoMemory();
3311     }
3312     if (p->error_indicator) {
3313         p->level--;
3314         return NULL;
3315     }
3316     stmt_ty _res = NULL;
3317     int _mark = p->mark;
3318     { // import_name
3319         if (p->error_indicator) {
3320             p->level--;
3321             return NULL;
3322         }
3323         D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_name"));
3324         stmt_ty import_name_var;
3325         if (
3326             (import_name_var = import_name_rule(p))  // import_name
3327         )
3328         {
3329             D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_name"));
3330             _res = import_name_var;
3331             goto done;
3332         }
3333         p->mark = _mark;
3334         D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3335                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_name"));
3336     }
3337     { // import_from
3338         if (p->error_indicator) {
3339             p->level--;
3340             return NULL;
3341         }
3342         D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from"));
3343         stmt_ty import_from_var;
3344         if (
3345             (import_from_var = import_from_rule(p))  // import_from
3346         )
3347         {
3348             D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from"));
3349             _res = import_from_var;
3350             goto done;
3351         }
3352         p->mark = _mark;
3353         D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3354                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from"));
3355     }
3356     _res = NULL;
3357   done:
3358     p->level--;
3359     return _res;
3360 }
3361 
3362 // import_name: 'import' dotted_as_names
3363 static stmt_ty
import_name_rule(Parser * p)3364 import_name_rule(Parser *p)
3365 {
3366     if (p->level++ == MAXSTACK) {
3367         p->error_indicator = 1;
3368         PyErr_NoMemory();
3369     }
3370     if (p->error_indicator) {
3371         p->level--;
3372         return NULL;
3373     }
3374     stmt_ty _res = NULL;
3375     int _mark = p->mark;
3376     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3377         p->error_indicator = 1;
3378         p->level--;
3379         return NULL;
3380     }
3381     int _start_lineno = p->tokens[_mark]->lineno;
3382     UNUSED(_start_lineno); // Only used by EXTRA macro
3383     int _start_col_offset = p->tokens[_mark]->col_offset;
3384     UNUSED(_start_col_offset); // Only used by EXTRA macro
3385     { // 'import' dotted_as_names
3386         if (p->error_indicator) {
3387             p->level--;
3388             return NULL;
3389         }
3390         D(fprintf(stderr, "%*c> import_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3391         Token * _keyword;
3392         asdl_alias_seq* a;
3393         if (
3394             (_keyword = _PyPegen_expect_token(p, 531))  // token='import'
3395             &&
3396             (a = dotted_as_names_rule(p))  // dotted_as_names
3397         )
3398         {
3399             D(fprintf(stderr, "%*c+ import_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3400             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3401             if (_token == NULL) {
3402                 p->level--;
3403                 return NULL;
3404             }
3405             int _end_lineno = _token->end_lineno;
3406             UNUSED(_end_lineno); // Only used by EXTRA macro
3407             int _end_col_offset = _token->end_col_offset;
3408             UNUSED(_end_col_offset); // Only used by EXTRA macro
3409             _res = _PyAST_Import ( a , EXTRA );
3410             if (_res == NULL && PyErr_Occurred()) {
3411                 p->error_indicator = 1;
3412                 p->level--;
3413                 return NULL;
3414             }
3415             goto done;
3416         }
3417         p->mark = _mark;
3418         D(fprintf(stderr, "%*c%s import_name[%d-%d]: %s failed!\n", p->level, ' ',
3419                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' dotted_as_names"));
3420     }
3421     _res = NULL;
3422   done:
3423     p->level--;
3424     return _res;
3425 }
3426 
3427 // import_from:
3428 //     | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3429 //     | 'from' (('.' | '...'))+ 'import' import_from_targets
3430 static stmt_ty
import_from_rule(Parser * p)3431 import_from_rule(Parser *p)
3432 {
3433     if (p->level++ == MAXSTACK) {
3434         p->error_indicator = 1;
3435         PyErr_NoMemory();
3436     }
3437     if (p->error_indicator) {
3438         p->level--;
3439         return NULL;
3440     }
3441     stmt_ty _res = NULL;
3442     int _mark = p->mark;
3443     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3444         p->error_indicator = 1;
3445         p->level--;
3446         return NULL;
3447     }
3448     int _start_lineno = p->tokens[_mark]->lineno;
3449     UNUSED(_start_lineno); // Only used by EXTRA macro
3450     int _start_col_offset = p->tokens[_mark]->col_offset;
3451     UNUSED(_start_col_offset); // Only used by EXTRA macro
3452     { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3453         if (p->error_indicator) {
3454             p->level--;
3455             return NULL;
3456         }
3457         D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3458         Token * _keyword;
3459         Token * _keyword_1;
3460         asdl_seq * a;
3461         expr_ty b;
3462         asdl_alias_seq* c;
3463         if (
3464             (_keyword = _PyPegen_expect_token(p, 572))  // token='from'
3465             &&
3466             (a = _loop0_24_rule(p))  // (('.' | '...'))*
3467             &&
3468             (b = dotted_name_rule(p))  // dotted_name
3469             &&
3470             (_keyword_1 = _PyPegen_expect_token(p, 531))  // token='import'
3471             &&
3472             (c = import_from_targets_rule(p))  // import_from_targets
3473         )
3474         {
3475             D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3476             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3477             if (_token == NULL) {
3478                 p->level--;
3479                 return NULL;
3480             }
3481             int _end_lineno = _token->end_lineno;
3482             UNUSED(_end_lineno); // Only used by EXTRA macro
3483             int _end_col_offset = _token->end_col_offset;
3484             UNUSED(_end_col_offset); // Only used by EXTRA macro
3485             _res = _PyAST_ImportFrom ( b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
3486             if (_res == NULL && PyErr_Occurred()) {
3487                 p->error_indicator = 1;
3488                 p->level--;
3489                 return NULL;
3490             }
3491             goto done;
3492         }
3493         p->mark = _mark;
3494         D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3495                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3496     }
3497     { // 'from' (('.' | '...'))+ 'import' import_from_targets
3498         if (p->error_indicator) {
3499             p->level--;
3500             return NULL;
3501         }
3502         D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3503         Token * _keyword;
3504         Token * _keyword_1;
3505         asdl_seq * a;
3506         asdl_alias_seq* b;
3507         if (
3508             (_keyword = _PyPegen_expect_token(p, 572))  // token='from'
3509             &&
3510             (a = _loop1_25_rule(p))  // (('.' | '...'))+
3511             &&
3512             (_keyword_1 = _PyPegen_expect_token(p, 531))  // token='import'
3513             &&
3514             (b = import_from_targets_rule(p))  // import_from_targets
3515         )
3516         {
3517             D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3518             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3519             if (_token == NULL) {
3520                 p->level--;
3521                 return NULL;
3522             }
3523             int _end_lineno = _token->end_lineno;
3524             UNUSED(_end_lineno); // Only used by EXTRA macro
3525             int _end_col_offset = _token->end_col_offset;
3526             UNUSED(_end_col_offset); // Only used by EXTRA macro
3527             _res = _PyAST_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
3528             if (_res == NULL && PyErr_Occurred()) {
3529                 p->error_indicator = 1;
3530                 p->level--;
3531                 return NULL;
3532             }
3533             goto done;
3534         }
3535         p->mark = _mark;
3536         D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3537                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3538     }
3539     _res = NULL;
3540   done:
3541     p->level--;
3542     return _res;
3543 }
3544 
3545 // import_from_targets:
3546 //     | '(' import_from_as_names ','? ')'
3547 //     | import_from_as_names !','
3548 //     | '*'
3549 //     | invalid_import_from_targets
3550 static asdl_alias_seq*
import_from_targets_rule(Parser * p)3551 import_from_targets_rule(Parser *p)
3552 {
3553     if (p->level++ == MAXSTACK) {
3554         p->error_indicator = 1;
3555         PyErr_NoMemory();
3556     }
3557     if (p->error_indicator) {
3558         p->level--;
3559         return NULL;
3560     }
3561     asdl_alias_seq* _res = NULL;
3562     int _mark = p->mark;
3563     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3564         p->error_indicator = 1;
3565         p->level--;
3566         return NULL;
3567     }
3568     int _start_lineno = p->tokens[_mark]->lineno;
3569     UNUSED(_start_lineno); // Only used by EXTRA macro
3570     int _start_col_offset = p->tokens[_mark]->col_offset;
3571     UNUSED(_start_col_offset); // Only used by EXTRA macro
3572     { // '(' import_from_as_names ','? ')'
3573         if (p->error_indicator) {
3574             p->level--;
3575             return NULL;
3576         }
3577         D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3578         Token * _literal;
3579         Token * _literal_1;
3580         void *_opt_var;
3581         UNUSED(_opt_var); // Silence compiler warnings
3582         asdl_alias_seq* a;
3583         if (
3584             (_literal = _PyPegen_expect_token(p, 7))  // token='('
3585             &&
3586             (a = import_from_as_names_rule(p))  // import_from_as_names
3587             &&
3588             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
3589             &&
3590             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
3591         )
3592         {
3593             D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3594             _res = a;
3595             if (_res == NULL && PyErr_Occurred()) {
3596                 p->error_indicator = 1;
3597                 p->level--;
3598                 return NULL;
3599             }
3600             goto done;
3601         }
3602         p->mark = _mark;
3603         D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3604                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3605     }
3606     { // import_from_as_names !','
3607         if (p->error_indicator) {
3608             p->level--;
3609             return NULL;
3610         }
3611         D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3612         asdl_alias_seq* import_from_as_names_var;
3613         if (
3614             (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
3615             &&
3616             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
3617         )
3618         {
3619             D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3620             _res = import_from_as_names_var;
3621             goto done;
3622         }
3623         p->mark = _mark;
3624         D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3625                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names !','"));
3626     }
3627     { // '*'
3628         if (p->error_indicator) {
3629             p->level--;
3630             return NULL;
3631         }
3632         D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
3633         Token * _literal;
3634         if (
3635             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
3636         )
3637         {
3638             D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
3639             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3640             if (_token == NULL) {
3641                 p->level--;
3642                 return NULL;
3643             }
3644             int _end_lineno = _token->end_lineno;
3645             UNUSED(_end_lineno); // Only used by EXTRA macro
3646             int _end_col_offset = _token->end_col_offset;
3647             UNUSED(_end_col_offset); // Only used by EXTRA macro
3648             _res = ( asdl_alias_seq* ) _PyPegen_singleton_seq ( p , CHECK ( alias_ty , _PyPegen_alias_for_star ( p , EXTRA ) ) );
3649             if (_res == NULL && PyErr_Occurred()) {
3650                 p->error_indicator = 1;
3651                 p->level--;
3652                 return NULL;
3653             }
3654             goto done;
3655         }
3656         p->mark = _mark;
3657         D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3658                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
3659     }
3660     if (p->call_invalid_rules) { // invalid_import_from_targets
3661         if (p->error_indicator) {
3662             p->level--;
3663             return NULL;
3664         }
3665         D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3666         void *invalid_import_from_targets_var;
3667         if (
3668             (invalid_import_from_targets_var = invalid_import_from_targets_rule(p))  // invalid_import_from_targets
3669         )
3670         {
3671             D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3672             _res = invalid_import_from_targets_var;
3673             goto done;
3674         }
3675         p->mark = _mark;
3676         D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3677                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_targets"));
3678     }
3679     _res = NULL;
3680   done:
3681     p->level--;
3682     return _res;
3683 }
3684 
3685 // import_from_as_names: ','.import_from_as_name+
3686 static asdl_alias_seq*
import_from_as_names_rule(Parser * p)3687 import_from_as_names_rule(Parser *p)
3688 {
3689     if (p->level++ == MAXSTACK) {
3690         p->error_indicator = 1;
3691         PyErr_NoMemory();
3692     }
3693     if (p->error_indicator) {
3694         p->level--;
3695         return NULL;
3696     }
3697     asdl_alias_seq* _res = NULL;
3698     int _mark = p->mark;
3699     { // ','.import_from_as_name+
3700         if (p->error_indicator) {
3701             p->level--;
3702             return NULL;
3703         }
3704         D(fprintf(stderr, "%*c> import_from_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3705         asdl_alias_seq* a;
3706         if (
3707             (a = (asdl_alias_seq*)_gather_26_rule(p))  // ','.import_from_as_name+
3708         )
3709         {
3710             D(fprintf(stderr, "%*c+ import_from_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3711             _res = a;
3712             if (_res == NULL && PyErr_Occurred()) {
3713                 p->error_indicator = 1;
3714                 p->level--;
3715                 return NULL;
3716             }
3717             goto done;
3718         }
3719         p->mark = _mark;
3720         D(fprintf(stderr, "%*c%s import_from_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3721                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.import_from_as_name+"));
3722     }
3723     _res = NULL;
3724   done:
3725     p->level--;
3726     return _res;
3727 }
3728 
3729 // import_from_as_name: NAME ['as' NAME]
3730 static alias_ty
import_from_as_name_rule(Parser * p)3731 import_from_as_name_rule(Parser *p)
3732 {
3733     if (p->level++ == MAXSTACK) {
3734         p->error_indicator = 1;
3735         PyErr_NoMemory();
3736     }
3737     if (p->error_indicator) {
3738         p->level--;
3739         return NULL;
3740     }
3741     alias_ty _res = NULL;
3742     int _mark = p->mark;
3743     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3744         p->error_indicator = 1;
3745         p->level--;
3746         return NULL;
3747     }
3748     int _start_lineno = p->tokens[_mark]->lineno;
3749     UNUSED(_start_lineno); // Only used by EXTRA macro
3750     int _start_col_offset = p->tokens[_mark]->col_offset;
3751     UNUSED(_start_col_offset); // Only used by EXTRA macro
3752     { // NAME ['as' NAME]
3753         if (p->error_indicator) {
3754             p->level--;
3755             return NULL;
3756         }
3757         D(fprintf(stderr, "%*c> import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3758         expr_ty a;
3759         void *b;
3760         if (
3761             (a = _PyPegen_name_token(p))  // NAME
3762             &&
3763             (b = _tmp_28_rule(p), !p->error_indicator)  // ['as' NAME]
3764         )
3765         {
3766             D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3767             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3768             if (_token == NULL) {
3769                 p->level--;
3770                 return NULL;
3771             }
3772             int _end_lineno = _token->end_lineno;
3773             UNUSED(_end_lineno); // Only used by EXTRA macro
3774             int _end_col_offset = _token->end_col_offset;
3775             UNUSED(_end_col_offset); // Only used by EXTRA macro
3776             _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
3777             if (_res == NULL && PyErr_Occurred()) {
3778                 p->error_indicator = 1;
3779                 p->level--;
3780                 return NULL;
3781             }
3782             goto done;
3783         }
3784         p->mark = _mark;
3785         D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3786                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ['as' NAME]"));
3787     }
3788     _res = NULL;
3789   done:
3790     p->level--;
3791     return _res;
3792 }
3793 
3794 // dotted_as_names: ','.dotted_as_name+
3795 static asdl_alias_seq*
dotted_as_names_rule(Parser * p)3796 dotted_as_names_rule(Parser *p)
3797 {
3798     if (p->level++ == MAXSTACK) {
3799         p->error_indicator = 1;
3800         PyErr_NoMemory();
3801     }
3802     if (p->error_indicator) {
3803         p->level--;
3804         return NULL;
3805     }
3806     asdl_alias_seq* _res = NULL;
3807     int _mark = p->mark;
3808     { // ','.dotted_as_name+
3809         if (p->error_indicator) {
3810             p->level--;
3811             return NULL;
3812         }
3813         D(fprintf(stderr, "%*c> dotted_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
3814         asdl_alias_seq* a;
3815         if (
3816             (a = (asdl_alias_seq*)_gather_29_rule(p))  // ','.dotted_as_name+
3817         )
3818         {
3819             D(fprintf(stderr, "%*c+ dotted_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
3820             _res = a;
3821             if (_res == NULL && PyErr_Occurred()) {
3822                 p->error_indicator = 1;
3823                 p->level--;
3824                 return NULL;
3825             }
3826             goto done;
3827         }
3828         p->mark = _mark;
3829         D(fprintf(stderr, "%*c%s dotted_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3830                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.dotted_as_name+"));
3831     }
3832     _res = NULL;
3833   done:
3834     p->level--;
3835     return _res;
3836 }
3837 
3838 // dotted_as_name: dotted_name ['as' NAME]
3839 static alias_ty
dotted_as_name_rule(Parser * p)3840 dotted_as_name_rule(Parser *p)
3841 {
3842     if (p->level++ == MAXSTACK) {
3843         p->error_indicator = 1;
3844         PyErr_NoMemory();
3845     }
3846     if (p->error_indicator) {
3847         p->level--;
3848         return NULL;
3849     }
3850     alias_ty _res = NULL;
3851     int _mark = p->mark;
3852     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3853         p->error_indicator = 1;
3854         p->level--;
3855         return NULL;
3856     }
3857     int _start_lineno = p->tokens[_mark]->lineno;
3858     UNUSED(_start_lineno); // Only used by EXTRA macro
3859     int _start_col_offset = p->tokens[_mark]->col_offset;
3860     UNUSED(_start_col_offset); // Only used by EXTRA macro
3861     { // dotted_name ['as' NAME]
3862         if (p->error_indicator) {
3863             p->level--;
3864             return NULL;
3865         }
3866         D(fprintf(stderr, "%*c> dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
3867         expr_ty a;
3868         void *b;
3869         if (
3870             (a = dotted_name_rule(p))  // dotted_name
3871             &&
3872             (b = _tmp_31_rule(p), !p->error_indicator)  // ['as' NAME]
3873         )
3874         {
3875             D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
3876             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3877             if (_token == NULL) {
3878                 p->level--;
3879                 return NULL;
3880             }
3881             int _end_lineno = _token->end_lineno;
3882             UNUSED(_end_lineno); // Only used by EXTRA macro
3883             int _end_col_offset = _token->end_col_offset;
3884             UNUSED(_end_col_offset); // Only used by EXTRA macro
3885             _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
3886             if (_res == NULL && PyErr_Occurred()) {
3887                 p->error_indicator = 1;
3888                 p->level--;
3889                 return NULL;
3890             }
3891             goto done;
3892         }
3893         p->mark = _mark;
3894         D(fprintf(stderr, "%*c%s dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3895                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name ['as' NAME]"));
3896     }
3897     _res = NULL;
3898   done:
3899     p->level--;
3900     return _res;
3901 }
3902 
3903 // Left-recursive
3904 // dotted_name: dotted_name '.' NAME | NAME
3905 static expr_ty dotted_name_raw(Parser *);
3906 static expr_ty
dotted_name_rule(Parser * p)3907 dotted_name_rule(Parser *p)
3908 {
3909     if (p->level++ == MAXSTACK) {
3910         p->error_indicator = 1;
3911         PyErr_NoMemory();
3912     }
3913     expr_ty _res = NULL;
3914     if (_PyPegen_is_memoized(p, dotted_name_type, &_res)) {
3915         p->level--;
3916         return _res;
3917     }
3918     int _mark = p->mark;
3919     int _resmark = p->mark;
3920     while (1) {
3921         int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
3922         if (tmpvar_0) {
3923             p->level--;
3924             return _res;
3925         }
3926         p->mark = _mark;
3927         void *_raw = dotted_name_raw(p);
3928         if (p->error_indicator) {
3929             p->level--;
3930             return NULL;
3931         }
3932         if (_raw == NULL || p->mark <= _resmark)
3933             break;
3934         _resmark = p->mark;
3935         _res = _raw;
3936     }
3937     p->mark = _resmark;
3938     p->level--;
3939     return _res;
3940 }
3941 static expr_ty
dotted_name_raw(Parser * p)3942 dotted_name_raw(Parser *p)
3943 {
3944     if (p->level++ == MAXSTACK) {
3945         p->error_indicator = 1;
3946         PyErr_NoMemory();
3947     }
3948     if (p->error_indicator) {
3949         p->level--;
3950         return NULL;
3951     }
3952     expr_ty _res = NULL;
3953     int _mark = p->mark;
3954     { // dotted_name '.' NAME
3955         if (p->error_indicator) {
3956             p->level--;
3957             return NULL;
3958         }
3959         D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
3960         Token * _literal;
3961         expr_ty a;
3962         expr_ty b;
3963         if (
3964             (a = dotted_name_rule(p))  // dotted_name
3965             &&
3966             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
3967             &&
3968             (b = _PyPegen_name_token(p))  // NAME
3969         )
3970         {
3971             D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
3972             _res = _PyPegen_join_names_with_dot ( p , a , b );
3973             if (_res == NULL && PyErr_Occurred()) {
3974                 p->error_indicator = 1;
3975                 p->level--;
3976                 return NULL;
3977             }
3978             goto done;
3979         }
3980         p->mark = _mark;
3981         D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
3982                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name '.' NAME"));
3983     }
3984     { // NAME
3985         if (p->error_indicator) {
3986             p->level--;
3987             return NULL;
3988         }
3989         D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
3990         expr_ty name_var;
3991         if (
3992             (name_var = _PyPegen_name_token(p))  // NAME
3993         )
3994         {
3995             D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
3996             _res = name_var;
3997             goto done;
3998         }
3999         p->mark = _mark;
4000         D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
4001                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
4002     }
4003     _res = NULL;
4004   done:
4005     p->level--;
4006     return _res;
4007 }
4008 
4009 // block: NEWLINE INDENT statements DEDENT | simple_stmts | invalid_block
4010 static asdl_stmt_seq*
block_rule(Parser * p)4011 block_rule(Parser *p)
4012 {
4013     if (p->level++ == MAXSTACK) {
4014         p->error_indicator = 1;
4015         PyErr_NoMemory();
4016     }
4017     if (p->error_indicator) {
4018         p->level--;
4019         return NULL;
4020     }
4021     asdl_stmt_seq* _res = NULL;
4022     if (_PyPegen_is_memoized(p, block_type, &_res)) {
4023         p->level--;
4024         return _res;
4025     }
4026     int _mark = p->mark;
4027     { // NEWLINE INDENT statements DEDENT
4028         if (p->error_indicator) {
4029             p->level--;
4030             return NULL;
4031         }
4032         D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4033         asdl_stmt_seq* a;
4034         Token * dedent_var;
4035         Token * indent_var;
4036         Token * newline_var;
4037         if (
4038             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
4039             &&
4040             (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
4041             &&
4042             (a = statements_rule(p))  // statements
4043             &&
4044             (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
4045         )
4046         {
4047             D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4048             _res = a;
4049             if (_res == NULL && PyErr_Occurred()) {
4050                 p->error_indicator = 1;
4051                 p->level--;
4052                 return NULL;
4053             }
4054             goto done;
4055         }
4056         p->mark = _mark;
4057         D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4058                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
4059     }
4060     { // simple_stmts
4061         if (p->error_indicator) {
4062             p->level--;
4063             return NULL;
4064         }
4065         D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
4066         asdl_stmt_seq* simple_stmts_var;
4067         if (
4068             (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
4069         )
4070         {
4071             D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
4072             _res = simple_stmts_var;
4073             goto done;
4074         }
4075         p->mark = _mark;
4076         D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4077                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
4078     }
4079     if (p->call_invalid_rules) { // invalid_block
4080         if (p->error_indicator) {
4081             p->level--;
4082             return NULL;
4083         }
4084         D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_block"));
4085         void *invalid_block_var;
4086         if (
4087             (invalid_block_var = invalid_block_rule(p))  // invalid_block
4088         )
4089         {
4090             D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_block"));
4091             _res = invalid_block_var;
4092             goto done;
4093         }
4094         p->mark = _mark;
4095         D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
4096                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_block"));
4097     }
4098     _res = NULL;
4099   done:
4100     _PyPegen_insert_memo(p, _mark, block_type, _res);
4101     p->level--;
4102     return _res;
4103 }
4104 
4105 // decorators: (('@' named_expression NEWLINE))+
4106 static asdl_expr_seq*
decorators_rule(Parser * p)4107 decorators_rule(Parser *p)
4108 {
4109     if (p->level++ == MAXSTACK) {
4110         p->error_indicator = 1;
4111         PyErr_NoMemory();
4112     }
4113     if (p->error_indicator) {
4114         p->level--;
4115         return NULL;
4116     }
4117     asdl_expr_seq* _res = NULL;
4118     int _mark = p->mark;
4119     { // (('@' named_expression NEWLINE))+
4120         if (p->error_indicator) {
4121             p->level--;
4122             return NULL;
4123         }
4124         D(fprintf(stderr, "%*c> decorators[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4125         asdl_expr_seq* a;
4126         if (
4127             (a = (asdl_expr_seq*)_loop1_32_rule(p))  // (('@' named_expression NEWLINE))+
4128         )
4129         {
4130             D(fprintf(stderr, "%*c+ decorators[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4131             _res = a;
4132             if (_res == NULL && PyErr_Occurred()) {
4133                 p->error_indicator = 1;
4134                 p->level--;
4135                 return NULL;
4136             }
4137             goto done;
4138         }
4139         p->mark = _mark;
4140         D(fprintf(stderr, "%*c%s decorators[%d-%d]: %s failed!\n", p->level, ' ',
4141                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(('@' named_expression NEWLINE))+"));
4142     }
4143     _res = NULL;
4144   done:
4145     p->level--;
4146     return _res;
4147 }
4148 
4149 // class_def: decorators class_def_raw | class_def_raw
4150 static stmt_ty
class_def_rule(Parser * p)4151 class_def_rule(Parser *p)
4152 {
4153     if (p->level++ == MAXSTACK) {
4154         p->error_indicator = 1;
4155         PyErr_NoMemory();
4156     }
4157     if (p->error_indicator) {
4158         p->level--;
4159         return NULL;
4160     }
4161     stmt_ty _res = NULL;
4162     int _mark = p->mark;
4163     { // decorators class_def_raw
4164         if (p->error_indicator) {
4165             p->level--;
4166             return NULL;
4167         }
4168         D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
4169         asdl_expr_seq* a;
4170         stmt_ty b;
4171         if (
4172             (a = decorators_rule(p))  // decorators
4173             &&
4174             (b = class_def_raw_rule(p))  // class_def_raw
4175         )
4176         {
4177             D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
4178             _res = _PyPegen_class_def_decorators ( p , a , b );
4179             if (_res == NULL && PyErr_Occurred()) {
4180                 p->error_indicator = 1;
4181                 p->level--;
4182                 return NULL;
4183             }
4184             goto done;
4185         }
4186         p->mark = _mark;
4187         D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
4188                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators class_def_raw"));
4189     }
4190     { // class_def_raw
4191         if (p->error_indicator) {
4192             p->level--;
4193             return NULL;
4194         }
4195         D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
4196         stmt_ty class_def_raw_var;
4197         if (
4198             (class_def_raw_var = class_def_raw_rule(p))  // class_def_raw
4199         )
4200         {
4201             D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
4202             _res = class_def_raw_var;
4203             goto done;
4204         }
4205         p->mark = _mark;
4206         D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
4207                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_def_raw"));
4208     }
4209     _res = NULL;
4210   done:
4211     p->level--;
4212     return _res;
4213 }
4214 
4215 // class_def_raw: invalid_class_def_raw | 'class' NAME ['(' arguments? ')'] ':' block
4216 static stmt_ty
class_def_raw_rule(Parser * p)4217 class_def_raw_rule(Parser *p)
4218 {
4219     if (p->level++ == MAXSTACK) {
4220         p->error_indicator = 1;
4221         PyErr_NoMemory();
4222     }
4223     if (p->error_indicator) {
4224         p->level--;
4225         return NULL;
4226     }
4227     stmt_ty _res = NULL;
4228     int _mark = p->mark;
4229     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4230         p->error_indicator = 1;
4231         p->level--;
4232         return NULL;
4233     }
4234     int _start_lineno = p->tokens[_mark]->lineno;
4235     UNUSED(_start_lineno); // Only used by EXTRA macro
4236     int _start_col_offset = p->tokens[_mark]->col_offset;
4237     UNUSED(_start_col_offset); // Only used by EXTRA macro
4238     if (p->call_invalid_rules) { // invalid_class_def_raw
4239         if (p->error_indicator) {
4240             p->level--;
4241             return NULL;
4242         }
4243         D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
4244         void *invalid_class_def_raw_var;
4245         if (
4246             (invalid_class_def_raw_var = invalid_class_def_raw_rule(p))  // invalid_class_def_raw
4247         )
4248         {
4249             D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
4250             _res = invalid_class_def_raw_var;
4251             goto done;
4252         }
4253         p->mark = _mark;
4254         D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4255                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_def_raw"));
4256     }
4257     { // 'class' NAME ['(' arguments? ')'] ':' block
4258         if (p->error_indicator) {
4259             p->level--;
4260             return NULL;
4261         }
4262         D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' block"));
4263         Token * _keyword;
4264         Token * _literal;
4265         expr_ty a;
4266         void *b;
4267         asdl_stmt_seq* c;
4268         if (
4269             (_keyword = _PyPegen_expect_token(p, 651))  // token='class'
4270             &&
4271             (a = _PyPegen_name_token(p))  // NAME
4272             &&
4273             (b = _tmp_33_rule(p), !p->error_indicator)  // ['(' arguments? ')']
4274             &&
4275             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
4276             &&
4277             (c = block_rule(p))  // block
4278         )
4279         {
4280             D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' block"));
4281             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4282             if (_token == NULL) {
4283                 p->level--;
4284                 return NULL;
4285             }
4286             int _end_lineno = _token->end_lineno;
4287             UNUSED(_end_lineno); // Only used by EXTRA macro
4288             int _end_col_offset = _token->end_col_offset;
4289             UNUSED(_end_col_offset); // Only used by EXTRA macro
4290             _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 , EXTRA );
4291             if (_res == NULL && PyErr_Occurred()) {
4292                 p->error_indicator = 1;
4293                 p->level--;
4294                 return NULL;
4295             }
4296             goto done;
4297         }
4298         p->mark = _mark;
4299         D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4300                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' block"));
4301     }
4302     _res = NULL;
4303   done:
4304     p->level--;
4305     return _res;
4306 }
4307 
4308 // function_def: decorators function_def_raw | function_def_raw
4309 static stmt_ty
function_def_rule(Parser * p)4310 function_def_rule(Parser *p)
4311 {
4312     if (p->level++ == MAXSTACK) {
4313         p->error_indicator = 1;
4314         PyErr_NoMemory();
4315     }
4316     if (p->error_indicator) {
4317         p->level--;
4318         return NULL;
4319     }
4320     stmt_ty _res = NULL;
4321     int _mark = p->mark;
4322     { // decorators function_def_raw
4323         if (p->error_indicator) {
4324             p->level--;
4325             return NULL;
4326         }
4327         D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
4328         asdl_expr_seq* d;
4329         stmt_ty f;
4330         if (
4331             (d = decorators_rule(p))  // decorators
4332             &&
4333             (f = function_def_raw_rule(p))  // function_def_raw
4334         )
4335         {
4336             D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
4337             _res = _PyPegen_function_def_decorators ( p , d , f );
4338             if (_res == NULL && PyErr_Occurred()) {
4339                 p->error_indicator = 1;
4340                 p->level--;
4341                 return NULL;
4342             }
4343             goto done;
4344         }
4345         p->mark = _mark;
4346         D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4347                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators function_def_raw"));
4348     }
4349     { // function_def_raw
4350         if (p->error_indicator) {
4351             p->level--;
4352             return NULL;
4353         }
4354         D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
4355         stmt_ty function_def_raw_var;
4356         if (
4357             (function_def_raw_var = function_def_raw_rule(p))  // function_def_raw
4358         )
4359         {
4360             D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
4361             _res = function_def_raw_var;
4362             goto done;
4363         }
4364         p->mark = _mark;
4365         D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4366                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "function_def_raw"));
4367     }
4368     _res = NULL;
4369   done:
4370     p->level--;
4371     return _res;
4372 }
4373 
4374 // function_def_raw:
4375 //     | invalid_def_raw
4376 //     | 'def' NAME &&'(' params? ')' ['->' expression] &&':' func_type_comment? block
4377 //     | ASYNC 'def' NAME &&'(' params? ')' ['->' expression] &&':' func_type_comment? block
4378 static stmt_ty
function_def_raw_rule(Parser * p)4379 function_def_raw_rule(Parser *p)
4380 {
4381     if (p->level++ == MAXSTACK) {
4382         p->error_indicator = 1;
4383         PyErr_NoMemory();
4384     }
4385     if (p->error_indicator) {
4386         p->level--;
4387         return NULL;
4388     }
4389     stmt_ty _res = NULL;
4390     int _mark = p->mark;
4391     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4392         p->error_indicator = 1;
4393         p->level--;
4394         return NULL;
4395     }
4396     int _start_lineno = p->tokens[_mark]->lineno;
4397     UNUSED(_start_lineno); // Only used by EXTRA macro
4398     int _start_col_offset = p->tokens[_mark]->col_offset;
4399     UNUSED(_start_col_offset); // Only used by EXTRA macro
4400     if (p->call_invalid_rules) { // invalid_def_raw
4401         if (p->error_indicator) {
4402             p->level--;
4403             return NULL;
4404         }
4405         D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
4406         void *invalid_def_raw_var;
4407         if (
4408             (invalid_def_raw_var = invalid_def_raw_rule(p))  // invalid_def_raw
4409         )
4410         {
4411             D(fprintf(stderr, "%*c+ function_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
4412             _res = invalid_def_raw_var;
4413             goto done;
4414         }
4415         p->mark = _mark;
4416         D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4417                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_def_raw"));
4418     }
4419     { // 'def' NAME &&'(' params? ')' ['->' expression] &&':' func_type_comment? block
4420         if (p->error_indicator) {
4421             p->level--;
4422             return NULL;
4423         }
4424         D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def' NAME &&'(' params? ')' ['->' expression] &&':' func_type_comment? block"));
4425         Token * _keyword;
4426         Token * _literal;
4427         Token * _literal_1;
4428         Token * _literal_2;
4429         void *a;
4430         asdl_stmt_seq* b;
4431         expr_ty n;
4432         void *params;
4433         void *tc;
4434         if (
4435             (_keyword = _PyPegen_expect_token(p, 649))  // token='def'
4436             &&
4437             (n = _PyPegen_name_token(p))  // NAME
4438             &&
4439             (_literal = _PyPegen_expect_forced_token(p, 7, "("))  // forced_token='('
4440             &&
4441             (params = params_rule(p), !p->error_indicator)  // params?
4442             &&
4443             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4444             &&
4445             (a = _tmp_34_rule(p), !p->error_indicator)  // ['->' expression]
4446             &&
4447             (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
4448             &&
4449             (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
4450             &&
4451             (b = block_rule(p))  // block
4452         )
4453         {
4454             D(fprintf(stderr, "%*c+ function_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def' NAME &&'(' params? ')' ['->' expression] &&':' func_type_comment? block"));
4455             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4456             if (_token == NULL) {
4457                 p->level--;
4458                 return NULL;
4459             }
4460             int _end_lineno = _token->end_lineno;
4461             UNUSED(_end_lineno); // Only used by EXTRA macro
4462             int _end_col_offset = _token->end_col_offset;
4463             UNUSED(_end_col_offset); // Only used by EXTRA macro
4464             _res = _PyAST_FunctionDef ( n -> v . Name . id , ( params ) ? params : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , NULL , a , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
4465             if (_res == NULL && PyErr_Occurred()) {
4466                 p->error_indicator = 1;
4467                 p->level--;
4468                 return NULL;
4469             }
4470             goto done;
4471         }
4472         p->mark = _mark;
4473         D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4474                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def' NAME &&'(' params? ')' ['->' expression] &&':' func_type_comment? block"));
4475     }
4476     { // ASYNC 'def' NAME &&'(' params? ')' ['->' expression] &&':' func_type_comment? block
4477         if (p->error_indicator) {
4478             p->level--;
4479             return NULL;
4480         }
4481         D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC 'def' NAME &&'(' params? ')' ['->' expression] &&':' func_type_comment? block"));
4482         Token * _keyword;
4483         Token * _literal;
4484         Token * _literal_1;
4485         Token * _literal_2;
4486         void *a;
4487         Token * async_var;
4488         asdl_stmt_seq* b;
4489         expr_ty n;
4490         void *params;
4491         void *tc;
4492         if (
4493             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
4494             &&
4495             (_keyword = _PyPegen_expect_token(p, 649))  // token='def'
4496             &&
4497             (n = _PyPegen_name_token(p))  // NAME
4498             &&
4499             (_literal = _PyPegen_expect_forced_token(p, 7, "("))  // forced_token='('
4500             &&
4501             (params = params_rule(p), !p->error_indicator)  // params?
4502             &&
4503             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4504             &&
4505             (a = _tmp_35_rule(p), !p->error_indicator)  // ['->' expression]
4506             &&
4507             (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
4508             &&
4509             (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
4510             &&
4511             (b = block_rule(p))  // block
4512         )
4513         {
4514             D(fprintf(stderr, "%*c+ function_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC 'def' NAME &&'(' params? ')' ['->' expression] &&':' func_type_comment? block"));
4515             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4516             if (_token == NULL) {
4517                 p->level--;
4518                 return NULL;
4519             }
4520             int _end_lineno = _token->end_lineno;
4521             UNUSED(_end_lineno); // Only used by EXTRA macro
4522             int _end_col_offset = _token->end_col_offset;
4523             UNUSED(_end_col_offset); // Only used by EXTRA macro
4524             _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 ) , EXTRA ) );
4525             if (_res == NULL && PyErr_Occurred()) {
4526                 p->error_indicator = 1;
4527                 p->level--;
4528                 return NULL;
4529             }
4530             goto done;
4531         }
4532         p->mark = _mark;
4533         D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4534                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'def' NAME &&'(' params? ')' ['->' expression] &&':' func_type_comment? block"));
4535     }
4536     _res = NULL;
4537   done:
4538     p->level--;
4539     return _res;
4540 }
4541 
4542 // params: invalid_parameters | parameters
4543 static arguments_ty
params_rule(Parser * p)4544 params_rule(Parser *p)
4545 {
4546     if (p->level++ == MAXSTACK) {
4547         p->error_indicator = 1;
4548         PyErr_NoMemory();
4549     }
4550     if (p->error_indicator) {
4551         p->level--;
4552         return NULL;
4553     }
4554     arguments_ty _res = NULL;
4555     int _mark = p->mark;
4556     if (p->call_invalid_rules) { // invalid_parameters
4557         if (p->error_indicator) {
4558             p->level--;
4559             return NULL;
4560         }
4561         D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
4562         void *invalid_parameters_var;
4563         if (
4564             (invalid_parameters_var = invalid_parameters_rule(p))  // invalid_parameters
4565         )
4566         {
4567             D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
4568             _res = invalid_parameters_var;
4569             goto done;
4570         }
4571         p->mark = _mark;
4572         D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
4573                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_parameters"));
4574     }
4575     { // parameters
4576         if (p->error_indicator) {
4577             p->level--;
4578             return NULL;
4579         }
4580         D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "parameters"));
4581         arguments_ty parameters_var;
4582         if (
4583             (parameters_var = parameters_rule(p))  // parameters
4584         )
4585         {
4586             D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "parameters"));
4587             _res = parameters_var;
4588             goto done;
4589         }
4590         p->mark = _mark;
4591         D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
4592                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "parameters"));
4593     }
4594     _res = NULL;
4595   done:
4596     p->level--;
4597     return _res;
4598 }
4599 
4600 // parameters:
4601 //     | slash_no_default param_no_default* param_with_default* star_etc?
4602 //     | slash_with_default param_with_default* star_etc?
4603 //     | param_no_default+ param_with_default* star_etc?
4604 //     | param_with_default+ star_etc?
4605 //     | star_etc
4606 static arguments_ty
parameters_rule(Parser * p)4607 parameters_rule(Parser *p)
4608 {
4609     if (p->level++ == MAXSTACK) {
4610         p->error_indicator = 1;
4611         PyErr_NoMemory();
4612     }
4613     if (p->error_indicator) {
4614         p->level--;
4615         return NULL;
4616     }
4617     arguments_ty _res = NULL;
4618     int _mark = p->mark;
4619     { // slash_no_default param_no_default* param_with_default* star_etc?
4620         if (p->error_indicator) {
4621             p->level--;
4622             return NULL;
4623         }
4624         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?"));
4625         asdl_arg_seq* a;
4626         asdl_arg_seq* b;
4627         asdl_seq * c;
4628         void *d;
4629         if (
4630             (a = slash_no_default_rule(p))  // slash_no_default
4631             &&
4632             (b = (asdl_arg_seq*)_loop0_36_rule(p))  // param_no_default*
4633             &&
4634             (c = _loop0_37_rule(p))  // param_with_default*
4635             &&
4636             (d = star_etc_rule(p), !p->error_indicator)  // star_etc?
4637         )
4638         {
4639             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?"));
4640             _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , a , NULL , b , c , d ) );
4641             if (_res == NULL && PyErr_Occurred()) {
4642                 p->error_indicator = 1;
4643                 p->level--;
4644                 return NULL;
4645             }
4646             goto done;
4647         }
4648         p->mark = _mark;
4649         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4650                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default param_no_default* param_with_default* star_etc?"));
4651     }
4652     { // slash_with_default param_with_default* star_etc?
4653         if (p->error_indicator) {
4654             p->level--;
4655             return NULL;
4656         }
4657         D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4658         SlashWithDefault* a;
4659         asdl_seq * b;
4660         void *c;
4661         if (
4662             (a = slash_with_default_rule(p))  // slash_with_default
4663             &&
4664             (b = _loop0_38_rule(p))  // param_with_default*
4665             &&
4666             (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
4667         )
4668         {
4669             D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4670             _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , NULL , a , NULL , b , c ) );
4671             if (_res == NULL && PyErr_Occurred()) {
4672                 p->error_indicator = 1;
4673                 p->level--;
4674                 return NULL;
4675             }
4676             goto done;
4677         }
4678         p->mark = _mark;
4679         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4680                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4681     }
4682     { // param_no_default+ param_with_default* star_etc?
4683         if (p->error_indicator) {
4684             p->level--;
4685             return NULL;
4686         }
4687         D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4688         asdl_arg_seq* a;
4689         asdl_seq * b;
4690         void *c;
4691         if (
4692             (a = (asdl_arg_seq*)_loop1_39_rule(p))  // param_no_default+
4693             &&
4694             (b = _loop0_40_rule(p))  // param_with_default*
4695             &&
4696             (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
4697         )
4698         {
4699             D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4700             _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
4701             if (_res == NULL && PyErr_Occurred()) {
4702                 p->error_indicator = 1;
4703                 p->level--;
4704                 return NULL;
4705             }
4706             goto done;
4707         }
4708         p->mark = _mark;
4709         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4710                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4711     }
4712     { // param_with_default+ star_etc?
4713         if (p->error_indicator) {
4714             p->level--;
4715             return NULL;
4716         }
4717         D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
4718         asdl_seq * a;
4719         void *b;
4720         if (
4721             (a = _loop1_41_rule(p))  // param_with_default+
4722             &&
4723             (b = star_etc_rule(p), !p->error_indicator)  // star_etc?
4724         )
4725         {
4726             D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
4727             _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
4728             if (_res == NULL && PyErr_Occurred()) {
4729                 p->error_indicator = 1;
4730                 p->level--;
4731                 return NULL;
4732             }
4733             goto done;
4734         }
4735         p->mark = _mark;
4736         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4737                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+ star_etc?"));
4738     }
4739     { // star_etc
4740         if (p->error_indicator) {
4741             p->level--;
4742             return NULL;
4743         }
4744         D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_etc"));
4745         StarEtc* a;
4746         if (
4747             (a = star_etc_rule(p))  // star_etc
4748         )
4749         {
4750             D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_etc"));
4751             _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
4752             if (_res == NULL && PyErr_Occurred()) {
4753                 p->error_indicator = 1;
4754                 p->level--;
4755                 return NULL;
4756             }
4757             goto done;
4758         }
4759         p->mark = _mark;
4760         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4761                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_etc"));
4762     }
4763     _res = NULL;
4764   done:
4765     p->level--;
4766     return _res;
4767 }
4768 
4769 // slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
4770 static asdl_arg_seq*
slash_no_default_rule(Parser * p)4771 slash_no_default_rule(Parser *p)
4772 {
4773     if (p->level++ == MAXSTACK) {
4774         p->error_indicator = 1;
4775         PyErr_NoMemory();
4776     }
4777     if (p->error_indicator) {
4778         p->level--;
4779         return NULL;
4780     }
4781     asdl_arg_seq* _res = NULL;
4782     int _mark = p->mark;
4783     { // param_no_default+ '/' ','
4784         if (p->error_indicator) {
4785             p->level--;
4786             return NULL;
4787         }
4788         D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
4789         Token * _literal;
4790         Token * _literal_1;
4791         asdl_arg_seq* a;
4792         if (
4793             (a = (asdl_arg_seq*)_loop1_42_rule(p))  // param_no_default+
4794             &&
4795             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
4796             &&
4797             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
4798         )
4799         {
4800             D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
4801             _res = a;
4802             if (_res == NULL && PyErr_Occurred()) {
4803                 p->error_indicator = 1;
4804                 p->level--;
4805                 return NULL;
4806             }
4807             goto done;
4808         }
4809         p->mark = _mark;
4810         D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
4811                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' ','"));
4812     }
4813     { // param_no_default+ '/' &')'
4814         if (p->error_indicator) {
4815             p->level--;
4816             return NULL;
4817         }
4818         D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
4819         Token * _literal;
4820         asdl_arg_seq* a;
4821         if (
4822             (a = (asdl_arg_seq*)_loop1_43_rule(p))  // param_no_default+
4823             &&
4824             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
4825             &&
4826             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
4827         )
4828         {
4829             D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
4830             _res = a;
4831             if (_res == NULL && PyErr_Occurred()) {
4832                 p->error_indicator = 1;
4833                 p->level--;
4834                 return NULL;
4835             }
4836             goto done;
4837         }
4838         p->mark = _mark;
4839         D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
4840                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' &')'"));
4841     }
4842     _res = NULL;
4843   done:
4844     p->level--;
4845     return _res;
4846 }
4847 
4848 // slash_with_default:
4849 //     | param_no_default* param_with_default+ '/' ','
4850 //     | param_no_default* param_with_default+ '/' &')'
4851 static SlashWithDefault*
slash_with_default_rule(Parser * p)4852 slash_with_default_rule(Parser *p)
4853 {
4854     if (p->level++ == MAXSTACK) {
4855         p->error_indicator = 1;
4856         PyErr_NoMemory();
4857     }
4858     if (p->error_indicator) {
4859         p->level--;
4860         return NULL;
4861     }
4862     SlashWithDefault* _res = NULL;
4863     int _mark = p->mark;
4864     { // param_no_default* param_with_default+ '/' ','
4865         if (p->error_indicator) {
4866             p->level--;
4867             return NULL;
4868         }
4869         D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
4870         Token * _literal;
4871         Token * _literal_1;
4872         asdl_seq * a;
4873         asdl_seq * b;
4874         if (
4875             (a = _loop0_44_rule(p))  // param_no_default*
4876             &&
4877             (b = _loop1_45_rule(p))  // param_with_default+
4878             &&
4879             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
4880             &&
4881             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
4882         )
4883         {
4884             D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
4885             _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
4886             if (_res == NULL && PyErr_Occurred()) {
4887                 p->error_indicator = 1;
4888                 p->level--;
4889                 return NULL;
4890             }
4891             goto done;
4892         }
4893         p->mark = _mark;
4894         D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
4895                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
4896     }
4897     { // param_no_default* param_with_default+ '/' &')'
4898         if (p->error_indicator) {
4899             p->level--;
4900             return NULL;
4901         }
4902         D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
4903         Token * _literal;
4904         asdl_seq * a;
4905         asdl_seq * b;
4906         if (
4907             (a = _loop0_46_rule(p))  // param_no_default*
4908             &&
4909             (b = _loop1_47_rule(p))  // param_with_default+
4910             &&
4911             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
4912             &&
4913             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
4914         )
4915         {
4916             D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
4917             _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
4918             if (_res == NULL && PyErr_Occurred()) {
4919                 p->error_indicator = 1;
4920                 p->level--;
4921                 return NULL;
4922             }
4923             goto done;
4924         }
4925         p->mark = _mark;
4926         D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
4927                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
4928     }
4929     _res = NULL;
4930   done:
4931     p->level--;
4932     return _res;
4933 }
4934 
4935 // star_etc:
4936 //     | invalid_star_etc
4937 //     | '*' param_no_default param_maybe_default* kwds?
4938 //     | '*' param_no_default_star_annotation param_maybe_default* kwds?
4939 //     | '*' ',' param_maybe_default+ kwds?
4940 //     | kwds
4941 static StarEtc*
star_etc_rule(Parser * p)4942 star_etc_rule(Parser *p)
4943 {
4944     if (p->level++ == MAXSTACK) {
4945         p->error_indicator = 1;
4946         PyErr_NoMemory();
4947     }
4948     if (p->error_indicator) {
4949         p->level--;
4950         return NULL;
4951     }
4952     StarEtc* _res = NULL;
4953     int _mark = p->mark;
4954     if (p->call_invalid_rules) { // invalid_star_etc
4955         if (p->error_indicator) {
4956             p->level--;
4957             return NULL;
4958         }
4959         D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
4960         void *invalid_star_etc_var;
4961         if (
4962             (invalid_star_etc_var = invalid_star_etc_rule(p))  // invalid_star_etc
4963         )
4964         {
4965             D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
4966             _res = invalid_star_etc_var;
4967             goto done;
4968         }
4969         p->mark = _mark;
4970         D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
4971                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_star_etc"));
4972     }
4973     { // '*' param_no_default param_maybe_default* kwds?
4974         if (p->error_indicator) {
4975             p->level--;
4976             return NULL;
4977         }
4978         D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
4979         Token * _literal;
4980         arg_ty a;
4981         asdl_seq * b;
4982         void *c;
4983         if (
4984             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
4985             &&
4986             (a = param_no_default_rule(p))  // param_no_default
4987             &&
4988             (b = _loop0_48_rule(p))  // param_maybe_default*
4989             &&
4990             (c = kwds_rule(p), !p->error_indicator)  // kwds?
4991         )
4992         {
4993             D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
4994             _res = _PyPegen_star_etc ( p , a , b , c );
4995             if (_res == NULL && PyErr_Occurred()) {
4996                 p->error_indicator = 1;
4997                 p->level--;
4998                 return NULL;
4999             }
5000             goto done;
5001         }
5002         p->mark = _mark;
5003         D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5004                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
5005     }
5006     { // '*' param_no_default_star_annotation param_maybe_default* kwds?
5007         if (p->error_indicator) {
5008             p->level--;
5009             return NULL;
5010         }
5011         D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param_no_default_star_annotation param_maybe_default* kwds?"));
5012         Token * _literal;
5013         arg_ty a;
5014         asdl_seq * b;
5015         void *c;
5016         if (
5017             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5018             &&
5019             (a = param_no_default_star_annotation_rule(p))  // param_no_default_star_annotation
5020             &&
5021             (b = _loop0_49_rule(p))  // param_maybe_default*
5022             &&
5023             (c = kwds_rule(p), !p->error_indicator)  // kwds?
5024         )
5025         {
5026             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?"));
5027             _res = _PyPegen_star_etc ( p , a , b , c );
5028             if (_res == NULL && PyErr_Occurred()) {
5029                 p->error_indicator = 1;
5030                 p->level--;
5031                 return NULL;
5032             }
5033             goto done;
5034         }
5035         p->mark = _mark;
5036         D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5037                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default_star_annotation param_maybe_default* kwds?"));
5038     }
5039     { // '*' ',' param_maybe_default+ kwds?
5040         if (p->error_indicator) {
5041             p->level--;
5042             return NULL;
5043         }
5044         D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5045         Token * _literal;
5046         Token * _literal_1;
5047         asdl_seq * b;
5048         void *c;
5049         if (
5050             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
5051             &&
5052             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
5053             &&
5054             (b = _loop1_50_rule(p))  // param_maybe_default+
5055             &&
5056             (c = kwds_rule(p), !p->error_indicator)  // kwds?
5057         )
5058         {
5059             D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5060             _res = _PyPegen_star_etc ( p , NULL , b , c );
5061             if (_res == NULL && PyErr_Occurred()) {
5062                 p->error_indicator = 1;
5063                 p->level--;
5064                 return NULL;
5065             }
5066             goto done;
5067         }
5068         p->mark = _mark;
5069         D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5070                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
5071     }
5072     { // kwds
5073         if (p->error_indicator) {
5074             p->level--;
5075             return NULL;
5076         }
5077         D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwds"));
5078         arg_ty a;
5079         if (
5080             (a = kwds_rule(p))  // kwds
5081         )
5082         {
5083             D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwds"));
5084             _res = _PyPegen_star_etc ( p , NULL , NULL , a );
5085             if (_res == NULL && PyErr_Occurred()) {
5086                 p->error_indicator = 1;
5087                 p->level--;
5088                 return NULL;
5089             }
5090             goto done;
5091         }
5092         p->mark = _mark;
5093         D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
5094                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwds"));
5095     }
5096     _res = NULL;
5097   done:
5098     p->level--;
5099     return _res;
5100 }
5101 
5102 // kwds: invalid_kwds | '**' param_no_default
5103 static arg_ty
kwds_rule(Parser * p)5104 kwds_rule(Parser *p)
5105 {
5106     if (p->level++ == MAXSTACK) {
5107         p->error_indicator = 1;
5108         PyErr_NoMemory();
5109     }
5110     if (p->error_indicator) {
5111         p->level--;
5112         return NULL;
5113     }
5114     arg_ty _res = NULL;
5115     int _mark = p->mark;
5116     if (p->call_invalid_rules) { // invalid_kwds
5117         if (p->error_indicator) {
5118             p->level--;
5119             return NULL;
5120         }
5121         D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwds"));
5122         void *invalid_kwds_var;
5123         if (
5124             (invalid_kwds_var = invalid_kwds_rule(p))  // invalid_kwds
5125         )
5126         {
5127             D(fprintf(stderr, "%*c+ kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwds"));
5128             _res = invalid_kwds_var;
5129             goto done;
5130         }
5131         p->mark = _mark;
5132         D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
5133                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwds"));
5134     }
5135     { // '**' param_no_default
5136         if (p->error_indicator) {
5137             p->level--;
5138             return NULL;
5139         }
5140         D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
5141         Token * _literal;
5142         arg_ty a;
5143         if (
5144             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
5145             &&
5146             (a = param_no_default_rule(p))  // param_no_default
5147         )
5148         {
5149             D(fprintf(stderr, "%*c+ kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
5150             _res = a;
5151             if (_res == NULL && PyErr_Occurred()) {
5152                 p->error_indicator = 1;
5153                 p->level--;
5154                 return NULL;
5155             }
5156             goto done;
5157         }
5158         p->mark = _mark;
5159         D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
5160                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param_no_default"));
5161     }
5162     _res = NULL;
5163   done:
5164     p->level--;
5165     return _res;
5166 }
5167 
5168 // param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
5169 static arg_ty
param_no_default_rule(Parser * p)5170 param_no_default_rule(Parser *p)
5171 {
5172     if (p->level++ == MAXSTACK) {
5173         p->error_indicator = 1;
5174         PyErr_NoMemory();
5175     }
5176     if (p->error_indicator) {
5177         p->level--;
5178         return NULL;
5179     }
5180     arg_ty _res = NULL;
5181     int _mark = p->mark;
5182     { // param ',' TYPE_COMMENT?
5183         if (p->error_indicator) {
5184             p->level--;
5185             return NULL;
5186         }
5187         D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
5188         Token * _literal;
5189         arg_ty a;
5190         void *tc;
5191         if (
5192             (a = param_rule(p))  // param
5193             &&
5194             (_literal = _PyPegen_expect_token(p, 12))  // token=','
5195             &&
5196             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5197         )
5198         {
5199             D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
5200             _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5201             if (_res == NULL && PyErr_Occurred()) {
5202                 p->error_indicator = 1;
5203                 p->level--;
5204                 return NULL;
5205             }
5206             goto done;
5207         }
5208         p->mark = _mark;
5209         D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5210                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param ',' TYPE_COMMENT?"));
5211     }
5212     { // param TYPE_COMMENT? &')'
5213         if (p->error_indicator) {
5214             p->level--;
5215             return NULL;
5216         }
5217         D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
5218         arg_ty a;
5219         void *tc;
5220         if (
5221             (a = param_rule(p))  // param
5222             &&
5223             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5224             &&
5225             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5226         )
5227         {
5228             D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
5229             _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5230             if (_res == NULL && PyErr_Occurred()) {
5231                 p->error_indicator = 1;
5232                 p->level--;
5233                 return NULL;
5234             }
5235             goto done;
5236         }
5237         p->mark = _mark;
5238         D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
5239                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param TYPE_COMMENT? &')'"));
5240     }
5241     _res = NULL;
5242   done:
5243     p->level--;
5244     return _res;
5245 }
5246 
5247 // param_no_default_star_annotation:
5248 //     | param_star_annotation ',' TYPE_COMMENT?
5249 //     | param_star_annotation TYPE_COMMENT? &')'
5250 static arg_ty
param_no_default_star_annotation_rule(Parser * p)5251 param_no_default_star_annotation_rule(Parser *p)
5252 {
5253     if (p->level++ == MAXSTACK) {
5254         p->error_indicator = 1;
5255         PyErr_NoMemory();
5256     }
5257     if (p->error_indicator) {
5258         p->level--;
5259         return NULL;
5260     }
5261     arg_ty _res = NULL;
5262     int _mark = p->mark;
5263     { // param_star_annotation ',' TYPE_COMMENT?
5264         if (p->error_indicator) {
5265             p->level--;
5266             return NULL;
5267         }
5268         D(fprintf(stderr, "%*c> param_no_default_star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_star_annotation ',' TYPE_COMMENT?"));
5269         Token * _literal;
5270         arg_ty a;
5271         void *tc;
5272         if (
5273             (a = param_star_annotation_rule(p))  // param_star_annotation
5274             &&
5275             (_literal = _PyPegen_expect_token(p, 12))  // token=','
5276             &&
5277             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5278         )
5279         {
5280             D(fprintf(stderr, "%*c+ param_no_default_star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_star_annotation ',' TYPE_COMMENT?"));
5281             _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5282             if (_res == NULL && PyErr_Occurred()) {
5283                 p->error_indicator = 1;
5284                 p->level--;
5285                 return NULL;
5286             }
5287             goto done;
5288         }
5289         p->mark = _mark;
5290         D(fprintf(stderr, "%*c%s param_no_default_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5291                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_star_annotation ',' TYPE_COMMENT?"));
5292     }
5293     { // param_star_annotation TYPE_COMMENT? &')'
5294         if (p->error_indicator) {
5295             p->level--;
5296             return NULL;
5297         }
5298         D(fprintf(stderr, "%*c> param_no_default_star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_star_annotation TYPE_COMMENT? &')'"));
5299         arg_ty a;
5300         void *tc;
5301         if (
5302             (a = param_star_annotation_rule(p))  // param_star_annotation
5303             &&
5304             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5305             &&
5306             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5307         )
5308         {
5309             D(fprintf(stderr, "%*c+ param_no_default_star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_star_annotation TYPE_COMMENT? &')'"));
5310             _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
5311             if (_res == NULL && PyErr_Occurred()) {
5312                 p->error_indicator = 1;
5313                 p->level--;
5314                 return NULL;
5315             }
5316             goto done;
5317         }
5318         p->mark = _mark;
5319         D(fprintf(stderr, "%*c%s param_no_default_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5320                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_star_annotation TYPE_COMMENT? &')'"));
5321     }
5322     _res = NULL;
5323   done:
5324     p->level--;
5325     return _res;
5326 }
5327 
5328 // param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
5329 static NameDefaultPair*
param_with_default_rule(Parser * p)5330 param_with_default_rule(Parser *p)
5331 {
5332     if (p->level++ == MAXSTACK) {
5333         p->error_indicator = 1;
5334         PyErr_NoMemory();
5335     }
5336     if (p->error_indicator) {
5337         p->level--;
5338         return NULL;
5339     }
5340     NameDefaultPair* _res = NULL;
5341     int _mark = p->mark;
5342     { // param default ',' TYPE_COMMENT?
5343         if (p->error_indicator) {
5344             p->level--;
5345             return NULL;
5346         }
5347         D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5348         Token * _literal;
5349         arg_ty a;
5350         expr_ty c;
5351         void *tc;
5352         if (
5353             (a = param_rule(p))  // param
5354             &&
5355             (c = default_rule(p))  // default
5356             &&
5357             (_literal = _PyPegen_expect_token(p, 12))  // token=','
5358             &&
5359             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5360         )
5361         {
5362             D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5363             _res = _PyPegen_name_default_pair ( p , a , c , tc );
5364             if (_res == NULL && PyErr_Occurred()) {
5365                 p->error_indicator = 1;
5366                 p->level--;
5367                 return NULL;
5368             }
5369             goto done;
5370         }
5371         p->mark = _mark;
5372         D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5373                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5374     }
5375     { // param default TYPE_COMMENT? &')'
5376         if (p->error_indicator) {
5377             p->level--;
5378             return NULL;
5379         }
5380         D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5381         arg_ty a;
5382         expr_ty c;
5383         void *tc;
5384         if (
5385             (a = param_rule(p))  // param
5386             &&
5387             (c = default_rule(p))  // default
5388             &&
5389             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5390             &&
5391             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5392         )
5393         {
5394             D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5395             _res = _PyPegen_name_default_pair ( p , a , c , tc );
5396             if (_res == NULL && PyErr_Occurred()) {
5397                 p->error_indicator = 1;
5398                 p->level--;
5399                 return NULL;
5400             }
5401             goto done;
5402         }
5403         p->mark = _mark;
5404         D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5405                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5406     }
5407     _res = NULL;
5408   done:
5409     p->level--;
5410     return _res;
5411 }
5412 
5413 // param_maybe_default:
5414 //     | param default? ',' TYPE_COMMENT?
5415 //     | param default? TYPE_COMMENT? &')'
5416 static NameDefaultPair*
param_maybe_default_rule(Parser * p)5417 param_maybe_default_rule(Parser *p)
5418 {
5419     if (p->level++ == MAXSTACK) {
5420         p->error_indicator = 1;
5421         PyErr_NoMemory();
5422     }
5423     if (p->error_indicator) {
5424         p->level--;
5425         return NULL;
5426     }
5427     NameDefaultPair* _res = NULL;
5428     int _mark = p->mark;
5429     { // param default? ',' TYPE_COMMENT?
5430         if (p->error_indicator) {
5431             p->level--;
5432             return NULL;
5433         }
5434         D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5435         Token * _literal;
5436         arg_ty a;
5437         void *c;
5438         void *tc;
5439         if (
5440             (a = param_rule(p))  // param
5441             &&
5442             (c = default_rule(p), !p->error_indicator)  // default?
5443             &&
5444             (_literal = _PyPegen_expect_token(p, 12))  // token=','
5445             &&
5446             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5447         )
5448         {
5449             D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5450             _res = _PyPegen_name_default_pair ( p , a , c , tc );
5451             if (_res == NULL && PyErr_Occurred()) {
5452                 p->error_indicator = 1;
5453                 p->level--;
5454                 return NULL;
5455             }
5456             goto done;
5457         }
5458         p->mark = _mark;
5459         D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5460                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5461     }
5462     { // param default? TYPE_COMMENT? &')'
5463         if (p->error_indicator) {
5464             p->level--;
5465             return NULL;
5466         }
5467         D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5468         arg_ty a;
5469         void *c;
5470         void *tc;
5471         if (
5472             (a = param_rule(p))  // param
5473             &&
5474             (c = default_rule(p), !p->error_indicator)  // default?
5475             &&
5476             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5477             &&
5478             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5479         )
5480         {
5481             D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5482             _res = _PyPegen_name_default_pair ( p , a , c , tc );
5483             if (_res == NULL && PyErr_Occurred()) {
5484                 p->error_indicator = 1;
5485                 p->level--;
5486                 return NULL;
5487             }
5488             goto done;
5489         }
5490         p->mark = _mark;
5491         D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5492                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5493     }
5494     _res = NULL;
5495   done:
5496     p->level--;
5497     return _res;
5498 }
5499 
5500 // param: NAME annotation?
5501 static arg_ty
param_rule(Parser * p)5502 param_rule(Parser *p)
5503 {
5504     if (p->level++ == MAXSTACK) {
5505         p->error_indicator = 1;
5506         PyErr_NoMemory();
5507     }
5508     if (p->error_indicator) {
5509         p->level--;
5510         return NULL;
5511     }
5512     arg_ty _res = NULL;
5513     int _mark = p->mark;
5514     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5515         p->error_indicator = 1;
5516         p->level--;
5517         return NULL;
5518     }
5519     int _start_lineno = p->tokens[_mark]->lineno;
5520     UNUSED(_start_lineno); // Only used by EXTRA macro
5521     int _start_col_offset = p->tokens[_mark]->col_offset;
5522     UNUSED(_start_col_offset); // Only used by EXTRA macro
5523     { // NAME annotation?
5524         if (p->error_indicator) {
5525             p->level--;
5526             return NULL;
5527         }
5528         D(fprintf(stderr, "%*c> param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
5529         expr_ty a;
5530         void *b;
5531         if (
5532             (a = _PyPegen_name_token(p))  // NAME
5533             &&
5534             (b = annotation_rule(p), !p->error_indicator)  // annotation?
5535         )
5536         {
5537             D(fprintf(stderr, "%*c+ param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
5538             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5539             if (_token == NULL) {
5540                 p->level--;
5541                 return NULL;
5542             }
5543             int _end_lineno = _token->end_lineno;
5544             UNUSED(_end_lineno); // Only used by EXTRA macro
5545             int _end_col_offset = _token->end_col_offset;
5546             UNUSED(_end_col_offset); // Only used by EXTRA macro
5547             _res = _PyAST_arg ( a -> v . Name . id , b , NULL , EXTRA );
5548             if (_res == NULL && PyErr_Occurred()) {
5549                 p->error_indicator = 1;
5550                 p->level--;
5551                 return NULL;
5552             }
5553             goto done;
5554         }
5555         p->mark = _mark;
5556         D(fprintf(stderr, "%*c%s param[%d-%d]: %s failed!\n", p->level, ' ',
5557                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME annotation?"));
5558     }
5559     _res = NULL;
5560   done:
5561     p->level--;
5562     return _res;
5563 }
5564 
5565 // param_star_annotation: NAME star_annotation
5566 static arg_ty
param_star_annotation_rule(Parser * p)5567 param_star_annotation_rule(Parser *p)
5568 {
5569     if (p->level++ == MAXSTACK) {
5570         p->error_indicator = 1;
5571         PyErr_NoMemory();
5572     }
5573     if (p->error_indicator) {
5574         p->level--;
5575         return NULL;
5576     }
5577     arg_ty _res = NULL;
5578     int _mark = p->mark;
5579     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5580         p->error_indicator = 1;
5581         p->level--;
5582         return NULL;
5583     }
5584     int _start_lineno = p->tokens[_mark]->lineno;
5585     UNUSED(_start_lineno); // Only used by EXTRA macro
5586     int _start_col_offset = p->tokens[_mark]->col_offset;
5587     UNUSED(_start_col_offset); // Only used by EXTRA macro
5588     { // NAME star_annotation
5589         if (p->error_indicator) {
5590             p->level--;
5591             return NULL;
5592         }
5593         D(fprintf(stderr, "%*c> param_star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME star_annotation"));
5594         expr_ty a;
5595         expr_ty b;
5596         if (
5597             (a = _PyPegen_name_token(p))  // NAME
5598             &&
5599             (b = star_annotation_rule(p))  // star_annotation
5600         )
5601         {
5602             D(fprintf(stderr, "%*c+ param_star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME star_annotation"));
5603             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5604             if (_token == NULL) {
5605                 p->level--;
5606                 return NULL;
5607             }
5608             int _end_lineno = _token->end_lineno;
5609             UNUSED(_end_lineno); // Only used by EXTRA macro
5610             int _end_col_offset = _token->end_col_offset;
5611             UNUSED(_end_col_offset); // Only used by EXTRA macro
5612             _res = _PyAST_arg ( a -> v . Name . id , b , NULL , EXTRA );
5613             if (_res == NULL && PyErr_Occurred()) {
5614                 p->error_indicator = 1;
5615                 p->level--;
5616                 return NULL;
5617             }
5618             goto done;
5619         }
5620         p->mark = _mark;
5621         D(fprintf(stderr, "%*c%s param_star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5622                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME star_annotation"));
5623     }
5624     _res = NULL;
5625   done:
5626     p->level--;
5627     return _res;
5628 }
5629 
5630 // annotation: ':' expression
5631 static expr_ty
annotation_rule(Parser * p)5632 annotation_rule(Parser *p)
5633 {
5634     if (p->level++ == MAXSTACK) {
5635         p->error_indicator = 1;
5636         PyErr_NoMemory();
5637     }
5638     if (p->error_indicator) {
5639         p->level--;
5640         return NULL;
5641     }
5642     expr_ty _res = NULL;
5643     int _mark = p->mark;
5644     { // ':' expression
5645         if (p->error_indicator) {
5646             p->level--;
5647             return NULL;
5648         }
5649         D(fprintf(stderr, "%*c> annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
5650         Token * _literal;
5651         expr_ty a;
5652         if (
5653             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5654             &&
5655             (a = expression_rule(p))  // expression
5656         )
5657         {
5658             D(fprintf(stderr, "%*c+ annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
5659             _res = a;
5660             if (_res == NULL && PyErr_Occurred()) {
5661                 p->error_indicator = 1;
5662                 p->level--;
5663                 return NULL;
5664             }
5665             goto done;
5666         }
5667         p->mark = _mark;
5668         D(fprintf(stderr, "%*c%s annotation[%d-%d]: %s failed!\n", p->level, ' ',
5669                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
5670     }
5671     _res = NULL;
5672   done:
5673     p->level--;
5674     return _res;
5675 }
5676 
5677 // star_annotation: ':' star_expression
5678 static expr_ty
star_annotation_rule(Parser * p)5679 star_annotation_rule(Parser *p)
5680 {
5681     if (p->level++ == MAXSTACK) {
5682         p->error_indicator = 1;
5683         PyErr_NoMemory();
5684     }
5685     if (p->error_indicator) {
5686         p->level--;
5687         return NULL;
5688     }
5689     expr_ty _res = NULL;
5690     int _mark = p->mark;
5691     { // ':' star_expression
5692         if (p->error_indicator) {
5693             p->level--;
5694             return NULL;
5695         }
5696         D(fprintf(stderr, "%*c> star_annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' star_expression"));
5697         Token * _literal;
5698         expr_ty a;
5699         if (
5700             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5701             &&
5702             (a = star_expression_rule(p))  // star_expression
5703         )
5704         {
5705             D(fprintf(stderr, "%*c+ star_annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' star_expression"));
5706             _res = a;
5707             if (_res == NULL && PyErr_Occurred()) {
5708                 p->error_indicator = 1;
5709                 p->level--;
5710                 return NULL;
5711             }
5712             goto done;
5713         }
5714         p->mark = _mark;
5715         D(fprintf(stderr, "%*c%s star_annotation[%d-%d]: %s failed!\n", p->level, ' ',
5716                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' star_expression"));
5717     }
5718     _res = NULL;
5719   done:
5720     p->level--;
5721     return _res;
5722 }
5723 
5724 // default: '=' expression | invalid_default
5725 static expr_ty
default_rule(Parser * p)5726 default_rule(Parser *p)
5727 {
5728     if (p->level++ == MAXSTACK) {
5729         p->error_indicator = 1;
5730         PyErr_NoMemory();
5731     }
5732     if (p->error_indicator) {
5733         p->level--;
5734         return NULL;
5735     }
5736     expr_ty _res = NULL;
5737     int _mark = p->mark;
5738     { // '=' expression
5739         if (p->error_indicator) {
5740             p->level--;
5741             return NULL;
5742         }
5743         D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
5744         Token * _literal;
5745         expr_ty a;
5746         if (
5747             (_literal = _PyPegen_expect_token(p, 22))  // token='='
5748             &&
5749             (a = expression_rule(p))  // expression
5750         )
5751         {
5752             D(fprintf(stderr, "%*c+ default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
5753             _res = a;
5754             if (_res == NULL && PyErr_Occurred()) {
5755                 p->error_indicator = 1;
5756                 p->level--;
5757                 return NULL;
5758             }
5759             goto done;
5760         }
5761         p->mark = _mark;
5762         D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
5763                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
5764     }
5765     if (p->call_invalid_rules) { // invalid_default
5766         if (p->error_indicator) {
5767             p->level--;
5768             return NULL;
5769         }
5770         D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_default"));
5771         void *invalid_default_var;
5772         if (
5773             (invalid_default_var = invalid_default_rule(p))  // invalid_default
5774         )
5775         {
5776             D(fprintf(stderr, "%*c+ default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_default"));
5777             _res = invalid_default_var;
5778             goto done;
5779         }
5780         p->mark = _mark;
5781         D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
5782                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_default"));
5783     }
5784     _res = NULL;
5785   done:
5786     p->level--;
5787     return _res;
5788 }
5789 
5790 // if_stmt:
5791 //     | invalid_if_stmt
5792 //     | 'if' named_expression ':' block elif_stmt
5793 //     | 'if' named_expression ':' block else_block?
5794 static stmt_ty
if_stmt_rule(Parser * p)5795 if_stmt_rule(Parser *p)
5796 {
5797     if (p->level++ == MAXSTACK) {
5798         p->error_indicator = 1;
5799         PyErr_NoMemory();
5800     }
5801     if (p->error_indicator) {
5802         p->level--;
5803         return NULL;
5804     }
5805     stmt_ty _res = NULL;
5806     int _mark = p->mark;
5807     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5808         p->error_indicator = 1;
5809         p->level--;
5810         return NULL;
5811     }
5812     int _start_lineno = p->tokens[_mark]->lineno;
5813     UNUSED(_start_lineno); // Only used by EXTRA macro
5814     int _start_col_offset = p->tokens[_mark]->col_offset;
5815     UNUSED(_start_col_offset); // Only used by EXTRA macro
5816     if (p->call_invalid_rules) { // invalid_if_stmt
5817         if (p->error_indicator) {
5818             p->level--;
5819             return NULL;
5820         }
5821         D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_if_stmt"));
5822         void *invalid_if_stmt_var;
5823         if (
5824             (invalid_if_stmt_var = invalid_if_stmt_rule(p))  // invalid_if_stmt
5825         )
5826         {
5827             D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_if_stmt"));
5828             _res = invalid_if_stmt_var;
5829             goto done;
5830         }
5831         p->mark = _mark;
5832         D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5833                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_if_stmt"));
5834     }
5835     { // 'if' named_expression ':' block elif_stmt
5836         if (p->error_indicator) {
5837             p->level--;
5838             return NULL;
5839         }
5840         D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
5841         Token * _keyword;
5842         Token * _literal;
5843         expr_ty a;
5844         asdl_stmt_seq* b;
5845         stmt_ty c;
5846         if (
5847             (_keyword = _PyPegen_expect_token(p, 639))  // token='if'
5848             &&
5849             (a = named_expression_rule(p))  // named_expression
5850             &&
5851             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5852             &&
5853             (b = block_rule(p))  // block
5854             &&
5855             (c = elif_stmt_rule(p))  // elif_stmt
5856         )
5857         {
5858             D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
5859             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5860             if (_token == NULL) {
5861                 p->level--;
5862                 return NULL;
5863             }
5864             int _end_lineno = _token->end_lineno;
5865             UNUSED(_end_lineno); // Only used by EXTRA macro
5866             int _end_col_offset = _token->end_col_offset;
5867             UNUSED(_end_col_offset); // Only used by EXTRA macro
5868             _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq* , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
5869             if (_res == NULL && PyErr_Occurred()) {
5870                 p->error_indicator = 1;
5871                 p->level--;
5872                 return NULL;
5873             }
5874             goto done;
5875         }
5876         p->mark = _mark;
5877         D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5878                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
5879     }
5880     { // 'if' named_expression ':' block else_block?
5881         if (p->error_indicator) {
5882             p->level--;
5883             return NULL;
5884         }
5885         D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
5886         Token * _keyword;
5887         Token * _literal;
5888         expr_ty a;
5889         asdl_stmt_seq* b;
5890         void *c;
5891         if (
5892             (_keyword = _PyPegen_expect_token(p, 639))  // token='if'
5893             &&
5894             (a = named_expression_rule(p))  // named_expression
5895             &&
5896             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5897             &&
5898             (b = block_rule(p))  // block
5899             &&
5900             (c = else_block_rule(p), !p->error_indicator)  // else_block?
5901         )
5902         {
5903             D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
5904             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5905             if (_token == NULL) {
5906                 p->level--;
5907                 return NULL;
5908             }
5909             int _end_lineno = _token->end_lineno;
5910             UNUSED(_end_lineno); // Only used by EXTRA macro
5911             int _end_col_offset = _token->end_col_offset;
5912             UNUSED(_end_col_offset); // Only used by EXTRA macro
5913             _res = _PyAST_If ( a , b , c , EXTRA );
5914             if (_res == NULL && PyErr_Occurred()) {
5915                 p->error_indicator = 1;
5916                 p->level--;
5917                 return NULL;
5918             }
5919             goto done;
5920         }
5921         p->mark = _mark;
5922         D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5923                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block else_block?"));
5924     }
5925     _res = NULL;
5926   done:
5927     p->level--;
5928     return _res;
5929 }
5930 
5931 // elif_stmt:
5932 //     | invalid_elif_stmt
5933 //     | 'elif' named_expression ':' block elif_stmt
5934 //     | 'elif' named_expression ':' block else_block?
5935 static stmt_ty
elif_stmt_rule(Parser * p)5936 elif_stmt_rule(Parser *p)
5937 {
5938     if (p->level++ == MAXSTACK) {
5939         p->error_indicator = 1;
5940         PyErr_NoMemory();
5941     }
5942     if (p->error_indicator) {
5943         p->level--;
5944         return NULL;
5945     }
5946     stmt_ty _res = NULL;
5947     int _mark = p->mark;
5948     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5949         p->error_indicator = 1;
5950         p->level--;
5951         return NULL;
5952     }
5953     int _start_lineno = p->tokens[_mark]->lineno;
5954     UNUSED(_start_lineno); // Only used by EXTRA macro
5955     int _start_col_offset = p->tokens[_mark]->col_offset;
5956     UNUSED(_start_col_offset); // Only used by EXTRA macro
5957     if (p->call_invalid_rules) { // invalid_elif_stmt
5958         if (p->error_indicator) {
5959             p->level--;
5960             return NULL;
5961         }
5962         D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_elif_stmt"));
5963         void *invalid_elif_stmt_var;
5964         if (
5965             (invalid_elif_stmt_var = invalid_elif_stmt_rule(p))  // invalid_elif_stmt
5966         )
5967         {
5968             D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_elif_stmt"));
5969             _res = invalid_elif_stmt_var;
5970             goto done;
5971         }
5972         p->mark = _mark;
5973         D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5974                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_elif_stmt"));
5975     }
5976     { // 'elif' named_expression ':' block elif_stmt
5977         if (p->error_indicator) {
5978             p->level--;
5979             return NULL;
5980         }
5981         D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
5982         Token * _keyword;
5983         Token * _literal;
5984         expr_ty a;
5985         asdl_stmt_seq* b;
5986         stmt_ty c;
5987         if (
5988             (_keyword = _PyPegen_expect_token(p, 641))  // token='elif'
5989             &&
5990             (a = named_expression_rule(p))  // named_expression
5991             &&
5992             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5993             &&
5994             (b = block_rule(p))  // block
5995             &&
5996             (c = elif_stmt_rule(p))  // elif_stmt
5997         )
5998         {
5999             D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6000             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6001             if (_token == NULL) {
6002                 p->level--;
6003                 return NULL;
6004             }
6005             int _end_lineno = _token->end_lineno;
6006             UNUSED(_end_lineno); // Only used by EXTRA macro
6007             int _end_col_offset = _token->end_col_offset;
6008             UNUSED(_end_col_offset); // Only used by EXTRA macro
6009             _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq* , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
6010             if (_res == NULL && PyErr_Occurred()) {
6011                 p->error_indicator = 1;
6012                 p->level--;
6013                 return NULL;
6014             }
6015             goto done;
6016         }
6017         p->mark = _mark;
6018         D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6019                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
6020     }
6021     { // 'elif' named_expression ':' block else_block?
6022         if (p->error_indicator) {
6023             p->level--;
6024             return NULL;
6025         }
6026         D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6027         Token * _keyword;
6028         Token * _literal;
6029         expr_ty a;
6030         asdl_stmt_seq* b;
6031         void *c;
6032         if (
6033             (_keyword = _PyPegen_expect_token(p, 641))  // token='elif'
6034             &&
6035             (a = named_expression_rule(p))  // named_expression
6036             &&
6037             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6038             &&
6039             (b = block_rule(p))  // block
6040             &&
6041             (c = else_block_rule(p), !p->error_indicator)  // else_block?
6042         )
6043         {
6044             D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6045             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6046             if (_token == NULL) {
6047                 p->level--;
6048                 return NULL;
6049             }
6050             int _end_lineno = _token->end_lineno;
6051             UNUSED(_end_lineno); // Only used by EXTRA macro
6052             int _end_col_offset = _token->end_col_offset;
6053             UNUSED(_end_col_offset); // Only used by EXTRA macro
6054             _res = _PyAST_If ( a , b , c , EXTRA );
6055             if (_res == NULL && PyErr_Occurred()) {
6056                 p->error_indicator = 1;
6057                 p->level--;
6058                 return NULL;
6059             }
6060             goto done;
6061         }
6062         p->mark = _mark;
6063         D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6064                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block else_block?"));
6065     }
6066     _res = NULL;
6067   done:
6068     p->level--;
6069     return _res;
6070 }
6071 
6072 // else_block: invalid_else_stmt | 'else' &&':' block
6073 static asdl_stmt_seq*
else_block_rule(Parser * p)6074 else_block_rule(Parser *p)
6075 {
6076     if (p->level++ == MAXSTACK) {
6077         p->error_indicator = 1;
6078         PyErr_NoMemory();
6079     }
6080     if (p->error_indicator) {
6081         p->level--;
6082         return NULL;
6083     }
6084     asdl_stmt_seq* _res = NULL;
6085     int _mark = p->mark;
6086     if (p->call_invalid_rules) { // invalid_else_stmt
6087         if (p->error_indicator) {
6088             p->level--;
6089             return NULL;
6090         }
6091         D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
6092         void *invalid_else_stmt_var;
6093         if (
6094             (invalid_else_stmt_var = invalid_else_stmt_rule(p))  // invalid_else_stmt
6095         )
6096         {
6097             D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
6098             _res = invalid_else_stmt_var;
6099             goto done;
6100         }
6101         p->mark = _mark;
6102         D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
6103                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_else_stmt"));
6104     }
6105     { // 'else' &&':' block
6106         if (p->error_indicator) {
6107             p->level--;
6108             return NULL;
6109         }
6110         D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
6111         Token * _keyword;
6112         Token * _literal;
6113         asdl_stmt_seq* b;
6114         if (
6115             (_keyword = _PyPegen_expect_token(p, 642))  // token='else'
6116             &&
6117             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
6118             &&
6119             (b = block_rule(p))  // block
6120         )
6121         {
6122             D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
6123             _res = b;
6124             if (_res == NULL && PyErr_Occurred()) {
6125                 p->error_indicator = 1;
6126                 p->level--;
6127                 return NULL;
6128             }
6129             goto done;
6130         }
6131         p->mark = _mark;
6132         D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
6133                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' &&':' block"));
6134     }
6135     _res = NULL;
6136   done:
6137     p->level--;
6138     return _res;
6139 }
6140 
6141 // while_stmt: invalid_while_stmt | 'while' named_expression ':' block else_block?
6142 static stmt_ty
while_stmt_rule(Parser * p)6143 while_stmt_rule(Parser *p)
6144 {
6145     if (p->level++ == MAXSTACK) {
6146         p->error_indicator = 1;
6147         PyErr_NoMemory();
6148     }
6149     if (p->error_indicator) {
6150         p->level--;
6151         return NULL;
6152     }
6153     stmt_ty _res = NULL;
6154     int _mark = p->mark;
6155     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6156         p->error_indicator = 1;
6157         p->level--;
6158         return NULL;
6159     }
6160     int _start_lineno = p->tokens[_mark]->lineno;
6161     UNUSED(_start_lineno); // Only used by EXTRA macro
6162     int _start_col_offset = p->tokens[_mark]->col_offset;
6163     UNUSED(_start_col_offset); // Only used by EXTRA macro
6164     if (p->call_invalid_rules) { // invalid_while_stmt
6165         if (p->error_indicator) {
6166             p->level--;
6167             return NULL;
6168         }
6169         D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_while_stmt"));
6170         void *invalid_while_stmt_var;
6171         if (
6172             (invalid_while_stmt_var = invalid_while_stmt_rule(p))  // invalid_while_stmt
6173         )
6174         {
6175             D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_while_stmt"));
6176             _res = invalid_while_stmt_var;
6177             goto done;
6178         }
6179         p->mark = _mark;
6180         D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6181                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_while_stmt"));
6182     }
6183     { // 'while' named_expression ':' block else_block?
6184         if (p->error_indicator) {
6185             p->level--;
6186             return NULL;
6187         }
6188         D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
6189         Token * _keyword;
6190         Token * _literal;
6191         expr_ty a;
6192         asdl_stmt_seq* b;
6193         void *c;
6194         if (
6195             (_keyword = _PyPegen_expect_token(p, 644))  // token='while'
6196             &&
6197             (a = named_expression_rule(p))  // named_expression
6198             &&
6199             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6200             &&
6201             (b = block_rule(p))  // block
6202             &&
6203             (c = else_block_rule(p), !p->error_indicator)  // else_block?
6204         )
6205         {
6206             D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
6207             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6208             if (_token == NULL) {
6209                 p->level--;
6210                 return NULL;
6211             }
6212             int _end_lineno = _token->end_lineno;
6213             UNUSED(_end_lineno); // Only used by EXTRA macro
6214             int _end_col_offset = _token->end_col_offset;
6215             UNUSED(_end_col_offset); // Only used by EXTRA macro
6216             _res = _PyAST_While ( a , b , c , EXTRA );
6217             if (_res == NULL && PyErr_Occurred()) {
6218                 p->error_indicator = 1;
6219                 p->level--;
6220                 return NULL;
6221             }
6222             goto done;
6223         }
6224         p->mark = _mark;
6225         D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6226                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' block else_block?"));
6227     }
6228     _res = NULL;
6229   done:
6230     p->level--;
6231     return _res;
6232 }
6233 
6234 // for_stmt:
6235 //     | invalid_for_stmt
6236 //     | 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6237 //     | ASYNC 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6238 //     | invalid_for_target
6239 static stmt_ty
for_stmt_rule(Parser * p)6240 for_stmt_rule(Parser *p)
6241 {
6242     if (p->level++ == MAXSTACK) {
6243         p->error_indicator = 1;
6244         PyErr_NoMemory();
6245     }
6246     if (p->error_indicator) {
6247         p->level--;
6248         return NULL;
6249     }
6250     stmt_ty _res = NULL;
6251     int _mark = p->mark;
6252     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6253         p->error_indicator = 1;
6254         p->level--;
6255         return NULL;
6256     }
6257     int _start_lineno = p->tokens[_mark]->lineno;
6258     UNUSED(_start_lineno); // Only used by EXTRA macro
6259     int _start_col_offset = p->tokens[_mark]->col_offset;
6260     UNUSED(_start_col_offset); // Only used by EXTRA macro
6261     if (p->call_invalid_rules) { // invalid_for_stmt
6262         if (p->error_indicator) {
6263             p->level--;
6264             return NULL;
6265         }
6266         D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
6267         void *invalid_for_stmt_var;
6268         if (
6269             (invalid_for_stmt_var = invalid_for_stmt_rule(p))  // invalid_for_stmt
6270         )
6271         {
6272             D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
6273             _res = invalid_for_stmt_var;
6274             goto done;
6275         }
6276         p->mark = _mark;
6277         D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6278                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_stmt"));
6279     }
6280     { // 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6281         if (p->error_indicator) {
6282             p->level--;
6283             return NULL;
6284         }
6285         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?"));
6286         int _cut_var = 0;
6287         Token * _keyword;
6288         Token * _keyword_1;
6289         Token * _literal;
6290         asdl_stmt_seq* b;
6291         void *el;
6292         expr_ty ex;
6293         expr_ty t;
6294         void *tc;
6295         if (
6296             (_keyword = _PyPegen_expect_token(p, 647))  // token='for'
6297             &&
6298             (t = star_targets_rule(p))  // star_targets
6299             &&
6300             (_keyword_1 = _PyPegen_expect_token(p, 648))  // token='in'
6301             &&
6302             (_cut_var = 1)
6303             &&
6304             (ex = star_expressions_rule(p))  // star_expressions
6305             &&
6306             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6307             &&
6308             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6309             &&
6310             (b = block_rule(p))  // block
6311             &&
6312             (el = else_block_rule(p), !p->error_indicator)  // else_block?
6313         )
6314         {
6315             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?"));
6316             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6317             if (_token == NULL) {
6318                 p->level--;
6319                 return NULL;
6320             }
6321             int _end_lineno = _token->end_lineno;
6322             UNUSED(_end_lineno); // Only used by EXTRA macro
6323             int _end_col_offset = _token->end_col_offset;
6324             UNUSED(_end_col_offset); // Only used by EXTRA macro
6325             _res = _PyAST_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6326             if (_res == NULL && PyErr_Occurred()) {
6327                 p->error_indicator = 1;
6328                 p->level--;
6329                 return NULL;
6330             }
6331             goto done;
6332         }
6333         p->mark = _mark;
6334         D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6335                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?"));
6336         if (_cut_var) {
6337             p->level--;
6338             return NULL;
6339         }
6340     }
6341     { // ASYNC 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?
6342         if (p->error_indicator) {
6343             p->level--;
6344             return NULL;
6345         }
6346         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?"));
6347         int _cut_var = 0;
6348         Token * _keyword;
6349         Token * _keyword_1;
6350         Token * _literal;
6351         Token * async_var;
6352         asdl_stmt_seq* b;
6353         void *el;
6354         expr_ty ex;
6355         expr_ty t;
6356         void *tc;
6357         if (
6358             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
6359             &&
6360             (_keyword = _PyPegen_expect_token(p, 647))  // token='for'
6361             &&
6362             (t = star_targets_rule(p))  // star_targets
6363             &&
6364             (_keyword_1 = _PyPegen_expect_token(p, 648))  // token='in'
6365             &&
6366             (_cut_var = 1)
6367             &&
6368             (ex = star_expressions_rule(p))  // star_expressions
6369             &&
6370             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6371             &&
6372             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6373             &&
6374             (b = block_rule(p))  // block
6375             &&
6376             (el = else_block_rule(p), !p->error_indicator)  // else_block?
6377         )
6378         {
6379             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?"));
6380             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6381             if (_token == NULL) {
6382                 p->level--;
6383                 return NULL;
6384             }
6385             int _end_lineno = _token->end_lineno;
6386             UNUSED(_end_lineno); // Only used by EXTRA macro
6387             int _end_col_offset = _token->end_col_offset;
6388             UNUSED(_end_col_offset); // Only used by EXTRA macro
6389             _res = CHECK_VERSION ( stmt_ty , 5 , "Async for loops are" , _PyAST_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
6390             if (_res == NULL && PyErr_Occurred()) {
6391                 p->error_indicator = 1;
6392                 p->level--;
6393                 return NULL;
6394             }
6395             goto done;
6396         }
6397         p->mark = _mark;
6398         D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6399                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'for' star_targets 'in' ~ star_expressions ':' TYPE_COMMENT? block else_block?"));
6400         if (_cut_var) {
6401             p->level--;
6402             return NULL;
6403         }
6404     }
6405     if (p->call_invalid_rules) { // invalid_for_target
6406         if (p->error_indicator) {
6407             p->level--;
6408             return NULL;
6409         }
6410         D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
6411         void *invalid_for_target_var;
6412         if (
6413             (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
6414         )
6415         {
6416             D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
6417             _res = invalid_for_target_var;
6418             goto done;
6419         }
6420         p->mark = _mark;
6421         D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6422                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
6423     }
6424     _res = NULL;
6425   done:
6426     p->level--;
6427     return _res;
6428 }
6429 
6430 // with_stmt:
6431 //     | invalid_with_stmt_indent
6432 //     | 'with' '(' ','.with_item+ ','? ')' ':' block
6433 //     | 'with' ','.with_item+ ':' TYPE_COMMENT? block
6434 //     | ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
6435 //     | ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
6436 //     | invalid_with_stmt
6437 static stmt_ty
with_stmt_rule(Parser * p)6438 with_stmt_rule(Parser *p)
6439 {
6440     if (p->level++ == MAXSTACK) {
6441         p->error_indicator = 1;
6442         PyErr_NoMemory();
6443     }
6444     if (p->error_indicator) {
6445         p->level--;
6446         return NULL;
6447     }
6448     stmt_ty _res = NULL;
6449     int _mark = p->mark;
6450     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6451         p->error_indicator = 1;
6452         p->level--;
6453         return NULL;
6454     }
6455     int _start_lineno = p->tokens[_mark]->lineno;
6456     UNUSED(_start_lineno); // Only used by EXTRA macro
6457     int _start_col_offset = p->tokens[_mark]->col_offset;
6458     UNUSED(_start_col_offset); // Only used by EXTRA macro
6459     if (p->call_invalid_rules) { // invalid_with_stmt_indent
6460         if (p->error_indicator) {
6461             p->level--;
6462             return NULL;
6463         }
6464         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
6465         void *invalid_with_stmt_indent_var;
6466         if (
6467             (invalid_with_stmt_indent_var = invalid_with_stmt_indent_rule(p))  // invalid_with_stmt_indent
6468         )
6469         {
6470             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
6471             _res = invalid_with_stmt_indent_var;
6472             goto done;
6473         }
6474         p->mark = _mark;
6475         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6476                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt_indent"));
6477     }
6478     { // 'with' '(' ','.with_item+ ','? ')' ':' block
6479         if (p->error_indicator) {
6480             p->level--;
6481             return NULL;
6482         }
6483         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' block"));
6484         Token * _keyword;
6485         Token * _literal;
6486         Token * _literal_1;
6487         Token * _literal_2;
6488         void *_opt_var;
6489         UNUSED(_opt_var); // Silence compiler warnings
6490         asdl_withitem_seq* a;
6491         asdl_stmt_seq* b;
6492         if (
6493             (_keyword = _PyPegen_expect_token(p, 612))  // token='with'
6494             &&
6495             (_literal = _PyPegen_expect_token(p, 7))  // token='('
6496             &&
6497             (a = (asdl_withitem_seq*)_gather_51_rule(p))  // ','.with_item+
6498             &&
6499             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
6500             &&
6501             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
6502             &&
6503             (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
6504             &&
6505             (b = block_rule(p))  // block
6506         )
6507         {
6508             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' block"));
6509             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6510             if (_token == NULL) {
6511                 p->level--;
6512                 return NULL;
6513             }
6514             int _end_lineno = _token->end_lineno;
6515             UNUSED(_end_lineno); // Only used by EXTRA macro
6516             int _end_col_offset = _token->end_col_offset;
6517             UNUSED(_end_col_offset); // Only used by EXTRA macro
6518             _res = CHECK_VERSION ( stmt_ty , 9 , "Parenthesized context managers are" , _PyAST_With ( a , b , NULL , EXTRA ) );
6519             if (_res == NULL && PyErr_Occurred()) {
6520                 p->error_indicator = 1;
6521                 p->level--;
6522                 return NULL;
6523             }
6524             goto done;
6525         }
6526         p->mark = _mark;
6527         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6528                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' block"));
6529     }
6530     { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
6531         if (p->error_indicator) {
6532             p->level--;
6533             return NULL;
6534         }
6535         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6536         Token * _keyword;
6537         Token * _literal;
6538         asdl_withitem_seq* a;
6539         asdl_stmt_seq* b;
6540         void *tc;
6541         if (
6542             (_keyword = _PyPegen_expect_token(p, 612))  // token='with'
6543             &&
6544             (a = (asdl_withitem_seq*)_gather_53_rule(p))  // ','.with_item+
6545             &&
6546             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6547             &&
6548             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6549             &&
6550             (b = block_rule(p))  // block
6551         )
6552         {
6553             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6554             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6555             if (_token == NULL) {
6556                 p->level--;
6557                 return NULL;
6558             }
6559             int _end_lineno = _token->end_lineno;
6560             UNUSED(_end_lineno); // Only used by EXTRA macro
6561             int _end_col_offset = _token->end_col_offset;
6562             UNUSED(_end_col_offset); // Only used by EXTRA macro
6563             _res = _PyAST_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6564             if (_res == NULL && PyErr_Occurred()) {
6565                 p->error_indicator = 1;
6566                 p->level--;
6567                 return NULL;
6568             }
6569             goto done;
6570         }
6571         p->mark = _mark;
6572         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6573                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6574     }
6575     { // ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
6576         if (p->error_indicator) {
6577             p->level--;
6578             return NULL;
6579         }
6580         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block"));
6581         Token * _keyword;
6582         Token * _literal;
6583         Token * _literal_1;
6584         Token * _literal_2;
6585         void *_opt_var;
6586         UNUSED(_opt_var); // Silence compiler warnings
6587         asdl_withitem_seq* a;
6588         Token * async_var;
6589         asdl_stmt_seq* b;
6590         if (
6591             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
6592             &&
6593             (_keyword = _PyPegen_expect_token(p, 612))  // token='with'
6594             &&
6595             (_literal = _PyPegen_expect_token(p, 7))  // token='('
6596             &&
6597             (a = (asdl_withitem_seq*)_gather_55_rule(p))  // ','.with_item+
6598             &&
6599             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
6600             &&
6601             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
6602             &&
6603             (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
6604             &&
6605             (b = block_rule(p))  // block
6606         )
6607         {
6608             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block"));
6609             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6610             if (_token == NULL) {
6611                 p->level--;
6612                 return NULL;
6613             }
6614             int _end_lineno = _token->end_lineno;
6615             UNUSED(_end_lineno); // Only used by EXTRA macro
6616             int _end_col_offset = _token->end_col_offset;
6617             UNUSED(_end_col_offset); // Only used by EXTRA macro
6618             _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NULL , EXTRA ) );
6619             if (_res == NULL && PyErr_Occurred()) {
6620                 p->error_indicator = 1;
6621                 p->level--;
6622                 return NULL;
6623             }
6624             goto done;
6625         }
6626         p->mark = _mark;
6627         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6628                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block"));
6629     }
6630     { // ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
6631         if (p->error_indicator) {
6632             p->level--;
6633             return NULL;
6634         }
6635         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6636         Token * _keyword;
6637         Token * _literal;
6638         asdl_withitem_seq* a;
6639         Token * async_var;
6640         asdl_stmt_seq* b;
6641         void *tc;
6642         if (
6643             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
6644             &&
6645             (_keyword = _PyPegen_expect_token(p, 612))  // token='with'
6646             &&
6647             (a = (asdl_withitem_seq*)_gather_57_rule(p))  // ','.with_item+
6648             &&
6649             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6650             &&
6651             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6652             &&
6653             (b = block_rule(p))  // block
6654         )
6655         {
6656             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6657             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6658             if (_token == NULL) {
6659                 p->level--;
6660                 return NULL;
6661             }
6662             int _end_lineno = _token->end_lineno;
6663             UNUSED(_end_lineno); // Only used by EXTRA macro
6664             int _end_col_offset = _token->end_col_offset;
6665             UNUSED(_end_col_offset); // Only used by EXTRA macro
6666             _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
6667             if (_res == NULL && PyErr_Occurred()) {
6668                 p->error_indicator = 1;
6669                 p->level--;
6670                 return NULL;
6671             }
6672             goto done;
6673         }
6674         p->mark = _mark;
6675         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6676                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6677     }
6678     if (p->call_invalid_rules) { // invalid_with_stmt
6679         if (p->error_indicator) {
6680             p->level--;
6681             return NULL;
6682         }
6683         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt"));
6684         void *invalid_with_stmt_var;
6685         if (
6686             (invalid_with_stmt_var = invalid_with_stmt_rule(p))  // invalid_with_stmt
6687         )
6688         {
6689             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt"));
6690             _res = invalid_with_stmt_var;
6691             goto done;
6692         }
6693         p->mark = _mark;
6694         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6695                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt"));
6696     }
6697     _res = NULL;
6698   done:
6699     p->level--;
6700     return _res;
6701 }
6702 
6703 // with_item:
6704 //     | expression 'as' star_target &(',' | ')' | ':')
6705 //     | invalid_with_item
6706 //     | expression
6707 static withitem_ty
with_item_rule(Parser * p)6708 with_item_rule(Parser *p)
6709 {
6710     if (p->level++ == MAXSTACK) {
6711         p->error_indicator = 1;
6712         PyErr_NoMemory();
6713     }
6714     if (p->error_indicator) {
6715         p->level--;
6716         return NULL;
6717     }
6718     withitem_ty _res = NULL;
6719     int _mark = p->mark;
6720     { // expression 'as' star_target &(',' | ')' | ':')
6721         if (p->error_indicator) {
6722             p->level--;
6723             return NULL;
6724         }
6725         D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6726         Token * _keyword;
6727         expr_ty e;
6728         expr_ty t;
6729         if (
6730             (e = expression_rule(p))  // expression
6731             &&
6732             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
6733             &&
6734             (t = star_target_rule(p))  // star_target
6735             &&
6736             _PyPegen_lookahead(1, _tmp_59_rule, p)
6737         )
6738         {
6739             D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6740             _res = _PyAST_withitem ( e , t , p -> arena );
6741             if (_res == NULL && PyErr_Occurred()) {
6742                 p->error_indicator = 1;
6743                 p->level--;
6744                 return NULL;
6745             }
6746             goto done;
6747         }
6748         p->mark = _mark;
6749         D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6750                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6751     }
6752     if (p->call_invalid_rules) { // invalid_with_item
6753         if (p->error_indicator) {
6754             p->level--;
6755             return NULL;
6756         }
6757         D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
6758         void *invalid_with_item_var;
6759         if (
6760             (invalid_with_item_var = invalid_with_item_rule(p))  // invalid_with_item
6761         )
6762         {
6763             D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
6764             _res = invalid_with_item_var;
6765             goto done;
6766         }
6767         p->mark = _mark;
6768         D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6769                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_item"));
6770     }
6771     { // expression
6772         if (p->error_indicator) {
6773             p->level--;
6774             return NULL;
6775         }
6776         D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
6777         expr_ty e;
6778         if (
6779             (e = expression_rule(p))  // expression
6780         )
6781         {
6782             D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
6783             _res = _PyAST_withitem ( e , NULL , p -> arena );
6784             if (_res == NULL && PyErr_Occurred()) {
6785                 p->error_indicator = 1;
6786                 p->level--;
6787                 return NULL;
6788             }
6789             goto done;
6790         }
6791         p->mark = _mark;
6792         D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6793                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
6794     }
6795     _res = NULL;
6796   done:
6797     p->level--;
6798     return _res;
6799 }
6800 
6801 // try_stmt:
6802 //     | invalid_try_stmt
6803 //     | 'try' &&':' block finally_block
6804 //     | 'try' &&':' block except_block+ else_block? finally_block?
6805 //     | 'try' &&':' block except_star_block+ else_block? finally_block?
6806 static stmt_ty
try_stmt_rule(Parser * p)6807 try_stmt_rule(Parser *p)
6808 {
6809     if (p->level++ == MAXSTACK) {
6810         p->error_indicator = 1;
6811         PyErr_NoMemory();
6812     }
6813     if (p->error_indicator) {
6814         p->level--;
6815         return NULL;
6816     }
6817     stmt_ty _res = NULL;
6818     int _mark = p->mark;
6819     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6820         p->error_indicator = 1;
6821         p->level--;
6822         return NULL;
6823     }
6824     int _start_lineno = p->tokens[_mark]->lineno;
6825     UNUSED(_start_lineno); // Only used by EXTRA macro
6826     int _start_col_offset = p->tokens[_mark]->col_offset;
6827     UNUSED(_start_col_offset); // Only used by EXTRA macro
6828     if (p->call_invalid_rules) { // invalid_try_stmt
6829         if (p->error_indicator) {
6830             p->level--;
6831             return NULL;
6832         }
6833         D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
6834         void *invalid_try_stmt_var;
6835         if (
6836             (invalid_try_stmt_var = invalid_try_stmt_rule(p))  // invalid_try_stmt
6837         )
6838         {
6839             D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
6840             _res = invalid_try_stmt_var;
6841             goto done;
6842         }
6843         p->mark = _mark;
6844         D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6845                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_try_stmt"));
6846     }
6847     { // 'try' &&':' block finally_block
6848         if (p->error_indicator) {
6849             p->level--;
6850             return NULL;
6851         }
6852         D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
6853         Token * _keyword;
6854         Token * _literal;
6855         asdl_stmt_seq* b;
6856         asdl_stmt_seq* f;
6857         if (
6858             (_keyword = _PyPegen_expect_token(p, 621))  // token='try'
6859             &&
6860             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
6861             &&
6862             (b = block_rule(p))  // block
6863             &&
6864             (f = finally_block_rule(p))  // finally_block
6865         )
6866         {
6867             D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
6868             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6869             if (_token == NULL) {
6870                 p->level--;
6871                 return NULL;
6872             }
6873             int _end_lineno = _token->end_lineno;
6874             UNUSED(_end_lineno); // Only used by EXTRA macro
6875             int _end_col_offset = _token->end_col_offset;
6876             UNUSED(_end_col_offset); // Only used by EXTRA macro
6877             _res = _PyAST_Try ( b , NULL , NULL , f , EXTRA );
6878             if (_res == NULL && PyErr_Occurred()) {
6879                 p->error_indicator = 1;
6880                 p->level--;
6881                 return NULL;
6882             }
6883             goto done;
6884         }
6885         p->mark = _mark;
6886         D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6887                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block finally_block"));
6888     }
6889     { // 'try' &&':' block except_block+ else_block? finally_block?
6890         if (p->error_indicator) {
6891             p->level--;
6892             return NULL;
6893         }
6894         D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
6895         Token * _keyword;
6896         Token * _literal;
6897         asdl_stmt_seq* b;
6898         void *el;
6899         asdl_excepthandler_seq* ex;
6900         void *f;
6901         if (
6902             (_keyword = _PyPegen_expect_token(p, 621))  // token='try'
6903             &&
6904             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
6905             &&
6906             (b = block_rule(p))  // block
6907             &&
6908             (ex = (asdl_excepthandler_seq*)_loop1_60_rule(p))  // except_block+
6909             &&
6910             (el = else_block_rule(p), !p->error_indicator)  // else_block?
6911             &&
6912             (f = finally_block_rule(p), !p->error_indicator)  // finally_block?
6913         )
6914         {
6915             D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
6916             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6917             if (_token == NULL) {
6918                 p->level--;
6919                 return NULL;
6920             }
6921             int _end_lineno = _token->end_lineno;
6922             UNUSED(_end_lineno); // Only used by EXTRA macro
6923             int _end_col_offset = _token->end_col_offset;
6924             UNUSED(_end_col_offset); // Only used by EXTRA macro
6925             _res = _PyAST_Try ( b , ex , el , f , EXTRA );
6926             if (_res == NULL && PyErr_Occurred()) {
6927                 p->error_indicator = 1;
6928                 p->level--;
6929                 return NULL;
6930             }
6931             goto done;
6932         }
6933         p->mark = _mark;
6934         D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6935                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
6936     }
6937     { // 'try' &&':' block except_star_block+ else_block? finally_block?
6938         if (p->error_indicator) {
6939             p->level--;
6940             return NULL;
6941         }
6942         D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_star_block+ else_block? finally_block?"));
6943         Token * _keyword;
6944         Token * _literal;
6945         asdl_stmt_seq* b;
6946         void *el;
6947         asdl_excepthandler_seq* ex;
6948         void *f;
6949         if (
6950             (_keyword = _PyPegen_expect_token(p, 621))  // token='try'
6951             &&
6952             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
6953             &&
6954             (b = block_rule(p))  // block
6955             &&
6956             (ex = (asdl_excepthandler_seq*)_loop1_61_rule(p))  // except_star_block+
6957             &&
6958             (el = else_block_rule(p), !p->error_indicator)  // else_block?
6959             &&
6960             (f = finally_block_rule(p), !p->error_indicator)  // finally_block?
6961         )
6962         {
6963             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?"));
6964             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6965             if (_token == NULL) {
6966                 p->level--;
6967                 return NULL;
6968             }
6969             int _end_lineno = _token->end_lineno;
6970             UNUSED(_end_lineno); // Only used by EXTRA macro
6971             int _end_col_offset = _token->end_col_offset;
6972             UNUSED(_end_col_offset); // Only used by EXTRA macro
6973             _res = CHECK_VERSION ( stmt_ty , 11 , "Exception groups are" , _PyAST_TryStar ( b , ex , el , f , EXTRA ) );
6974             if (_res == NULL && PyErr_Occurred()) {
6975                 p->error_indicator = 1;
6976                 p->level--;
6977                 return NULL;
6978             }
6979             goto done;
6980         }
6981         p->mark = _mark;
6982         D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6983                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_star_block+ else_block? finally_block?"));
6984     }
6985     _res = NULL;
6986   done:
6987     p->level--;
6988     return _res;
6989 }
6990 
6991 // except_block:
6992 //     | invalid_except_stmt_indent
6993 //     | 'except' expression ['as' NAME] ':' block
6994 //     | 'except' ':' block
6995 //     | invalid_except_stmt
6996 static excepthandler_ty
except_block_rule(Parser * p)6997 except_block_rule(Parser *p)
6998 {
6999     if (p->level++ == MAXSTACK) {
7000         p->error_indicator = 1;
7001         PyErr_NoMemory();
7002     }
7003     if (p->error_indicator) {
7004         p->level--;
7005         return NULL;
7006     }
7007     excepthandler_ty _res = NULL;
7008     int _mark = p->mark;
7009     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7010         p->error_indicator = 1;
7011         p->level--;
7012         return NULL;
7013     }
7014     int _start_lineno = p->tokens[_mark]->lineno;
7015     UNUSED(_start_lineno); // Only used by EXTRA macro
7016     int _start_col_offset = p->tokens[_mark]->col_offset;
7017     UNUSED(_start_col_offset); // Only used by EXTRA macro
7018     if (p->call_invalid_rules) { // invalid_except_stmt_indent
7019         if (p->error_indicator) {
7020             p->level--;
7021             return NULL;
7022         }
7023         D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
7024         void *invalid_except_stmt_indent_var;
7025         if (
7026             (invalid_except_stmt_indent_var = invalid_except_stmt_indent_rule(p))  // invalid_except_stmt_indent
7027         )
7028         {
7029             D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
7030             _res = invalid_except_stmt_indent_var;
7031             goto done;
7032         }
7033         p->mark = _mark;
7034         D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7035                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt_indent"));
7036     }
7037     { // 'except' expression ['as' NAME] ':' block
7038         if (p->error_indicator) {
7039             p->level--;
7040             return NULL;
7041         }
7042         D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' block"));
7043         Token * _keyword;
7044         Token * _literal;
7045         asdl_stmt_seq* b;
7046         expr_ty e;
7047         void *t;
7048         if (
7049             (_keyword = _PyPegen_expect_token(p, 634))  // token='except'
7050             &&
7051             (e = expression_rule(p))  // expression
7052             &&
7053             (t = _tmp_62_rule(p), !p->error_indicator)  // ['as' NAME]
7054             &&
7055             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7056             &&
7057             (b = block_rule(p))  // block
7058         )
7059         {
7060             D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' block"));
7061             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7062             if (_token == NULL) {
7063                 p->level--;
7064                 return NULL;
7065             }
7066             int _end_lineno = _token->end_lineno;
7067             UNUSED(_end_lineno); // Only used by EXTRA macro
7068             int _end_col_offset = _token->end_col_offset;
7069             UNUSED(_end_col_offset); // Only used by EXTRA macro
7070             _res = _PyAST_ExceptHandler ( e , ( t ) ? ( ( expr_ty ) t ) -> v . Name . id : NULL , b , EXTRA );
7071             if (_res == NULL && PyErr_Occurred()) {
7072                 p->error_indicator = 1;
7073                 p->level--;
7074                 return NULL;
7075             }
7076             goto done;
7077         }
7078         p->mark = _mark;
7079         D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7080                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] ':' block"));
7081     }
7082     { // 'except' ':' block
7083         if (p->error_indicator) {
7084             p->level--;
7085             return NULL;
7086         }
7087         D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
7088         Token * _keyword;
7089         Token * _literal;
7090         asdl_stmt_seq* b;
7091         if (
7092             (_keyword = _PyPegen_expect_token(p, 634))  // token='except'
7093             &&
7094             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7095             &&
7096             (b = block_rule(p))  // block
7097         )
7098         {
7099             D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
7100             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7101             if (_token == NULL) {
7102                 p->level--;
7103                 return NULL;
7104             }
7105             int _end_lineno = _token->end_lineno;
7106             UNUSED(_end_lineno); // Only used by EXTRA macro
7107             int _end_col_offset = _token->end_col_offset;
7108             UNUSED(_end_col_offset); // Only used by EXTRA macro
7109             _res = _PyAST_ExceptHandler ( NULL , NULL , b , EXTRA );
7110             if (_res == NULL && PyErr_Occurred()) {
7111                 p->error_indicator = 1;
7112                 p->level--;
7113                 return NULL;
7114             }
7115             goto done;
7116         }
7117         p->mark = _mark;
7118         D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7119                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' block"));
7120     }
7121     if (p->call_invalid_rules) { // invalid_except_stmt
7122         if (p->error_indicator) {
7123             p->level--;
7124             return NULL;
7125         }
7126         D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
7127         void *invalid_except_stmt_var;
7128         if (
7129             (invalid_except_stmt_var = invalid_except_stmt_rule(p))  // invalid_except_stmt
7130         )
7131         {
7132             D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
7133             _res = invalid_except_stmt_var;
7134             goto done;
7135         }
7136         p->mark = _mark;
7137         D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
7138                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt"));
7139     }
7140     _res = NULL;
7141   done:
7142     p->level--;
7143     return _res;
7144 }
7145 
7146 // except_star_block:
7147 //     | invalid_except_star_stmt_indent
7148 //     | 'except' '*' expression ['as' NAME] ':' block
7149 //     | invalid_except_stmt
7150 static excepthandler_ty
except_star_block_rule(Parser * p)7151 except_star_block_rule(Parser *p)
7152 {
7153     if (p->level++ == MAXSTACK) {
7154         p->error_indicator = 1;
7155         PyErr_NoMemory();
7156     }
7157     if (p->error_indicator) {
7158         p->level--;
7159         return NULL;
7160     }
7161     excepthandler_ty _res = NULL;
7162     int _mark = p->mark;
7163     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7164         p->error_indicator = 1;
7165         p->level--;
7166         return NULL;
7167     }
7168     int _start_lineno = p->tokens[_mark]->lineno;
7169     UNUSED(_start_lineno); // Only used by EXTRA macro
7170     int _start_col_offset = p->tokens[_mark]->col_offset;
7171     UNUSED(_start_col_offset); // Only used by EXTRA macro
7172     if (p->call_invalid_rules) { // invalid_except_star_stmt_indent
7173         if (p->error_indicator) {
7174             p->level--;
7175             return NULL;
7176         }
7177         D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt_indent"));
7178         void *invalid_except_star_stmt_indent_var;
7179         if (
7180             (invalid_except_star_stmt_indent_var = invalid_except_star_stmt_indent_rule(p))  // invalid_except_star_stmt_indent
7181         )
7182         {
7183             D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_star_stmt_indent"));
7184             _res = invalid_except_star_stmt_indent_var;
7185             goto done;
7186         }
7187         p->mark = _mark;
7188         D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7189                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_star_stmt_indent"));
7190     }
7191     { // 'except' '*' expression ['as' NAME] ':' block
7192         if (p->error_indicator) {
7193             p->level--;
7194             return NULL;
7195         }
7196         D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ['as' NAME] ':' block"));
7197         Token * _keyword;
7198         Token * _literal;
7199         Token * _literal_1;
7200         asdl_stmt_seq* b;
7201         expr_ty e;
7202         void *t;
7203         if (
7204             (_keyword = _PyPegen_expect_token(p, 634))  // token='except'
7205             &&
7206             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7207             &&
7208             (e = expression_rule(p))  // expression
7209             &&
7210             (t = _tmp_63_rule(p), !p->error_indicator)  // ['as' NAME]
7211             &&
7212             (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
7213             &&
7214             (b = block_rule(p))  // block
7215         )
7216         {
7217             D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ['as' NAME] ':' block"));
7218             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7219             if (_token == NULL) {
7220                 p->level--;
7221                 return NULL;
7222             }
7223             int _end_lineno = _token->end_lineno;
7224             UNUSED(_end_lineno); // Only used by EXTRA macro
7225             int _end_col_offset = _token->end_col_offset;
7226             UNUSED(_end_col_offset); // Only used by EXTRA macro
7227             _res = _PyAST_ExceptHandler ( e , ( t ) ? ( ( expr_ty ) t ) -> v . Name . id : NULL , b , EXTRA );
7228             if (_res == NULL && PyErr_Occurred()) {
7229                 p->error_indicator = 1;
7230                 p->level--;
7231                 return NULL;
7232             }
7233             goto done;
7234         }
7235         p->mark = _mark;
7236         D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7237                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ['as' NAME] ':' block"));
7238     }
7239     if (p->call_invalid_rules) { // invalid_except_stmt
7240         if (p->error_indicator) {
7241             p->level--;
7242             return NULL;
7243         }
7244         D(fprintf(stderr, "%*c> except_star_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
7245         void *invalid_except_stmt_var;
7246         if (
7247             (invalid_except_stmt_var = invalid_except_stmt_rule(p))  // invalid_except_stmt
7248         )
7249         {
7250             D(fprintf(stderr, "%*c+ except_star_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
7251             _res = invalid_except_stmt_var;
7252             goto done;
7253         }
7254         p->mark = _mark;
7255         D(fprintf(stderr, "%*c%s except_star_block[%d-%d]: %s failed!\n", p->level, ' ',
7256                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt"));
7257     }
7258     _res = NULL;
7259   done:
7260     p->level--;
7261     return _res;
7262 }
7263 
7264 // finally_block: invalid_finally_stmt | 'finally' &&':' block
7265 static asdl_stmt_seq*
finally_block_rule(Parser * p)7266 finally_block_rule(Parser *p)
7267 {
7268     if (p->level++ == MAXSTACK) {
7269         p->error_indicator = 1;
7270         PyErr_NoMemory();
7271     }
7272     if (p->error_indicator) {
7273         p->level--;
7274         return NULL;
7275     }
7276     asdl_stmt_seq* _res = NULL;
7277     int _mark = p->mark;
7278     if (p->call_invalid_rules) { // invalid_finally_stmt
7279         if (p->error_indicator) {
7280             p->level--;
7281             return NULL;
7282         }
7283         D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
7284         void *invalid_finally_stmt_var;
7285         if (
7286             (invalid_finally_stmt_var = invalid_finally_stmt_rule(p))  // invalid_finally_stmt
7287         )
7288         {
7289             D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
7290             _res = invalid_finally_stmt_var;
7291             goto done;
7292         }
7293         p->mark = _mark;
7294         D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
7295                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_finally_stmt"));
7296     }
7297     { // 'finally' &&':' block
7298         if (p->error_indicator) {
7299             p->level--;
7300             return NULL;
7301         }
7302         D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
7303         Token * _keyword;
7304         Token * _literal;
7305         asdl_stmt_seq* a;
7306         if (
7307             (_keyword = _PyPegen_expect_token(p, 630))  // token='finally'
7308             &&
7309             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
7310             &&
7311             (a = block_rule(p))  // block
7312         )
7313         {
7314             D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
7315             _res = a;
7316             if (_res == NULL && PyErr_Occurred()) {
7317                 p->error_indicator = 1;
7318                 p->level--;
7319                 return NULL;
7320             }
7321             goto done;
7322         }
7323         p->mark = _mark;
7324         D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
7325                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' &&':' block"));
7326     }
7327     _res = NULL;
7328   done:
7329     p->level--;
7330     return _res;
7331 }
7332 
7333 // match_stmt:
7334 //     | "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
7335 //     | invalid_match_stmt
7336 static stmt_ty
match_stmt_rule(Parser * p)7337 match_stmt_rule(Parser *p)
7338 {
7339     if (p->level++ == MAXSTACK) {
7340         p->error_indicator = 1;
7341         PyErr_NoMemory();
7342     }
7343     if (p->error_indicator) {
7344         p->level--;
7345         return NULL;
7346     }
7347     stmt_ty _res = NULL;
7348     int _mark = p->mark;
7349     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7350         p->error_indicator = 1;
7351         p->level--;
7352         return NULL;
7353     }
7354     int _start_lineno = p->tokens[_mark]->lineno;
7355     UNUSED(_start_lineno); // Only used by EXTRA macro
7356     int _start_col_offset = p->tokens[_mark]->col_offset;
7357     UNUSED(_start_col_offset); // Only used by EXTRA macro
7358     { // "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
7359         if (p->error_indicator) {
7360             p->level--;
7361             return NULL;
7362         }
7363         D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7364         expr_ty _keyword;
7365         Token * _literal;
7366         asdl_match_case_seq* cases;
7367         Token * dedent_var;
7368         Token * indent_var;
7369         Token * newline_var;
7370         expr_ty subject;
7371         if (
7372             (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
7373             &&
7374             (subject = subject_expr_rule(p))  // subject_expr
7375             &&
7376             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7377             &&
7378             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
7379             &&
7380             (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
7381             &&
7382             (cases = (asdl_match_case_seq*)_loop1_64_rule(p))  // case_block+
7383             &&
7384             (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
7385         )
7386         {
7387             D(fprintf(stderr, "%*c+ match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7388             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7389             if (_token == NULL) {
7390                 p->level--;
7391                 return NULL;
7392             }
7393             int _end_lineno = _token->end_lineno;
7394             UNUSED(_end_lineno); // Only used by EXTRA macro
7395             int _end_col_offset = _token->end_col_offset;
7396             UNUSED(_end_col_offset); // Only used by EXTRA macro
7397             _res = CHECK_VERSION ( stmt_ty , 10 , "Pattern matching is" , _PyAST_Match ( subject , cases , EXTRA ) );
7398             if (_res == NULL && PyErr_Occurred()) {
7399                 p->error_indicator = 1;
7400                 p->level--;
7401                 return NULL;
7402             }
7403             goto done;
7404         }
7405         p->mark = _mark;
7406         D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7407                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
7408     }
7409     if (p->call_invalid_rules) { // invalid_match_stmt
7410         if (p->error_indicator) {
7411             p->level--;
7412             return NULL;
7413         }
7414         D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_match_stmt"));
7415         void *invalid_match_stmt_var;
7416         if (
7417             (invalid_match_stmt_var = invalid_match_stmt_rule(p))  // invalid_match_stmt
7418         )
7419         {
7420             D(fprintf(stderr, "%*c+ match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_match_stmt"));
7421             _res = invalid_match_stmt_var;
7422             goto done;
7423         }
7424         p->mark = _mark;
7425         D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
7426                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_match_stmt"));
7427     }
7428     _res = NULL;
7429   done:
7430     p->level--;
7431     return _res;
7432 }
7433 
7434 // subject_expr: star_named_expression ',' star_named_expressions? | named_expression
7435 static expr_ty
subject_expr_rule(Parser * p)7436 subject_expr_rule(Parser *p)
7437 {
7438     if (p->level++ == MAXSTACK) {
7439         p->error_indicator = 1;
7440         PyErr_NoMemory();
7441     }
7442     if (p->error_indicator) {
7443         p->level--;
7444         return NULL;
7445     }
7446     expr_ty _res = NULL;
7447     int _mark = p->mark;
7448     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7449         p->error_indicator = 1;
7450         p->level--;
7451         return NULL;
7452     }
7453     int _start_lineno = p->tokens[_mark]->lineno;
7454     UNUSED(_start_lineno); // Only used by EXTRA macro
7455     int _start_col_offset = p->tokens[_mark]->col_offset;
7456     UNUSED(_start_col_offset); // Only used by EXTRA macro
7457     { // star_named_expression ',' star_named_expressions?
7458         if (p->error_indicator) {
7459             p->level--;
7460             return NULL;
7461         }
7462         D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7463         Token * _literal;
7464         expr_ty value;
7465         void *values;
7466         if (
7467             (value = star_named_expression_rule(p))  // star_named_expression
7468             &&
7469             (_literal = _PyPegen_expect_token(p, 12))  // token=','
7470             &&
7471             (values = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
7472         )
7473         {
7474             D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7475             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7476             if (_token == NULL) {
7477                 p->level--;
7478                 return NULL;
7479             }
7480             int _end_lineno = _token->end_lineno;
7481             UNUSED(_end_lineno); // Only used by EXTRA macro
7482             int _end_col_offset = _token->end_col_offset;
7483             UNUSED(_end_col_offset); // Only used by EXTRA macro
7484             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , value , values ) ) , Load , EXTRA );
7485             if (_res == NULL && PyErr_Occurred()) {
7486                 p->error_indicator = 1;
7487                 p->level--;
7488                 return NULL;
7489             }
7490             goto done;
7491         }
7492         p->mark = _mark;
7493         D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
7494                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
7495     }
7496     { // named_expression
7497         if (p->error_indicator) {
7498             p->level--;
7499             return NULL;
7500         }
7501         D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
7502         expr_ty named_expression_var;
7503         if (
7504             (named_expression_var = named_expression_rule(p))  // named_expression
7505         )
7506         {
7507             D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
7508             _res = named_expression_var;
7509             goto done;
7510         }
7511         p->mark = _mark;
7512         D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
7513                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
7514     }
7515     _res = NULL;
7516   done:
7517     p->level--;
7518     return _res;
7519 }
7520 
7521 // case_block: invalid_case_block | "case" patterns guard? ':' block
7522 static match_case_ty
case_block_rule(Parser * p)7523 case_block_rule(Parser *p)
7524 {
7525     if (p->level++ == MAXSTACK) {
7526         p->error_indicator = 1;
7527         PyErr_NoMemory();
7528     }
7529     if (p->error_indicator) {
7530         p->level--;
7531         return NULL;
7532     }
7533     match_case_ty _res = NULL;
7534     int _mark = p->mark;
7535     if (p->call_invalid_rules) { // invalid_case_block
7536         if (p->error_indicator) {
7537             p->level--;
7538             return NULL;
7539         }
7540         D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_case_block"));
7541         void *invalid_case_block_var;
7542         if (
7543             (invalid_case_block_var = invalid_case_block_rule(p))  // invalid_case_block
7544         )
7545         {
7546             D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_case_block"));
7547             _res = invalid_case_block_var;
7548             goto done;
7549         }
7550         p->mark = _mark;
7551         D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
7552                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_case_block"));
7553     }
7554     { // "case" patterns guard? ':' block
7555         if (p->error_indicator) {
7556             p->level--;
7557             return NULL;
7558         }
7559         D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
7560         expr_ty _keyword;
7561         Token * _literal;
7562         asdl_stmt_seq* body;
7563         void *guard;
7564         pattern_ty pattern;
7565         if (
7566             (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
7567             &&
7568             (pattern = patterns_rule(p))  // patterns
7569             &&
7570             (guard = guard_rule(p), !p->error_indicator)  // guard?
7571             &&
7572             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7573             &&
7574             (body = block_rule(p))  // block
7575         )
7576         {
7577             D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
7578             _res = _PyAST_match_case ( pattern , guard , body , p -> arena );
7579             if (_res == NULL && PyErr_Occurred()) {
7580                 p->error_indicator = 1;
7581                 p->level--;
7582                 return NULL;
7583             }
7584             goto done;
7585         }
7586         p->mark = _mark;
7587         D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
7588                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? ':' block"));
7589     }
7590     _res = NULL;
7591   done:
7592     p->level--;
7593     return _res;
7594 }
7595 
7596 // guard: 'if' named_expression
7597 static expr_ty
guard_rule(Parser * p)7598 guard_rule(Parser *p)
7599 {
7600     if (p->level++ == MAXSTACK) {
7601         p->error_indicator = 1;
7602         PyErr_NoMemory();
7603     }
7604     if (p->error_indicator) {
7605         p->level--;
7606         return NULL;
7607     }
7608     expr_ty _res = NULL;
7609     int _mark = p->mark;
7610     { // 'if' named_expression
7611         if (p->error_indicator) {
7612             p->level--;
7613             return NULL;
7614         }
7615         D(fprintf(stderr, "%*c> guard[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
7616         Token * _keyword;
7617         expr_ty guard;
7618         if (
7619             (_keyword = _PyPegen_expect_token(p, 639))  // token='if'
7620             &&
7621             (guard = named_expression_rule(p))  // named_expression
7622         )
7623         {
7624             D(fprintf(stderr, "%*c+ guard[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
7625             _res = guard;
7626             if (_res == NULL && PyErr_Occurred()) {
7627                 p->error_indicator = 1;
7628                 p->level--;
7629                 return NULL;
7630             }
7631             goto done;
7632         }
7633         p->mark = _mark;
7634         D(fprintf(stderr, "%*c%s guard[%d-%d]: %s failed!\n", p->level, ' ',
7635                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression"));
7636     }
7637     _res = NULL;
7638   done:
7639     p->level--;
7640     return _res;
7641 }
7642 
7643 // patterns: open_sequence_pattern | pattern
7644 static pattern_ty
patterns_rule(Parser * p)7645 patterns_rule(Parser *p)
7646 {
7647     if (p->level++ == MAXSTACK) {
7648         p->error_indicator = 1;
7649         PyErr_NoMemory();
7650     }
7651     if (p->error_indicator) {
7652         p->level--;
7653         return NULL;
7654     }
7655     pattern_ty _res = NULL;
7656     int _mark = p->mark;
7657     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7658         p->error_indicator = 1;
7659         p->level--;
7660         return NULL;
7661     }
7662     int _start_lineno = p->tokens[_mark]->lineno;
7663     UNUSED(_start_lineno); // Only used by EXTRA macro
7664     int _start_col_offset = p->tokens[_mark]->col_offset;
7665     UNUSED(_start_col_offset); // Only used by EXTRA macro
7666     { // open_sequence_pattern
7667         if (p->error_indicator) {
7668             p->level--;
7669             return NULL;
7670         }
7671         D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
7672         asdl_pattern_seq* patterns;
7673         if (
7674             (patterns = (asdl_pattern_seq*)open_sequence_pattern_rule(p))  // open_sequence_pattern
7675         )
7676         {
7677             D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
7678             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7679             if (_token == NULL) {
7680                 p->level--;
7681                 return NULL;
7682             }
7683             int _end_lineno = _token->end_lineno;
7684             UNUSED(_end_lineno); // Only used by EXTRA macro
7685             int _end_col_offset = _token->end_col_offset;
7686             UNUSED(_end_col_offset); // Only used by EXTRA macro
7687             _res = _PyAST_MatchSequence ( patterns , EXTRA );
7688             if (_res == NULL && PyErr_Occurred()) {
7689                 p->error_indicator = 1;
7690                 p->level--;
7691                 return NULL;
7692             }
7693             goto done;
7694         }
7695         p->mark = _mark;
7696         D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
7697                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "open_sequence_pattern"));
7698     }
7699     { // pattern
7700         if (p->error_indicator) {
7701             p->level--;
7702             return NULL;
7703         }
7704         D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
7705         pattern_ty pattern_var;
7706         if (
7707             (pattern_var = pattern_rule(p))  // pattern
7708         )
7709         {
7710             D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
7711             _res = pattern_var;
7712             goto done;
7713         }
7714         p->mark = _mark;
7715         D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
7716                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
7717     }
7718     _res = NULL;
7719   done:
7720     p->level--;
7721     return _res;
7722 }
7723 
7724 // pattern: as_pattern | or_pattern
7725 static pattern_ty
pattern_rule(Parser * p)7726 pattern_rule(Parser *p)
7727 {
7728     if (p->level++ == MAXSTACK) {
7729         p->error_indicator = 1;
7730         PyErr_NoMemory();
7731     }
7732     if (p->error_indicator) {
7733         p->level--;
7734         return NULL;
7735     }
7736     pattern_ty _res = NULL;
7737     int _mark = p->mark;
7738     { // as_pattern
7739         if (p->error_indicator) {
7740             p->level--;
7741             return NULL;
7742         }
7743         D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "as_pattern"));
7744         pattern_ty as_pattern_var;
7745         if (
7746             (as_pattern_var = as_pattern_rule(p))  // as_pattern
7747         )
7748         {
7749             D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "as_pattern"));
7750             _res = as_pattern_var;
7751             goto done;
7752         }
7753         p->mark = _mark;
7754         D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
7755                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "as_pattern"));
7756     }
7757     { // or_pattern
7758         if (p->error_indicator) {
7759             p->level--;
7760             return NULL;
7761         }
7762         D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern"));
7763         pattern_ty or_pattern_var;
7764         if (
7765             (or_pattern_var = or_pattern_rule(p))  // or_pattern
7766         )
7767         {
7768             D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern"));
7769             _res = or_pattern_var;
7770             goto done;
7771         }
7772         p->mark = _mark;
7773         D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
7774                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern"));
7775     }
7776     _res = NULL;
7777   done:
7778     p->level--;
7779     return _res;
7780 }
7781 
7782 // as_pattern: or_pattern 'as' pattern_capture_target | invalid_as_pattern
7783 static pattern_ty
as_pattern_rule(Parser * p)7784 as_pattern_rule(Parser *p)
7785 {
7786     if (p->level++ == MAXSTACK) {
7787         p->error_indicator = 1;
7788         PyErr_NoMemory();
7789     }
7790     if (p->error_indicator) {
7791         p->level--;
7792         return NULL;
7793     }
7794     pattern_ty _res = NULL;
7795     int _mark = p->mark;
7796     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7797         p->error_indicator = 1;
7798         p->level--;
7799         return NULL;
7800     }
7801     int _start_lineno = p->tokens[_mark]->lineno;
7802     UNUSED(_start_lineno); // Only used by EXTRA macro
7803     int _start_col_offset = p->tokens[_mark]->col_offset;
7804     UNUSED(_start_col_offset); // Only used by EXTRA macro
7805     { // or_pattern 'as' pattern_capture_target
7806         if (p->error_indicator) {
7807             p->level--;
7808             return NULL;
7809         }
7810         D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
7811         Token * _keyword;
7812         pattern_ty pattern;
7813         expr_ty target;
7814         if (
7815             (pattern = or_pattern_rule(p))  // or_pattern
7816             &&
7817             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
7818             &&
7819             (target = pattern_capture_target_rule(p))  // pattern_capture_target
7820         )
7821         {
7822             D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
7823             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7824             if (_token == NULL) {
7825                 p->level--;
7826                 return NULL;
7827             }
7828             int _end_lineno = _token->end_lineno;
7829             UNUSED(_end_lineno); // Only used by EXTRA macro
7830             int _end_col_offset = _token->end_col_offset;
7831             UNUSED(_end_col_offset); // Only used by EXTRA macro
7832             _res = _PyAST_MatchAs ( pattern , target -> v . Name . id , EXTRA );
7833             if (_res == NULL && PyErr_Occurred()) {
7834                 p->error_indicator = 1;
7835                 p->level--;
7836                 return NULL;
7837             }
7838             goto done;
7839         }
7840         p->mark = _mark;
7841         D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7842                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
7843     }
7844     if (p->call_invalid_rules) { // invalid_as_pattern
7845         if (p->error_indicator) {
7846             p->level--;
7847             return NULL;
7848         }
7849         D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
7850         void *invalid_as_pattern_var;
7851         if (
7852             (invalid_as_pattern_var = invalid_as_pattern_rule(p))  // invalid_as_pattern
7853         )
7854         {
7855             D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
7856             _res = invalid_as_pattern_var;
7857             goto done;
7858         }
7859         p->mark = _mark;
7860         D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7861                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_as_pattern"));
7862     }
7863     _res = NULL;
7864   done:
7865     p->level--;
7866     return _res;
7867 }
7868 
7869 // or_pattern: '|'.closed_pattern+
7870 static pattern_ty
or_pattern_rule(Parser * p)7871 or_pattern_rule(Parser *p)
7872 {
7873     if (p->level++ == MAXSTACK) {
7874         p->error_indicator = 1;
7875         PyErr_NoMemory();
7876     }
7877     if (p->error_indicator) {
7878         p->level--;
7879         return NULL;
7880     }
7881     pattern_ty _res = NULL;
7882     int _mark = p->mark;
7883     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7884         p->error_indicator = 1;
7885         p->level--;
7886         return NULL;
7887     }
7888     int _start_lineno = p->tokens[_mark]->lineno;
7889     UNUSED(_start_lineno); // Only used by EXTRA macro
7890     int _start_col_offset = p->tokens[_mark]->col_offset;
7891     UNUSED(_start_col_offset); // Only used by EXTRA macro
7892     { // '|'.closed_pattern+
7893         if (p->error_indicator) {
7894             p->level--;
7895             return NULL;
7896         }
7897         D(fprintf(stderr, "%*c> or_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
7898         asdl_pattern_seq* patterns;
7899         if (
7900             (patterns = (asdl_pattern_seq*)_gather_65_rule(p))  // '|'.closed_pattern+
7901         )
7902         {
7903             D(fprintf(stderr, "%*c+ or_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
7904             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7905             if (_token == NULL) {
7906                 p->level--;
7907                 return NULL;
7908             }
7909             int _end_lineno = _token->end_lineno;
7910             UNUSED(_end_lineno); // Only used by EXTRA macro
7911             int _end_col_offset = _token->end_col_offset;
7912             UNUSED(_end_col_offset); // Only used by EXTRA macro
7913             _res = asdl_seq_LEN ( patterns ) == 1 ? asdl_seq_GET ( patterns , 0 ) : _PyAST_MatchOr ( patterns , EXTRA );
7914             if (_res == NULL && PyErr_Occurred()) {
7915                 p->error_indicator = 1;
7916                 p->level--;
7917                 return NULL;
7918             }
7919             goto done;
7920         }
7921         p->mark = _mark;
7922         D(fprintf(stderr, "%*c%s or_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7923                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|'.closed_pattern+"));
7924     }
7925     _res = NULL;
7926   done:
7927     p->level--;
7928     return _res;
7929 }
7930 
7931 // closed_pattern:
7932 //     | literal_pattern
7933 //     | capture_pattern
7934 //     | wildcard_pattern
7935 //     | value_pattern
7936 //     | group_pattern
7937 //     | sequence_pattern
7938 //     | mapping_pattern
7939 //     | class_pattern
7940 static pattern_ty
closed_pattern_rule(Parser * p)7941 closed_pattern_rule(Parser *p)
7942 {
7943     if (p->level++ == MAXSTACK) {
7944         p->error_indicator = 1;
7945         PyErr_NoMemory();
7946     }
7947     if (p->error_indicator) {
7948         p->level--;
7949         return NULL;
7950     }
7951     pattern_ty _res = NULL;
7952     if (_PyPegen_is_memoized(p, closed_pattern_type, &_res)) {
7953         p->level--;
7954         return _res;
7955     }
7956     int _mark = p->mark;
7957     { // literal_pattern
7958         if (p->error_indicator) {
7959             p->level--;
7960             return NULL;
7961         }
7962         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
7963         pattern_ty literal_pattern_var;
7964         if (
7965             (literal_pattern_var = literal_pattern_rule(p))  // literal_pattern
7966         )
7967         {
7968             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
7969             _res = literal_pattern_var;
7970             goto done;
7971         }
7972         p->mark = _mark;
7973         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7974                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_pattern"));
7975     }
7976     { // capture_pattern
7977         if (p->error_indicator) {
7978             p->level--;
7979             return NULL;
7980         }
7981         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
7982         pattern_ty capture_pattern_var;
7983         if (
7984             (capture_pattern_var = capture_pattern_rule(p))  // capture_pattern
7985         )
7986         {
7987             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
7988             _res = capture_pattern_var;
7989             goto done;
7990         }
7991         p->mark = _mark;
7992         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7993                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "capture_pattern"));
7994     }
7995     { // wildcard_pattern
7996         if (p->error_indicator) {
7997             p->level--;
7998             return NULL;
7999         }
8000         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
8001         pattern_ty wildcard_pattern_var;
8002         if (
8003             (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
8004         )
8005         {
8006             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
8007             _res = wildcard_pattern_var;
8008             goto done;
8009         }
8010         p->mark = _mark;
8011         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8012                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "wildcard_pattern"));
8013     }
8014     { // value_pattern
8015         if (p->error_indicator) {
8016             p->level--;
8017             return NULL;
8018         }
8019         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "value_pattern"));
8020         pattern_ty value_pattern_var;
8021         if (
8022             (value_pattern_var = value_pattern_rule(p))  // value_pattern
8023         )
8024         {
8025             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "value_pattern"));
8026             _res = value_pattern_var;
8027             goto done;
8028         }
8029         p->mark = _mark;
8030         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8031                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "value_pattern"));
8032     }
8033     { // group_pattern
8034         if (p->error_indicator) {
8035             p->level--;
8036             return NULL;
8037         }
8038         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group_pattern"));
8039         pattern_ty group_pattern_var;
8040         if (
8041             (group_pattern_var = group_pattern_rule(p))  // group_pattern
8042         )
8043         {
8044             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group_pattern"));
8045             _res = group_pattern_var;
8046             goto done;
8047         }
8048         p->mark = _mark;
8049         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8050                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group_pattern"));
8051     }
8052     { // sequence_pattern
8053         if (p->error_indicator) {
8054             p->level--;
8055             return NULL;
8056         }
8057         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
8058         pattern_ty sequence_pattern_var;
8059         if (
8060             (sequence_pattern_var = sequence_pattern_rule(p))  // sequence_pattern
8061         )
8062         {
8063             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
8064             _res = sequence_pattern_var;
8065             goto done;
8066         }
8067         p->mark = _mark;
8068         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8069                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sequence_pattern"));
8070     }
8071     { // mapping_pattern
8072         if (p->error_indicator) {
8073             p->level--;
8074             return NULL;
8075         }
8076         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
8077         pattern_ty mapping_pattern_var;
8078         if (
8079             (mapping_pattern_var = mapping_pattern_rule(p))  // mapping_pattern
8080         )
8081         {
8082             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
8083             _res = mapping_pattern_var;
8084             goto done;
8085         }
8086         p->mark = _mark;
8087         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8088                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "mapping_pattern"));
8089     }
8090     { // class_pattern
8091         if (p->error_indicator) {
8092             p->level--;
8093             return NULL;
8094         }
8095         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_pattern"));
8096         pattern_ty class_pattern_var;
8097         if (
8098             (class_pattern_var = class_pattern_rule(p))  // class_pattern
8099         )
8100         {
8101             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_pattern"));
8102             _res = class_pattern_var;
8103             goto done;
8104         }
8105         p->mark = _mark;
8106         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8107                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_pattern"));
8108     }
8109     _res = NULL;
8110   done:
8111     _PyPegen_insert_memo(p, _mark, closed_pattern_type, _res);
8112     p->level--;
8113     return _res;
8114 }
8115 
8116 // literal_pattern:
8117 //     | signed_number !('+' | '-')
8118 //     | complex_number
8119 //     | strings
8120 //     | 'None'
8121 //     | 'True'
8122 //     | 'False'
8123 static pattern_ty
literal_pattern_rule(Parser * p)8124 literal_pattern_rule(Parser *p)
8125 {
8126     if (p->level++ == MAXSTACK) {
8127         p->error_indicator = 1;
8128         PyErr_NoMemory();
8129     }
8130     if (p->error_indicator) {
8131         p->level--;
8132         return NULL;
8133     }
8134     pattern_ty _res = NULL;
8135     int _mark = p->mark;
8136     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8137         p->error_indicator = 1;
8138         p->level--;
8139         return NULL;
8140     }
8141     int _start_lineno = p->tokens[_mark]->lineno;
8142     UNUSED(_start_lineno); // Only used by EXTRA macro
8143     int _start_col_offset = p->tokens[_mark]->col_offset;
8144     UNUSED(_start_col_offset); // Only used by EXTRA macro
8145     { // signed_number !('+' | '-')
8146         if (p->error_indicator) {
8147             p->level--;
8148             return NULL;
8149         }
8150         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8151         expr_ty value;
8152         if (
8153             (value = signed_number_rule(p))  // signed_number
8154             &&
8155             _PyPegen_lookahead(0, _tmp_67_rule, p)
8156         )
8157         {
8158             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8159             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8160             if (_token == NULL) {
8161                 p->level--;
8162                 return NULL;
8163             }
8164             int _end_lineno = _token->end_lineno;
8165             UNUSED(_end_lineno); // Only used by EXTRA macro
8166             int _end_col_offset = _token->end_col_offset;
8167             UNUSED(_end_col_offset); // Only used by EXTRA macro
8168             _res = _PyAST_MatchValue ( value , EXTRA );
8169             if (_res == NULL && PyErr_Occurred()) {
8170                 p->error_indicator = 1;
8171                 p->level--;
8172                 return NULL;
8173             }
8174             goto done;
8175         }
8176         p->mark = _mark;
8177         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8178                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
8179     }
8180     { // complex_number
8181         if (p->error_indicator) {
8182             p->level--;
8183             return NULL;
8184         }
8185         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
8186         expr_ty value;
8187         if (
8188             (value = complex_number_rule(p))  // complex_number
8189         )
8190         {
8191             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
8192             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8193             if (_token == NULL) {
8194                 p->level--;
8195                 return NULL;
8196             }
8197             int _end_lineno = _token->end_lineno;
8198             UNUSED(_end_lineno); // Only used by EXTRA macro
8199             int _end_col_offset = _token->end_col_offset;
8200             UNUSED(_end_col_offset); // Only used by EXTRA macro
8201             _res = _PyAST_MatchValue ( value , EXTRA );
8202             if (_res == NULL && PyErr_Occurred()) {
8203                 p->error_indicator = 1;
8204                 p->level--;
8205                 return NULL;
8206             }
8207             goto done;
8208         }
8209         p->mark = _mark;
8210         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8211                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
8212     }
8213     { // strings
8214         if (p->error_indicator) {
8215             p->level--;
8216             return NULL;
8217         }
8218         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "strings"));
8219         expr_ty value;
8220         if (
8221             (value = strings_rule(p))  // strings
8222         )
8223         {
8224             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "strings"));
8225             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8226             if (_token == NULL) {
8227                 p->level--;
8228                 return NULL;
8229             }
8230             int _end_lineno = _token->end_lineno;
8231             UNUSED(_end_lineno); // Only used by EXTRA macro
8232             int _end_col_offset = _token->end_col_offset;
8233             UNUSED(_end_col_offset); // Only used by EXTRA macro
8234             _res = _PyAST_MatchValue ( value , EXTRA );
8235             if (_res == NULL && PyErr_Occurred()) {
8236                 p->error_indicator = 1;
8237                 p->level--;
8238                 return NULL;
8239             }
8240             goto done;
8241         }
8242         p->mark = _mark;
8243         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8244                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "strings"));
8245     }
8246     { // 'None'
8247         if (p->error_indicator) {
8248             p->level--;
8249             return NULL;
8250         }
8251         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
8252         Token * _keyword;
8253         if (
8254             (_keyword = _PyPegen_expect_token(p, 601))  // token='None'
8255         )
8256         {
8257             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
8258             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8259             if (_token == NULL) {
8260                 p->level--;
8261                 return NULL;
8262             }
8263             int _end_lineno = _token->end_lineno;
8264             UNUSED(_end_lineno); // Only used by EXTRA macro
8265             int _end_col_offset = _token->end_col_offset;
8266             UNUSED(_end_col_offset); // Only used by EXTRA macro
8267             _res = _PyAST_MatchSingleton ( Py_None , EXTRA );
8268             if (_res == NULL && PyErr_Occurred()) {
8269                 p->error_indicator = 1;
8270                 p->level--;
8271                 return NULL;
8272             }
8273             goto done;
8274         }
8275         p->mark = _mark;
8276         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8277                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
8278     }
8279     { // 'True'
8280         if (p->error_indicator) {
8281             p->level--;
8282             return NULL;
8283         }
8284         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
8285         Token * _keyword;
8286         if (
8287             (_keyword = _PyPegen_expect_token(p, 600))  // token='True'
8288         )
8289         {
8290             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
8291             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8292             if (_token == NULL) {
8293                 p->level--;
8294                 return NULL;
8295             }
8296             int _end_lineno = _token->end_lineno;
8297             UNUSED(_end_lineno); // Only used by EXTRA macro
8298             int _end_col_offset = _token->end_col_offset;
8299             UNUSED(_end_col_offset); // Only used by EXTRA macro
8300             _res = _PyAST_MatchSingleton ( Py_True , EXTRA );
8301             if (_res == NULL && PyErr_Occurred()) {
8302                 p->error_indicator = 1;
8303                 p->level--;
8304                 return NULL;
8305             }
8306             goto done;
8307         }
8308         p->mark = _mark;
8309         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8310                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
8311     }
8312     { // 'False'
8313         if (p->error_indicator) {
8314             p->level--;
8315             return NULL;
8316         }
8317         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
8318         Token * _keyword;
8319         if (
8320             (_keyword = _PyPegen_expect_token(p, 602))  // token='False'
8321         )
8322         {
8323             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
8324             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8325             if (_token == NULL) {
8326                 p->level--;
8327                 return NULL;
8328             }
8329             int _end_lineno = _token->end_lineno;
8330             UNUSED(_end_lineno); // Only used by EXTRA macro
8331             int _end_col_offset = _token->end_col_offset;
8332             UNUSED(_end_col_offset); // Only used by EXTRA macro
8333             _res = _PyAST_MatchSingleton ( Py_False , EXTRA );
8334             if (_res == NULL && PyErr_Occurred()) {
8335                 p->error_indicator = 1;
8336                 p->level--;
8337                 return NULL;
8338             }
8339             goto done;
8340         }
8341         p->mark = _mark;
8342         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8343                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
8344     }
8345     _res = NULL;
8346   done:
8347     p->level--;
8348     return _res;
8349 }
8350 
8351 // literal_expr:
8352 //     | signed_number !('+' | '-')
8353 //     | complex_number
8354 //     | strings
8355 //     | 'None'
8356 //     | 'True'
8357 //     | 'False'
8358 static expr_ty
literal_expr_rule(Parser * p)8359 literal_expr_rule(Parser *p)
8360 {
8361     if (p->level++ == MAXSTACK) {
8362         p->error_indicator = 1;
8363         PyErr_NoMemory();
8364     }
8365     if (p->error_indicator) {
8366         p->level--;
8367         return NULL;
8368     }
8369     expr_ty _res = NULL;
8370     int _mark = p->mark;
8371     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8372         p->error_indicator = 1;
8373         p->level--;
8374         return NULL;
8375     }
8376     int _start_lineno = p->tokens[_mark]->lineno;
8377     UNUSED(_start_lineno); // Only used by EXTRA macro
8378     int _start_col_offset = p->tokens[_mark]->col_offset;
8379     UNUSED(_start_col_offset); // Only used by EXTRA macro
8380     { // signed_number !('+' | '-')
8381         if (p->error_indicator) {
8382             p->level--;
8383             return NULL;
8384         }
8385         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8386         expr_ty signed_number_var;
8387         if (
8388             (signed_number_var = signed_number_rule(p))  // signed_number
8389             &&
8390             _PyPegen_lookahead(0, _tmp_68_rule, p)
8391         )
8392         {
8393             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
8394             _res = signed_number_var;
8395             goto done;
8396         }
8397         p->mark = _mark;
8398         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8399                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
8400     }
8401     { // complex_number
8402         if (p->error_indicator) {
8403             p->level--;
8404             return NULL;
8405         }
8406         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
8407         expr_ty complex_number_var;
8408         if (
8409             (complex_number_var = complex_number_rule(p))  // complex_number
8410         )
8411         {
8412             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
8413             _res = complex_number_var;
8414             goto done;
8415         }
8416         p->mark = _mark;
8417         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8418                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
8419     }
8420     { // strings
8421         if (p->error_indicator) {
8422             p->level--;
8423             return NULL;
8424         }
8425         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "strings"));
8426         expr_ty strings_var;
8427         if (
8428             (strings_var = strings_rule(p))  // strings
8429         )
8430         {
8431             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "strings"));
8432             _res = strings_var;
8433             goto done;
8434         }
8435         p->mark = _mark;
8436         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8437                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "strings"));
8438     }
8439     { // 'None'
8440         if (p->error_indicator) {
8441             p->level--;
8442             return NULL;
8443         }
8444         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
8445         Token * _keyword;
8446         if (
8447             (_keyword = _PyPegen_expect_token(p, 601))  // token='None'
8448         )
8449         {
8450             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
8451             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8452             if (_token == NULL) {
8453                 p->level--;
8454                 return NULL;
8455             }
8456             int _end_lineno = _token->end_lineno;
8457             UNUSED(_end_lineno); // Only used by EXTRA macro
8458             int _end_col_offset = _token->end_col_offset;
8459             UNUSED(_end_col_offset); // Only used by EXTRA macro
8460             _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
8461             if (_res == NULL && PyErr_Occurred()) {
8462                 p->error_indicator = 1;
8463                 p->level--;
8464                 return NULL;
8465             }
8466             goto done;
8467         }
8468         p->mark = _mark;
8469         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8470                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
8471     }
8472     { // 'True'
8473         if (p->error_indicator) {
8474             p->level--;
8475             return NULL;
8476         }
8477         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
8478         Token * _keyword;
8479         if (
8480             (_keyword = _PyPegen_expect_token(p, 600))  // token='True'
8481         )
8482         {
8483             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
8484             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8485             if (_token == NULL) {
8486                 p->level--;
8487                 return NULL;
8488             }
8489             int _end_lineno = _token->end_lineno;
8490             UNUSED(_end_lineno); // Only used by EXTRA macro
8491             int _end_col_offset = _token->end_col_offset;
8492             UNUSED(_end_col_offset); // Only used by EXTRA macro
8493             _res = _PyAST_Constant ( Py_True , NULL , EXTRA );
8494             if (_res == NULL && PyErr_Occurred()) {
8495                 p->error_indicator = 1;
8496                 p->level--;
8497                 return NULL;
8498             }
8499             goto done;
8500         }
8501         p->mark = _mark;
8502         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8503                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
8504     }
8505     { // 'False'
8506         if (p->error_indicator) {
8507             p->level--;
8508             return NULL;
8509         }
8510         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
8511         Token * _keyword;
8512         if (
8513             (_keyword = _PyPegen_expect_token(p, 602))  // token='False'
8514         )
8515         {
8516             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
8517             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8518             if (_token == NULL) {
8519                 p->level--;
8520                 return NULL;
8521             }
8522             int _end_lineno = _token->end_lineno;
8523             UNUSED(_end_lineno); // Only used by EXTRA macro
8524             int _end_col_offset = _token->end_col_offset;
8525             UNUSED(_end_col_offset); // Only used by EXTRA macro
8526             _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
8527             if (_res == NULL && PyErr_Occurred()) {
8528                 p->error_indicator = 1;
8529                 p->level--;
8530                 return NULL;
8531             }
8532             goto done;
8533         }
8534         p->mark = _mark;
8535         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
8536                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
8537     }
8538     _res = NULL;
8539   done:
8540     p->level--;
8541     return _res;
8542 }
8543 
8544 // complex_number:
8545 //     | signed_real_number '+' imaginary_number
8546 //     | signed_real_number '-' imaginary_number
8547 static expr_ty
complex_number_rule(Parser * p)8548 complex_number_rule(Parser *p)
8549 {
8550     if (p->level++ == MAXSTACK) {
8551         p->error_indicator = 1;
8552         PyErr_NoMemory();
8553     }
8554     if (p->error_indicator) {
8555         p->level--;
8556         return NULL;
8557     }
8558     expr_ty _res = NULL;
8559     int _mark = p->mark;
8560     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8561         p->error_indicator = 1;
8562         p->level--;
8563         return NULL;
8564     }
8565     int _start_lineno = p->tokens[_mark]->lineno;
8566     UNUSED(_start_lineno); // Only used by EXTRA macro
8567     int _start_col_offset = p->tokens[_mark]->col_offset;
8568     UNUSED(_start_col_offset); // Only used by EXTRA macro
8569     { // signed_real_number '+' imaginary_number
8570         if (p->error_indicator) {
8571             p->level--;
8572             return NULL;
8573         }
8574         D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
8575         Token * _literal;
8576         expr_ty imag;
8577         expr_ty real;
8578         if (
8579             (real = signed_real_number_rule(p))  // signed_real_number
8580             &&
8581             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
8582             &&
8583             (imag = imaginary_number_rule(p))  // imaginary_number
8584         )
8585         {
8586             D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
8587             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8588             if (_token == NULL) {
8589                 p->level--;
8590                 return NULL;
8591             }
8592             int _end_lineno = _token->end_lineno;
8593             UNUSED(_end_lineno); // Only used by EXTRA macro
8594             int _end_col_offset = _token->end_col_offset;
8595             UNUSED(_end_col_offset); // Only used by EXTRA macro
8596             _res = _PyAST_BinOp ( real , Add , imag , EXTRA );
8597             if (_res == NULL && PyErr_Occurred()) {
8598                 p->error_indicator = 1;
8599                 p->level--;
8600                 return NULL;
8601             }
8602             goto done;
8603         }
8604         p->mark = _mark;
8605         D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
8606                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '+' imaginary_number"));
8607     }
8608     { // signed_real_number '-' imaginary_number
8609         if (p->error_indicator) {
8610             p->level--;
8611             return NULL;
8612         }
8613         D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
8614         Token * _literal;
8615         expr_ty imag;
8616         expr_ty real;
8617         if (
8618             (real = signed_real_number_rule(p))  // signed_real_number
8619             &&
8620             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
8621             &&
8622             (imag = imaginary_number_rule(p))  // imaginary_number
8623         )
8624         {
8625             D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
8626             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8627             if (_token == NULL) {
8628                 p->level--;
8629                 return NULL;
8630             }
8631             int _end_lineno = _token->end_lineno;
8632             UNUSED(_end_lineno); // Only used by EXTRA macro
8633             int _end_col_offset = _token->end_col_offset;
8634             UNUSED(_end_col_offset); // Only used by EXTRA macro
8635             _res = _PyAST_BinOp ( real , Sub , imag , EXTRA );
8636             if (_res == NULL && PyErr_Occurred()) {
8637                 p->error_indicator = 1;
8638                 p->level--;
8639                 return NULL;
8640             }
8641             goto done;
8642         }
8643         p->mark = _mark;
8644         D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
8645                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '-' imaginary_number"));
8646     }
8647     _res = NULL;
8648   done:
8649     p->level--;
8650     return _res;
8651 }
8652 
8653 // signed_number: NUMBER | '-' NUMBER
8654 static expr_ty
signed_number_rule(Parser * p)8655 signed_number_rule(Parser *p)
8656 {
8657     if (p->level++ == MAXSTACK) {
8658         p->error_indicator = 1;
8659         PyErr_NoMemory();
8660     }
8661     if (p->error_indicator) {
8662         p->level--;
8663         return NULL;
8664     }
8665     expr_ty _res = NULL;
8666     int _mark = p->mark;
8667     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8668         p->error_indicator = 1;
8669         p->level--;
8670         return NULL;
8671     }
8672     int _start_lineno = p->tokens[_mark]->lineno;
8673     UNUSED(_start_lineno); // Only used by EXTRA macro
8674     int _start_col_offset = p->tokens[_mark]->col_offset;
8675     UNUSED(_start_col_offset); // Only used by EXTRA macro
8676     { // NUMBER
8677         if (p->error_indicator) {
8678             p->level--;
8679             return NULL;
8680         }
8681         D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
8682         expr_ty number_var;
8683         if (
8684             (number_var = _PyPegen_number_token(p))  // NUMBER
8685         )
8686         {
8687             D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
8688             _res = number_var;
8689             goto done;
8690         }
8691         p->mark = _mark;
8692         D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
8693                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
8694     }
8695     { // '-' NUMBER
8696         if (p->error_indicator) {
8697             p->level--;
8698             return NULL;
8699         }
8700         D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
8701         Token * _literal;
8702         expr_ty number;
8703         if (
8704             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
8705             &&
8706             (number = _PyPegen_number_token(p))  // NUMBER
8707         )
8708         {
8709             D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
8710             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8711             if (_token == NULL) {
8712                 p->level--;
8713                 return NULL;
8714             }
8715             int _end_lineno = _token->end_lineno;
8716             UNUSED(_end_lineno); // Only used by EXTRA macro
8717             int _end_col_offset = _token->end_col_offset;
8718             UNUSED(_end_col_offset); // Only used by EXTRA macro
8719             _res = _PyAST_UnaryOp ( USub , number , EXTRA );
8720             if (_res == NULL && PyErr_Occurred()) {
8721                 p->error_indicator = 1;
8722                 p->level--;
8723                 return NULL;
8724             }
8725             goto done;
8726         }
8727         p->mark = _mark;
8728         D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
8729                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' NUMBER"));
8730     }
8731     _res = NULL;
8732   done:
8733     p->level--;
8734     return _res;
8735 }
8736 
8737 // signed_real_number: real_number | '-' real_number
8738 static expr_ty
signed_real_number_rule(Parser * p)8739 signed_real_number_rule(Parser *p)
8740 {
8741     if (p->level++ == MAXSTACK) {
8742         p->error_indicator = 1;
8743         PyErr_NoMemory();
8744     }
8745     if (p->error_indicator) {
8746         p->level--;
8747         return NULL;
8748     }
8749     expr_ty _res = NULL;
8750     int _mark = p->mark;
8751     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8752         p->error_indicator = 1;
8753         p->level--;
8754         return NULL;
8755     }
8756     int _start_lineno = p->tokens[_mark]->lineno;
8757     UNUSED(_start_lineno); // Only used by EXTRA macro
8758     int _start_col_offset = p->tokens[_mark]->col_offset;
8759     UNUSED(_start_col_offset); // Only used by EXTRA macro
8760     { // real_number
8761         if (p->error_indicator) {
8762             p->level--;
8763             return NULL;
8764         }
8765         D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "real_number"));
8766         expr_ty real_number_var;
8767         if (
8768             (real_number_var = real_number_rule(p))  // real_number
8769         )
8770         {
8771             D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "real_number"));
8772             _res = real_number_var;
8773             goto done;
8774         }
8775         p->mark = _mark;
8776         D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
8777                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "real_number"));
8778     }
8779     { // '-' real_number
8780         if (p->error_indicator) {
8781             p->level--;
8782             return NULL;
8783         }
8784         D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
8785         Token * _literal;
8786         expr_ty real;
8787         if (
8788             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
8789             &&
8790             (real = real_number_rule(p))  // real_number
8791         )
8792         {
8793             D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
8794             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8795             if (_token == NULL) {
8796                 p->level--;
8797                 return NULL;
8798             }
8799             int _end_lineno = _token->end_lineno;
8800             UNUSED(_end_lineno); // Only used by EXTRA macro
8801             int _end_col_offset = _token->end_col_offset;
8802             UNUSED(_end_col_offset); // Only used by EXTRA macro
8803             _res = _PyAST_UnaryOp ( USub , real , EXTRA );
8804             if (_res == NULL && PyErr_Occurred()) {
8805                 p->error_indicator = 1;
8806                 p->level--;
8807                 return NULL;
8808             }
8809             goto done;
8810         }
8811         p->mark = _mark;
8812         D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
8813                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' real_number"));
8814     }
8815     _res = NULL;
8816   done:
8817     p->level--;
8818     return _res;
8819 }
8820 
8821 // real_number: NUMBER
8822 static expr_ty
real_number_rule(Parser * p)8823 real_number_rule(Parser *p)
8824 {
8825     if (p->level++ == MAXSTACK) {
8826         p->error_indicator = 1;
8827         PyErr_NoMemory();
8828     }
8829     if (p->error_indicator) {
8830         p->level--;
8831         return NULL;
8832     }
8833     expr_ty _res = NULL;
8834     int _mark = p->mark;
8835     { // NUMBER
8836         if (p->error_indicator) {
8837             p->level--;
8838             return NULL;
8839         }
8840         D(fprintf(stderr, "%*c> real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
8841         expr_ty real;
8842         if (
8843             (real = _PyPegen_number_token(p))  // NUMBER
8844         )
8845         {
8846             D(fprintf(stderr, "%*c+ real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
8847             _res = _PyPegen_ensure_real ( p , real );
8848             if (_res == NULL && PyErr_Occurred()) {
8849                 p->error_indicator = 1;
8850                 p->level--;
8851                 return NULL;
8852             }
8853             goto done;
8854         }
8855         p->mark = _mark;
8856         D(fprintf(stderr, "%*c%s real_number[%d-%d]: %s failed!\n", p->level, ' ',
8857                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
8858     }
8859     _res = NULL;
8860   done:
8861     p->level--;
8862     return _res;
8863 }
8864 
8865 // imaginary_number: NUMBER
8866 static expr_ty
imaginary_number_rule(Parser * p)8867 imaginary_number_rule(Parser *p)
8868 {
8869     if (p->level++ == MAXSTACK) {
8870         p->error_indicator = 1;
8871         PyErr_NoMemory();
8872     }
8873     if (p->error_indicator) {
8874         p->level--;
8875         return NULL;
8876     }
8877     expr_ty _res = NULL;
8878     int _mark = p->mark;
8879     { // NUMBER
8880         if (p->error_indicator) {
8881             p->level--;
8882             return NULL;
8883         }
8884         D(fprintf(stderr, "%*c> imaginary_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
8885         expr_ty imag;
8886         if (
8887             (imag = _PyPegen_number_token(p))  // NUMBER
8888         )
8889         {
8890             D(fprintf(stderr, "%*c+ imaginary_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
8891             _res = _PyPegen_ensure_imaginary ( p , imag );
8892             if (_res == NULL && PyErr_Occurred()) {
8893                 p->error_indicator = 1;
8894                 p->level--;
8895                 return NULL;
8896             }
8897             goto done;
8898         }
8899         p->mark = _mark;
8900         D(fprintf(stderr, "%*c%s imaginary_number[%d-%d]: %s failed!\n", p->level, ' ',
8901                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
8902     }
8903     _res = NULL;
8904   done:
8905     p->level--;
8906     return _res;
8907 }
8908 
8909 // capture_pattern: pattern_capture_target
8910 static pattern_ty
capture_pattern_rule(Parser * p)8911 capture_pattern_rule(Parser *p)
8912 {
8913     if (p->level++ == MAXSTACK) {
8914         p->error_indicator = 1;
8915         PyErr_NoMemory();
8916     }
8917     if (p->error_indicator) {
8918         p->level--;
8919         return NULL;
8920     }
8921     pattern_ty _res = NULL;
8922     int _mark = p->mark;
8923     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8924         p->error_indicator = 1;
8925         p->level--;
8926         return NULL;
8927     }
8928     int _start_lineno = p->tokens[_mark]->lineno;
8929     UNUSED(_start_lineno); // Only used by EXTRA macro
8930     int _start_col_offset = p->tokens[_mark]->col_offset;
8931     UNUSED(_start_col_offset); // Only used by EXTRA macro
8932     { // pattern_capture_target
8933         if (p->error_indicator) {
8934             p->level--;
8935             return NULL;
8936         }
8937         D(fprintf(stderr, "%*c> capture_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
8938         expr_ty target;
8939         if (
8940             (target = pattern_capture_target_rule(p))  // pattern_capture_target
8941         )
8942         {
8943             D(fprintf(stderr, "%*c+ capture_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
8944             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8945             if (_token == NULL) {
8946                 p->level--;
8947                 return NULL;
8948             }
8949             int _end_lineno = _token->end_lineno;
8950             UNUSED(_end_lineno); // Only used by EXTRA macro
8951             int _end_col_offset = _token->end_col_offset;
8952             UNUSED(_end_col_offset); // Only used by EXTRA macro
8953             _res = _PyAST_MatchAs ( NULL , target -> v . Name . id , EXTRA );
8954             if (_res == NULL && PyErr_Occurred()) {
8955                 p->error_indicator = 1;
8956                 p->level--;
8957                 return NULL;
8958             }
8959             goto done;
8960         }
8961         p->mark = _mark;
8962         D(fprintf(stderr, "%*c%s capture_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8963                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern_capture_target"));
8964     }
8965     _res = NULL;
8966   done:
8967     p->level--;
8968     return _res;
8969 }
8970 
8971 // pattern_capture_target: !"_" NAME !('.' | '(' | '=')
8972 static expr_ty
pattern_capture_target_rule(Parser * p)8973 pattern_capture_target_rule(Parser *p)
8974 {
8975     if (p->level++ == MAXSTACK) {
8976         p->error_indicator = 1;
8977         PyErr_NoMemory();
8978     }
8979     if (p->error_indicator) {
8980         p->level--;
8981         return NULL;
8982     }
8983     expr_ty _res = NULL;
8984     int _mark = p->mark;
8985     { // !"_" NAME !('.' | '(' | '=')
8986         if (p->error_indicator) {
8987             p->level--;
8988             return NULL;
8989         }
8990         D(fprintf(stderr, "%*c> pattern_capture_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
8991         expr_ty name;
8992         if (
8993             _PyPegen_lookahead_with_string(0, _PyPegen_expect_soft_keyword, p, "_")
8994             &&
8995             (name = _PyPegen_name_token(p))  // NAME
8996             &&
8997             _PyPegen_lookahead(0, _tmp_69_rule, p)
8998         )
8999         {
9000             D(fprintf(stderr, "%*c+ pattern_capture_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9001             _res = _PyPegen_set_expr_context ( p , name , Store );
9002             if (_res == NULL && PyErr_Occurred()) {
9003                 p->error_indicator = 1;
9004                 p->level--;
9005                 return NULL;
9006             }
9007             goto done;
9008         }
9009         p->mark = _mark;
9010         D(fprintf(stderr, "%*c%s pattern_capture_target[%d-%d]: %s failed!\n", p->level, ' ',
9011                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
9012     }
9013     _res = NULL;
9014   done:
9015     p->level--;
9016     return _res;
9017 }
9018 
9019 // wildcard_pattern: "_"
9020 static pattern_ty
wildcard_pattern_rule(Parser * p)9021 wildcard_pattern_rule(Parser *p)
9022 {
9023     if (p->level++ == MAXSTACK) {
9024         p->error_indicator = 1;
9025         PyErr_NoMemory();
9026     }
9027     if (p->error_indicator) {
9028         p->level--;
9029         return NULL;
9030     }
9031     pattern_ty _res = NULL;
9032     int _mark = p->mark;
9033     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9034         p->error_indicator = 1;
9035         p->level--;
9036         return NULL;
9037     }
9038     int _start_lineno = p->tokens[_mark]->lineno;
9039     UNUSED(_start_lineno); // Only used by EXTRA macro
9040     int _start_col_offset = p->tokens[_mark]->col_offset;
9041     UNUSED(_start_col_offset); // Only used by EXTRA macro
9042     { // "_"
9043         if (p->error_indicator) {
9044             p->level--;
9045             return NULL;
9046         }
9047         D(fprintf(stderr, "%*c> wildcard_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"_\""));
9048         expr_ty _keyword;
9049         if (
9050             (_keyword = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
9051         )
9052         {
9053             D(fprintf(stderr, "%*c+ wildcard_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"_\""));
9054             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9055             if (_token == NULL) {
9056                 p->level--;
9057                 return NULL;
9058             }
9059             int _end_lineno = _token->end_lineno;
9060             UNUSED(_end_lineno); // Only used by EXTRA macro
9061             int _end_col_offset = _token->end_col_offset;
9062             UNUSED(_end_col_offset); // Only used by EXTRA macro
9063             _res = _PyAST_MatchAs ( NULL , NULL , EXTRA );
9064             if (_res == NULL && PyErr_Occurred()) {
9065                 p->error_indicator = 1;
9066                 p->level--;
9067                 return NULL;
9068             }
9069             goto done;
9070         }
9071         p->mark = _mark;
9072         D(fprintf(stderr, "%*c%s wildcard_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9073                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"_\""));
9074     }
9075     _res = NULL;
9076   done:
9077     p->level--;
9078     return _res;
9079 }
9080 
9081 // value_pattern: attr !('.' | '(' | '=')
9082 static pattern_ty
value_pattern_rule(Parser * p)9083 value_pattern_rule(Parser *p)
9084 {
9085     if (p->level++ == MAXSTACK) {
9086         p->error_indicator = 1;
9087         PyErr_NoMemory();
9088     }
9089     if (p->error_indicator) {
9090         p->level--;
9091         return NULL;
9092     }
9093     pattern_ty _res = NULL;
9094     int _mark = p->mark;
9095     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9096         p->error_indicator = 1;
9097         p->level--;
9098         return NULL;
9099     }
9100     int _start_lineno = p->tokens[_mark]->lineno;
9101     UNUSED(_start_lineno); // Only used by EXTRA macro
9102     int _start_col_offset = p->tokens[_mark]->col_offset;
9103     UNUSED(_start_col_offset); // Only used by EXTRA macro
9104     { // attr !('.' | '(' | '=')
9105         if (p->error_indicator) {
9106             p->level--;
9107             return NULL;
9108         }
9109         D(fprintf(stderr, "%*c> value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
9110         expr_ty attr;
9111         if (
9112             (attr = attr_rule(p))  // attr
9113             &&
9114             _PyPegen_lookahead(0, _tmp_70_rule, p)
9115         )
9116         {
9117             D(fprintf(stderr, "%*c+ value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
9118             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9119             if (_token == NULL) {
9120                 p->level--;
9121                 return NULL;
9122             }
9123             int _end_lineno = _token->end_lineno;
9124             UNUSED(_end_lineno); // Only used by EXTRA macro
9125             int _end_col_offset = _token->end_col_offset;
9126             UNUSED(_end_col_offset); // Only used by EXTRA macro
9127             _res = _PyAST_MatchValue ( attr , EXTRA );
9128             if (_res == NULL && PyErr_Occurred()) {
9129                 p->error_indicator = 1;
9130                 p->level--;
9131                 return NULL;
9132             }
9133             goto done;
9134         }
9135         p->mark = _mark;
9136         D(fprintf(stderr, "%*c%s value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9137                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr !('.' | '(' | '=')"));
9138     }
9139     _res = NULL;
9140   done:
9141     p->level--;
9142     return _res;
9143 }
9144 
9145 // Left-recursive
9146 // attr: name_or_attr '.' NAME
9147 static expr_ty attr_raw(Parser *);
9148 static expr_ty
attr_rule(Parser * p)9149 attr_rule(Parser *p)
9150 {
9151     if (p->level++ == MAXSTACK) {
9152         p->error_indicator = 1;
9153         PyErr_NoMemory();
9154     }
9155     expr_ty _res = NULL;
9156     if (_PyPegen_is_memoized(p, attr_type, &_res)) {
9157         p->level--;
9158         return _res;
9159     }
9160     int _mark = p->mark;
9161     int _resmark = p->mark;
9162     while (1) {
9163         int tmpvar_1 = _PyPegen_update_memo(p, _mark, attr_type, _res);
9164         if (tmpvar_1) {
9165             p->level--;
9166             return _res;
9167         }
9168         p->mark = _mark;
9169         void *_raw = attr_raw(p);
9170         if (p->error_indicator) {
9171             p->level--;
9172             return NULL;
9173         }
9174         if (_raw == NULL || p->mark <= _resmark)
9175             break;
9176         _resmark = p->mark;
9177         _res = _raw;
9178     }
9179     p->mark = _resmark;
9180     p->level--;
9181     return _res;
9182 }
9183 static expr_ty
attr_raw(Parser * p)9184 attr_raw(Parser *p)
9185 {
9186     if (p->level++ == MAXSTACK) {
9187         p->error_indicator = 1;
9188         PyErr_NoMemory();
9189     }
9190     if (p->error_indicator) {
9191         p->level--;
9192         return NULL;
9193     }
9194     expr_ty _res = NULL;
9195     int _mark = p->mark;
9196     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9197         p->error_indicator = 1;
9198         p->level--;
9199         return NULL;
9200     }
9201     int _start_lineno = p->tokens[_mark]->lineno;
9202     UNUSED(_start_lineno); // Only used by EXTRA macro
9203     int _start_col_offset = p->tokens[_mark]->col_offset;
9204     UNUSED(_start_col_offset); // Only used by EXTRA macro
9205     { // name_or_attr '.' NAME
9206         if (p->error_indicator) {
9207             p->level--;
9208             return NULL;
9209         }
9210         D(fprintf(stderr, "%*c> attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
9211         Token * _literal;
9212         expr_ty attr;
9213         expr_ty value;
9214         if (
9215             (value = name_or_attr_rule(p))  // name_or_attr
9216             &&
9217             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
9218             &&
9219             (attr = _PyPegen_name_token(p))  // NAME
9220         )
9221         {
9222             D(fprintf(stderr, "%*c+ attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
9223             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9224             if (_token == NULL) {
9225                 p->level--;
9226                 return NULL;
9227             }
9228             int _end_lineno = _token->end_lineno;
9229             UNUSED(_end_lineno); // Only used by EXTRA macro
9230             int _end_col_offset = _token->end_col_offset;
9231             UNUSED(_end_col_offset); // Only used by EXTRA macro
9232             _res = _PyAST_Attribute ( value , attr -> v . Name . id , Load , EXTRA );
9233             if (_res == NULL && PyErr_Occurred()) {
9234                 p->error_indicator = 1;
9235                 p->level--;
9236                 return NULL;
9237             }
9238             goto done;
9239         }
9240         p->mark = _mark;
9241         D(fprintf(stderr, "%*c%s attr[%d-%d]: %s failed!\n", p->level, ' ',
9242                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '.' NAME"));
9243     }
9244     _res = NULL;
9245   done:
9246     p->level--;
9247     return _res;
9248 }
9249 
9250 // Left-recursive
9251 // name_or_attr: attr | NAME
9252 static expr_ty
name_or_attr_rule(Parser * p)9253 name_or_attr_rule(Parser *p)
9254 {
9255     if (p->level++ == MAXSTACK) {
9256         p->error_indicator = 1;
9257         PyErr_NoMemory();
9258     }
9259     if (p->error_indicator) {
9260         p->level--;
9261         return NULL;
9262     }
9263     expr_ty _res = NULL;
9264     int _mark = p->mark;
9265     { // attr
9266         if (p->error_indicator) {
9267             p->level--;
9268             return NULL;
9269         }
9270         D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
9271         expr_ty attr_var;
9272         if (
9273             (attr_var = attr_rule(p))  // attr
9274         )
9275         {
9276             D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
9277             _res = attr_var;
9278             goto done;
9279         }
9280         p->mark = _mark;
9281         D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
9282                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
9283     }
9284     { // NAME
9285         if (p->error_indicator) {
9286             p->level--;
9287             return NULL;
9288         }
9289         D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
9290         expr_ty name_var;
9291         if (
9292             (name_var = _PyPegen_name_token(p))  // NAME
9293         )
9294         {
9295             D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
9296             _res = name_var;
9297             goto done;
9298         }
9299         p->mark = _mark;
9300         D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
9301                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
9302     }
9303     _res = NULL;
9304   done:
9305     p->level--;
9306     return _res;
9307 }
9308 
9309 // group_pattern: '(' pattern ')'
9310 static pattern_ty
group_pattern_rule(Parser * p)9311 group_pattern_rule(Parser *p)
9312 {
9313     if (p->level++ == MAXSTACK) {
9314         p->error_indicator = 1;
9315         PyErr_NoMemory();
9316     }
9317     if (p->error_indicator) {
9318         p->level--;
9319         return NULL;
9320     }
9321     pattern_ty _res = NULL;
9322     int _mark = p->mark;
9323     { // '(' pattern ')'
9324         if (p->error_indicator) {
9325             p->level--;
9326             return NULL;
9327         }
9328         D(fprintf(stderr, "%*c> group_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
9329         Token * _literal;
9330         Token * _literal_1;
9331         pattern_ty pattern;
9332         if (
9333             (_literal = _PyPegen_expect_token(p, 7))  // token='('
9334             &&
9335             (pattern = pattern_rule(p))  // pattern
9336             &&
9337             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
9338         )
9339         {
9340             D(fprintf(stderr, "%*c+ group_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
9341             _res = pattern;
9342             if (_res == NULL && PyErr_Occurred()) {
9343                 p->error_indicator = 1;
9344                 p->level--;
9345                 return NULL;
9346             }
9347             goto done;
9348         }
9349         p->mark = _mark;
9350         D(fprintf(stderr, "%*c%s group_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9351                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' pattern ')'"));
9352     }
9353     _res = NULL;
9354   done:
9355     p->level--;
9356     return _res;
9357 }
9358 
9359 // sequence_pattern: '[' maybe_sequence_pattern? ']' | '(' open_sequence_pattern? ')'
9360 static pattern_ty
sequence_pattern_rule(Parser * p)9361 sequence_pattern_rule(Parser *p)
9362 {
9363     if (p->level++ == MAXSTACK) {
9364         p->error_indicator = 1;
9365         PyErr_NoMemory();
9366     }
9367     if (p->error_indicator) {
9368         p->level--;
9369         return NULL;
9370     }
9371     pattern_ty _res = NULL;
9372     int _mark = p->mark;
9373     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9374         p->error_indicator = 1;
9375         p->level--;
9376         return NULL;
9377     }
9378     int _start_lineno = p->tokens[_mark]->lineno;
9379     UNUSED(_start_lineno); // Only used by EXTRA macro
9380     int _start_col_offset = p->tokens[_mark]->col_offset;
9381     UNUSED(_start_col_offset); // Only used by EXTRA macro
9382     { // '[' maybe_sequence_pattern? ']'
9383         if (p->error_indicator) {
9384             p->level--;
9385             return NULL;
9386         }
9387         D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9388         Token * _literal;
9389         Token * _literal_1;
9390         void *patterns;
9391         if (
9392             (_literal = _PyPegen_expect_token(p, 9))  // token='['
9393             &&
9394             (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
9395             &&
9396             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
9397         )
9398         {
9399             D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9400             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9401             if (_token == NULL) {
9402                 p->level--;
9403                 return NULL;
9404             }
9405             int _end_lineno = _token->end_lineno;
9406             UNUSED(_end_lineno); // Only used by EXTRA macro
9407             int _end_col_offset = _token->end_col_offset;
9408             UNUSED(_end_col_offset); // Only used by EXTRA macro
9409             _res = _PyAST_MatchSequence ( patterns , EXTRA );
9410             if (_res == NULL && PyErr_Occurred()) {
9411                 p->error_indicator = 1;
9412                 p->level--;
9413                 return NULL;
9414             }
9415             goto done;
9416         }
9417         p->mark = _mark;
9418         D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9419                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
9420     }
9421     { // '(' open_sequence_pattern? ')'
9422         if (p->error_indicator) {
9423             p->level--;
9424             return NULL;
9425         }
9426         D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9427         Token * _literal;
9428         Token * _literal_1;
9429         void *patterns;
9430         if (
9431             (_literal = _PyPegen_expect_token(p, 7))  // token='('
9432             &&
9433             (patterns = open_sequence_pattern_rule(p), !p->error_indicator)  // open_sequence_pattern?
9434             &&
9435             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
9436         )
9437         {
9438             D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9439             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9440             if (_token == NULL) {
9441                 p->level--;
9442                 return NULL;
9443             }
9444             int _end_lineno = _token->end_lineno;
9445             UNUSED(_end_lineno); // Only used by EXTRA macro
9446             int _end_col_offset = _token->end_col_offset;
9447             UNUSED(_end_col_offset); // Only used by EXTRA macro
9448             _res = _PyAST_MatchSequence ( patterns , EXTRA );
9449             if (_res == NULL && PyErr_Occurred()) {
9450                 p->error_indicator = 1;
9451                 p->level--;
9452                 return NULL;
9453             }
9454             goto done;
9455         }
9456         p->mark = _mark;
9457         D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9458                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' open_sequence_pattern? ')'"));
9459     }
9460     _res = NULL;
9461   done:
9462     p->level--;
9463     return _res;
9464 }
9465 
9466 // open_sequence_pattern: maybe_star_pattern ',' maybe_sequence_pattern?
9467 static asdl_seq*
open_sequence_pattern_rule(Parser * p)9468 open_sequence_pattern_rule(Parser *p)
9469 {
9470     if (p->level++ == MAXSTACK) {
9471         p->error_indicator = 1;
9472         PyErr_NoMemory();
9473     }
9474     if (p->error_indicator) {
9475         p->level--;
9476         return NULL;
9477     }
9478     asdl_seq* _res = NULL;
9479     int _mark = p->mark;
9480     { // maybe_star_pattern ',' maybe_sequence_pattern?
9481         if (p->error_indicator) {
9482             p->level--;
9483             return NULL;
9484         }
9485         D(fprintf(stderr, "%*c> open_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
9486         Token * _literal;
9487         pattern_ty pattern;
9488         void *patterns;
9489         if (
9490             (pattern = maybe_star_pattern_rule(p))  // maybe_star_pattern
9491             &&
9492             (_literal = _PyPegen_expect_token(p, 12))  // token=','
9493             &&
9494             (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
9495         )
9496         {
9497             D(fprintf(stderr, "%*c+ open_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
9498             _res = _PyPegen_seq_insert_in_front ( p , pattern , patterns );
9499             if (_res == NULL && PyErr_Occurred()) {
9500                 p->error_indicator = 1;
9501                 p->level--;
9502                 return NULL;
9503             }
9504             goto done;
9505         }
9506         p->mark = _mark;
9507         D(fprintf(stderr, "%*c%s open_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9508                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
9509     }
9510     _res = NULL;
9511   done:
9512     p->level--;
9513     return _res;
9514 }
9515 
9516 // maybe_sequence_pattern: ','.maybe_star_pattern+ ','?
9517 static asdl_seq*
maybe_sequence_pattern_rule(Parser * p)9518 maybe_sequence_pattern_rule(Parser *p)
9519 {
9520     if (p->level++ == MAXSTACK) {
9521         p->error_indicator = 1;
9522         PyErr_NoMemory();
9523     }
9524     if (p->error_indicator) {
9525         p->level--;
9526         return NULL;
9527     }
9528     asdl_seq* _res = NULL;
9529     int _mark = p->mark;
9530     { // ','.maybe_star_pattern+ ','?
9531         if (p->error_indicator) {
9532             p->level--;
9533             return NULL;
9534         }
9535         D(fprintf(stderr, "%*c> maybe_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
9536         void *_opt_var;
9537         UNUSED(_opt_var); // Silence compiler warnings
9538         asdl_seq * patterns;
9539         if (
9540             (patterns = _gather_71_rule(p))  // ','.maybe_star_pattern+
9541             &&
9542             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
9543         )
9544         {
9545             D(fprintf(stderr, "%*c+ maybe_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
9546             _res = patterns;
9547             if (_res == NULL && PyErr_Occurred()) {
9548                 p->error_indicator = 1;
9549                 p->level--;
9550                 return NULL;
9551             }
9552             goto done;
9553         }
9554         p->mark = _mark;
9555         D(fprintf(stderr, "%*c%s maybe_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9556                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.maybe_star_pattern+ ','?"));
9557     }
9558     _res = NULL;
9559   done:
9560     p->level--;
9561     return _res;
9562 }
9563 
9564 // maybe_star_pattern: star_pattern | pattern
9565 static pattern_ty
maybe_star_pattern_rule(Parser * p)9566 maybe_star_pattern_rule(Parser *p)
9567 {
9568     if (p->level++ == MAXSTACK) {
9569         p->error_indicator = 1;
9570         PyErr_NoMemory();
9571     }
9572     if (p->error_indicator) {
9573         p->level--;
9574         return NULL;
9575     }
9576     pattern_ty _res = NULL;
9577     int _mark = p->mark;
9578     { // star_pattern
9579         if (p->error_indicator) {
9580             p->level--;
9581             return NULL;
9582         }
9583         D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_pattern"));
9584         pattern_ty star_pattern_var;
9585         if (
9586             (star_pattern_var = star_pattern_rule(p))  // star_pattern
9587         )
9588         {
9589             D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_pattern"));
9590             _res = star_pattern_var;
9591             goto done;
9592         }
9593         p->mark = _mark;
9594         D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9595                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_pattern"));
9596     }
9597     { // pattern
9598         if (p->error_indicator) {
9599             p->level--;
9600             return NULL;
9601         }
9602         D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
9603         pattern_ty pattern_var;
9604         if (
9605             (pattern_var = pattern_rule(p))  // pattern
9606         )
9607         {
9608             D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
9609             _res = pattern_var;
9610             goto done;
9611         }
9612         p->mark = _mark;
9613         D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9614                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
9615     }
9616     _res = NULL;
9617   done:
9618     p->level--;
9619     return _res;
9620 }
9621 
9622 // star_pattern: '*' pattern_capture_target | '*' wildcard_pattern
9623 static pattern_ty
star_pattern_rule(Parser * p)9624 star_pattern_rule(Parser *p)
9625 {
9626     if (p->level++ == MAXSTACK) {
9627         p->error_indicator = 1;
9628         PyErr_NoMemory();
9629     }
9630     if (p->error_indicator) {
9631         p->level--;
9632         return NULL;
9633     }
9634     pattern_ty _res = NULL;
9635     if (_PyPegen_is_memoized(p, star_pattern_type, &_res)) {
9636         p->level--;
9637         return _res;
9638     }
9639     int _mark = p->mark;
9640     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9641         p->error_indicator = 1;
9642         p->level--;
9643         return NULL;
9644     }
9645     int _start_lineno = p->tokens[_mark]->lineno;
9646     UNUSED(_start_lineno); // Only used by EXTRA macro
9647     int _start_col_offset = p->tokens[_mark]->col_offset;
9648     UNUSED(_start_col_offset); // Only used by EXTRA macro
9649     { // '*' pattern_capture_target
9650         if (p->error_indicator) {
9651             p->level--;
9652             return NULL;
9653         }
9654         D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
9655         Token * _literal;
9656         expr_ty target;
9657         if (
9658             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
9659             &&
9660             (target = pattern_capture_target_rule(p))  // pattern_capture_target
9661         )
9662         {
9663             D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
9664             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9665             if (_token == NULL) {
9666                 p->level--;
9667                 return NULL;
9668             }
9669             int _end_lineno = _token->end_lineno;
9670             UNUSED(_end_lineno); // Only used by EXTRA macro
9671             int _end_col_offset = _token->end_col_offset;
9672             UNUSED(_end_col_offset); // Only used by EXTRA macro
9673             _res = _PyAST_MatchStar ( target -> v . Name . id , EXTRA );
9674             if (_res == NULL && PyErr_Occurred()) {
9675                 p->error_indicator = 1;
9676                 p->level--;
9677                 return NULL;
9678             }
9679             goto done;
9680         }
9681         p->mark = _mark;
9682         D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9683                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' pattern_capture_target"));
9684     }
9685     { // '*' wildcard_pattern
9686         if (p->error_indicator) {
9687             p->level--;
9688             return NULL;
9689         }
9690         D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
9691         Token * _literal;
9692         pattern_ty wildcard_pattern_var;
9693         if (
9694             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
9695             &&
9696             (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
9697         )
9698         {
9699             D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
9700             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9701             if (_token == NULL) {
9702                 p->level--;
9703                 return NULL;
9704             }
9705             int _end_lineno = _token->end_lineno;
9706             UNUSED(_end_lineno); // Only used by EXTRA macro
9707             int _end_col_offset = _token->end_col_offset;
9708             UNUSED(_end_col_offset); // Only used by EXTRA macro
9709             _res = _PyAST_MatchStar ( NULL , EXTRA );
9710             if (_res == NULL && PyErr_Occurred()) {
9711                 p->error_indicator = 1;
9712                 p->level--;
9713                 return NULL;
9714             }
9715             goto done;
9716         }
9717         p->mark = _mark;
9718         D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9719                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' wildcard_pattern"));
9720     }
9721     _res = NULL;
9722   done:
9723     _PyPegen_insert_memo(p, _mark, star_pattern_type, _res);
9724     p->level--;
9725     return _res;
9726 }
9727 
9728 // mapping_pattern:
9729 //     | '{' '}'
9730 //     | '{' double_star_pattern ','? '}'
9731 //     | '{' items_pattern ',' double_star_pattern ','? '}'
9732 //     | '{' items_pattern ','? '}'
9733 static pattern_ty
mapping_pattern_rule(Parser * p)9734 mapping_pattern_rule(Parser *p)
9735 {
9736     if (p->level++ == MAXSTACK) {
9737         p->error_indicator = 1;
9738         PyErr_NoMemory();
9739     }
9740     if (p->error_indicator) {
9741         p->level--;
9742         return NULL;
9743     }
9744     pattern_ty _res = NULL;
9745     int _mark = p->mark;
9746     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9747         p->error_indicator = 1;
9748         p->level--;
9749         return NULL;
9750     }
9751     int _start_lineno = p->tokens[_mark]->lineno;
9752     UNUSED(_start_lineno); // Only used by EXTRA macro
9753     int _start_col_offset = p->tokens[_mark]->col_offset;
9754     UNUSED(_start_col_offset); // Only used by EXTRA macro
9755     { // '{' '}'
9756         if (p->error_indicator) {
9757             p->level--;
9758             return NULL;
9759         }
9760         D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
9761         Token * _literal;
9762         Token * _literal_1;
9763         if (
9764             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
9765             &&
9766             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
9767         )
9768         {
9769             D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
9770             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9771             if (_token == NULL) {
9772                 p->level--;
9773                 return NULL;
9774             }
9775             int _end_lineno = _token->end_lineno;
9776             UNUSED(_end_lineno); // Only used by EXTRA macro
9777             int _end_col_offset = _token->end_col_offset;
9778             UNUSED(_end_col_offset); // Only used by EXTRA macro
9779             _res = _PyAST_MatchMapping ( NULL , NULL , NULL , EXTRA );
9780             if (_res == NULL && PyErr_Occurred()) {
9781                 p->error_indicator = 1;
9782                 p->level--;
9783                 return NULL;
9784             }
9785             goto done;
9786         }
9787         p->mark = _mark;
9788         D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9789                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
9790     }
9791     { // '{' double_star_pattern ','? '}'
9792         if (p->error_indicator) {
9793             p->level--;
9794             return NULL;
9795         }
9796         D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
9797         Token * _literal;
9798         Token * _literal_1;
9799         void *_opt_var;
9800         UNUSED(_opt_var); // Silence compiler warnings
9801         expr_ty rest;
9802         if (
9803             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
9804             &&
9805             (rest = double_star_pattern_rule(p))  // double_star_pattern
9806             &&
9807             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
9808             &&
9809             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
9810         )
9811         {
9812             D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
9813             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9814             if (_token == NULL) {
9815                 p->level--;
9816                 return NULL;
9817             }
9818             int _end_lineno = _token->end_lineno;
9819             UNUSED(_end_lineno); // Only used by EXTRA macro
9820             int _end_col_offset = _token->end_col_offset;
9821             UNUSED(_end_col_offset); // Only used by EXTRA macro
9822             _res = _PyAST_MatchMapping ( NULL , NULL , rest -> v . Name . id , EXTRA );
9823             if (_res == NULL && PyErr_Occurred()) {
9824                 p->error_indicator = 1;
9825                 p->level--;
9826                 return NULL;
9827             }
9828             goto done;
9829         }
9830         p->mark = _mark;
9831         D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9832                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_star_pattern ','? '}'"));
9833     }
9834     { // '{' items_pattern ',' double_star_pattern ','? '}'
9835         if (p->error_indicator) {
9836             p->level--;
9837             return NULL;
9838         }
9839         D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
9840         Token * _literal;
9841         Token * _literal_1;
9842         Token * _literal_2;
9843         void *_opt_var;
9844         UNUSED(_opt_var); // Silence compiler warnings
9845         asdl_seq* items;
9846         expr_ty rest;
9847         if (
9848             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
9849             &&
9850             (items = items_pattern_rule(p))  // items_pattern
9851             &&
9852             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
9853             &&
9854             (rest = double_star_pattern_rule(p))  // double_star_pattern
9855             &&
9856             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
9857             &&
9858             (_literal_2 = _PyPegen_expect_token(p, 26))  // token='}'
9859         )
9860         {
9861             D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
9862             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9863             if (_token == NULL) {
9864                 p->level--;
9865                 return NULL;
9866             }
9867             int _end_lineno = _token->end_lineno;
9868             UNUSED(_end_lineno); // Only used by EXTRA macro
9869             int _end_col_offset = _token->end_col_offset;
9870             UNUSED(_end_col_offset); // Only used by EXTRA macro
9871             _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 );
9872             if (_res == NULL && PyErr_Occurred()) {
9873                 p->error_indicator = 1;
9874                 p->level--;
9875                 return NULL;
9876             }
9877             goto done;
9878         }
9879         p->mark = _mark;
9880         D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9881                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
9882     }
9883     { // '{' items_pattern ','? '}'
9884         if (p->error_indicator) {
9885             p->level--;
9886             return NULL;
9887         }
9888         D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
9889         Token * _literal;
9890         Token * _literal_1;
9891         void *_opt_var;
9892         UNUSED(_opt_var); // Silence compiler warnings
9893         asdl_seq* items;
9894         if (
9895             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
9896             &&
9897             (items = items_pattern_rule(p))  // items_pattern
9898             &&
9899             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
9900             &&
9901             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
9902         )
9903         {
9904             D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
9905             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9906             if (_token == NULL) {
9907                 p->level--;
9908                 return NULL;
9909             }
9910             int _end_lineno = _token->end_lineno;
9911             UNUSED(_end_lineno); // Only used by EXTRA macro
9912             int _end_col_offset = _token->end_col_offset;
9913             UNUSED(_end_col_offset); // Only used by EXTRA macro
9914             _res = _PyAST_MatchMapping ( CHECK ( asdl_expr_seq* , _PyPegen_get_pattern_keys ( p , items ) ) , CHECK ( asdl_pattern_seq* , _PyPegen_get_patterns ( p , items ) ) , NULL , EXTRA );
9915             if (_res == NULL && PyErr_Occurred()) {
9916                 p->error_indicator = 1;
9917                 p->level--;
9918                 return NULL;
9919             }
9920             goto done;
9921         }
9922         p->mark = _mark;
9923         D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9924                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ','? '}'"));
9925     }
9926     _res = NULL;
9927   done:
9928     p->level--;
9929     return _res;
9930 }
9931 
9932 // items_pattern: ','.key_value_pattern+
9933 static asdl_seq*
items_pattern_rule(Parser * p)9934 items_pattern_rule(Parser *p)
9935 {
9936     if (p->level++ == MAXSTACK) {
9937         p->error_indicator = 1;
9938         PyErr_NoMemory();
9939     }
9940     if (p->error_indicator) {
9941         p->level--;
9942         return NULL;
9943     }
9944     asdl_seq* _res = NULL;
9945     int _mark = p->mark;
9946     { // ','.key_value_pattern+
9947         if (p->error_indicator) {
9948             p->level--;
9949             return NULL;
9950         }
9951         D(fprintf(stderr, "%*c> items_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
9952         asdl_seq * _gather_73_var;
9953         if (
9954             (_gather_73_var = _gather_73_rule(p))  // ','.key_value_pattern+
9955         )
9956         {
9957             D(fprintf(stderr, "%*c+ items_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
9958             _res = _gather_73_var;
9959             goto done;
9960         }
9961         p->mark = _mark;
9962         D(fprintf(stderr, "%*c%s items_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9963                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.key_value_pattern+"));
9964     }
9965     _res = NULL;
9966   done:
9967     p->level--;
9968     return _res;
9969 }
9970 
9971 // key_value_pattern: (literal_expr | attr) ':' pattern
9972 static KeyPatternPair*
key_value_pattern_rule(Parser * p)9973 key_value_pattern_rule(Parser *p)
9974 {
9975     if (p->level++ == MAXSTACK) {
9976         p->error_indicator = 1;
9977         PyErr_NoMemory();
9978     }
9979     if (p->error_indicator) {
9980         p->level--;
9981         return NULL;
9982     }
9983     KeyPatternPair* _res = NULL;
9984     int _mark = p->mark;
9985     { // (literal_expr | attr) ':' pattern
9986         if (p->error_indicator) {
9987             p->level--;
9988             return NULL;
9989         }
9990         D(fprintf(stderr, "%*c> key_value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
9991         Token * _literal;
9992         void *key;
9993         pattern_ty pattern;
9994         if (
9995             (key = _tmp_75_rule(p))  // literal_expr | attr
9996             &&
9997             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
9998             &&
9999             (pattern = pattern_rule(p))  // pattern
10000         )
10001         {
10002             D(fprintf(stderr, "%*c+ key_value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10003             _res = _PyPegen_key_pattern_pair ( p , key , pattern );
10004             if (_res == NULL && PyErr_Occurred()) {
10005                 p->error_indicator = 1;
10006                 p->level--;
10007                 return NULL;
10008             }
10009             goto done;
10010         }
10011         p->mark = _mark;
10012         D(fprintf(stderr, "%*c%s key_value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10013                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(literal_expr | attr) ':' pattern"));
10014     }
10015     _res = NULL;
10016   done:
10017     p->level--;
10018     return _res;
10019 }
10020 
10021 // double_star_pattern: '**' pattern_capture_target
10022 static expr_ty
double_star_pattern_rule(Parser * p)10023 double_star_pattern_rule(Parser *p)
10024 {
10025     if (p->level++ == MAXSTACK) {
10026         p->error_indicator = 1;
10027         PyErr_NoMemory();
10028     }
10029     if (p->error_indicator) {
10030         p->level--;
10031         return NULL;
10032     }
10033     expr_ty _res = NULL;
10034     int _mark = p->mark;
10035     { // '**' pattern_capture_target
10036         if (p->error_indicator) {
10037             p->level--;
10038             return NULL;
10039         }
10040         D(fprintf(stderr, "%*c> double_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
10041         Token * _literal;
10042         expr_ty target;
10043         if (
10044             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
10045             &&
10046             (target = pattern_capture_target_rule(p))  // pattern_capture_target
10047         )
10048         {
10049             D(fprintf(stderr, "%*c+ double_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
10050             _res = target;
10051             if (_res == NULL && PyErr_Occurred()) {
10052                 p->error_indicator = 1;
10053                 p->level--;
10054                 return NULL;
10055             }
10056             goto done;
10057         }
10058         p->mark = _mark;
10059         D(fprintf(stderr, "%*c%s double_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10060                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' pattern_capture_target"));
10061     }
10062     _res = NULL;
10063   done:
10064     p->level--;
10065     return _res;
10066 }
10067 
10068 // class_pattern:
10069 //     | name_or_attr '(' ')'
10070 //     | name_or_attr '(' positional_patterns ','? ')'
10071 //     | name_or_attr '(' keyword_patterns ','? ')'
10072 //     | name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
10073 //     | invalid_class_pattern
10074 static pattern_ty
class_pattern_rule(Parser * p)10075 class_pattern_rule(Parser *p)
10076 {
10077     if (p->level++ == MAXSTACK) {
10078         p->error_indicator = 1;
10079         PyErr_NoMemory();
10080     }
10081     if (p->error_indicator) {
10082         p->level--;
10083         return NULL;
10084     }
10085     pattern_ty _res = NULL;
10086     int _mark = p->mark;
10087     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10088         p->error_indicator = 1;
10089         p->level--;
10090         return NULL;
10091     }
10092     int _start_lineno = p->tokens[_mark]->lineno;
10093     UNUSED(_start_lineno); // Only used by EXTRA macro
10094     int _start_col_offset = p->tokens[_mark]->col_offset;
10095     UNUSED(_start_col_offset); // Only used by EXTRA macro
10096     { // name_or_attr '(' ')'
10097         if (p->error_indicator) {
10098             p->level--;
10099             return NULL;
10100         }
10101         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
10102         Token * _literal;
10103         Token * _literal_1;
10104         expr_ty cls;
10105         if (
10106             (cls = name_or_attr_rule(p))  // name_or_attr
10107             &&
10108             (_literal = _PyPegen_expect_token(p, 7))  // token='('
10109             &&
10110             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10111         )
10112         {
10113             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
10114             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10115             if (_token == NULL) {
10116                 p->level--;
10117                 return NULL;
10118             }
10119             int _end_lineno = _token->end_lineno;
10120             UNUSED(_end_lineno); // Only used by EXTRA macro
10121             int _end_col_offset = _token->end_col_offset;
10122             UNUSED(_end_col_offset); // Only used by EXTRA macro
10123             _res = _PyAST_MatchClass ( cls , NULL , NULL , NULL , EXTRA );
10124             if (_res == NULL && PyErr_Occurred()) {
10125                 p->error_indicator = 1;
10126                 p->level--;
10127                 return NULL;
10128             }
10129             goto done;
10130         }
10131         p->mark = _mark;
10132         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10133                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' ')'"));
10134     }
10135     { // name_or_attr '(' positional_patterns ','? ')'
10136         if (p->error_indicator) {
10137             p->level--;
10138             return NULL;
10139         }
10140         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10141         Token * _literal;
10142         Token * _literal_1;
10143         void *_opt_var;
10144         UNUSED(_opt_var); // Silence compiler warnings
10145         expr_ty cls;
10146         asdl_pattern_seq* patterns;
10147         if (
10148             (cls = name_or_attr_rule(p))  // name_or_attr
10149             &&
10150             (_literal = _PyPegen_expect_token(p, 7))  // token='('
10151             &&
10152             (patterns = positional_patterns_rule(p))  // positional_patterns
10153             &&
10154             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10155             &&
10156             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10157         )
10158         {
10159             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10160             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10161             if (_token == NULL) {
10162                 p->level--;
10163                 return NULL;
10164             }
10165             int _end_lineno = _token->end_lineno;
10166             UNUSED(_end_lineno); // Only used by EXTRA macro
10167             int _end_col_offset = _token->end_col_offset;
10168             UNUSED(_end_col_offset); // Only used by EXTRA macro
10169             _res = _PyAST_MatchClass ( cls , patterns , NULL , NULL , EXTRA );
10170             if (_res == NULL && PyErr_Occurred()) {
10171                 p->error_indicator = 1;
10172                 p->level--;
10173                 return NULL;
10174             }
10175             goto done;
10176         }
10177         p->mark = _mark;
10178         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10179                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
10180     }
10181     { // name_or_attr '(' keyword_patterns ','? ')'
10182         if (p->error_indicator) {
10183             p->level--;
10184             return NULL;
10185         }
10186         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10187         Token * _literal;
10188         Token * _literal_1;
10189         void *_opt_var;
10190         UNUSED(_opt_var); // Silence compiler warnings
10191         expr_ty cls;
10192         asdl_seq* keywords;
10193         if (
10194             (cls = name_or_attr_rule(p))  // name_or_attr
10195             &&
10196             (_literal = _PyPegen_expect_token(p, 7))  // token='('
10197             &&
10198             (keywords = keyword_patterns_rule(p))  // keyword_patterns
10199             &&
10200             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10201             &&
10202             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
10203         )
10204         {
10205             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10206             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10207             if (_token == NULL) {
10208                 p->level--;
10209                 return NULL;
10210             }
10211             int _end_lineno = _token->end_lineno;
10212             UNUSED(_end_lineno); // Only used by EXTRA macro
10213             int _end_col_offset = _token->end_col_offset;
10214             UNUSED(_end_col_offset); // Only used by EXTRA macro
10215             _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 );
10216             if (_res == NULL && PyErr_Occurred()) {
10217                 p->error_indicator = 1;
10218                 p->level--;
10219                 return NULL;
10220             }
10221             goto done;
10222         }
10223         p->mark = _mark;
10224         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10225                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
10226     }
10227     { // name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
10228         if (p->error_indicator) {
10229             p->level--;
10230             return NULL;
10231         }
10232         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10233         Token * _literal;
10234         Token * _literal_1;
10235         Token * _literal_2;
10236         void *_opt_var;
10237         UNUSED(_opt_var); // Silence compiler warnings
10238         expr_ty cls;
10239         asdl_seq* keywords;
10240         asdl_pattern_seq* patterns;
10241         if (
10242             (cls = name_or_attr_rule(p))  // name_or_attr
10243             &&
10244             (_literal = _PyPegen_expect_token(p, 7))  // token='('
10245             &&
10246             (patterns = positional_patterns_rule(p))  // positional_patterns
10247             &&
10248             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
10249             &&
10250             (keywords = keyword_patterns_rule(p))  // keyword_patterns
10251             &&
10252             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10253             &&
10254             (_literal_2 = _PyPegen_expect_token(p, 8))  // token=')'
10255         )
10256         {
10257             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10258             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10259             if (_token == NULL) {
10260                 p->level--;
10261                 return NULL;
10262             }
10263             int _end_lineno = _token->end_lineno;
10264             UNUSED(_end_lineno); // Only used by EXTRA macro
10265             int _end_col_offset = _token->end_col_offset;
10266             UNUSED(_end_col_offset); // Only used by EXTRA macro
10267             _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 );
10268             if (_res == NULL && PyErr_Occurred()) {
10269                 p->error_indicator = 1;
10270                 p->level--;
10271                 return NULL;
10272             }
10273             goto done;
10274         }
10275         p->mark = _mark;
10276         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10277                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
10278     }
10279     if (p->call_invalid_rules) { // invalid_class_pattern
10280         if (p->error_indicator) {
10281             p->level--;
10282             return NULL;
10283         }
10284         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
10285         void *invalid_class_pattern_var;
10286         if (
10287             (invalid_class_pattern_var = invalid_class_pattern_rule(p))  // invalid_class_pattern
10288         )
10289         {
10290             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
10291             _res = invalid_class_pattern_var;
10292             goto done;
10293         }
10294         p->mark = _mark;
10295         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10296                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_pattern"));
10297     }
10298     _res = NULL;
10299   done:
10300     p->level--;
10301     return _res;
10302 }
10303 
10304 // positional_patterns: ','.pattern+
10305 static asdl_pattern_seq*
positional_patterns_rule(Parser * p)10306 positional_patterns_rule(Parser *p)
10307 {
10308     if (p->level++ == MAXSTACK) {
10309         p->error_indicator = 1;
10310         PyErr_NoMemory();
10311     }
10312     if (p->error_indicator) {
10313         p->level--;
10314         return NULL;
10315     }
10316     asdl_pattern_seq* _res = NULL;
10317     int _mark = p->mark;
10318     { // ','.pattern+
10319         if (p->error_indicator) {
10320             p->level--;
10321             return NULL;
10322         }
10323         D(fprintf(stderr, "%*c> positional_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
10324         asdl_pattern_seq* args;
10325         if (
10326             (args = (asdl_pattern_seq*)_gather_76_rule(p))  // ','.pattern+
10327         )
10328         {
10329             D(fprintf(stderr, "%*c+ positional_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
10330             _res = args;
10331             if (_res == NULL && PyErr_Occurred()) {
10332                 p->error_indicator = 1;
10333                 p->level--;
10334                 return NULL;
10335             }
10336             goto done;
10337         }
10338         p->mark = _mark;
10339         D(fprintf(stderr, "%*c%s positional_patterns[%d-%d]: %s failed!\n", p->level, ' ',
10340                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.pattern+"));
10341     }
10342     _res = NULL;
10343   done:
10344     p->level--;
10345     return _res;
10346 }
10347 
10348 // keyword_patterns: ','.keyword_pattern+
10349 static asdl_seq*
keyword_patterns_rule(Parser * p)10350 keyword_patterns_rule(Parser *p)
10351 {
10352     if (p->level++ == MAXSTACK) {
10353         p->error_indicator = 1;
10354         PyErr_NoMemory();
10355     }
10356     if (p->error_indicator) {
10357         p->level--;
10358         return NULL;
10359     }
10360     asdl_seq* _res = NULL;
10361     int _mark = p->mark;
10362     { // ','.keyword_pattern+
10363         if (p->error_indicator) {
10364             p->level--;
10365             return NULL;
10366         }
10367         D(fprintf(stderr, "%*c> keyword_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
10368         asdl_seq * _gather_78_var;
10369         if (
10370             (_gather_78_var = _gather_78_rule(p))  // ','.keyword_pattern+
10371         )
10372         {
10373             D(fprintf(stderr, "%*c+ keyword_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
10374             _res = _gather_78_var;
10375             goto done;
10376         }
10377         p->mark = _mark;
10378         D(fprintf(stderr, "%*c%s keyword_patterns[%d-%d]: %s failed!\n", p->level, ' ',
10379                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.keyword_pattern+"));
10380     }
10381     _res = NULL;
10382   done:
10383     p->level--;
10384     return _res;
10385 }
10386 
10387 // keyword_pattern: NAME '=' pattern
10388 static KeyPatternPair*
keyword_pattern_rule(Parser * p)10389 keyword_pattern_rule(Parser *p)
10390 {
10391     if (p->level++ == MAXSTACK) {
10392         p->error_indicator = 1;
10393         PyErr_NoMemory();
10394     }
10395     if (p->error_indicator) {
10396         p->level--;
10397         return NULL;
10398     }
10399     KeyPatternPair* _res = NULL;
10400     int _mark = p->mark;
10401     { // NAME '=' pattern
10402         if (p->error_indicator) {
10403             p->level--;
10404             return NULL;
10405         }
10406         D(fprintf(stderr, "%*c> keyword_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
10407         Token * _literal;
10408         expr_ty arg;
10409         pattern_ty value;
10410         if (
10411             (arg = _PyPegen_name_token(p))  // NAME
10412             &&
10413             (_literal = _PyPegen_expect_token(p, 22))  // token='='
10414             &&
10415             (value = pattern_rule(p))  // pattern
10416         )
10417         {
10418             D(fprintf(stderr, "%*c+ keyword_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
10419             _res = _PyPegen_key_pattern_pair ( p , arg , value );
10420             if (_res == NULL && PyErr_Occurred()) {
10421                 p->error_indicator = 1;
10422                 p->level--;
10423                 return NULL;
10424             }
10425             goto done;
10426         }
10427         p->mark = _mark;
10428         D(fprintf(stderr, "%*c%s keyword_pattern[%d-%d]: %s failed!\n", p->level, ' ',
10429                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' pattern"));
10430     }
10431     _res = NULL;
10432   done:
10433     p->level--;
10434     return _res;
10435 }
10436 
10437 // expressions: expression ((',' expression))+ ','? | expression ',' | expression
10438 static expr_ty
expressions_rule(Parser * p)10439 expressions_rule(Parser *p)
10440 {
10441     if (p->level++ == MAXSTACK) {
10442         p->error_indicator = 1;
10443         PyErr_NoMemory();
10444     }
10445     if (p->error_indicator) {
10446         p->level--;
10447         return NULL;
10448     }
10449     expr_ty _res = NULL;
10450     int _mark = p->mark;
10451     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10452         p->error_indicator = 1;
10453         p->level--;
10454         return NULL;
10455     }
10456     int _start_lineno = p->tokens[_mark]->lineno;
10457     UNUSED(_start_lineno); // Only used by EXTRA macro
10458     int _start_col_offset = p->tokens[_mark]->col_offset;
10459     UNUSED(_start_col_offset); // Only used by EXTRA macro
10460     { // expression ((',' expression))+ ','?
10461         if (p->error_indicator) {
10462             p->level--;
10463             return NULL;
10464         }
10465         D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
10466         void *_opt_var;
10467         UNUSED(_opt_var); // Silence compiler warnings
10468         expr_ty a;
10469         asdl_seq * b;
10470         if (
10471             (a = expression_rule(p))  // expression
10472             &&
10473             (b = _loop1_80_rule(p))  // ((',' expression))+
10474             &&
10475             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10476         )
10477         {
10478             D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
10479             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10480             if (_token == NULL) {
10481                 p->level--;
10482                 return NULL;
10483             }
10484             int _end_lineno = _token->end_lineno;
10485             UNUSED(_end_lineno); // Only used by EXTRA macro
10486             int _end_col_offset = _token->end_col_offset;
10487             UNUSED(_end_col_offset); // Only used by EXTRA macro
10488             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
10489             if (_res == NULL && PyErr_Occurred()) {
10490                 p->error_indicator = 1;
10491                 p->level--;
10492                 return NULL;
10493             }
10494             goto done;
10495         }
10496         p->mark = _mark;
10497         D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
10498                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ((',' expression))+ ','?"));
10499     }
10500     { // expression ','
10501         if (p->error_indicator) {
10502             p->level--;
10503             return NULL;
10504         }
10505         D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ','"));
10506         Token * _literal;
10507         expr_ty a;
10508         if (
10509             (a = expression_rule(p))  // expression
10510             &&
10511             (_literal = _PyPegen_expect_token(p, 12))  // token=','
10512         )
10513         {
10514             D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ','"));
10515             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10516             if (_token == NULL) {
10517                 p->level--;
10518                 return NULL;
10519             }
10520             int _end_lineno = _token->end_lineno;
10521             UNUSED(_end_lineno); // Only used by EXTRA macro
10522             int _end_col_offset = _token->end_col_offset;
10523             UNUSED(_end_col_offset); // Only used by EXTRA macro
10524             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
10525             if (_res == NULL && PyErr_Occurred()) {
10526                 p->error_indicator = 1;
10527                 p->level--;
10528                 return NULL;
10529             }
10530             goto done;
10531         }
10532         p->mark = _mark;
10533         D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
10534                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ','"));
10535     }
10536     { // expression
10537         if (p->error_indicator) {
10538             p->level--;
10539             return NULL;
10540         }
10541         D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
10542         expr_ty expression_var;
10543         if (
10544             (expression_var = expression_rule(p))  // expression
10545         )
10546         {
10547             D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
10548             _res = expression_var;
10549             goto done;
10550         }
10551         p->mark = _mark;
10552         D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
10553                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
10554     }
10555     _res = NULL;
10556   done:
10557     p->level--;
10558     return _res;
10559 }
10560 
10561 // expression:
10562 //     | invalid_expression
10563 //     | invalid_legacy_expression
10564 //     | disjunction 'if' disjunction 'else' expression
10565 //     | disjunction
10566 //     | lambdef
10567 static expr_ty
expression_rule(Parser * p)10568 expression_rule(Parser *p)
10569 {
10570     if (p->level++ == MAXSTACK) {
10571         p->error_indicator = 1;
10572         PyErr_NoMemory();
10573     }
10574     if (p->error_indicator) {
10575         p->level--;
10576         return NULL;
10577     }
10578     expr_ty _res = NULL;
10579     if (_PyPegen_is_memoized(p, expression_type, &_res)) {
10580         p->level--;
10581         return _res;
10582     }
10583     int _mark = p->mark;
10584     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10585         p->error_indicator = 1;
10586         p->level--;
10587         return NULL;
10588     }
10589     int _start_lineno = p->tokens[_mark]->lineno;
10590     UNUSED(_start_lineno); // Only used by EXTRA macro
10591     int _start_col_offset = p->tokens[_mark]->col_offset;
10592     UNUSED(_start_col_offset); // Only used by EXTRA macro
10593     if (p->call_invalid_rules) { // invalid_expression
10594         if (p->error_indicator) {
10595             p->level--;
10596             return NULL;
10597         }
10598         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
10599         void *invalid_expression_var;
10600         if (
10601             (invalid_expression_var = invalid_expression_rule(p))  // invalid_expression
10602         )
10603         {
10604             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
10605             _res = invalid_expression_var;
10606             goto done;
10607         }
10608         p->mark = _mark;
10609         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
10610                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_expression"));
10611     }
10612     if (p->call_invalid_rules) { // invalid_legacy_expression
10613         if (p->error_indicator) {
10614             p->level--;
10615             return NULL;
10616         }
10617         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
10618         void *invalid_legacy_expression_var;
10619         if (
10620             (invalid_legacy_expression_var = invalid_legacy_expression_rule(p))  // invalid_legacy_expression
10621         )
10622         {
10623             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
10624             _res = invalid_legacy_expression_var;
10625             goto done;
10626         }
10627         p->mark = _mark;
10628         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
10629                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_legacy_expression"));
10630     }
10631     { // disjunction 'if' disjunction 'else' expression
10632         if (p->error_indicator) {
10633             p->level--;
10634             return NULL;
10635         }
10636         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
10637         Token * _keyword;
10638         Token * _keyword_1;
10639         expr_ty a;
10640         expr_ty b;
10641         expr_ty c;
10642         if (
10643             (a = disjunction_rule(p))  // disjunction
10644             &&
10645             (_keyword = _PyPegen_expect_token(p, 639))  // token='if'
10646             &&
10647             (b = disjunction_rule(p))  // disjunction
10648             &&
10649             (_keyword_1 = _PyPegen_expect_token(p, 642))  // token='else'
10650             &&
10651             (c = expression_rule(p))  // expression
10652         )
10653         {
10654             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
10655             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10656             if (_token == NULL) {
10657                 p->level--;
10658                 return NULL;
10659             }
10660             int _end_lineno = _token->end_lineno;
10661             UNUSED(_end_lineno); // Only used by EXTRA macro
10662             int _end_col_offset = _token->end_col_offset;
10663             UNUSED(_end_col_offset); // Only used by EXTRA macro
10664             _res = _PyAST_IfExp ( b , a , c , EXTRA );
10665             if (_res == NULL && PyErr_Occurred()) {
10666                 p->error_indicator = 1;
10667                 p->level--;
10668                 return NULL;
10669             }
10670             goto done;
10671         }
10672         p->mark = _mark;
10673         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
10674                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
10675     }
10676     { // disjunction
10677         if (p->error_indicator) {
10678             p->level--;
10679             return NULL;
10680         }
10681         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
10682         expr_ty disjunction_var;
10683         if (
10684             (disjunction_var = disjunction_rule(p))  // disjunction
10685         )
10686         {
10687             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
10688             _res = disjunction_var;
10689             goto done;
10690         }
10691         p->mark = _mark;
10692         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
10693                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
10694     }
10695     { // lambdef
10696         if (p->error_indicator) {
10697             p->level--;
10698             return NULL;
10699         }
10700         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
10701         expr_ty lambdef_var;
10702         if (
10703             (lambdef_var = lambdef_rule(p))  // lambdef
10704         )
10705         {
10706             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
10707             _res = lambdef_var;
10708             goto done;
10709         }
10710         p->mark = _mark;
10711         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
10712                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
10713     }
10714     _res = NULL;
10715   done:
10716     _PyPegen_insert_memo(p, _mark, expression_type, _res);
10717     p->level--;
10718     return _res;
10719 }
10720 
10721 // yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
10722 static expr_ty
yield_expr_rule(Parser * p)10723 yield_expr_rule(Parser *p)
10724 {
10725     if (p->level++ == MAXSTACK) {
10726         p->error_indicator = 1;
10727         PyErr_NoMemory();
10728     }
10729     if (p->error_indicator) {
10730         p->level--;
10731         return NULL;
10732     }
10733     expr_ty _res = NULL;
10734     int _mark = p->mark;
10735     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10736         p->error_indicator = 1;
10737         p->level--;
10738         return NULL;
10739     }
10740     int _start_lineno = p->tokens[_mark]->lineno;
10741     UNUSED(_start_lineno); // Only used by EXTRA macro
10742     int _start_col_offset = p->tokens[_mark]->col_offset;
10743     UNUSED(_start_col_offset); // Only used by EXTRA macro
10744     { // 'yield' 'from' expression
10745         if (p->error_indicator) {
10746             p->level--;
10747             return NULL;
10748         }
10749         D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
10750         Token * _keyword;
10751         Token * _keyword_1;
10752         expr_ty a;
10753         if (
10754             (_keyword = _PyPegen_expect_token(p, 573))  // token='yield'
10755             &&
10756             (_keyword_1 = _PyPegen_expect_token(p, 572))  // token='from'
10757             &&
10758             (a = expression_rule(p))  // expression
10759         )
10760         {
10761             D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
10762             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10763             if (_token == NULL) {
10764                 p->level--;
10765                 return NULL;
10766             }
10767             int _end_lineno = _token->end_lineno;
10768             UNUSED(_end_lineno); // Only used by EXTRA macro
10769             int _end_col_offset = _token->end_col_offset;
10770             UNUSED(_end_col_offset); // Only used by EXTRA macro
10771             _res = _PyAST_YieldFrom ( a , EXTRA );
10772             if (_res == NULL && PyErr_Occurred()) {
10773                 p->error_indicator = 1;
10774                 p->level--;
10775                 return NULL;
10776             }
10777             goto done;
10778         }
10779         p->mark = _mark;
10780         D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
10781                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' 'from' expression"));
10782     }
10783     { // 'yield' star_expressions?
10784         if (p->error_indicator) {
10785             p->level--;
10786             return NULL;
10787         }
10788         D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
10789         Token * _keyword;
10790         void *a;
10791         if (
10792             (_keyword = _PyPegen_expect_token(p, 573))  // token='yield'
10793             &&
10794             (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
10795         )
10796         {
10797             D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
10798             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10799             if (_token == NULL) {
10800                 p->level--;
10801                 return NULL;
10802             }
10803             int _end_lineno = _token->end_lineno;
10804             UNUSED(_end_lineno); // Only used by EXTRA macro
10805             int _end_col_offset = _token->end_col_offset;
10806             UNUSED(_end_col_offset); // Only used by EXTRA macro
10807             _res = _PyAST_Yield ( a , EXTRA );
10808             if (_res == NULL && PyErr_Occurred()) {
10809                 p->error_indicator = 1;
10810                 p->level--;
10811                 return NULL;
10812             }
10813             goto done;
10814         }
10815         p->mark = _mark;
10816         D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
10817                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' star_expressions?"));
10818     }
10819     _res = NULL;
10820   done:
10821     p->level--;
10822     return _res;
10823 }
10824 
10825 // star_expressions:
10826 //     | star_expression ((',' star_expression))+ ','?
10827 //     | star_expression ','
10828 //     | star_expression
10829 static expr_ty
star_expressions_rule(Parser * p)10830 star_expressions_rule(Parser *p)
10831 {
10832     if (p->level++ == MAXSTACK) {
10833         p->error_indicator = 1;
10834         PyErr_NoMemory();
10835     }
10836     if (p->error_indicator) {
10837         p->level--;
10838         return NULL;
10839     }
10840     expr_ty _res = NULL;
10841     int _mark = p->mark;
10842     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10843         p->error_indicator = 1;
10844         p->level--;
10845         return NULL;
10846     }
10847     int _start_lineno = p->tokens[_mark]->lineno;
10848     UNUSED(_start_lineno); // Only used by EXTRA macro
10849     int _start_col_offset = p->tokens[_mark]->col_offset;
10850     UNUSED(_start_col_offset); // Only used by EXTRA macro
10851     { // star_expression ((',' star_expression))+ ','?
10852         if (p->error_indicator) {
10853             p->level--;
10854             return NULL;
10855         }
10856         D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
10857         void *_opt_var;
10858         UNUSED(_opt_var); // Silence compiler warnings
10859         expr_ty a;
10860         asdl_seq * b;
10861         if (
10862             (a = star_expression_rule(p))  // star_expression
10863             &&
10864             (b = _loop1_81_rule(p))  // ((',' star_expression))+
10865             &&
10866             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10867         )
10868         {
10869             D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
10870             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10871             if (_token == NULL) {
10872                 p->level--;
10873                 return NULL;
10874             }
10875             int _end_lineno = _token->end_lineno;
10876             UNUSED(_end_lineno); // Only used by EXTRA macro
10877             int _end_col_offset = _token->end_col_offset;
10878             UNUSED(_end_col_offset); // Only used by EXTRA macro
10879             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
10880             if (_res == NULL && PyErr_Occurred()) {
10881                 p->error_indicator = 1;
10882                 p->level--;
10883                 return NULL;
10884             }
10885             goto done;
10886         }
10887         p->mark = _mark;
10888         D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
10889                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
10890     }
10891     { // star_expression ','
10892         if (p->error_indicator) {
10893             p->level--;
10894             return NULL;
10895         }
10896         D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
10897         Token * _literal;
10898         expr_ty a;
10899         if (
10900             (a = star_expression_rule(p))  // star_expression
10901             &&
10902             (_literal = _PyPegen_expect_token(p, 12))  // token=','
10903         )
10904         {
10905             D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
10906             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10907             if (_token == NULL) {
10908                 p->level--;
10909                 return NULL;
10910             }
10911             int _end_lineno = _token->end_lineno;
10912             UNUSED(_end_lineno); // Only used by EXTRA macro
10913             int _end_col_offset = _token->end_col_offset;
10914             UNUSED(_end_col_offset); // Only used by EXTRA macro
10915             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
10916             if (_res == NULL && PyErr_Occurred()) {
10917                 p->error_indicator = 1;
10918                 p->level--;
10919                 return NULL;
10920             }
10921             goto done;
10922         }
10923         p->mark = _mark;
10924         D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
10925                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ','"));
10926     }
10927     { // star_expression
10928         if (p->error_indicator) {
10929             p->level--;
10930             return NULL;
10931         }
10932         D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression"));
10933         expr_ty star_expression_var;
10934         if (
10935             (star_expression_var = star_expression_rule(p))  // star_expression
10936         )
10937         {
10938             D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression"));
10939             _res = star_expression_var;
10940             goto done;
10941         }
10942         p->mark = _mark;
10943         D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
10944                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression"));
10945     }
10946     _res = NULL;
10947   done:
10948     p->level--;
10949     return _res;
10950 }
10951 
10952 // star_expression: '*' bitwise_or | expression
10953 static expr_ty
star_expression_rule(Parser * p)10954 star_expression_rule(Parser *p)
10955 {
10956     if (p->level++ == MAXSTACK) {
10957         p->error_indicator = 1;
10958         PyErr_NoMemory();
10959     }
10960     if (p->error_indicator) {
10961         p->level--;
10962         return NULL;
10963     }
10964     expr_ty _res = NULL;
10965     if (_PyPegen_is_memoized(p, star_expression_type, &_res)) {
10966         p->level--;
10967         return _res;
10968     }
10969     int _mark = p->mark;
10970     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10971         p->error_indicator = 1;
10972         p->level--;
10973         return NULL;
10974     }
10975     int _start_lineno = p->tokens[_mark]->lineno;
10976     UNUSED(_start_lineno); // Only used by EXTRA macro
10977     int _start_col_offset = p->tokens[_mark]->col_offset;
10978     UNUSED(_start_col_offset); // Only used by EXTRA macro
10979     { // '*' bitwise_or
10980         if (p->error_indicator) {
10981             p->level--;
10982             return NULL;
10983         }
10984         D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
10985         Token * _literal;
10986         expr_ty a;
10987         if (
10988             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
10989             &&
10990             (a = bitwise_or_rule(p))  // bitwise_or
10991         )
10992         {
10993             D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
10994             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10995             if (_token == NULL) {
10996                 p->level--;
10997                 return NULL;
10998             }
10999             int _end_lineno = _token->end_lineno;
11000             UNUSED(_end_lineno); // Only used by EXTRA macro
11001             int _end_col_offset = _token->end_col_offset;
11002             UNUSED(_end_col_offset); // Only used by EXTRA macro
11003             _res = _PyAST_Starred ( a , Load , EXTRA );
11004             if (_res == NULL && PyErr_Occurred()) {
11005                 p->error_indicator = 1;
11006                 p->level--;
11007                 return NULL;
11008             }
11009             goto done;
11010         }
11011         p->mark = _mark;
11012         D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
11013                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
11014     }
11015     { // expression
11016         if (p->error_indicator) {
11017             p->level--;
11018             return NULL;
11019         }
11020         D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
11021         expr_ty expression_var;
11022         if (
11023             (expression_var = expression_rule(p))  // expression
11024         )
11025         {
11026             D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
11027             _res = expression_var;
11028             goto done;
11029         }
11030         p->mark = _mark;
11031         D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
11032                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
11033     }
11034     _res = NULL;
11035   done:
11036     _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
11037     p->level--;
11038     return _res;
11039 }
11040 
11041 // star_named_expressions: ','.star_named_expression+ ','?
11042 static asdl_expr_seq*
star_named_expressions_rule(Parser * p)11043 star_named_expressions_rule(Parser *p)
11044 {
11045     if (p->level++ == MAXSTACK) {
11046         p->error_indicator = 1;
11047         PyErr_NoMemory();
11048     }
11049     if (p->error_indicator) {
11050         p->level--;
11051         return NULL;
11052     }
11053     asdl_expr_seq* _res = NULL;
11054     int _mark = p->mark;
11055     { // ','.star_named_expression+ ','?
11056         if (p->error_indicator) {
11057             p->level--;
11058             return NULL;
11059         }
11060         D(fprintf(stderr, "%*c> star_named_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
11061         void *_opt_var;
11062         UNUSED(_opt_var); // Silence compiler warnings
11063         asdl_expr_seq* a;
11064         if (
11065             (a = (asdl_expr_seq*)_gather_82_rule(p))  // ','.star_named_expression+
11066             &&
11067             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
11068         )
11069         {
11070             D(fprintf(stderr, "%*c+ star_named_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
11071             _res = a;
11072             if (_res == NULL && PyErr_Occurred()) {
11073                 p->error_indicator = 1;
11074                 p->level--;
11075                 return NULL;
11076             }
11077             goto done;
11078         }
11079         p->mark = _mark;
11080         D(fprintf(stderr, "%*c%s star_named_expressions[%d-%d]: %s failed!\n", p->level, ' ',
11081                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_named_expression+ ','?"));
11082     }
11083     _res = NULL;
11084   done:
11085     p->level--;
11086     return _res;
11087 }
11088 
11089 // star_named_expression: '*' bitwise_or | named_expression
11090 static expr_ty
star_named_expression_rule(Parser * p)11091 star_named_expression_rule(Parser *p)
11092 {
11093     if (p->level++ == MAXSTACK) {
11094         p->error_indicator = 1;
11095         PyErr_NoMemory();
11096     }
11097     if (p->error_indicator) {
11098         p->level--;
11099         return NULL;
11100     }
11101     expr_ty _res = NULL;
11102     int _mark = p->mark;
11103     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11104         p->error_indicator = 1;
11105         p->level--;
11106         return NULL;
11107     }
11108     int _start_lineno = p->tokens[_mark]->lineno;
11109     UNUSED(_start_lineno); // Only used by EXTRA macro
11110     int _start_col_offset = p->tokens[_mark]->col_offset;
11111     UNUSED(_start_col_offset); // Only used by EXTRA macro
11112     { // '*' bitwise_or
11113         if (p->error_indicator) {
11114             p->level--;
11115             return NULL;
11116         }
11117         D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11118         Token * _literal;
11119         expr_ty a;
11120         if (
11121             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11122             &&
11123             (a = bitwise_or_rule(p))  // bitwise_or
11124         )
11125         {
11126             D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
11127             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11128             if (_token == NULL) {
11129                 p->level--;
11130                 return NULL;
11131             }
11132             int _end_lineno = _token->end_lineno;
11133             UNUSED(_end_lineno); // Only used by EXTRA macro
11134             int _end_col_offset = _token->end_col_offset;
11135             UNUSED(_end_col_offset); // Only used by EXTRA macro
11136             _res = _PyAST_Starred ( a , Load , EXTRA );
11137             if (_res == NULL && PyErr_Occurred()) {
11138                 p->error_indicator = 1;
11139                 p->level--;
11140                 return NULL;
11141             }
11142             goto done;
11143         }
11144         p->mark = _mark;
11145         D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
11146                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
11147     }
11148     { // named_expression
11149         if (p->error_indicator) {
11150             p->level--;
11151             return NULL;
11152         }
11153         D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
11154         expr_ty named_expression_var;
11155         if (
11156             (named_expression_var = named_expression_rule(p))  // named_expression
11157         )
11158         {
11159             D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
11160             _res = named_expression_var;
11161             goto done;
11162         }
11163         p->mark = _mark;
11164         D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
11165                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
11166     }
11167     _res = NULL;
11168   done:
11169     p->level--;
11170     return _res;
11171 }
11172 
11173 // assignment_expression: NAME ':=' ~ expression
11174 static expr_ty
assignment_expression_rule(Parser * p)11175 assignment_expression_rule(Parser *p)
11176 {
11177     if (p->level++ == MAXSTACK) {
11178         p->error_indicator = 1;
11179         PyErr_NoMemory();
11180     }
11181     if (p->error_indicator) {
11182         p->level--;
11183         return NULL;
11184     }
11185     expr_ty _res = NULL;
11186     int _mark = p->mark;
11187     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11188         p->error_indicator = 1;
11189         p->level--;
11190         return NULL;
11191     }
11192     int _start_lineno = p->tokens[_mark]->lineno;
11193     UNUSED(_start_lineno); // Only used by EXTRA macro
11194     int _start_col_offset = p->tokens[_mark]->col_offset;
11195     UNUSED(_start_col_offset); // Only used by EXTRA macro
11196     { // NAME ':=' ~ expression
11197         if (p->error_indicator) {
11198             p->level--;
11199             return NULL;
11200         }
11201         D(fprintf(stderr, "%*c> assignment_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
11202         int _cut_var = 0;
11203         Token * _literal;
11204         expr_ty a;
11205         expr_ty b;
11206         if (
11207             (a = _PyPegen_name_token(p))  // NAME
11208             &&
11209             (_literal = _PyPegen_expect_token(p, 53))  // token=':='
11210             &&
11211             (_cut_var = 1)
11212             &&
11213             (b = expression_rule(p))  // expression
11214         )
11215         {
11216             D(fprintf(stderr, "%*c+ assignment_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
11217             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11218             if (_token == NULL) {
11219                 p->level--;
11220                 return NULL;
11221             }
11222             int _end_lineno = _token->end_lineno;
11223             UNUSED(_end_lineno); // Only used by EXTRA macro
11224             int _end_col_offset = _token->end_col_offset;
11225             UNUSED(_end_col_offset); // Only used by EXTRA macro
11226             _res = CHECK_VERSION ( expr_ty , 8 , "Assignment expressions are" , _PyAST_NamedExpr ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA ) );
11227             if (_res == NULL && PyErr_Occurred()) {
11228                 p->error_indicator = 1;
11229                 p->level--;
11230                 return NULL;
11231             }
11232             goto done;
11233         }
11234         p->mark = _mark;
11235         D(fprintf(stderr, "%*c%s assignment_expression[%d-%d]: %s failed!\n", p->level, ' ',
11236                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':=' ~ expression"));
11237         if (_cut_var) {
11238             p->level--;
11239             return NULL;
11240         }
11241     }
11242     _res = NULL;
11243   done:
11244     p->level--;
11245     return _res;
11246 }
11247 
11248 // named_expression: assignment_expression | invalid_named_expression | expression !':='
11249 static expr_ty
named_expression_rule(Parser * p)11250 named_expression_rule(Parser *p)
11251 {
11252     if (p->level++ == MAXSTACK) {
11253         p->error_indicator = 1;
11254         PyErr_NoMemory();
11255     }
11256     if (p->error_indicator) {
11257         p->level--;
11258         return NULL;
11259     }
11260     expr_ty _res = NULL;
11261     int _mark = p->mark;
11262     { // assignment_expression
11263         if (p->error_indicator) {
11264             p->level--;
11265             return NULL;
11266         }
11267         D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
11268         expr_ty assignment_expression_var;
11269         if (
11270             (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
11271         )
11272         {
11273             D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
11274             _res = assignment_expression_var;
11275             goto done;
11276         }
11277         p->mark = _mark;
11278         D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
11279                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
11280     }
11281     if (p->call_invalid_rules) { // invalid_named_expression
11282         if (p->error_indicator) {
11283             p->level--;
11284             return NULL;
11285         }
11286         D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
11287         void *invalid_named_expression_var;
11288         if (
11289             (invalid_named_expression_var = invalid_named_expression_rule(p))  // invalid_named_expression
11290         )
11291         {
11292             D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
11293             _res = invalid_named_expression_var;
11294             goto done;
11295         }
11296         p->mark = _mark;
11297         D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
11298                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_named_expression"));
11299     }
11300     { // expression !':='
11301         if (p->error_indicator) {
11302             p->level--;
11303             return NULL;
11304         }
11305         D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
11306         expr_ty expression_var;
11307         if (
11308             (expression_var = expression_rule(p))  // expression
11309             &&
11310             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
11311         )
11312         {
11313             D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
11314             _res = expression_var;
11315             goto done;
11316         }
11317         p->mark = _mark;
11318         D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
11319                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
11320     }
11321     _res = NULL;
11322   done:
11323     p->level--;
11324     return _res;
11325 }
11326 
11327 // disjunction: conjunction (('or' conjunction))+ | conjunction
11328 static expr_ty
disjunction_rule(Parser * p)11329 disjunction_rule(Parser *p)
11330 {
11331     if (p->level++ == MAXSTACK) {
11332         p->error_indicator = 1;
11333         PyErr_NoMemory();
11334     }
11335     if (p->error_indicator) {
11336         p->level--;
11337         return NULL;
11338     }
11339     expr_ty _res = NULL;
11340     if (_PyPegen_is_memoized(p, disjunction_type, &_res)) {
11341         p->level--;
11342         return _res;
11343     }
11344     int _mark = p->mark;
11345     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11346         p->error_indicator = 1;
11347         p->level--;
11348         return NULL;
11349     }
11350     int _start_lineno = p->tokens[_mark]->lineno;
11351     UNUSED(_start_lineno); // Only used by EXTRA macro
11352     int _start_col_offset = p->tokens[_mark]->col_offset;
11353     UNUSED(_start_col_offset); // Only used by EXTRA macro
11354     { // conjunction (('or' conjunction))+
11355         if (p->error_indicator) {
11356             p->level--;
11357             return NULL;
11358         }
11359         D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
11360         expr_ty a;
11361         asdl_seq * b;
11362         if (
11363             (a = conjunction_rule(p))  // conjunction
11364             &&
11365             (b = _loop1_84_rule(p))  // (('or' conjunction))+
11366         )
11367         {
11368             D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
11369             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11370             if (_token == NULL) {
11371                 p->level--;
11372                 return NULL;
11373             }
11374             int _end_lineno = _token->end_lineno;
11375             UNUSED(_end_lineno); // Only used by EXTRA macro
11376             int _end_col_offset = _token->end_col_offset;
11377             UNUSED(_end_col_offset); // Only used by EXTRA macro
11378             _res = _PyAST_BoolOp ( Or , CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
11379             if (_res == NULL && PyErr_Occurred()) {
11380                 p->error_indicator = 1;
11381                 p->level--;
11382                 return NULL;
11383             }
11384             goto done;
11385         }
11386         p->mark = _mark;
11387         D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
11388                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction (('or' conjunction))+"));
11389     }
11390     { // conjunction
11391         if (p->error_indicator) {
11392             p->level--;
11393             return NULL;
11394         }
11395         D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction"));
11396         expr_ty conjunction_var;
11397         if (
11398             (conjunction_var = conjunction_rule(p))  // conjunction
11399         )
11400         {
11401             D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction"));
11402             _res = conjunction_var;
11403             goto done;
11404         }
11405         p->mark = _mark;
11406         D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
11407                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction"));
11408     }
11409     _res = NULL;
11410   done:
11411     _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
11412     p->level--;
11413     return _res;
11414 }
11415 
11416 // conjunction: inversion (('and' inversion))+ | inversion
11417 static expr_ty
conjunction_rule(Parser * p)11418 conjunction_rule(Parser *p)
11419 {
11420     if (p->level++ == MAXSTACK) {
11421         p->error_indicator = 1;
11422         PyErr_NoMemory();
11423     }
11424     if (p->error_indicator) {
11425         p->level--;
11426         return NULL;
11427     }
11428     expr_ty _res = NULL;
11429     if (_PyPegen_is_memoized(p, conjunction_type, &_res)) {
11430         p->level--;
11431         return _res;
11432     }
11433     int _mark = p->mark;
11434     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11435         p->error_indicator = 1;
11436         p->level--;
11437         return NULL;
11438     }
11439     int _start_lineno = p->tokens[_mark]->lineno;
11440     UNUSED(_start_lineno); // Only used by EXTRA macro
11441     int _start_col_offset = p->tokens[_mark]->col_offset;
11442     UNUSED(_start_col_offset); // Only used by EXTRA macro
11443     { // inversion (('and' inversion))+
11444         if (p->error_indicator) {
11445             p->level--;
11446             return NULL;
11447         }
11448         D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
11449         expr_ty a;
11450         asdl_seq * b;
11451         if (
11452             (a = inversion_rule(p))  // inversion
11453             &&
11454             (b = _loop1_85_rule(p))  // (('and' inversion))+
11455         )
11456         {
11457             D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
11458             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11459             if (_token == NULL) {
11460                 p->level--;
11461                 return NULL;
11462             }
11463             int _end_lineno = _token->end_lineno;
11464             UNUSED(_end_lineno); // Only used by EXTRA macro
11465             int _end_col_offset = _token->end_col_offset;
11466             UNUSED(_end_col_offset); // Only used by EXTRA macro
11467             _res = _PyAST_BoolOp ( And , CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
11468             if (_res == NULL && PyErr_Occurred()) {
11469                 p->error_indicator = 1;
11470                 p->level--;
11471                 return NULL;
11472             }
11473             goto done;
11474         }
11475         p->mark = _mark;
11476         D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
11477                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion (('and' inversion))+"));
11478     }
11479     { // inversion
11480         if (p->error_indicator) {
11481             p->level--;
11482             return NULL;
11483         }
11484         D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion"));
11485         expr_ty inversion_var;
11486         if (
11487             (inversion_var = inversion_rule(p))  // inversion
11488         )
11489         {
11490             D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion"));
11491             _res = inversion_var;
11492             goto done;
11493         }
11494         p->mark = _mark;
11495         D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
11496                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion"));
11497     }
11498     _res = NULL;
11499   done:
11500     _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
11501     p->level--;
11502     return _res;
11503 }
11504 
11505 // inversion: 'not' inversion | comparison
11506 static expr_ty
inversion_rule(Parser * p)11507 inversion_rule(Parser *p)
11508 {
11509     if (p->level++ == MAXSTACK) {
11510         p->error_indicator = 1;
11511         PyErr_NoMemory();
11512     }
11513     if (p->error_indicator) {
11514         p->level--;
11515         return NULL;
11516     }
11517     expr_ty _res = NULL;
11518     if (_PyPegen_is_memoized(p, inversion_type, &_res)) {
11519         p->level--;
11520         return _res;
11521     }
11522     int _mark = p->mark;
11523     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11524         p->error_indicator = 1;
11525         p->level--;
11526         return NULL;
11527     }
11528     int _start_lineno = p->tokens[_mark]->lineno;
11529     UNUSED(_start_lineno); // Only used by EXTRA macro
11530     int _start_col_offset = p->tokens[_mark]->col_offset;
11531     UNUSED(_start_col_offset); // Only used by EXTRA macro
11532     { // 'not' inversion
11533         if (p->error_indicator) {
11534             p->level--;
11535             return NULL;
11536         }
11537         D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
11538         Token * _keyword;
11539         expr_ty a;
11540         if (
11541             (_keyword = _PyPegen_expect_token(p, 581))  // token='not'
11542             &&
11543             (a = inversion_rule(p))  // inversion
11544         )
11545         {
11546             D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
11547             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11548             if (_token == NULL) {
11549                 p->level--;
11550                 return NULL;
11551             }
11552             int _end_lineno = _token->end_lineno;
11553             UNUSED(_end_lineno); // Only used by EXTRA macro
11554             int _end_col_offset = _token->end_col_offset;
11555             UNUSED(_end_col_offset); // Only used by EXTRA macro
11556             _res = _PyAST_UnaryOp ( Not , a , EXTRA );
11557             if (_res == NULL && PyErr_Occurred()) {
11558                 p->error_indicator = 1;
11559                 p->level--;
11560                 return NULL;
11561             }
11562             goto done;
11563         }
11564         p->mark = _mark;
11565         D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
11566                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' inversion"));
11567     }
11568     { // comparison
11569         if (p->error_indicator) {
11570             p->level--;
11571             return NULL;
11572         }
11573         D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "comparison"));
11574         expr_ty comparison_var;
11575         if (
11576             (comparison_var = comparison_rule(p))  // comparison
11577         )
11578         {
11579             D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "comparison"));
11580             _res = comparison_var;
11581             goto done;
11582         }
11583         p->mark = _mark;
11584         D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
11585                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "comparison"));
11586     }
11587     _res = NULL;
11588   done:
11589     _PyPegen_insert_memo(p, _mark, inversion_type, _res);
11590     p->level--;
11591     return _res;
11592 }
11593 
11594 // comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
11595 static expr_ty
comparison_rule(Parser * p)11596 comparison_rule(Parser *p)
11597 {
11598     if (p->level++ == MAXSTACK) {
11599         p->error_indicator = 1;
11600         PyErr_NoMemory();
11601     }
11602     if (p->error_indicator) {
11603         p->level--;
11604         return NULL;
11605     }
11606     expr_ty _res = NULL;
11607     int _mark = p->mark;
11608     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11609         p->error_indicator = 1;
11610         p->level--;
11611         return NULL;
11612     }
11613     int _start_lineno = p->tokens[_mark]->lineno;
11614     UNUSED(_start_lineno); // Only used by EXTRA macro
11615     int _start_col_offset = p->tokens[_mark]->col_offset;
11616     UNUSED(_start_col_offset); // Only used by EXTRA macro
11617     { // bitwise_or compare_op_bitwise_or_pair+
11618         if (p->error_indicator) {
11619             p->level--;
11620             return NULL;
11621         }
11622         D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
11623         expr_ty a;
11624         asdl_seq * b;
11625         if (
11626             (a = bitwise_or_rule(p))  // bitwise_or
11627             &&
11628             (b = _loop1_86_rule(p))  // compare_op_bitwise_or_pair+
11629         )
11630         {
11631             D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
11632             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11633             if (_token == NULL) {
11634                 p->level--;
11635                 return NULL;
11636             }
11637             int _end_lineno = _token->end_lineno;
11638             UNUSED(_end_lineno); // Only used by EXTRA macro
11639             int _end_col_offset = _token->end_col_offset;
11640             UNUSED(_end_col_offset); // Only used by EXTRA macro
11641             _res = _PyAST_Compare ( a , CHECK ( asdl_int_seq* , _PyPegen_get_cmpops ( p , b ) ) , CHECK ( asdl_expr_seq* , _PyPegen_get_exprs ( p , b ) ) , EXTRA );
11642             if (_res == NULL && PyErr_Occurred()) {
11643                 p->error_indicator = 1;
11644                 p->level--;
11645                 return NULL;
11646             }
11647             goto done;
11648         }
11649         p->mark = _mark;
11650         D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
11651                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
11652     }
11653     { // bitwise_or
11654         if (p->error_indicator) {
11655             p->level--;
11656             return NULL;
11657         }
11658         D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
11659         expr_ty bitwise_or_var;
11660         if (
11661             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
11662         )
11663         {
11664             D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
11665             _res = bitwise_or_var;
11666             goto done;
11667         }
11668         p->mark = _mark;
11669         D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
11670                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or"));
11671     }
11672     _res = NULL;
11673   done:
11674     p->level--;
11675     return _res;
11676 }
11677 
11678 // compare_op_bitwise_or_pair:
11679 //     | eq_bitwise_or
11680 //     | noteq_bitwise_or
11681 //     | lte_bitwise_or
11682 //     | lt_bitwise_or
11683 //     | gte_bitwise_or
11684 //     | gt_bitwise_or
11685 //     | notin_bitwise_or
11686 //     | in_bitwise_or
11687 //     | isnot_bitwise_or
11688 //     | is_bitwise_or
11689 static CmpopExprPair*
compare_op_bitwise_or_pair_rule(Parser * p)11690 compare_op_bitwise_or_pair_rule(Parser *p)
11691 {
11692     if (p->level++ == MAXSTACK) {
11693         p->error_indicator = 1;
11694         PyErr_NoMemory();
11695     }
11696     if (p->error_indicator) {
11697         p->level--;
11698         return NULL;
11699     }
11700     CmpopExprPair* _res = NULL;
11701     int _mark = p->mark;
11702     { // eq_bitwise_or
11703         if (p->error_indicator) {
11704             p->level--;
11705             return NULL;
11706         }
11707         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
11708         CmpopExprPair* eq_bitwise_or_var;
11709         if (
11710             (eq_bitwise_or_var = eq_bitwise_or_rule(p))  // eq_bitwise_or
11711         )
11712         {
11713             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
11714             _res = eq_bitwise_or_var;
11715             goto done;
11716         }
11717         p->mark = _mark;
11718         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
11719                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "eq_bitwise_or"));
11720     }
11721     { // noteq_bitwise_or
11722         if (p->error_indicator) {
11723             p->level--;
11724             return NULL;
11725         }
11726         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
11727         CmpopExprPair* noteq_bitwise_or_var;
11728         if (
11729             (noteq_bitwise_or_var = noteq_bitwise_or_rule(p))  // noteq_bitwise_or
11730         )
11731         {
11732             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
11733             _res = noteq_bitwise_or_var;
11734             goto done;
11735         }
11736         p->mark = _mark;
11737         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
11738                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "noteq_bitwise_or"));
11739     }
11740     { // lte_bitwise_or
11741         if (p->error_indicator) {
11742             p->level--;
11743             return NULL;
11744         }
11745         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
11746         CmpopExprPair* lte_bitwise_or_var;
11747         if (
11748             (lte_bitwise_or_var = lte_bitwise_or_rule(p))  // lte_bitwise_or
11749         )
11750         {
11751             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
11752             _res = lte_bitwise_or_var;
11753             goto done;
11754         }
11755         p->mark = _mark;
11756         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
11757                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lte_bitwise_or"));
11758     }
11759     { // lt_bitwise_or
11760         if (p->error_indicator) {
11761             p->level--;
11762             return NULL;
11763         }
11764         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
11765         CmpopExprPair* lt_bitwise_or_var;
11766         if (
11767             (lt_bitwise_or_var = lt_bitwise_or_rule(p))  // lt_bitwise_or
11768         )
11769         {
11770             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
11771             _res = lt_bitwise_or_var;
11772             goto done;
11773         }
11774         p->mark = _mark;
11775         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
11776                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lt_bitwise_or"));
11777     }
11778     { // gte_bitwise_or
11779         if (p->error_indicator) {
11780             p->level--;
11781             return NULL;
11782         }
11783         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
11784         CmpopExprPair* gte_bitwise_or_var;
11785         if (
11786             (gte_bitwise_or_var = gte_bitwise_or_rule(p))  // gte_bitwise_or
11787         )
11788         {
11789             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
11790             _res = gte_bitwise_or_var;
11791             goto done;
11792         }
11793         p->mark = _mark;
11794         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
11795                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gte_bitwise_or"));
11796     }
11797     { // gt_bitwise_or
11798         if (p->error_indicator) {
11799             p->level--;
11800             return NULL;
11801         }
11802         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
11803         CmpopExprPair* gt_bitwise_or_var;
11804         if (
11805             (gt_bitwise_or_var = gt_bitwise_or_rule(p))  // gt_bitwise_or
11806         )
11807         {
11808             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
11809             _res = gt_bitwise_or_var;
11810             goto done;
11811         }
11812         p->mark = _mark;
11813         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
11814                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gt_bitwise_or"));
11815     }
11816     { // notin_bitwise_or
11817         if (p->error_indicator) {
11818             p->level--;
11819             return NULL;
11820         }
11821         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
11822         CmpopExprPair* notin_bitwise_or_var;
11823         if (
11824             (notin_bitwise_or_var = notin_bitwise_or_rule(p))  // notin_bitwise_or
11825         )
11826         {
11827             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
11828             _res = notin_bitwise_or_var;
11829             goto done;
11830         }
11831         p->mark = _mark;
11832         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
11833                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "notin_bitwise_or"));
11834     }
11835     { // in_bitwise_or
11836         if (p->error_indicator) {
11837             p->level--;
11838             return NULL;
11839         }
11840         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
11841         CmpopExprPair* in_bitwise_or_var;
11842         if (
11843             (in_bitwise_or_var = in_bitwise_or_rule(p))  // in_bitwise_or
11844         )
11845         {
11846             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
11847             _res = in_bitwise_or_var;
11848             goto done;
11849         }
11850         p->mark = _mark;
11851         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
11852                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "in_bitwise_or"));
11853     }
11854     { // isnot_bitwise_or
11855         if (p->error_indicator) {
11856             p->level--;
11857             return NULL;
11858         }
11859         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
11860         CmpopExprPair* isnot_bitwise_or_var;
11861         if (
11862             (isnot_bitwise_or_var = isnot_bitwise_or_rule(p))  // isnot_bitwise_or
11863         )
11864         {
11865             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
11866             _res = isnot_bitwise_or_var;
11867             goto done;
11868         }
11869         p->mark = _mark;
11870         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
11871                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "isnot_bitwise_or"));
11872     }
11873     { // is_bitwise_or
11874         if (p->error_indicator) {
11875             p->level--;
11876             return NULL;
11877         }
11878         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
11879         CmpopExprPair* is_bitwise_or_var;
11880         if (
11881             (is_bitwise_or_var = is_bitwise_or_rule(p))  // is_bitwise_or
11882         )
11883         {
11884             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
11885             _res = is_bitwise_or_var;
11886             goto done;
11887         }
11888         p->mark = _mark;
11889         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
11890                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "is_bitwise_or"));
11891     }
11892     _res = NULL;
11893   done:
11894     p->level--;
11895     return _res;
11896 }
11897 
11898 // eq_bitwise_or: '==' bitwise_or
11899 static CmpopExprPair*
eq_bitwise_or_rule(Parser * p)11900 eq_bitwise_or_rule(Parser *p)
11901 {
11902     if (p->level++ == MAXSTACK) {
11903         p->error_indicator = 1;
11904         PyErr_NoMemory();
11905     }
11906     if (p->error_indicator) {
11907         p->level--;
11908         return NULL;
11909     }
11910     CmpopExprPair* _res = NULL;
11911     int _mark = p->mark;
11912     { // '==' bitwise_or
11913         if (p->error_indicator) {
11914             p->level--;
11915             return NULL;
11916         }
11917         D(fprintf(stderr, "%*c> eq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
11918         Token * _literal;
11919         expr_ty a;
11920         if (
11921             (_literal = _PyPegen_expect_token(p, 27))  // token='=='
11922             &&
11923             (a = bitwise_or_rule(p))  // bitwise_or
11924         )
11925         {
11926             D(fprintf(stderr, "%*c+ eq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
11927             _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
11928             if (_res == NULL && PyErr_Occurred()) {
11929                 p->error_indicator = 1;
11930                 p->level--;
11931                 return NULL;
11932             }
11933             goto done;
11934         }
11935         p->mark = _mark;
11936         D(fprintf(stderr, "%*c%s eq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
11937                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'==' bitwise_or"));
11938     }
11939     _res = NULL;
11940   done:
11941     p->level--;
11942     return _res;
11943 }
11944 
11945 // noteq_bitwise_or: ('!=') bitwise_or
11946 static CmpopExprPair*
noteq_bitwise_or_rule(Parser * p)11947 noteq_bitwise_or_rule(Parser *p)
11948 {
11949     if (p->level++ == MAXSTACK) {
11950         p->error_indicator = 1;
11951         PyErr_NoMemory();
11952     }
11953     if (p->error_indicator) {
11954         p->level--;
11955         return NULL;
11956     }
11957     CmpopExprPair* _res = NULL;
11958     int _mark = p->mark;
11959     { // ('!=') bitwise_or
11960         if (p->error_indicator) {
11961             p->level--;
11962             return NULL;
11963         }
11964         D(fprintf(stderr, "%*c> noteq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
11965         void *_tmp_87_var;
11966         expr_ty a;
11967         if (
11968             (_tmp_87_var = _tmp_87_rule(p))  // '!='
11969             &&
11970             (a = bitwise_or_rule(p))  // bitwise_or
11971         )
11972         {
11973             D(fprintf(stderr, "%*c+ noteq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
11974             _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
11975             if (_res == NULL && PyErr_Occurred()) {
11976                 p->error_indicator = 1;
11977                 p->level--;
11978                 return NULL;
11979             }
11980             goto done;
11981         }
11982         p->mark = _mark;
11983         D(fprintf(stderr, "%*c%s noteq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
11984                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('!=') bitwise_or"));
11985     }
11986     _res = NULL;
11987   done:
11988     p->level--;
11989     return _res;
11990 }
11991 
11992 // lte_bitwise_or: '<=' bitwise_or
11993 static CmpopExprPair*
lte_bitwise_or_rule(Parser * p)11994 lte_bitwise_or_rule(Parser *p)
11995 {
11996     if (p->level++ == MAXSTACK) {
11997         p->error_indicator = 1;
11998         PyErr_NoMemory();
11999     }
12000     if (p->error_indicator) {
12001         p->level--;
12002         return NULL;
12003     }
12004     CmpopExprPair* _res = NULL;
12005     int _mark = p->mark;
12006     { // '<=' bitwise_or
12007         if (p->error_indicator) {
12008             p->level--;
12009             return NULL;
12010         }
12011         D(fprintf(stderr, "%*c> lte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12012         Token * _literal;
12013         expr_ty a;
12014         if (
12015             (_literal = _PyPegen_expect_token(p, 29))  // token='<='
12016             &&
12017             (a = bitwise_or_rule(p))  // bitwise_or
12018         )
12019         {
12020             D(fprintf(stderr, "%*c+ lte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12021             _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
12022             if (_res == NULL && PyErr_Occurred()) {
12023                 p->error_indicator = 1;
12024                 p->level--;
12025                 return NULL;
12026             }
12027             goto done;
12028         }
12029         p->mark = _mark;
12030         D(fprintf(stderr, "%*c%s lte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12031                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<=' bitwise_or"));
12032     }
12033     _res = NULL;
12034   done:
12035     p->level--;
12036     return _res;
12037 }
12038 
12039 // lt_bitwise_or: '<' bitwise_or
12040 static CmpopExprPair*
lt_bitwise_or_rule(Parser * p)12041 lt_bitwise_or_rule(Parser *p)
12042 {
12043     if (p->level++ == MAXSTACK) {
12044         p->error_indicator = 1;
12045         PyErr_NoMemory();
12046     }
12047     if (p->error_indicator) {
12048         p->level--;
12049         return NULL;
12050     }
12051     CmpopExprPair* _res = NULL;
12052     int _mark = p->mark;
12053     { // '<' bitwise_or
12054         if (p->error_indicator) {
12055             p->level--;
12056             return NULL;
12057         }
12058         D(fprintf(stderr, "%*c> lt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12059         Token * _literal;
12060         expr_ty a;
12061         if (
12062             (_literal = _PyPegen_expect_token(p, 20))  // token='<'
12063             &&
12064             (a = bitwise_or_rule(p))  // bitwise_or
12065         )
12066         {
12067             D(fprintf(stderr, "%*c+ lt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12068             _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
12069             if (_res == NULL && PyErr_Occurred()) {
12070                 p->error_indicator = 1;
12071                 p->level--;
12072                 return NULL;
12073             }
12074             goto done;
12075         }
12076         p->mark = _mark;
12077         D(fprintf(stderr, "%*c%s lt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12078                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<' bitwise_or"));
12079     }
12080     _res = NULL;
12081   done:
12082     p->level--;
12083     return _res;
12084 }
12085 
12086 // gte_bitwise_or: '>=' bitwise_or
12087 static CmpopExprPair*
gte_bitwise_or_rule(Parser * p)12088 gte_bitwise_or_rule(Parser *p)
12089 {
12090     if (p->level++ == MAXSTACK) {
12091         p->error_indicator = 1;
12092         PyErr_NoMemory();
12093     }
12094     if (p->error_indicator) {
12095         p->level--;
12096         return NULL;
12097     }
12098     CmpopExprPair* _res = NULL;
12099     int _mark = p->mark;
12100     { // '>=' bitwise_or
12101         if (p->error_indicator) {
12102             p->level--;
12103             return NULL;
12104         }
12105         D(fprintf(stderr, "%*c> gte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12106         Token * _literal;
12107         expr_ty a;
12108         if (
12109             (_literal = _PyPegen_expect_token(p, 30))  // token='>='
12110             &&
12111             (a = bitwise_or_rule(p))  // bitwise_or
12112         )
12113         {
12114             D(fprintf(stderr, "%*c+ gte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12115             _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
12116             if (_res == NULL && PyErr_Occurred()) {
12117                 p->error_indicator = 1;
12118                 p->level--;
12119                 return NULL;
12120             }
12121             goto done;
12122         }
12123         p->mark = _mark;
12124         D(fprintf(stderr, "%*c%s gte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12125                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>=' bitwise_or"));
12126     }
12127     _res = NULL;
12128   done:
12129     p->level--;
12130     return _res;
12131 }
12132 
12133 // gt_bitwise_or: '>' bitwise_or
12134 static CmpopExprPair*
gt_bitwise_or_rule(Parser * p)12135 gt_bitwise_or_rule(Parser *p)
12136 {
12137     if (p->level++ == MAXSTACK) {
12138         p->error_indicator = 1;
12139         PyErr_NoMemory();
12140     }
12141     if (p->error_indicator) {
12142         p->level--;
12143         return NULL;
12144     }
12145     CmpopExprPair* _res = NULL;
12146     int _mark = p->mark;
12147     { // '>' bitwise_or
12148         if (p->error_indicator) {
12149             p->level--;
12150             return NULL;
12151         }
12152         D(fprintf(stderr, "%*c> gt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12153         Token * _literal;
12154         expr_ty a;
12155         if (
12156             (_literal = _PyPegen_expect_token(p, 21))  // token='>'
12157             &&
12158             (a = bitwise_or_rule(p))  // bitwise_or
12159         )
12160         {
12161             D(fprintf(stderr, "%*c+ gt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12162             _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
12163             if (_res == NULL && PyErr_Occurred()) {
12164                 p->error_indicator = 1;
12165                 p->level--;
12166                 return NULL;
12167             }
12168             goto done;
12169         }
12170         p->mark = _mark;
12171         D(fprintf(stderr, "%*c%s gt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12172                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>' bitwise_or"));
12173     }
12174     _res = NULL;
12175   done:
12176     p->level--;
12177     return _res;
12178 }
12179 
12180 // notin_bitwise_or: 'not' 'in' bitwise_or
12181 static CmpopExprPair*
notin_bitwise_or_rule(Parser * p)12182 notin_bitwise_or_rule(Parser *p)
12183 {
12184     if (p->level++ == MAXSTACK) {
12185         p->error_indicator = 1;
12186         PyErr_NoMemory();
12187     }
12188     if (p->error_indicator) {
12189         p->level--;
12190         return NULL;
12191     }
12192     CmpopExprPair* _res = NULL;
12193     int _mark = p->mark;
12194     { // 'not' 'in' bitwise_or
12195         if (p->error_indicator) {
12196             p->level--;
12197             return NULL;
12198         }
12199         D(fprintf(stderr, "%*c> notin_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
12200         Token * _keyword;
12201         Token * _keyword_1;
12202         expr_ty a;
12203         if (
12204             (_keyword = _PyPegen_expect_token(p, 581))  // token='not'
12205             &&
12206             (_keyword_1 = _PyPegen_expect_token(p, 648))  // token='in'
12207             &&
12208             (a = bitwise_or_rule(p))  // bitwise_or
12209         )
12210         {
12211             D(fprintf(stderr, "%*c+ notin_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
12212             _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
12213             if (_res == NULL && PyErr_Occurred()) {
12214                 p->error_indicator = 1;
12215                 p->level--;
12216                 return NULL;
12217             }
12218             goto done;
12219         }
12220         p->mark = _mark;
12221         D(fprintf(stderr, "%*c%s notin_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12222                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' 'in' bitwise_or"));
12223     }
12224     _res = NULL;
12225   done:
12226     p->level--;
12227     return _res;
12228 }
12229 
12230 // in_bitwise_or: 'in' bitwise_or
12231 static CmpopExprPair*
in_bitwise_or_rule(Parser * p)12232 in_bitwise_or_rule(Parser *p)
12233 {
12234     if (p->level++ == MAXSTACK) {
12235         p->error_indicator = 1;
12236         PyErr_NoMemory();
12237     }
12238     if (p->error_indicator) {
12239         p->level--;
12240         return NULL;
12241     }
12242     CmpopExprPair* _res = NULL;
12243     int _mark = p->mark;
12244     { // 'in' bitwise_or
12245         if (p->error_indicator) {
12246             p->level--;
12247             return NULL;
12248         }
12249         D(fprintf(stderr, "%*c> in_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
12250         Token * _keyword;
12251         expr_ty a;
12252         if (
12253             (_keyword = _PyPegen_expect_token(p, 648))  // token='in'
12254             &&
12255             (a = bitwise_or_rule(p))  // bitwise_or
12256         )
12257         {
12258             D(fprintf(stderr, "%*c+ in_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
12259             _res = _PyPegen_cmpop_expr_pair ( p , In , a );
12260             if (_res == NULL && PyErr_Occurred()) {
12261                 p->error_indicator = 1;
12262                 p->level--;
12263                 return NULL;
12264             }
12265             goto done;
12266         }
12267         p->mark = _mark;
12268         D(fprintf(stderr, "%*c%s in_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12269                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'in' bitwise_or"));
12270     }
12271     _res = NULL;
12272   done:
12273     p->level--;
12274     return _res;
12275 }
12276 
12277 // isnot_bitwise_or: 'is' 'not' bitwise_or
12278 static CmpopExprPair*
isnot_bitwise_or_rule(Parser * p)12279 isnot_bitwise_or_rule(Parser *p)
12280 {
12281     if (p->level++ == MAXSTACK) {
12282         p->error_indicator = 1;
12283         PyErr_NoMemory();
12284     }
12285     if (p->error_indicator) {
12286         p->level--;
12287         return NULL;
12288     }
12289     CmpopExprPair* _res = NULL;
12290     int _mark = p->mark;
12291     { // 'is' 'not' bitwise_or
12292         if (p->error_indicator) {
12293             p->level--;
12294             return NULL;
12295         }
12296         D(fprintf(stderr, "%*c> isnot_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
12297         Token * _keyword;
12298         Token * _keyword_1;
12299         expr_ty a;
12300         if (
12301             (_keyword = _PyPegen_expect_token(p, 582))  // token='is'
12302             &&
12303             (_keyword_1 = _PyPegen_expect_token(p, 581))  // token='not'
12304             &&
12305             (a = bitwise_or_rule(p))  // bitwise_or
12306         )
12307         {
12308             D(fprintf(stderr, "%*c+ isnot_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
12309             _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
12310             if (_res == NULL && PyErr_Occurred()) {
12311                 p->error_indicator = 1;
12312                 p->level--;
12313                 return NULL;
12314             }
12315             goto done;
12316         }
12317         p->mark = _mark;
12318         D(fprintf(stderr, "%*c%s isnot_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12319                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' 'not' bitwise_or"));
12320     }
12321     _res = NULL;
12322   done:
12323     p->level--;
12324     return _res;
12325 }
12326 
12327 // is_bitwise_or: 'is' bitwise_or
12328 static CmpopExprPair*
is_bitwise_or_rule(Parser * p)12329 is_bitwise_or_rule(Parser *p)
12330 {
12331     if (p->level++ == MAXSTACK) {
12332         p->error_indicator = 1;
12333         PyErr_NoMemory();
12334     }
12335     if (p->error_indicator) {
12336         p->level--;
12337         return NULL;
12338     }
12339     CmpopExprPair* _res = NULL;
12340     int _mark = p->mark;
12341     { // 'is' bitwise_or
12342         if (p->error_indicator) {
12343             p->level--;
12344             return NULL;
12345         }
12346         D(fprintf(stderr, "%*c> is_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
12347         Token * _keyword;
12348         expr_ty a;
12349         if (
12350             (_keyword = _PyPegen_expect_token(p, 582))  // token='is'
12351             &&
12352             (a = bitwise_or_rule(p))  // bitwise_or
12353         )
12354         {
12355             D(fprintf(stderr, "%*c+ is_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
12356             _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
12357             if (_res == NULL && PyErr_Occurred()) {
12358                 p->error_indicator = 1;
12359                 p->level--;
12360                 return NULL;
12361             }
12362             goto done;
12363         }
12364         p->mark = _mark;
12365         D(fprintf(stderr, "%*c%s is_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12366                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' bitwise_or"));
12367     }
12368     _res = NULL;
12369   done:
12370     p->level--;
12371     return _res;
12372 }
12373 
12374 // Left-recursive
12375 // bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
12376 static expr_ty bitwise_or_raw(Parser *);
12377 static expr_ty
bitwise_or_rule(Parser * p)12378 bitwise_or_rule(Parser *p)
12379 {
12380     if (p->level++ == MAXSTACK) {
12381         p->error_indicator = 1;
12382         PyErr_NoMemory();
12383     }
12384     expr_ty _res = NULL;
12385     if (_PyPegen_is_memoized(p, bitwise_or_type, &_res)) {
12386         p->level--;
12387         return _res;
12388     }
12389     int _mark = p->mark;
12390     int _resmark = p->mark;
12391     while (1) {
12392         int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
12393         if (tmpvar_2) {
12394             p->level--;
12395             return _res;
12396         }
12397         p->mark = _mark;
12398         void *_raw = bitwise_or_raw(p);
12399         if (p->error_indicator) {
12400             p->level--;
12401             return NULL;
12402         }
12403         if (_raw == NULL || p->mark <= _resmark)
12404             break;
12405         _resmark = p->mark;
12406         _res = _raw;
12407     }
12408     p->mark = _resmark;
12409     p->level--;
12410     return _res;
12411 }
12412 static expr_ty
bitwise_or_raw(Parser * p)12413 bitwise_or_raw(Parser *p)
12414 {
12415     if (p->level++ == MAXSTACK) {
12416         p->error_indicator = 1;
12417         PyErr_NoMemory();
12418     }
12419     if (p->error_indicator) {
12420         p->level--;
12421         return NULL;
12422     }
12423     expr_ty _res = NULL;
12424     int _mark = p->mark;
12425     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12426         p->error_indicator = 1;
12427         p->level--;
12428         return NULL;
12429     }
12430     int _start_lineno = p->tokens[_mark]->lineno;
12431     UNUSED(_start_lineno); // Only used by EXTRA macro
12432     int _start_col_offset = p->tokens[_mark]->col_offset;
12433     UNUSED(_start_col_offset); // Only used by EXTRA macro
12434     { // bitwise_or '|' bitwise_xor
12435         if (p->error_indicator) {
12436             p->level--;
12437             return NULL;
12438         }
12439         D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
12440         Token * _literal;
12441         expr_ty a;
12442         expr_ty b;
12443         if (
12444             (a = bitwise_or_rule(p))  // bitwise_or
12445             &&
12446             (_literal = _PyPegen_expect_token(p, 18))  // token='|'
12447             &&
12448             (b = bitwise_xor_rule(p))  // bitwise_xor
12449         )
12450         {
12451             D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
12452             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12453             if (_token == NULL) {
12454                 p->level--;
12455                 return NULL;
12456             }
12457             int _end_lineno = _token->end_lineno;
12458             UNUSED(_end_lineno); // Only used by EXTRA macro
12459             int _end_col_offset = _token->end_col_offset;
12460             UNUSED(_end_col_offset); // Only used by EXTRA macro
12461             _res = _PyAST_BinOp ( a , BitOr , b , EXTRA );
12462             if (_res == NULL && PyErr_Occurred()) {
12463                 p->error_indicator = 1;
12464                 p->level--;
12465                 return NULL;
12466             }
12467             goto done;
12468         }
12469         p->mark = _mark;
12470         D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12471                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or '|' bitwise_xor"));
12472     }
12473     { // bitwise_xor
12474         if (p->error_indicator) {
12475             p->level--;
12476             return NULL;
12477         }
12478         D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
12479         expr_ty bitwise_xor_var;
12480         if (
12481             (bitwise_xor_var = bitwise_xor_rule(p))  // bitwise_xor
12482         )
12483         {
12484             D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
12485             _res = bitwise_xor_var;
12486             goto done;
12487         }
12488         p->mark = _mark;
12489         D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12490                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor"));
12491     }
12492     _res = NULL;
12493   done:
12494     p->level--;
12495     return _res;
12496 }
12497 
12498 // Left-recursive
12499 // bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
12500 static expr_ty bitwise_xor_raw(Parser *);
12501 static expr_ty
bitwise_xor_rule(Parser * p)12502 bitwise_xor_rule(Parser *p)
12503 {
12504     if (p->level++ == MAXSTACK) {
12505         p->error_indicator = 1;
12506         PyErr_NoMemory();
12507     }
12508     expr_ty _res = NULL;
12509     if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res)) {
12510         p->level--;
12511         return _res;
12512     }
12513     int _mark = p->mark;
12514     int _resmark = p->mark;
12515     while (1) {
12516         int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
12517         if (tmpvar_3) {
12518             p->level--;
12519             return _res;
12520         }
12521         p->mark = _mark;
12522         void *_raw = bitwise_xor_raw(p);
12523         if (p->error_indicator) {
12524             p->level--;
12525             return NULL;
12526         }
12527         if (_raw == NULL || p->mark <= _resmark)
12528             break;
12529         _resmark = p->mark;
12530         _res = _raw;
12531     }
12532     p->mark = _resmark;
12533     p->level--;
12534     return _res;
12535 }
12536 static expr_ty
bitwise_xor_raw(Parser * p)12537 bitwise_xor_raw(Parser *p)
12538 {
12539     if (p->level++ == MAXSTACK) {
12540         p->error_indicator = 1;
12541         PyErr_NoMemory();
12542     }
12543     if (p->error_indicator) {
12544         p->level--;
12545         return NULL;
12546     }
12547     expr_ty _res = NULL;
12548     int _mark = p->mark;
12549     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12550         p->error_indicator = 1;
12551         p->level--;
12552         return NULL;
12553     }
12554     int _start_lineno = p->tokens[_mark]->lineno;
12555     UNUSED(_start_lineno); // Only used by EXTRA macro
12556     int _start_col_offset = p->tokens[_mark]->col_offset;
12557     UNUSED(_start_col_offset); // Only used by EXTRA macro
12558     { // bitwise_xor '^' bitwise_and
12559         if (p->error_indicator) {
12560             p->level--;
12561             return NULL;
12562         }
12563         D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
12564         Token * _literal;
12565         expr_ty a;
12566         expr_ty b;
12567         if (
12568             (a = bitwise_xor_rule(p))  // bitwise_xor
12569             &&
12570             (_literal = _PyPegen_expect_token(p, 32))  // token='^'
12571             &&
12572             (b = bitwise_and_rule(p))  // bitwise_and
12573         )
12574         {
12575             D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
12576             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12577             if (_token == NULL) {
12578                 p->level--;
12579                 return NULL;
12580             }
12581             int _end_lineno = _token->end_lineno;
12582             UNUSED(_end_lineno); // Only used by EXTRA macro
12583             int _end_col_offset = _token->end_col_offset;
12584             UNUSED(_end_col_offset); // Only used by EXTRA macro
12585             _res = _PyAST_BinOp ( a , BitXor , b , EXTRA );
12586             if (_res == NULL && PyErr_Occurred()) {
12587                 p->error_indicator = 1;
12588                 p->level--;
12589                 return NULL;
12590             }
12591             goto done;
12592         }
12593         p->mark = _mark;
12594         D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
12595                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor '^' bitwise_and"));
12596     }
12597     { // bitwise_and
12598         if (p->error_indicator) {
12599             p->level--;
12600             return NULL;
12601         }
12602         D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
12603         expr_ty bitwise_and_var;
12604         if (
12605             (bitwise_and_var = bitwise_and_rule(p))  // bitwise_and
12606         )
12607         {
12608             D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
12609             _res = bitwise_and_var;
12610             goto done;
12611         }
12612         p->mark = _mark;
12613         D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
12614                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and"));
12615     }
12616     _res = NULL;
12617   done:
12618     p->level--;
12619     return _res;
12620 }
12621 
12622 // Left-recursive
12623 // bitwise_and: bitwise_and '&' shift_expr | shift_expr
12624 static expr_ty bitwise_and_raw(Parser *);
12625 static expr_ty
bitwise_and_rule(Parser * p)12626 bitwise_and_rule(Parser *p)
12627 {
12628     if (p->level++ == MAXSTACK) {
12629         p->error_indicator = 1;
12630         PyErr_NoMemory();
12631     }
12632     expr_ty _res = NULL;
12633     if (_PyPegen_is_memoized(p, bitwise_and_type, &_res)) {
12634         p->level--;
12635         return _res;
12636     }
12637     int _mark = p->mark;
12638     int _resmark = p->mark;
12639     while (1) {
12640         int tmpvar_4 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
12641         if (tmpvar_4) {
12642             p->level--;
12643             return _res;
12644         }
12645         p->mark = _mark;
12646         void *_raw = bitwise_and_raw(p);
12647         if (p->error_indicator) {
12648             p->level--;
12649             return NULL;
12650         }
12651         if (_raw == NULL || p->mark <= _resmark)
12652             break;
12653         _resmark = p->mark;
12654         _res = _raw;
12655     }
12656     p->mark = _resmark;
12657     p->level--;
12658     return _res;
12659 }
12660 static expr_ty
bitwise_and_raw(Parser * p)12661 bitwise_and_raw(Parser *p)
12662 {
12663     if (p->level++ == MAXSTACK) {
12664         p->error_indicator = 1;
12665         PyErr_NoMemory();
12666     }
12667     if (p->error_indicator) {
12668         p->level--;
12669         return NULL;
12670     }
12671     expr_ty _res = NULL;
12672     int _mark = p->mark;
12673     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12674         p->error_indicator = 1;
12675         p->level--;
12676         return NULL;
12677     }
12678     int _start_lineno = p->tokens[_mark]->lineno;
12679     UNUSED(_start_lineno); // Only used by EXTRA macro
12680     int _start_col_offset = p->tokens[_mark]->col_offset;
12681     UNUSED(_start_col_offset); // Only used by EXTRA macro
12682     { // bitwise_and '&' shift_expr
12683         if (p->error_indicator) {
12684             p->level--;
12685             return NULL;
12686         }
12687         D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
12688         Token * _literal;
12689         expr_ty a;
12690         expr_ty b;
12691         if (
12692             (a = bitwise_and_rule(p))  // bitwise_and
12693             &&
12694             (_literal = _PyPegen_expect_token(p, 19))  // token='&'
12695             &&
12696             (b = shift_expr_rule(p))  // shift_expr
12697         )
12698         {
12699             D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
12700             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12701             if (_token == NULL) {
12702                 p->level--;
12703                 return NULL;
12704             }
12705             int _end_lineno = _token->end_lineno;
12706             UNUSED(_end_lineno); // Only used by EXTRA macro
12707             int _end_col_offset = _token->end_col_offset;
12708             UNUSED(_end_col_offset); // Only used by EXTRA macro
12709             _res = _PyAST_BinOp ( a , BitAnd , b , EXTRA );
12710             if (_res == NULL && PyErr_Occurred()) {
12711                 p->error_indicator = 1;
12712                 p->level--;
12713                 return NULL;
12714             }
12715             goto done;
12716         }
12717         p->mark = _mark;
12718         D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
12719                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and '&' shift_expr"));
12720     }
12721     { // shift_expr
12722         if (p->error_indicator) {
12723             p->level--;
12724             return NULL;
12725         }
12726         D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr"));
12727         expr_ty shift_expr_var;
12728         if (
12729             (shift_expr_var = shift_expr_rule(p))  // shift_expr
12730         )
12731         {
12732             D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr"));
12733             _res = shift_expr_var;
12734             goto done;
12735         }
12736         p->mark = _mark;
12737         D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
12738                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr"));
12739     }
12740     _res = NULL;
12741   done:
12742     p->level--;
12743     return _res;
12744 }
12745 
12746 // Left-recursive
12747 // shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | sum
12748 static expr_ty shift_expr_raw(Parser *);
12749 static expr_ty
shift_expr_rule(Parser * p)12750 shift_expr_rule(Parser *p)
12751 {
12752     if (p->level++ == MAXSTACK) {
12753         p->error_indicator = 1;
12754         PyErr_NoMemory();
12755     }
12756     expr_ty _res = NULL;
12757     if (_PyPegen_is_memoized(p, shift_expr_type, &_res)) {
12758         p->level--;
12759         return _res;
12760     }
12761     int _mark = p->mark;
12762     int _resmark = p->mark;
12763     while (1) {
12764         int tmpvar_5 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
12765         if (tmpvar_5) {
12766             p->level--;
12767             return _res;
12768         }
12769         p->mark = _mark;
12770         void *_raw = shift_expr_raw(p);
12771         if (p->error_indicator) {
12772             p->level--;
12773             return NULL;
12774         }
12775         if (_raw == NULL || p->mark <= _resmark)
12776             break;
12777         _resmark = p->mark;
12778         _res = _raw;
12779     }
12780     p->mark = _resmark;
12781     p->level--;
12782     return _res;
12783 }
12784 static expr_ty
shift_expr_raw(Parser * p)12785 shift_expr_raw(Parser *p)
12786 {
12787     if (p->level++ == MAXSTACK) {
12788         p->error_indicator = 1;
12789         PyErr_NoMemory();
12790     }
12791     if (p->error_indicator) {
12792         p->level--;
12793         return NULL;
12794     }
12795     expr_ty _res = NULL;
12796     int _mark = p->mark;
12797     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12798         p->error_indicator = 1;
12799         p->level--;
12800         return NULL;
12801     }
12802     int _start_lineno = p->tokens[_mark]->lineno;
12803     UNUSED(_start_lineno); // Only used by EXTRA macro
12804     int _start_col_offset = p->tokens[_mark]->col_offset;
12805     UNUSED(_start_col_offset); // Only used by EXTRA macro
12806     { // shift_expr '<<' sum
12807         if (p->error_indicator) {
12808             p->level--;
12809             return NULL;
12810         }
12811         D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
12812         Token * _literal;
12813         expr_ty a;
12814         expr_ty b;
12815         if (
12816             (a = shift_expr_rule(p))  // shift_expr
12817             &&
12818             (_literal = _PyPegen_expect_token(p, 33))  // token='<<'
12819             &&
12820             (b = sum_rule(p))  // sum
12821         )
12822         {
12823             D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
12824             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12825             if (_token == NULL) {
12826                 p->level--;
12827                 return NULL;
12828             }
12829             int _end_lineno = _token->end_lineno;
12830             UNUSED(_end_lineno); // Only used by EXTRA macro
12831             int _end_col_offset = _token->end_col_offset;
12832             UNUSED(_end_col_offset); // Only used by EXTRA macro
12833             _res = _PyAST_BinOp ( a , LShift , b , EXTRA );
12834             if (_res == NULL && PyErr_Occurred()) {
12835                 p->error_indicator = 1;
12836                 p->level--;
12837                 return NULL;
12838             }
12839             goto done;
12840         }
12841         p->mark = _mark;
12842         D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
12843                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '<<' sum"));
12844     }
12845     { // shift_expr '>>' sum
12846         if (p->error_indicator) {
12847             p->level--;
12848             return NULL;
12849         }
12850         D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
12851         Token * _literal;
12852         expr_ty a;
12853         expr_ty b;
12854         if (
12855             (a = shift_expr_rule(p))  // shift_expr
12856             &&
12857             (_literal = _PyPegen_expect_token(p, 34))  // token='>>'
12858             &&
12859             (b = sum_rule(p))  // sum
12860         )
12861         {
12862             D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
12863             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12864             if (_token == NULL) {
12865                 p->level--;
12866                 return NULL;
12867             }
12868             int _end_lineno = _token->end_lineno;
12869             UNUSED(_end_lineno); // Only used by EXTRA macro
12870             int _end_col_offset = _token->end_col_offset;
12871             UNUSED(_end_col_offset); // Only used by EXTRA macro
12872             _res = _PyAST_BinOp ( a , RShift , b , EXTRA );
12873             if (_res == NULL && PyErr_Occurred()) {
12874                 p->error_indicator = 1;
12875                 p->level--;
12876                 return NULL;
12877             }
12878             goto done;
12879         }
12880         p->mark = _mark;
12881         D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
12882                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '>>' sum"));
12883     }
12884     { // sum
12885         if (p->error_indicator) {
12886             p->level--;
12887             return NULL;
12888         }
12889         D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum"));
12890         expr_ty sum_var;
12891         if (
12892             (sum_var = sum_rule(p))  // sum
12893         )
12894         {
12895             D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum"));
12896             _res = sum_var;
12897             goto done;
12898         }
12899         p->mark = _mark;
12900         D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
12901                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum"));
12902     }
12903     _res = NULL;
12904   done:
12905     p->level--;
12906     return _res;
12907 }
12908 
12909 // Left-recursive
12910 // sum: sum '+' term | sum '-' term | term
12911 static expr_ty sum_raw(Parser *);
12912 static expr_ty
sum_rule(Parser * p)12913 sum_rule(Parser *p)
12914 {
12915     if (p->level++ == MAXSTACK) {
12916         p->error_indicator = 1;
12917         PyErr_NoMemory();
12918     }
12919     expr_ty _res = NULL;
12920     if (_PyPegen_is_memoized(p, sum_type, &_res)) {
12921         p->level--;
12922         return _res;
12923     }
12924     int _mark = p->mark;
12925     int _resmark = p->mark;
12926     while (1) {
12927         int tmpvar_6 = _PyPegen_update_memo(p, _mark, sum_type, _res);
12928         if (tmpvar_6) {
12929             p->level--;
12930             return _res;
12931         }
12932         p->mark = _mark;
12933         void *_raw = sum_raw(p);
12934         if (p->error_indicator) {
12935             p->level--;
12936             return NULL;
12937         }
12938         if (_raw == NULL || p->mark <= _resmark)
12939             break;
12940         _resmark = p->mark;
12941         _res = _raw;
12942     }
12943     p->mark = _resmark;
12944     p->level--;
12945     return _res;
12946 }
12947 static expr_ty
sum_raw(Parser * p)12948 sum_raw(Parser *p)
12949 {
12950     if (p->level++ == MAXSTACK) {
12951         p->error_indicator = 1;
12952         PyErr_NoMemory();
12953     }
12954     if (p->error_indicator) {
12955         p->level--;
12956         return NULL;
12957     }
12958     expr_ty _res = NULL;
12959     int _mark = p->mark;
12960     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12961         p->error_indicator = 1;
12962         p->level--;
12963         return NULL;
12964     }
12965     int _start_lineno = p->tokens[_mark]->lineno;
12966     UNUSED(_start_lineno); // Only used by EXTRA macro
12967     int _start_col_offset = p->tokens[_mark]->col_offset;
12968     UNUSED(_start_col_offset); // Only used by EXTRA macro
12969     { // sum '+' term
12970         if (p->error_indicator) {
12971             p->level--;
12972             return NULL;
12973         }
12974         D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
12975         Token * _literal;
12976         expr_ty a;
12977         expr_ty b;
12978         if (
12979             (a = sum_rule(p))  // sum
12980             &&
12981             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
12982             &&
12983             (b = term_rule(p))  // term
12984         )
12985         {
12986             D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
12987             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12988             if (_token == NULL) {
12989                 p->level--;
12990                 return NULL;
12991             }
12992             int _end_lineno = _token->end_lineno;
12993             UNUSED(_end_lineno); // Only used by EXTRA macro
12994             int _end_col_offset = _token->end_col_offset;
12995             UNUSED(_end_col_offset); // Only used by EXTRA macro
12996             _res = _PyAST_BinOp ( a , Add , b , EXTRA );
12997             if (_res == NULL && PyErr_Occurred()) {
12998                 p->error_indicator = 1;
12999                 p->level--;
13000                 return NULL;
13001             }
13002             goto done;
13003         }
13004         p->mark = _mark;
13005         D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13006                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '+' term"));
13007     }
13008     { // sum '-' term
13009         if (p->error_indicator) {
13010             p->level--;
13011             return NULL;
13012         }
13013         D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13014         Token * _literal;
13015         expr_ty a;
13016         expr_ty b;
13017         if (
13018             (a = sum_rule(p))  // sum
13019             &&
13020             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
13021             &&
13022             (b = term_rule(p))  // term
13023         )
13024         {
13025             D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13026             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13027             if (_token == NULL) {
13028                 p->level--;
13029                 return NULL;
13030             }
13031             int _end_lineno = _token->end_lineno;
13032             UNUSED(_end_lineno); // Only used by EXTRA macro
13033             int _end_col_offset = _token->end_col_offset;
13034             UNUSED(_end_col_offset); // Only used by EXTRA macro
13035             _res = _PyAST_BinOp ( a , Sub , b , EXTRA );
13036             if (_res == NULL && PyErr_Occurred()) {
13037                 p->error_indicator = 1;
13038                 p->level--;
13039                 return NULL;
13040             }
13041             goto done;
13042         }
13043         p->mark = _mark;
13044         D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13045                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '-' term"));
13046     }
13047     { // term
13048         if (p->error_indicator) {
13049             p->level--;
13050             return NULL;
13051         }
13052         D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term"));
13053         expr_ty term_var;
13054         if (
13055             (term_var = term_rule(p))  // term
13056         )
13057         {
13058             D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term"));
13059             _res = term_var;
13060             goto done;
13061         }
13062         p->mark = _mark;
13063         D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13064                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term"));
13065     }
13066     _res = NULL;
13067   done:
13068     p->level--;
13069     return _res;
13070 }
13071 
13072 // Left-recursive
13073 // term:
13074 //     | term '*' factor
13075 //     | term '/' factor
13076 //     | term '//' factor
13077 //     | term '%' factor
13078 //     | term '@' factor
13079 //     | factor
13080 static expr_ty term_raw(Parser *);
13081 static expr_ty
term_rule(Parser * p)13082 term_rule(Parser *p)
13083 {
13084     if (p->level++ == MAXSTACK) {
13085         p->error_indicator = 1;
13086         PyErr_NoMemory();
13087     }
13088     expr_ty _res = NULL;
13089     if (_PyPegen_is_memoized(p, term_type, &_res)) {
13090         p->level--;
13091         return _res;
13092     }
13093     int _mark = p->mark;
13094     int _resmark = p->mark;
13095     while (1) {
13096         int tmpvar_7 = _PyPegen_update_memo(p, _mark, term_type, _res);
13097         if (tmpvar_7) {
13098             p->level--;
13099             return _res;
13100         }
13101         p->mark = _mark;
13102         void *_raw = term_raw(p);
13103         if (p->error_indicator) {
13104             p->level--;
13105             return NULL;
13106         }
13107         if (_raw == NULL || p->mark <= _resmark)
13108             break;
13109         _resmark = p->mark;
13110         _res = _raw;
13111     }
13112     p->mark = _resmark;
13113     p->level--;
13114     return _res;
13115 }
13116 static expr_ty
term_raw(Parser * p)13117 term_raw(Parser *p)
13118 {
13119     if (p->level++ == MAXSTACK) {
13120         p->error_indicator = 1;
13121         PyErr_NoMemory();
13122     }
13123     if (p->error_indicator) {
13124         p->level--;
13125         return NULL;
13126     }
13127     expr_ty _res = NULL;
13128     int _mark = p->mark;
13129     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13130         p->error_indicator = 1;
13131         p->level--;
13132         return NULL;
13133     }
13134     int _start_lineno = p->tokens[_mark]->lineno;
13135     UNUSED(_start_lineno); // Only used by EXTRA macro
13136     int _start_col_offset = p->tokens[_mark]->col_offset;
13137     UNUSED(_start_col_offset); // Only used by EXTRA macro
13138     { // term '*' factor
13139         if (p->error_indicator) {
13140             p->level--;
13141             return NULL;
13142         }
13143         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13144         Token * _literal;
13145         expr_ty a;
13146         expr_ty b;
13147         if (
13148             (a = term_rule(p))  // term
13149             &&
13150             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
13151             &&
13152             (b = factor_rule(p))  // factor
13153         )
13154         {
13155             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13156             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13157             if (_token == NULL) {
13158                 p->level--;
13159                 return NULL;
13160             }
13161             int _end_lineno = _token->end_lineno;
13162             UNUSED(_end_lineno); // Only used by EXTRA macro
13163             int _end_col_offset = _token->end_col_offset;
13164             UNUSED(_end_col_offset); // Only used by EXTRA macro
13165             _res = _PyAST_BinOp ( a , Mult , b , EXTRA );
13166             if (_res == NULL && PyErr_Occurred()) {
13167                 p->error_indicator = 1;
13168                 p->level--;
13169                 return NULL;
13170             }
13171             goto done;
13172         }
13173         p->mark = _mark;
13174         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13175                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '*' factor"));
13176     }
13177     { // term '/' factor
13178         if (p->error_indicator) {
13179             p->level--;
13180             return NULL;
13181         }
13182         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
13183         Token * _literal;
13184         expr_ty a;
13185         expr_ty b;
13186         if (
13187             (a = term_rule(p))  // term
13188             &&
13189             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
13190             &&
13191             (b = factor_rule(p))  // factor
13192         )
13193         {
13194             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
13195             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13196             if (_token == NULL) {
13197                 p->level--;
13198                 return NULL;
13199             }
13200             int _end_lineno = _token->end_lineno;
13201             UNUSED(_end_lineno); // Only used by EXTRA macro
13202             int _end_col_offset = _token->end_col_offset;
13203             UNUSED(_end_col_offset); // Only used by EXTRA macro
13204             _res = _PyAST_BinOp ( a , Div , b , EXTRA );
13205             if (_res == NULL && PyErr_Occurred()) {
13206                 p->error_indicator = 1;
13207                 p->level--;
13208                 return NULL;
13209             }
13210             goto done;
13211         }
13212         p->mark = _mark;
13213         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13214                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '/' factor"));
13215     }
13216     { // term '//' factor
13217         if (p->error_indicator) {
13218             p->level--;
13219             return NULL;
13220         }
13221         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
13222         Token * _literal;
13223         expr_ty a;
13224         expr_ty b;
13225         if (
13226             (a = term_rule(p))  // term
13227             &&
13228             (_literal = _PyPegen_expect_token(p, 47))  // token='//'
13229             &&
13230             (b = factor_rule(p))  // factor
13231         )
13232         {
13233             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
13234             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13235             if (_token == NULL) {
13236                 p->level--;
13237                 return NULL;
13238             }
13239             int _end_lineno = _token->end_lineno;
13240             UNUSED(_end_lineno); // Only used by EXTRA macro
13241             int _end_col_offset = _token->end_col_offset;
13242             UNUSED(_end_col_offset); // Only used by EXTRA macro
13243             _res = _PyAST_BinOp ( a , FloorDiv , b , EXTRA );
13244             if (_res == NULL && PyErr_Occurred()) {
13245                 p->error_indicator = 1;
13246                 p->level--;
13247                 return NULL;
13248             }
13249             goto done;
13250         }
13251         p->mark = _mark;
13252         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13253                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '//' factor"));
13254     }
13255     { // term '%' factor
13256         if (p->error_indicator) {
13257             p->level--;
13258             return NULL;
13259         }
13260         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
13261         Token * _literal;
13262         expr_ty a;
13263         expr_ty b;
13264         if (
13265             (a = term_rule(p))  // term
13266             &&
13267             (_literal = _PyPegen_expect_token(p, 24))  // token='%'
13268             &&
13269             (b = factor_rule(p))  // factor
13270         )
13271         {
13272             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
13273             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13274             if (_token == NULL) {
13275                 p->level--;
13276                 return NULL;
13277             }
13278             int _end_lineno = _token->end_lineno;
13279             UNUSED(_end_lineno); // Only used by EXTRA macro
13280             int _end_col_offset = _token->end_col_offset;
13281             UNUSED(_end_col_offset); // Only used by EXTRA macro
13282             _res = _PyAST_BinOp ( a , Mod , b , EXTRA );
13283             if (_res == NULL && PyErr_Occurred()) {
13284                 p->error_indicator = 1;
13285                 p->level--;
13286                 return NULL;
13287             }
13288             goto done;
13289         }
13290         p->mark = _mark;
13291         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13292                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '%' factor"));
13293     }
13294     { // term '@' factor
13295         if (p->error_indicator) {
13296             p->level--;
13297             return NULL;
13298         }
13299         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
13300         Token * _literal;
13301         expr_ty a;
13302         expr_ty b;
13303         if (
13304             (a = term_rule(p))  // term
13305             &&
13306             (_literal = _PyPegen_expect_token(p, 49))  // token='@'
13307             &&
13308             (b = factor_rule(p))  // factor
13309         )
13310         {
13311             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
13312             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13313             if (_token == NULL) {
13314                 p->level--;
13315                 return NULL;
13316             }
13317             int _end_lineno = _token->end_lineno;
13318             UNUSED(_end_lineno); // Only used by EXTRA macro
13319             int _end_col_offset = _token->end_col_offset;
13320             UNUSED(_end_col_offset); // Only used by EXTRA macro
13321             _res = CHECK_VERSION ( expr_ty , 5 , "The '@' operator is" , _PyAST_BinOp ( a , MatMult , b , EXTRA ) );
13322             if (_res == NULL && PyErr_Occurred()) {
13323                 p->error_indicator = 1;
13324                 p->level--;
13325                 return NULL;
13326             }
13327             goto done;
13328         }
13329         p->mark = _mark;
13330         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13331                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '@' factor"));
13332     }
13333     { // factor
13334         if (p->error_indicator) {
13335             p->level--;
13336             return NULL;
13337         }
13338         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "factor"));
13339         expr_ty factor_var;
13340         if (
13341             (factor_var = factor_rule(p))  // factor
13342         )
13343         {
13344             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "factor"));
13345             _res = factor_var;
13346             goto done;
13347         }
13348         p->mark = _mark;
13349         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13350                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "factor"));
13351     }
13352     _res = NULL;
13353   done:
13354     p->level--;
13355     return _res;
13356 }
13357 
13358 // factor: '+' factor | '-' factor | '~' factor | power
13359 static expr_ty
factor_rule(Parser * p)13360 factor_rule(Parser *p)
13361 {
13362     if (p->level++ == MAXSTACK) {
13363         p->error_indicator = 1;
13364         PyErr_NoMemory();
13365     }
13366     if (p->error_indicator) {
13367         p->level--;
13368         return NULL;
13369     }
13370     expr_ty _res = NULL;
13371     if (_PyPegen_is_memoized(p, factor_type, &_res)) {
13372         p->level--;
13373         return _res;
13374     }
13375     int _mark = p->mark;
13376     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13377         p->error_indicator = 1;
13378         p->level--;
13379         return NULL;
13380     }
13381     int _start_lineno = p->tokens[_mark]->lineno;
13382     UNUSED(_start_lineno); // Only used by EXTRA macro
13383     int _start_col_offset = p->tokens[_mark]->col_offset;
13384     UNUSED(_start_col_offset); // Only used by EXTRA macro
13385     { // '+' factor
13386         if (p->error_indicator) {
13387             p->level--;
13388             return NULL;
13389         }
13390         D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+' factor"));
13391         Token * _literal;
13392         expr_ty a;
13393         if (
13394             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
13395             &&
13396             (a = factor_rule(p))  // factor
13397         )
13398         {
13399             D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+' factor"));
13400             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13401             if (_token == NULL) {
13402                 p->level--;
13403                 return NULL;
13404             }
13405             int _end_lineno = _token->end_lineno;
13406             UNUSED(_end_lineno); // Only used by EXTRA macro
13407             int _end_col_offset = _token->end_col_offset;
13408             UNUSED(_end_col_offset); // Only used by EXTRA macro
13409             _res = _PyAST_UnaryOp ( UAdd , a , EXTRA );
13410             if (_res == NULL && PyErr_Occurred()) {
13411                 p->error_indicator = 1;
13412                 p->level--;
13413                 return NULL;
13414             }
13415             goto done;
13416         }
13417         p->mark = _mark;
13418         D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
13419                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+' factor"));
13420     }
13421     { // '-' factor
13422         if (p->error_indicator) {
13423             p->level--;
13424             return NULL;
13425         }
13426         D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' factor"));
13427         Token * _literal;
13428         expr_ty a;
13429         if (
13430             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
13431             &&
13432             (a = factor_rule(p))  // factor
13433         )
13434         {
13435             D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' factor"));
13436             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13437             if (_token == NULL) {
13438                 p->level--;
13439                 return NULL;
13440             }
13441             int _end_lineno = _token->end_lineno;
13442             UNUSED(_end_lineno); // Only used by EXTRA macro
13443             int _end_col_offset = _token->end_col_offset;
13444             UNUSED(_end_col_offset); // Only used by EXTRA macro
13445             _res = _PyAST_UnaryOp ( USub , a , EXTRA );
13446             if (_res == NULL && PyErr_Occurred()) {
13447                 p->error_indicator = 1;
13448                 p->level--;
13449                 return NULL;
13450             }
13451             goto done;
13452         }
13453         p->mark = _mark;
13454         D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
13455                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' factor"));
13456     }
13457     { // '~' factor
13458         if (p->error_indicator) {
13459             p->level--;
13460             return NULL;
13461         }
13462         D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'~' factor"));
13463         Token * _literal;
13464         expr_ty a;
13465         if (
13466             (_literal = _PyPegen_expect_token(p, 31))  // token='~'
13467             &&
13468             (a = factor_rule(p))  // factor
13469         )
13470         {
13471             D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'~' factor"));
13472             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13473             if (_token == NULL) {
13474                 p->level--;
13475                 return NULL;
13476             }
13477             int _end_lineno = _token->end_lineno;
13478             UNUSED(_end_lineno); // Only used by EXTRA macro
13479             int _end_col_offset = _token->end_col_offset;
13480             UNUSED(_end_col_offset); // Only used by EXTRA macro
13481             _res = _PyAST_UnaryOp ( Invert , a , EXTRA );
13482             if (_res == NULL && PyErr_Occurred()) {
13483                 p->error_indicator = 1;
13484                 p->level--;
13485                 return NULL;
13486             }
13487             goto done;
13488         }
13489         p->mark = _mark;
13490         D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
13491                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'~' factor"));
13492     }
13493     { // power
13494         if (p->error_indicator) {
13495             p->level--;
13496             return NULL;
13497         }
13498         D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "power"));
13499         expr_ty power_var;
13500         if (
13501             (power_var = power_rule(p))  // power
13502         )
13503         {
13504             D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "power"));
13505             _res = power_var;
13506             goto done;
13507         }
13508         p->mark = _mark;
13509         D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
13510                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "power"));
13511     }
13512     _res = NULL;
13513   done:
13514     _PyPegen_insert_memo(p, _mark, factor_type, _res);
13515     p->level--;
13516     return _res;
13517 }
13518 
13519 // power: await_primary '**' factor | await_primary
13520 static expr_ty
power_rule(Parser * p)13521 power_rule(Parser *p)
13522 {
13523     if (p->level++ == MAXSTACK) {
13524         p->error_indicator = 1;
13525         PyErr_NoMemory();
13526     }
13527     if (p->error_indicator) {
13528         p->level--;
13529         return NULL;
13530     }
13531     expr_ty _res = NULL;
13532     int _mark = p->mark;
13533     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13534         p->error_indicator = 1;
13535         p->level--;
13536         return NULL;
13537     }
13538     int _start_lineno = p->tokens[_mark]->lineno;
13539     UNUSED(_start_lineno); // Only used by EXTRA macro
13540     int _start_col_offset = p->tokens[_mark]->col_offset;
13541     UNUSED(_start_col_offset); // Only used by EXTRA macro
13542     { // await_primary '**' factor
13543         if (p->error_indicator) {
13544             p->level--;
13545             return NULL;
13546         }
13547         D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
13548         Token * _literal;
13549         expr_ty a;
13550         expr_ty b;
13551         if (
13552             (a = await_primary_rule(p))  // await_primary
13553             &&
13554             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
13555             &&
13556             (b = factor_rule(p))  // factor
13557         )
13558         {
13559             D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
13560             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13561             if (_token == NULL) {
13562                 p->level--;
13563                 return NULL;
13564             }
13565             int _end_lineno = _token->end_lineno;
13566             UNUSED(_end_lineno); // Only used by EXTRA macro
13567             int _end_col_offset = _token->end_col_offset;
13568             UNUSED(_end_col_offset); // Only used by EXTRA macro
13569             _res = _PyAST_BinOp ( a , Pow , b , EXTRA );
13570             if (_res == NULL && PyErr_Occurred()) {
13571                 p->error_indicator = 1;
13572                 p->level--;
13573                 return NULL;
13574             }
13575             goto done;
13576         }
13577         p->mark = _mark;
13578         D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
13579                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary '**' factor"));
13580     }
13581     { // await_primary
13582         if (p->error_indicator) {
13583             p->level--;
13584             return NULL;
13585         }
13586         D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary"));
13587         expr_ty await_primary_var;
13588         if (
13589             (await_primary_var = await_primary_rule(p))  // await_primary
13590         )
13591         {
13592             D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary"));
13593             _res = await_primary_var;
13594             goto done;
13595         }
13596         p->mark = _mark;
13597         D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
13598                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary"));
13599     }
13600     _res = NULL;
13601   done:
13602     p->level--;
13603     return _res;
13604 }
13605 
13606 // await_primary: AWAIT primary | primary
13607 static expr_ty
await_primary_rule(Parser * p)13608 await_primary_rule(Parser *p)
13609 {
13610     if (p->level++ == MAXSTACK) {
13611         p->error_indicator = 1;
13612         PyErr_NoMemory();
13613     }
13614     if (p->error_indicator) {
13615         p->level--;
13616         return NULL;
13617     }
13618     expr_ty _res = NULL;
13619     if (_PyPegen_is_memoized(p, await_primary_type, &_res)) {
13620         p->level--;
13621         return _res;
13622     }
13623     int _mark = p->mark;
13624     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13625         p->error_indicator = 1;
13626         p->level--;
13627         return NULL;
13628     }
13629     int _start_lineno = p->tokens[_mark]->lineno;
13630     UNUSED(_start_lineno); // Only used by EXTRA macro
13631     int _start_col_offset = p->tokens[_mark]->col_offset;
13632     UNUSED(_start_col_offset); // Only used by EXTRA macro
13633     { // AWAIT primary
13634         if (p->error_indicator) {
13635             p->level--;
13636             return NULL;
13637         }
13638         D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "AWAIT primary"));
13639         expr_ty a;
13640         Token * await_var;
13641         if (
13642             (await_var = _PyPegen_expect_token(p, AWAIT))  // token='AWAIT'
13643             &&
13644             (a = primary_rule(p))  // primary
13645         )
13646         {
13647             D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "AWAIT primary"));
13648             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13649             if (_token == NULL) {
13650                 p->level--;
13651                 return NULL;
13652             }
13653             int _end_lineno = _token->end_lineno;
13654             UNUSED(_end_lineno); // Only used by EXTRA macro
13655             int _end_col_offset = _token->end_col_offset;
13656             UNUSED(_end_col_offset); // Only used by EXTRA macro
13657             _res = CHECK_VERSION ( expr_ty , 5 , "Await expressions are" , _PyAST_Await ( a , EXTRA ) );
13658             if (_res == NULL && PyErr_Occurred()) {
13659                 p->error_indicator = 1;
13660                 p->level--;
13661                 return NULL;
13662             }
13663             goto done;
13664         }
13665         p->mark = _mark;
13666         D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
13667                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "AWAIT primary"));
13668     }
13669     { // primary
13670         if (p->error_indicator) {
13671             p->level--;
13672             return NULL;
13673         }
13674         D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary"));
13675         expr_ty primary_var;
13676         if (
13677             (primary_var = primary_rule(p))  // primary
13678         )
13679         {
13680             D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary"));
13681             _res = primary_var;
13682             goto done;
13683         }
13684         p->mark = _mark;
13685         D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
13686                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary"));
13687     }
13688     _res = NULL;
13689   done:
13690     _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
13691     p->level--;
13692     return _res;
13693 }
13694 
13695 // Left-recursive
13696 // primary:
13697 //     | primary '.' NAME
13698 //     | primary genexp
13699 //     | primary '(' arguments? ')'
13700 //     | primary '[' slices ']'
13701 //     | atom
13702 static expr_ty primary_raw(Parser *);
13703 static expr_ty
primary_rule(Parser * p)13704 primary_rule(Parser *p)
13705 {
13706     if (p->level++ == MAXSTACK) {
13707         p->error_indicator = 1;
13708         PyErr_NoMemory();
13709     }
13710     expr_ty _res = NULL;
13711     if (_PyPegen_is_memoized(p, primary_type, &_res)) {
13712         p->level--;
13713         return _res;
13714     }
13715     int _mark = p->mark;
13716     int _resmark = p->mark;
13717     while (1) {
13718         int tmpvar_8 = _PyPegen_update_memo(p, _mark, primary_type, _res);
13719         if (tmpvar_8) {
13720             p->level--;
13721             return _res;
13722         }
13723         p->mark = _mark;
13724         void *_raw = primary_raw(p);
13725         if (p->error_indicator) {
13726             p->level--;
13727             return NULL;
13728         }
13729         if (_raw == NULL || p->mark <= _resmark)
13730             break;
13731         _resmark = p->mark;
13732         _res = _raw;
13733     }
13734     p->mark = _resmark;
13735     p->level--;
13736     return _res;
13737 }
13738 static expr_ty
primary_raw(Parser * p)13739 primary_raw(Parser *p)
13740 {
13741     if (p->level++ == MAXSTACK) {
13742         p->error_indicator = 1;
13743         PyErr_NoMemory();
13744     }
13745     if (p->error_indicator) {
13746         p->level--;
13747         return NULL;
13748     }
13749     expr_ty _res = NULL;
13750     int _mark = p->mark;
13751     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13752         p->error_indicator = 1;
13753         p->level--;
13754         return NULL;
13755     }
13756     int _start_lineno = p->tokens[_mark]->lineno;
13757     UNUSED(_start_lineno); // Only used by EXTRA macro
13758     int _start_col_offset = p->tokens[_mark]->col_offset;
13759     UNUSED(_start_col_offset); // Only used by EXTRA macro
13760     { // primary '.' NAME
13761         if (p->error_indicator) {
13762             p->level--;
13763             return NULL;
13764         }
13765         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
13766         Token * _literal;
13767         expr_ty a;
13768         expr_ty b;
13769         if (
13770             (a = primary_rule(p))  // primary
13771             &&
13772             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
13773             &&
13774             (b = _PyPegen_name_token(p))  // NAME
13775         )
13776         {
13777             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
13778             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13779             if (_token == NULL) {
13780                 p->level--;
13781                 return NULL;
13782             }
13783             int _end_lineno = _token->end_lineno;
13784             UNUSED(_end_lineno); // Only used by EXTRA macro
13785             int _end_col_offset = _token->end_col_offset;
13786             UNUSED(_end_col_offset); // Only used by EXTRA macro
13787             _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
13788             if (_res == NULL && PyErr_Occurred()) {
13789                 p->error_indicator = 1;
13790                 p->level--;
13791                 return NULL;
13792             }
13793             goto done;
13794         }
13795         p->mark = _mark;
13796         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
13797                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '.' NAME"));
13798     }
13799     { // primary genexp
13800         if (p->error_indicator) {
13801             p->level--;
13802             return NULL;
13803         }
13804         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary genexp"));
13805         expr_ty a;
13806         expr_ty b;
13807         if (
13808             (a = primary_rule(p))  // primary
13809             &&
13810             (b = genexp_rule(p))  // genexp
13811         )
13812         {
13813             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary genexp"));
13814             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13815             if (_token == NULL) {
13816                 p->level--;
13817                 return NULL;
13818             }
13819             int _end_lineno = _token->end_lineno;
13820             UNUSED(_end_lineno); // Only used by EXTRA macro
13821             int _end_col_offset = _token->end_col_offset;
13822             UNUSED(_end_col_offset); // Only used by EXTRA macro
13823             _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq* , ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
13824             if (_res == NULL && PyErr_Occurred()) {
13825                 p->error_indicator = 1;
13826                 p->level--;
13827                 return NULL;
13828             }
13829             goto done;
13830         }
13831         p->mark = _mark;
13832         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
13833                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary genexp"));
13834     }
13835     { // primary '(' arguments? ')'
13836         if (p->error_indicator) {
13837             p->level--;
13838             return NULL;
13839         }
13840         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
13841         Token * _literal;
13842         Token * _literal_1;
13843         expr_ty a;
13844         void *b;
13845         if (
13846             (a = primary_rule(p))  // primary
13847             &&
13848             (_literal = _PyPegen_expect_token(p, 7))  // token='('
13849             &&
13850             (b = arguments_rule(p), !p->error_indicator)  // arguments?
13851             &&
13852             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
13853         )
13854         {
13855             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
13856             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13857             if (_token == NULL) {
13858                 p->level--;
13859                 return NULL;
13860             }
13861             int _end_lineno = _token->end_lineno;
13862             UNUSED(_end_lineno); // Only used by EXTRA macro
13863             int _end_col_offset = _token->end_col_offset;
13864             UNUSED(_end_col_offset); // Only used by EXTRA macro
13865             _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
13866             if (_res == NULL && PyErr_Occurred()) {
13867                 p->error_indicator = 1;
13868                 p->level--;
13869                 return NULL;
13870             }
13871             goto done;
13872         }
13873         p->mark = _mark;
13874         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
13875                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '(' arguments? ')'"));
13876     }
13877     { // primary '[' slices ']'
13878         if (p->error_indicator) {
13879             p->level--;
13880             return NULL;
13881         }
13882         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
13883         Token * _literal;
13884         Token * _literal_1;
13885         expr_ty a;
13886         expr_ty b;
13887         if (
13888             (a = primary_rule(p))  // primary
13889             &&
13890             (_literal = _PyPegen_expect_token(p, 9))  // token='['
13891             &&
13892             (b = slices_rule(p))  // slices
13893             &&
13894             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
13895         )
13896         {
13897             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
13898             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13899             if (_token == NULL) {
13900                 p->level--;
13901                 return NULL;
13902             }
13903             int _end_lineno = _token->end_lineno;
13904             UNUSED(_end_lineno); // Only used by EXTRA macro
13905             int _end_col_offset = _token->end_col_offset;
13906             UNUSED(_end_col_offset); // Only used by EXTRA macro
13907             _res = _PyAST_Subscript ( a , b , Load , EXTRA );
13908             if (_res == NULL && PyErr_Occurred()) {
13909                 p->error_indicator = 1;
13910                 p->level--;
13911                 return NULL;
13912             }
13913             goto done;
13914         }
13915         p->mark = _mark;
13916         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
13917                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '[' slices ']'"));
13918     }
13919     { // atom
13920         if (p->error_indicator) {
13921             p->level--;
13922             return NULL;
13923         }
13924         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom"));
13925         expr_ty atom_var;
13926         if (
13927             (atom_var = atom_rule(p))  // atom
13928         )
13929         {
13930             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom"));
13931             _res = atom_var;
13932             goto done;
13933         }
13934         p->mark = _mark;
13935         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
13936                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom"));
13937     }
13938     _res = NULL;
13939   done:
13940     p->level--;
13941     return _res;
13942 }
13943 
13944 // slices: slice !',' | ','.(slice | starred_expression)+ ','?
13945 static expr_ty
slices_rule(Parser * p)13946 slices_rule(Parser *p)
13947 {
13948     if (p->level++ == MAXSTACK) {
13949         p->error_indicator = 1;
13950         PyErr_NoMemory();
13951     }
13952     if (p->error_indicator) {
13953         p->level--;
13954         return NULL;
13955     }
13956     expr_ty _res = NULL;
13957     int _mark = p->mark;
13958     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13959         p->error_indicator = 1;
13960         p->level--;
13961         return NULL;
13962     }
13963     int _start_lineno = p->tokens[_mark]->lineno;
13964     UNUSED(_start_lineno); // Only used by EXTRA macro
13965     int _start_col_offset = p->tokens[_mark]->col_offset;
13966     UNUSED(_start_col_offset); // Only used by EXTRA macro
13967     { // slice !','
13968         if (p->error_indicator) {
13969             p->level--;
13970             return NULL;
13971         }
13972         D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice !','"));
13973         expr_ty a;
13974         if (
13975             (a = slice_rule(p))  // slice
13976             &&
13977             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
13978         )
13979         {
13980             D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice !','"));
13981             _res = a;
13982             if (_res == NULL && PyErr_Occurred()) {
13983                 p->error_indicator = 1;
13984                 p->level--;
13985                 return NULL;
13986             }
13987             goto done;
13988         }
13989         p->mark = _mark;
13990         D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
13991                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice !','"));
13992     }
13993     { // ','.(slice | starred_expression)+ ','?
13994         if (p->error_indicator) {
13995             p->level--;
13996             return NULL;
13997         }
13998         D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
13999         void *_opt_var;
14000         UNUSED(_opt_var); // Silence compiler warnings
14001         asdl_expr_seq* a;
14002         if (
14003             (a = (asdl_expr_seq*)_gather_88_rule(p))  // ','.(slice | starred_expression)+
14004             &&
14005             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
14006         )
14007         {
14008             D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14009             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14010             if (_token == NULL) {
14011                 p->level--;
14012                 return NULL;
14013             }
14014             int _end_lineno = _token->end_lineno;
14015             UNUSED(_end_lineno); // Only used by EXTRA macro
14016             int _end_col_offset = _token->end_col_offset;
14017             UNUSED(_end_col_offset); // Only used by EXTRA macro
14018             _res = _PyAST_Tuple ( a , Load , EXTRA );
14019             if (_res == NULL && PyErr_Occurred()) {
14020                 p->error_indicator = 1;
14021                 p->level--;
14022                 return NULL;
14023             }
14024             goto done;
14025         }
14026         p->mark = _mark;
14027         D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
14028                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(slice | starred_expression)+ ','?"));
14029     }
14030     _res = NULL;
14031   done:
14032     p->level--;
14033     return _res;
14034 }
14035 
14036 // slice: expression? ':' expression? [':' expression?] | named_expression
14037 static expr_ty
slice_rule(Parser * p)14038 slice_rule(Parser *p)
14039 {
14040     if (p->level++ == MAXSTACK) {
14041         p->error_indicator = 1;
14042         PyErr_NoMemory();
14043     }
14044     if (p->error_indicator) {
14045         p->level--;
14046         return NULL;
14047     }
14048     expr_ty _res = NULL;
14049     int _mark = p->mark;
14050     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14051         p->error_indicator = 1;
14052         p->level--;
14053         return NULL;
14054     }
14055     int _start_lineno = p->tokens[_mark]->lineno;
14056     UNUSED(_start_lineno); // Only used by EXTRA macro
14057     int _start_col_offset = p->tokens[_mark]->col_offset;
14058     UNUSED(_start_col_offset); // Only used by EXTRA macro
14059     { // expression? ':' expression? [':' expression?]
14060         if (p->error_indicator) {
14061             p->level--;
14062             return NULL;
14063         }
14064         D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14065         Token * _literal;
14066         void *a;
14067         void *b;
14068         void *c;
14069         if (
14070             (a = expression_rule(p), !p->error_indicator)  // expression?
14071             &&
14072             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
14073             &&
14074             (b = expression_rule(p), !p->error_indicator)  // expression?
14075             &&
14076             (c = _tmp_90_rule(p), !p->error_indicator)  // [':' expression?]
14077         )
14078         {
14079             D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14080             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14081             if (_token == NULL) {
14082                 p->level--;
14083                 return NULL;
14084             }
14085             int _end_lineno = _token->end_lineno;
14086             UNUSED(_end_lineno); // Only used by EXTRA macro
14087             int _end_col_offset = _token->end_col_offset;
14088             UNUSED(_end_col_offset); // Only used by EXTRA macro
14089             _res = _PyAST_Slice ( a , b , c , EXTRA );
14090             if (_res == NULL && PyErr_Occurred()) {
14091                 p->error_indicator = 1;
14092                 p->level--;
14093                 return NULL;
14094             }
14095             goto done;
14096         }
14097         p->mark = _mark;
14098         D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14099                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14100     }
14101     { // named_expression
14102         if (p->error_indicator) {
14103             p->level--;
14104             return NULL;
14105         }
14106         D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
14107         expr_ty a;
14108         if (
14109             (a = named_expression_rule(p))  // named_expression
14110         )
14111         {
14112             D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
14113             _res = a;
14114             if (_res == NULL && PyErr_Occurred()) {
14115                 p->error_indicator = 1;
14116                 p->level--;
14117                 return NULL;
14118             }
14119             goto done;
14120         }
14121         p->mark = _mark;
14122         D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14123                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
14124     }
14125     _res = NULL;
14126   done:
14127     p->level--;
14128     return _res;
14129 }
14130 
14131 // atom:
14132 //     | NAME
14133 //     | 'True'
14134 //     | 'False'
14135 //     | 'None'
14136 //     | &STRING strings
14137 //     | NUMBER
14138 //     | &'(' (tuple | group | genexp)
14139 //     | &'[' (list | listcomp)
14140 //     | &'{' (dict | set | dictcomp | setcomp)
14141 //     | '...'
14142 static expr_ty
atom_rule(Parser * p)14143 atom_rule(Parser *p)
14144 {
14145     if (p->level++ == MAXSTACK) {
14146         p->error_indicator = 1;
14147         PyErr_NoMemory();
14148     }
14149     if (p->error_indicator) {
14150         p->level--;
14151         return NULL;
14152     }
14153     expr_ty _res = NULL;
14154     int _mark = p->mark;
14155     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14156         p->error_indicator = 1;
14157         p->level--;
14158         return NULL;
14159     }
14160     int _start_lineno = p->tokens[_mark]->lineno;
14161     UNUSED(_start_lineno); // Only used by EXTRA macro
14162     int _start_col_offset = p->tokens[_mark]->col_offset;
14163     UNUSED(_start_col_offset); // Only used by EXTRA macro
14164     { // NAME
14165         if (p->error_indicator) {
14166             p->level--;
14167             return NULL;
14168         }
14169         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
14170         expr_ty name_var;
14171         if (
14172             (name_var = _PyPegen_name_token(p))  // NAME
14173         )
14174         {
14175             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
14176             _res = name_var;
14177             goto done;
14178         }
14179         p->mark = _mark;
14180         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14181                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
14182     }
14183     { // 'True'
14184         if (p->error_indicator) {
14185             p->level--;
14186             return NULL;
14187         }
14188         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
14189         Token * _keyword;
14190         if (
14191             (_keyword = _PyPegen_expect_token(p, 600))  // token='True'
14192         )
14193         {
14194             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
14195             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14196             if (_token == NULL) {
14197                 p->level--;
14198                 return NULL;
14199             }
14200             int _end_lineno = _token->end_lineno;
14201             UNUSED(_end_lineno); // Only used by EXTRA macro
14202             int _end_col_offset = _token->end_col_offset;
14203             UNUSED(_end_col_offset); // Only used by EXTRA macro
14204             _res = _PyAST_Constant ( Py_True , NULL , EXTRA );
14205             if (_res == NULL && PyErr_Occurred()) {
14206                 p->error_indicator = 1;
14207                 p->level--;
14208                 return NULL;
14209             }
14210             goto done;
14211         }
14212         p->mark = _mark;
14213         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14214                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
14215     }
14216     { // 'False'
14217         if (p->error_indicator) {
14218             p->level--;
14219             return NULL;
14220         }
14221         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
14222         Token * _keyword;
14223         if (
14224             (_keyword = _PyPegen_expect_token(p, 602))  // token='False'
14225         )
14226         {
14227             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
14228             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14229             if (_token == NULL) {
14230                 p->level--;
14231                 return NULL;
14232             }
14233             int _end_lineno = _token->end_lineno;
14234             UNUSED(_end_lineno); // Only used by EXTRA macro
14235             int _end_col_offset = _token->end_col_offset;
14236             UNUSED(_end_col_offset); // Only used by EXTRA macro
14237             _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
14238             if (_res == NULL && PyErr_Occurred()) {
14239                 p->error_indicator = 1;
14240                 p->level--;
14241                 return NULL;
14242             }
14243             goto done;
14244         }
14245         p->mark = _mark;
14246         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14247                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
14248     }
14249     { // 'None'
14250         if (p->error_indicator) {
14251             p->level--;
14252             return NULL;
14253         }
14254         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
14255         Token * _keyword;
14256         if (
14257             (_keyword = _PyPegen_expect_token(p, 601))  // token='None'
14258         )
14259         {
14260             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
14261             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14262             if (_token == NULL) {
14263                 p->level--;
14264                 return NULL;
14265             }
14266             int _end_lineno = _token->end_lineno;
14267             UNUSED(_end_lineno); // Only used by EXTRA macro
14268             int _end_col_offset = _token->end_col_offset;
14269             UNUSED(_end_col_offset); // Only used by EXTRA macro
14270             _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
14271             if (_res == NULL && PyErr_Occurred()) {
14272                 p->error_indicator = 1;
14273                 p->level--;
14274                 return NULL;
14275             }
14276             goto done;
14277         }
14278         p->mark = _mark;
14279         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14280                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
14281     }
14282     { // &STRING strings
14283         if (p->error_indicator) {
14284             p->level--;
14285             return NULL;
14286         }
14287         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&STRING strings"));
14288         expr_ty strings_var;
14289         if (
14290             _PyPegen_lookahead(1, _PyPegen_string_token, p)
14291             &&
14292             (strings_var = strings_rule(p))  // strings
14293         )
14294         {
14295             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&STRING strings"));
14296             _res = strings_var;
14297             goto done;
14298         }
14299         p->mark = _mark;
14300         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14301                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&STRING strings"));
14302     }
14303     { // NUMBER
14304         if (p->error_indicator) {
14305             p->level--;
14306             return NULL;
14307         }
14308         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
14309         expr_ty number_var;
14310         if (
14311             (number_var = _PyPegen_number_token(p))  // NUMBER
14312         )
14313         {
14314             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
14315             _res = number_var;
14316             goto done;
14317         }
14318         p->mark = _mark;
14319         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14320                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
14321     }
14322     { // &'(' (tuple | group | genexp)
14323         if (p->error_indicator) {
14324             p->level--;
14325             return NULL;
14326         }
14327         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
14328         void *_tmp_91_var;
14329         if (
14330             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7)  // token='('
14331             &&
14332             (_tmp_91_var = _tmp_91_rule(p))  // tuple | group | genexp
14333         )
14334         {
14335             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
14336             _res = _tmp_91_var;
14337             goto done;
14338         }
14339         p->mark = _mark;
14340         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14341                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'(' (tuple | group | genexp)"));
14342     }
14343     { // &'[' (list | listcomp)
14344         if (p->error_indicator) {
14345             p->level--;
14346             return NULL;
14347         }
14348         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
14349         void *_tmp_92_var;
14350         if (
14351             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9)  // token='['
14352             &&
14353             (_tmp_92_var = _tmp_92_rule(p))  // list | listcomp
14354         )
14355         {
14356             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
14357             _res = _tmp_92_var;
14358             goto done;
14359         }
14360         p->mark = _mark;
14361         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14362                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'[' (list | listcomp)"));
14363     }
14364     { // &'{' (dict | set | dictcomp | setcomp)
14365         if (p->error_indicator) {
14366             p->level--;
14367             return NULL;
14368         }
14369         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
14370         void *_tmp_93_var;
14371         if (
14372             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25)  // token='{'
14373             &&
14374             (_tmp_93_var = _tmp_93_rule(p))  // dict | set | dictcomp | setcomp
14375         )
14376         {
14377             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
14378             _res = _tmp_93_var;
14379             goto done;
14380         }
14381         p->mark = _mark;
14382         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14383                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
14384     }
14385     { // '...'
14386         if (p->error_indicator) {
14387             p->level--;
14388             return NULL;
14389         }
14390         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
14391         Token * _literal;
14392         if (
14393             (_literal = _PyPegen_expect_token(p, 52))  // token='...'
14394         )
14395         {
14396             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
14397             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14398             if (_token == NULL) {
14399                 p->level--;
14400                 return NULL;
14401             }
14402             int _end_lineno = _token->end_lineno;
14403             UNUSED(_end_lineno); // Only used by EXTRA macro
14404             int _end_col_offset = _token->end_col_offset;
14405             UNUSED(_end_col_offset); // Only used by EXTRA macro
14406             _res = _PyAST_Constant ( Py_Ellipsis , NULL , EXTRA );
14407             if (_res == NULL && PyErr_Occurred()) {
14408                 p->error_indicator = 1;
14409                 p->level--;
14410                 return NULL;
14411             }
14412             goto done;
14413         }
14414         p->mark = _mark;
14415         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14416                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
14417     }
14418     _res = NULL;
14419   done:
14420     p->level--;
14421     return _res;
14422 }
14423 
14424 // group: '(' (yield_expr | named_expression) ')' | invalid_group
14425 static expr_ty
group_rule(Parser * p)14426 group_rule(Parser *p)
14427 {
14428     if (p->level++ == MAXSTACK) {
14429         p->error_indicator = 1;
14430         PyErr_NoMemory();
14431     }
14432     if (p->error_indicator) {
14433         p->level--;
14434         return NULL;
14435     }
14436     expr_ty _res = NULL;
14437     int _mark = p->mark;
14438     { // '(' (yield_expr | named_expression) ')'
14439         if (p->error_indicator) {
14440             p->level--;
14441             return NULL;
14442         }
14443         D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
14444         Token * _literal;
14445         Token * _literal_1;
14446         void *a;
14447         if (
14448             (_literal = _PyPegen_expect_token(p, 7))  // token='('
14449             &&
14450             (a = _tmp_94_rule(p))  // yield_expr | named_expression
14451             &&
14452             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
14453         )
14454         {
14455             D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
14456             _res = a;
14457             if (_res == NULL && PyErr_Occurred()) {
14458                 p->error_indicator = 1;
14459                 p->level--;
14460                 return NULL;
14461             }
14462             goto done;
14463         }
14464         p->mark = _mark;
14465         D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
14466                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
14467     }
14468     if (p->call_invalid_rules) { // invalid_group
14469         if (p->error_indicator) {
14470             p->level--;
14471             return NULL;
14472         }
14473         D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_group"));
14474         void *invalid_group_var;
14475         if (
14476             (invalid_group_var = invalid_group_rule(p))  // invalid_group
14477         )
14478         {
14479             D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_group"));
14480             _res = invalid_group_var;
14481             goto done;
14482         }
14483         p->mark = _mark;
14484         D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
14485                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_group"));
14486     }
14487     _res = NULL;
14488   done:
14489     p->level--;
14490     return _res;
14491 }
14492 
14493 // lambdef: 'lambda' lambda_params? ':' expression
14494 static expr_ty
lambdef_rule(Parser * p)14495 lambdef_rule(Parser *p)
14496 {
14497     if (p->level++ == MAXSTACK) {
14498         p->error_indicator = 1;
14499         PyErr_NoMemory();
14500     }
14501     if (p->error_indicator) {
14502         p->level--;
14503         return NULL;
14504     }
14505     expr_ty _res = NULL;
14506     int _mark = p->mark;
14507     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14508         p->error_indicator = 1;
14509         p->level--;
14510         return NULL;
14511     }
14512     int _start_lineno = p->tokens[_mark]->lineno;
14513     UNUSED(_start_lineno); // Only used by EXTRA macro
14514     int _start_col_offset = p->tokens[_mark]->col_offset;
14515     UNUSED(_start_col_offset); // Only used by EXTRA macro
14516     { // 'lambda' lambda_params? ':' expression
14517         if (p->error_indicator) {
14518             p->level--;
14519             return NULL;
14520         }
14521         D(fprintf(stderr, "%*c> lambdef[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
14522         Token * _keyword;
14523         Token * _literal;
14524         void *a;
14525         expr_ty b;
14526         if (
14527             (_keyword = _PyPegen_expect_token(p, 586))  // token='lambda'
14528             &&
14529             (a = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
14530             &&
14531             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
14532             &&
14533             (b = expression_rule(p))  // expression
14534         )
14535         {
14536             D(fprintf(stderr, "%*c+ lambdef[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
14537             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14538             if (_token == NULL) {
14539                 p->level--;
14540                 return NULL;
14541             }
14542             int _end_lineno = _token->end_lineno;
14543             UNUSED(_end_lineno); // Only used by EXTRA macro
14544             int _end_col_offset = _token->end_col_offset;
14545             UNUSED(_end_col_offset); // Only used by EXTRA macro
14546             _res = _PyAST_Lambda ( ( a ) ? a : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
14547             if (_res == NULL && PyErr_Occurred()) {
14548                 p->error_indicator = 1;
14549                 p->level--;
14550                 return NULL;
14551             }
14552             goto done;
14553         }
14554         p->mark = _mark;
14555         D(fprintf(stderr, "%*c%s lambdef[%d-%d]: %s failed!\n", p->level, ' ',
14556                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' expression"));
14557     }
14558     _res = NULL;
14559   done:
14560     p->level--;
14561     return _res;
14562 }
14563 
14564 // lambda_params: invalid_lambda_parameters | lambda_parameters
14565 static arguments_ty
lambda_params_rule(Parser * p)14566 lambda_params_rule(Parser *p)
14567 {
14568     if (p->level++ == MAXSTACK) {
14569         p->error_indicator = 1;
14570         PyErr_NoMemory();
14571     }
14572     if (p->error_indicator) {
14573         p->level--;
14574         return NULL;
14575     }
14576     arguments_ty _res = NULL;
14577     int _mark = p->mark;
14578     if (p->call_invalid_rules) { // invalid_lambda_parameters
14579         if (p->error_indicator) {
14580             p->level--;
14581             return NULL;
14582         }
14583         D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
14584         void *invalid_lambda_parameters_var;
14585         if (
14586             (invalid_lambda_parameters_var = invalid_lambda_parameters_rule(p))  // invalid_lambda_parameters
14587         )
14588         {
14589             D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
14590             _res = invalid_lambda_parameters_var;
14591             goto done;
14592         }
14593         p->mark = _mark;
14594         D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
14595                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_parameters"));
14596     }
14597     { // lambda_parameters
14598         if (p->error_indicator) {
14599             p->level--;
14600             return NULL;
14601         }
14602         D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
14603         arguments_ty lambda_parameters_var;
14604         if (
14605             (lambda_parameters_var = lambda_parameters_rule(p))  // lambda_parameters
14606         )
14607         {
14608             D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
14609             _res = lambda_parameters_var;
14610             goto done;
14611         }
14612         p->mark = _mark;
14613         D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
14614                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_parameters"));
14615     }
14616     _res = NULL;
14617   done:
14618     p->level--;
14619     return _res;
14620 }
14621 
14622 // lambda_parameters:
14623 //     | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
14624 //     | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
14625 //     | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
14626 //     | lambda_param_with_default+ lambda_star_etc?
14627 //     | lambda_star_etc
14628 static arguments_ty
lambda_parameters_rule(Parser * p)14629 lambda_parameters_rule(Parser *p)
14630 {
14631     if (p->level++ == MAXSTACK) {
14632         p->error_indicator = 1;
14633         PyErr_NoMemory();
14634     }
14635     if (p->error_indicator) {
14636         p->level--;
14637         return NULL;
14638     }
14639     arguments_ty _res = NULL;
14640     int _mark = p->mark;
14641     { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
14642         if (p->error_indicator) {
14643             p->level--;
14644             return NULL;
14645         }
14646         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?"));
14647         asdl_arg_seq* a;
14648         asdl_arg_seq* b;
14649         asdl_seq * c;
14650         void *d;
14651         if (
14652             (a = lambda_slash_no_default_rule(p))  // lambda_slash_no_default
14653             &&
14654             (b = (asdl_arg_seq*)_loop0_95_rule(p))  // lambda_param_no_default*
14655             &&
14656             (c = _loop0_96_rule(p))  // lambda_param_with_default*
14657             &&
14658             (d = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
14659         )
14660         {
14661             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?"));
14662             _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , a , NULL , b , c , d ) );
14663             if (_res == NULL && PyErr_Occurred()) {
14664                 p->error_indicator = 1;
14665                 p->level--;
14666                 return NULL;
14667             }
14668             goto done;
14669         }
14670         p->mark = _mark;
14671         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
14672                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?"));
14673     }
14674     { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
14675         if (p->error_indicator) {
14676             p->level--;
14677             return NULL;
14678         }
14679         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?"));
14680         SlashWithDefault* a;
14681         asdl_seq * b;
14682         void *c;
14683         if (
14684             (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
14685             &&
14686             (b = _loop0_97_rule(p))  // lambda_param_with_default*
14687             &&
14688             (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
14689         )
14690         {
14691             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?"));
14692             _res = CHECK_VERSION ( arguments_ty , 8 , "Positional-only parameters are" , _PyPegen_make_arguments ( p , NULL , a , NULL , b , c ) );
14693             if (_res == NULL && PyErr_Occurred()) {
14694                 p->error_indicator = 1;
14695                 p->level--;
14696                 return NULL;
14697             }
14698             goto done;
14699         }
14700         p->mark = _mark;
14701         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
14702                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default lambda_param_with_default* lambda_star_etc?"));
14703     }
14704     { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
14705         if (p->error_indicator) {
14706             p->level--;
14707             return NULL;
14708         }
14709         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?"));
14710         asdl_arg_seq* a;
14711         asdl_seq * b;
14712         void *c;
14713         if (
14714             (a = (asdl_arg_seq*)_loop1_98_rule(p))  // lambda_param_no_default+
14715             &&
14716             (b = _loop0_99_rule(p))  // lambda_param_with_default*
14717             &&
14718             (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
14719         )
14720         {
14721             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?"));
14722             _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
14723             if (_res == NULL && PyErr_Occurred()) {
14724                 p->error_indicator = 1;
14725                 p->level--;
14726                 return NULL;
14727             }
14728             goto done;
14729         }
14730         p->mark = _mark;
14731         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
14732                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?"));
14733     }
14734     { // lambda_param_with_default+ lambda_star_etc?
14735         if (p->error_indicator) {
14736             p->level--;
14737             return NULL;
14738         }
14739         D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
14740         asdl_seq * a;
14741         void *b;
14742         if (
14743             (a = _loop1_100_rule(p))  // lambda_param_with_default+
14744             &&
14745             (b = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
14746         )
14747         {
14748             D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
14749             _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
14750             if (_res == NULL && PyErr_Occurred()) {
14751                 p->error_indicator = 1;
14752                 p->level--;
14753                 return NULL;
14754             }
14755             goto done;
14756         }
14757         p->mark = _mark;
14758         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
14759                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
14760     }
14761     { // lambda_star_etc
14762         if (p->error_indicator) {
14763             p->level--;
14764             return NULL;
14765         }
14766         D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
14767         StarEtc* a;
14768         if (
14769             (a = lambda_star_etc_rule(p))  // lambda_star_etc
14770         )
14771         {
14772             D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
14773             _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
14774             if (_res == NULL && PyErr_Occurred()) {
14775                 p->error_indicator = 1;
14776                 p->level--;
14777                 return NULL;
14778             }
14779             goto done;
14780         }
14781         p->mark = _mark;
14782         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
14783                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_star_etc"));
14784     }
14785     _res = NULL;
14786   done:
14787     p->level--;
14788     return _res;
14789 }
14790 
14791 // lambda_slash_no_default:
14792 //     | lambda_param_no_default+ '/' ','
14793 //     | lambda_param_no_default+ '/' &':'
14794 static asdl_arg_seq*
lambda_slash_no_default_rule(Parser * p)14795 lambda_slash_no_default_rule(Parser *p)
14796 {
14797     if (p->level++ == MAXSTACK) {
14798         p->error_indicator = 1;
14799         PyErr_NoMemory();
14800     }
14801     if (p->error_indicator) {
14802         p->level--;
14803         return NULL;
14804     }
14805     asdl_arg_seq* _res = NULL;
14806     int _mark = p->mark;
14807     { // lambda_param_no_default+ '/' ','
14808         if (p->error_indicator) {
14809             p->level--;
14810             return NULL;
14811         }
14812         D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
14813         Token * _literal;
14814         Token * _literal_1;
14815         asdl_arg_seq* a;
14816         if (
14817             (a = (asdl_arg_seq*)_loop1_101_rule(p))  // lambda_param_no_default+
14818             &&
14819             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
14820             &&
14821             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
14822         )
14823         {
14824             D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
14825             _res = a;
14826             if (_res == NULL && PyErr_Occurred()) {
14827                 p->error_indicator = 1;
14828                 p->level--;
14829                 return NULL;
14830             }
14831             goto done;
14832         }
14833         p->mark = _mark;
14834         D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
14835                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' ','"));
14836     }
14837     { // lambda_param_no_default+ '/' &':'
14838         if (p->error_indicator) {
14839             p->level--;
14840             return NULL;
14841         }
14842         D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
14843         Token * _literal;
14844         asdl_arg_seq* a;
14845         if (
14846             (a = (asdl_arg_seq*)_loop1_102_rule(p))  // lambda_param_no_default+
14847             &&
14848             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
14849             &&
14850             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
14851         )
14852         {
14853             D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
14854             _res = a;
14855             if (_res == NULL && PyErr_Occurred()) {
14856                 p->error_indicator = 1;
14857                 p->level--;
14858                 return NULL;
14859             }
14860             goto done;
14861         }
14862         p->mark = _mark;
14863         D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
14864                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
14865     }
14866     _res = NULL;
14867   done:
14868     p->level--;
14869     return _res;
14870 }
14871 
14872 // lambda_slash_with_default:
14873 //     | lambda_param_no_default* lambda_param_with_default+ '/' ','
14874 //     | lambda_param_no_default* lambda_param_with_default+ '/' &':'
14875 static SlashWithDefault*
lambda_slash_with_default_rule(Parser * p)14876 lambda_slash_with_default_rule(Parser *p)
14877 {
14878     if (p->level++ == MAXSTACK) {
14879         p->error_indicator = 1;
14880         PyErr_NoMemory();
14881     }
14882     if (p->error_indicator) {
14883         p->level--;
14884         return NULL;
14885     }
14886     SlashWithDefault* _res = NULL;
14887     int _mark = p->mark;
14888     { // lambda_param_no_default* lambda_param_with_default+ '/' ','
14889         if (p->error_indicator) {
14890             p->level--;
14891             return NULL;
14892         }
14893         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+ '/' ','"));
14894         Token * _literal;
14895         Token * _literal_1;
14896         asdl_seq * a;
14897         asdl_seq * b;
14898         if (
14899             (a = _loop0_103_rule(p))  // lambda_param_no_default*
14900             &&
14901             (b = _loop1_104_rule(p))  // lambda_param_with_default+
14902             &&
14903             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
14904             &&
14905             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
14906         )
14907         {
14908             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+ '/' ','"));
14909             _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
14910             if (_res == NULL && PyErr_Occurred()) {
14911                 p->error_indicator = 1;
14912                 p->level--;
14913                 return NULL;
14914             }
14915             goto done;
14916         }
14917         p->mark = _mark;
14918         D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
14919                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' ','"));
14920     }
14921     { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
14922         if (p->error_indicator) {
14923             p->level--;
14924             return NULL;
14925         }
14926         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+ '/' &':'"));
14927         Token * _literal;
14928         asdl_seq * a;
14929         asdl_seq * b;
14930         if (
14931             (a = _loop0_105_rule(p))  // lambda_param_no_default*
14932             &&
14933             (b = _loop1_106_rule(p))  // lambda_param_with_default+
14934             &&
14935             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
14936             &&
14937             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
14938         )
14939         {
14940             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+ '/' &':'"));
14941             _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
14942             if (_res == NULL && PyErr_Occurred()) {
14943                 p->error_indicator = 1;
14944                 p->level--;
14945                 return NULL;
14946             }
14947             goto done;
14948         }
14949         p->mark = _mark;
14950         D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
14951                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' &':'"));
14952     }
14953     _res = NULL;
14954   done:
14955     p->level--;
14956     return _res;
14957 }
14958 
14959 // lambda_star_etc:
14960 //     | invalid_lambda_star_etc
14961 //     | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
14962 //     | '*' ',' lambda_param_maybe_default+ lambda_kwds?
14963 //     | lambda_kwds
14964 static StarEtc*
lambda_star_etc_rule(Parser * p)14965 lambda_star_etc_rule(Parser *p)
14966 {
14967     if (p->level++ == MAXSTACK) {
14968         p->error_indicator = 1;
14969         PyErr_NoMemory();
14970     }
14971     if (p->error_indicator) {
14972         p->level--;
14973         return NULL;
14974     }
14975     StarEtc* _res = NULL;
14976     int _mark = p->mark;
14977     if (p->call_invalid_rules) { // invalid_lambda_star_etc
14978         if (p->error_indicator) {
14979             p->level--;
14980             return NULL;
14981         }
14982         D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
14983         void *invalid_lambda_star_etc_var;
14984         if (
14985             (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p))  // invalid_lambda_star_etc
14986         )
14987         {
14988             D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
14989             _res = invalid_lambda_star_etc_var;
14990             goto done;
14991         }
14992         p->mark = _mark;
14993         D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
14994                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_star_etc"));
14995     }
14996     { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
14997         if (p->error_indicator) {
14998             p->level--;
14999             return NULL;
15000         }
15001         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?"));
15002         Token * _literal;
15003         arg_ty a;
15004         asdl_seq * b;
15005         void *c;
15006         if (
15007             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
15008             &&
15009             (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
15010             &&
15011             (b = _loop0_107_rule(p))  // lambda_param_maybe_default*
15012             &&
15013             (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
15014         )
15015         {
15016             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?"));
15017             _res = _PyPegen_star_etc ( p , a , b , c );
15018             if (_res == NULL && PyErr_Occurred()) {
15019                 p->error_indicator = 1;
15020                 p->level--;
15021                 return NULL;
15022             }
15023             goto done;
15024         }
15025         p->mark = _mark;
15026         D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15027                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?"));
15028     }
15029     { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
15030         if (p->error_indicator) {
15031             p->level--;
15032             return NULL;
15033         }
15034         D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15035         Token * _literal;
15036         Token * _literal_1;
15037         asdl_seq * b;
15038         void *c;
15039         if (
15040             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
15041             &&
15042             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
15043             &&
15044             (b = _loop1_108_rule(p))  // lambda_param_maybe_default+
15045             &&
15046             (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
15047         )
15048         {
15049             D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15050             _res = _PyPegen_star_etc ( p , NULL , b , c );
15051             if (_res == NULL && PyErr_Occurred()) {
15052                 p->error_indicator = 1;
15053                 p->level--;
15054                 return NULL;
15055             }
15056             goto done;
15057         }
15058         p->mark = _mark;
15059         D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15060                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
15061     }
15062     { // lambda_kwds
15063         if (p->error_indicator) {
15064             p->level--;
15065             return NULL;
15066         }
15067         D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
15068         arg_ty a;
15069         if (
15070             (a = lambda_kwds_rule(p))  // lambda_kwds
15071         )
15072         {
15073             D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
15074             _res = _PyPegen_star_etc ( p , NULL , NULL , a );
15075             if (_res == NULL && PyErr_Occurred()) {
15076                 p->error_indicator = 1;
15077                 p->level--;
15078                 return NULL;
15079             }
15080             goto done;
15081         }
15082         p->mark = _mark;
15083         D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
15084                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_kwds"));
15085     }
15086     _res = NULL;
15087   done:
15088     p->level--;
15089     return _res;
15090 }
15091 
15092 // lambda_kwds: invalid_lambda_kwds | '**' lambda_param_no_default
15093 static arg_ty
lambda_kwds_rule(Parser * p)15094 lambda_kwds_rule(Parser *p)
15095 {
15096     if (p->level++ == MAXSTACK) {
15097         p->error_indicator = 1;
15098         PyErr_NoMemory();
15099     }
15100     if (p->error_indicator) {
15101         p->level--;
15102         return NULL;
15103     }
15104     arg_ty _res = NULL;
15105     int _mark = p->mark;
15106     if (p->call_invalid_rules) { // invalid_lambda_kwds
15107         if (p->error_indicator) {
15108             p->level--;
15109             return NULL;
15110         }
15111         D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_kwds"));
15112         void *invalid_lambda_kwds_var;
15113         if (
15114             (invalid_lambda_kwds_var = invalid_lambda_kwds_rule(p))  // invalid_lambda_kwds
15115         )
15116         {
15117             D(fprintf(stderr, "%*c+ lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_kwds"));
15118             _res = invalid_lambda_kwds_var;
15119             goto done;
15120         }
15121         p->mark = _mark;
15122         D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
15123                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_kwds"));
15124     }
15125     { // '**' lambda_param_no_default
15126         if (p->error_indicator) {
15127             p->level--;
15128             return NULL;
15129         }
15130         D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
15131         Token * _literal;
15132         arg_ty a;
15133         if (
15134             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
15135             &&
15136             (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
15137         )
15138         {
15139             D(fprintf(stderr, "%*c+ lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
15140             _res = a;
15141             if (_res == NULL && PyErr_Occurred()) {
15142                 p->error_indicator = 1;
15143                 p->level--;
15144                 return NULL;
15145             }
15146             goto done;
15147         }
15148         p->mark = _mark;
15149         D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
15150                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param_no_default"));
15151     }
15152     _res = NULL;
15153   done:
15154     p->level--;
15155     return _res;
15156 }
15157 
15158 // lambda_param_no_default: lambda_param ',' | lambda_param &':'
15159 static arg_ty
lambda_param_no_default_rule(Parser * p)15160 lambda_param_no_default_rule(Parser *p)
15161 {
15162     if (p->level++ == MAXSTACK) {
15163         p->error_indicator = 1;
15164         PyErr_NoMemory();
15165     }
15166     if (p->error_indicator) {
15167         p->level--;
15168         return NULL;
15169     }
15170     arg_ty _res = NULL;
15171     int _mark = p->mark;
15172     { // lambda_param ','
15173         if (p->error_indicator) {
15174             p->level--;
15175             return NULL;
15176         }
15177         D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
15178         Token * _literal;
15179         arg_ty a;
15180         if (
15181             (a = lambda_param_rule(p))  // lambda_param
15182             &&
15183             (_literal = _PyPegen_expect_token(p, 12))  // token=','
15184         )
15185         {
15186             D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
15187             _res = a;
15188             if (_res == NULL && PyErr_Occurred()) {
15189                 p->error_indicator = 1;
15190                 p->level--;
15191                 return NULL;
15192             }
15193             goto done;
15194         }
15195         p->mark = _mark;
15196         D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
15197                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param ','"));
15198     }
15199     { // lambda_param &':'
15200         if (p->error_indicator) {
15201             p->level--;
15202             return NULL;
15203         }
15204         D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
15205         arg_ty a;
15206         if (
15207             (a = lambda_param_rule(p))  // lambda_param
15208             &&
15209             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
15210         )
15211         {
15212             D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
15213             _res = a;
15214             if (_res == NULL && PyErr_Occurred()) {
15215                 p->error_indicator = 1;
15216                 p->level--;
15217                 return NULL;
15218             }
15219             goto done;
15220         }
15221         p->mark = _mark;
15222         D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
15223                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param &':'"));
15224     }
15225     _res = NULL;
15226   done:
15227     p->level--;
15228     return _res;
15229 }
15230 
15231 // lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
15232 static NameDefaultPair*
lambda_param_with_default_rule(Parser * p)15233 lambda_param_with_default_rule(Parser *p)
15234 {
15235     if (p->level++ == MAXSTACK) {
15236         p->error_indicator = 1;
15237         PyErr_NoMemory();
15238     }
15239     if (p->error_indicator) {
15240         p->level--;
15241         return NULL;
15242     }
15243     NameDefaultPair* _res = NULL;
15244     int _mark = p->mark;
15245     { // lambda_param default ','
15246         if (p->error_indicator) {
15247             p->level--;
15248             return NULL;
15249         }
15250         D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
15251         Token * _literal;
15252         arg_ty a;
15253         expr_ty c;
15254         if (
15255             (a = lambda_param_rule(p))  // lambda_param
15256             &&
15257             (c = default_rule(p))  // default
15258             &&
15259             (_literal = _PyPegen_expect_token(p, 12))  // token=','
15260         )
15261         {
15262             D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
15263             _res = _PyPegen_name_default_pair ( p , a , c , NULL );
15264             if (_res == NULL && PyErr_Occurred()) {
15265                 p->error_indicator = 1;
15266                 p->level--;
15267                 return NULL;
15268             }
15269             goto done;
15270         }
15271         p->mark = _mark;
15272         D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
15273                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default ','"));
15274     }
15275     { // lambda_param default &':'
15276         if (p->error_indicator) {
15277             p->level--;
15278             return NULL;
15279         }
15280         D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
15281         arg_ty a;
15282         expr_ty c;
15283         if (
15284             (a = lambda_param_rule(p))  // lambda_param
15285             &&
15286             (c = default_rule(p))  // default
15287             &&
15288             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
15289         )
15290         {
15291             D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
15292             _res = _PyPegen_name_default_pair ( p , a , c , NULL );
15293             if (_res == NULL && PyErr_Occurred()) {
15294                 p->error_indicator = 1;
15295                 p->level--;
15296                 return NULL;
15297             }
15298             goto done;
15299         }
15300         p->mark = _mark;
15301         D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
15302                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default &':'"));
15303     }
15304     _res = NULL;
15305   done:
15306     p->level--;
15307     return _res;
15308 }
15309 
15310 // lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
15311 static NameDefaultPair*
lambda_param_maybe_default_rule(Parser * p)15312 lambda_param_maybe_default_rule(Parser *p)
15313 {
15314     if (p->level++ == MAXSTACK) {
15315         p->error_indicator = 1;
15316         PyErr_NoMemory();
15317     }
15318     if (p->error_indicator) {
15319         p->level--;
15320         return NULL;
15321     }
15322     NameDefaultPair* _res = NULL;
15323     int _mark = p->mark;
15324     { // lambda_param default? ','
15325         if (p->error_indicator) {
15326             p->level--;
15327             return NULL;
15328         }
15329         D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
15330         Token * _literal;
15331         arg_ty a;
15332         void *c;
15333         if (
15334             (a = lambda_param_rule(p))  // lambda_param
15335             &&
15336             (c = default_rule(p), !p->error_indicator)  // default?
15337             &&
15338             (_literal = _PyPegen_expect_token(p, 12))  // token=','
15339         )
15340         {
15341             D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
15342             _res = _PyPegen_name_default_pair ( p , a , c , NULL );
15343             if (_res == NULL && PyErr_Occurred()) {
15344                 p->error_indicator = 1;
15345                 p->level--;
15346                 return NULL;
15347             }
15348             goto done;
15349         }
15350         p->mark = _mark;
15351         D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
15352                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? ','"));
15353     }
15354     { // lambda_param default? &':'
15355         if (p->error_indicator) {
15356             p->level--;
15357             return NULL;
15358         }
15359         D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
15360         arg_ty a;
15361         void *c;
15362         if (
15363             (a = lambda_param_rule(p))  // lambda_param
15364             &&
15365             (c = default_rule(p), !p->error_indicator)  // default?
15366             &&
15367             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
15368         )
15369         {
15370             D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
15371             _res = _PyPegen_name_default_pair ( p , a , c , NULL );
15372             if (_res == NULL && PyErr_Occurred()) {
15373                 p->error_indicator = 1;
15374                 p->level--;
15375                 return NULL;
15376             }
15377             goto done;
15378         }
15379         p->mark = _mark;
15380         D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
15381                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? &':'"));
15382     }
15383     _res = NULL;
15384   done:
15385     p->level--;
15386     return _res;
15387 }
15388 
15389 // lambda_param: NAME
15390 static arg_ty
lambda_param_rule(Parser * p)15391 lambda_param_rule(Parser *p)
15392 {
15393     if (p->level++ == MAXSTACK) {
15394         p->error_indicator = 1;
15395         PyErr_NoMemory();
15396     }
15397     if (p->error_indicator) {
15398         p->level--;
15399         return NULL;
15400     }
15401     arg_ty _res = NULL;
15402     int _mark = p->mark;
15403     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15404         p->error_indicator = 1;
15405         p->level--;
15406         return NULL;
15407     }
15408     int _start_lineno = p->tokens[_mark]->lineno;
15409     UNUSED(_start_lineno); // Only used by EXTRA macro
15410     int _start_col_offset = p->tokens[_mark]->col_offset;
15411     UNUSED(_start_col_offset); // Only used by EXTRA macro
15412     { // NAME
15413         if (p->error_indicator) {
15414             p->level--;
15415             return NULL;
15416         }
15417         D(fprintf(stderr, "%*c> lambda_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
15418         expr_ty a;
15419         if (
15420             (a = _PyPegen_name_token(p))  // NAME
15421         )
15422         {
15423             D(fprintf(stderr, "%*c+ lambda_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
15424             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15425             if (_token == NULL) {
15426                 p->level--;
15427                 return NULL;
15428             }
15429             int _end_lineno = _token->end_lineno;
15430             UNUSED(_end_lineno); // Only used by EXTRA macro
15431             int _end_col_offset = _token->end_col_offset;
15432             UNUSED(_end_col_offset); // Only used by EXTRA macro
15433             _res = _PyAST_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
15434             if (_res == NULL && PyErr_Occurred()) {
15435                 p->error_indicator = 1;
15436                 p->level--;
15437                 return NULL;
15438             }
15439             goto done;
15440         }
15441         p->mark = _mark;
15442         D(fprintf(stderr, "%*c%s lambda_param[%d-%d]: %s failed!\n", p->level, ' ',
15443                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
15444     }
15445     _res = NULL;
15446   done:
15447     p->level--;
15448     return _res;
15449 }
15450 
15451 // strings: STRING+
15452 static expr_ty
strings_rule(Parser * p)15453 strings_rule(Parser *p)
15454 {
15455     if (p->level++ == MAXSTACK) {
15456         p->error_indicator = 1;
15457         PyErr_NoMemory();
15458     }
15459     if (p->error_indicator) {
15460         p->level--;
15461         return NULL;
15462     }
15463     expr_ty _res = NULL;
15464     if (_PyPegen_is_memoized(p, strings_type, &_res)) {
15465         p->level--;
15466         return _res;
15467     }
15468     int _mark = p->mark;
15469     { // STRING+
15470         if (p->error_indicator) {
15471             p->level--;
15472             return NULL;
15473         }
15474         D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING+"));
15475         asdl_seq * a;
15476         if (
15477             (a = _loop1_109_rule(p))  // STRING+
15478         )
15479         {
15480             D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING+"));
15481             _res = _PyPegen_concatenate_strings ( p , a );
15482             if (_res == NULL && PyErr_Occurred()) {
15483                 p->error_indicator = 1;
15484                 p->level--;
15485                 return NULL;
15486             }
15487             goto done;
15488         }
15489         p->mark = _mark;
15490         D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
15491                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING+"));
15492     }
15493     _res = NULL;
15494   done:
15495     _PyPegen_insert_memo(p, _mark, strings_type, _res);
15496     p->level--;
15497     return _res;
15498 }
15499 
15500 // list: '[' star_named_expressions? ']'
15501 static expr_ty
list_rule(Parser * p)15502 list_rule(Parser *p)
15503 {
15504     if (p->level++ == MAXSTACK) {
15505         p->error_indicator = 1;
15506         PyErr_NoMemory();
15507     }
15508     if (p->error_indicator) {
15509         p->level--;
15510         return NULL;
15511     }
15512     expr_ty _res = NULL;
15513     int _mark = p->mark;
15514     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15515         p->error_indicator = 1;
15516         p->level--;
15517         return NULL;
15518     }
15519     int _start_lineno = p->tokens[_mark]->lineno;
15520     UNUSED(_start_lineno); // Only used by EXTRA macro
15521     int _start_col_offset = p->tokens[_mark]->col_offset;
15522     UNUSED(_start_col_offset); // Only used by EXTRA macro
15523     { // '[' star_named_expressions? ']'
15524         if (p->error_indicator) {
15525             p->level--;
15526             return NULL;
15527         }
15528         D(fprintf(stderr, "%*c> list[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
15529         Token * _literal;
15530         Token * _literal_1;
15531         void *a;
15532         if (
15533             (_literal = _PyPegen_expect_token(p, 9))  // token='['
15534             &&
15535             (a = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
15536             &&
15537             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
15538         )
15539         {
15540             D(fprintf(stderr, "%*c+ list[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
15541             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15542             if (_token == NULL) {
15543                 p->level--;
15544                 return NULL;
15545             }
15546             int _end_lineno = _token->end_lineno;
15547             UNUSED(_end_lineno); // Only used by EXTRA macro
15548             int _end_col_offset = _token->end_col_offset;
15549             UNUSED(_end_col_offset); // Only used by EXTRA macro
15550             _res = _PyAST_List ( a , Load , EXTRA );
15551             if (_res == NULL && PyErr_Occurred()) {
15552                 p->error_indicator = 1;
15553                 p->level--;
15554                 return NULL;
15555             }
15556             goto done;
15557         }
15558         p->mark = _mark;
15559         D(fprintf(stderr, "%*c%s list[%d-%d]: %s failed!\n", p->level, ' ',
15560                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_named_expressions? ']'"));
15561     }
15562     _res = NULL;
15563   done:
15564     p->level--;
15565     return _res;
15566 }
15567 
15568 // tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
15569 static expr_ty
tuple_rule(Parser * p)15570 tuple_rule(Parser *p)
15571 {
15572     if (p->level++ == MAXSTACK) {
15573         p->error_indicator = 1;
15574         PyErr_NoMemory();
15575     }
15576     if (p->error_indicator) {
15577         p->level--;
15578         return NULL;
15579     }
15580     expr_ty _res = NULL;
15581     int _mark = p->mark;
15582     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15583         p->error_indicator = 1;
15584         p->level--;
15585         return NULL;
15586     }
15587     int _start_lineno = p->tokens[_mark]->lineno;
15588     UNUSED(_start_lineno); // Only used by EXTRA macro
15589     int _start_col_offset = p->tokens[_mark]->col_offset;
15590     UNUSED(_start_col_offset); // Only used by EXTRA macro
15591     { // '(' [star_named_expression ',' star_named_expressions?] ')'
15592         if (p->error_indicator) {
15593             p->level--;
15594             return NULL;
15595         }
15596         D(fprintf(stderr, "%*c> tuple[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
15597         Token * _literal;
15598         Token * _literal_1;
15599         void *a;
15600         if (
15601             (_literal = _PyPegen_expect_token(p, 7))  // token='('
15602             &&
15603             (a = _tmp_110_rule(p), !p->error_indicator)  // [star_named_expression ',' star_named_expressions?]
15604             &&
15605             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
15606         )
15607         {
15608             D(fprintf(stderr, "%*c+ tuple[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
15609             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15610             if (_token == NULL) {
15611                 p->level--;
15612                 return NULL;
15613             }
15614             int _end_lineno = _token->end_lineno;
15615             UNUSED(_end_lineno); // Only used by EXTRA macro
15616             int _end_col_offset = _token->end_col_offset;
15617             UNUSED(_end_col_offset); // Only used by EXTRA macro
15618             _res = _PyAST_Tuple ( a , Load , EXTRA );
15619             if (_res == NULL && PyErr_Occurred()) {
15620                 p->error_indicator = 1;
15621                 p->level--;
15622                 return NULL;
15623             }
15624             goto done;
15625         }
15626         p->mark = _mark;
15627         D(fprintf(stderr, "%*c%s tuple[%d-%d]: %s failed!\n", p->level, ' ',
15628                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
15629     }
15630     _res = NULL;
15631   done:
15632     p->level--;
15633     return _res;
15634 }
15635 
15636 // set: '{' star_named_expressions '}'
15637 static expr_ty
set_rule(Parser * p)15638 set_rule(Parser *p)
15639 {
15640     if (p->level++ == MAXSTACK) {
15641         p->error_indicator = 1;
15642         PyErr_NoMemory();
15643     }
15644     if (p->error_indicator) {
15645         p->level--;
15646         return NULL;
15647     }
15648     expr_ty _res = NULL;
15649     int _mark = p->mark;
15650     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15651         p->error_indicator = 1;
15652         p->level--;
15653         return NULL;
15654     }
15655     int _start_lineno = p->tokens[_mark]->lineno;
15656     UNUSED(_start_lineno); // Only used by EXTRA macro
15657     int _start_col_offset = p->tokens[_mark]->col_offset;
15658     UNUSED(_start_col_offset); // Only used by EXTRA macro
15659     { // '{' star_named_expressions '}'
15660         if (p->error_indicator) {
15661             p->level--;
15662             return NULL;
15663         }
15664         D(fprintf(stderr, "%*c> set[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
15665         Token * _literal;
15666         Token * _literal_1;
15667         asdl_expr_seq* a;
15668         if (
15669             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
15670             &&
15671             (a = star_named_expressions_rule(p))  // star_named_expressions
15672             &&
15673             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
15674         )
15675         {
15676             D(fprintf(stderr, "%*c+ set[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
15677             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15678             if (_token == NULL) {
15679                 p->level--;
15680                 return NULL;
15681             }
15682             int _end_lineno = _token->end_lineno;
15683             UNUSED(_end_lineno); // Only used by EXTRA macro
15684             int _end_col_offset = _token->end_col_offset;
15685             UNUSED(_end_col_offset); // Only used by EXTRA macro
15686             _res = _PyAST_Set ( a , EXTRA );
15687             if (_res == NULL && PyErr_Occurred()) {
15688                 p->error_indicator = 1;
15689                 p->level--;
15690                 return NULL;
15691             }
15692             goto done;
15693         }
15694         p->mark = _mark;
15695         D(fprintf(stderr, "%*c%s set[%d-%d]: %s failed!\n", p->level, ' ',
15696                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' star_named_expressions '}'"));
15697     }
15698     _res = NULL;
15699   done:
15700     p->level--;
15701     return _res;
15702 }
15703 
15704 // dict: '{' double_starred_kvpairs? '}' | '{' invalid_double_starred_kvpairs '}'
15705 static expr_ty
dict_rule(Parser * p)15706 dict_rule(Parser *p)
15707 {
15708     if (p->level++ == MAXSTACK) {
15709         p->error_indicator = 1;
15710         PyErr_NoMemory();
15711     }
15712     if (p->error_indicator) {
15713         p->level--;
15714         return NULL;
15715     }
15716     expr_ty _res = NULL;
15717     int _mark = p->mark;
15718     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15719         p->error_indicator = 1;
15720         p->level--;
15721         return NULL;
15722     }
15723     int _start_lineno = p->tokens[_mark]->lineno;
15724     UNUSED(_start_lineno); // Only used by EXTRA macro
15725     int _start_col_offset = p->tokens[_mark]->col_offset;
15726     UNUSED(_start_col_offset); // Only used by EXTRA macro
15727     { // '{' double_starred_kvpairs? '}'
15728         if (p->error_indicator) {
15729             p->level--;
15730             return NULL;
15731         }
15732         D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
15733         Token * _literal;
15734         Token * _literal_1;
15735         void *a;
15736         if (
15737             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
15738             &&
15739             (a = double_starred_kvpairs_rule(p), !p->error_indicator)  // double_starred_kvpairs?
15740             &&
15741             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
15742         )
15743         {
15744             D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
15745             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15746             if (_token == NULL) {
15747                 p->level--;
15748                 return NULL;
15749             }
15750             int _end_lineno = _token->end_lineno;
15751             UNUSED(_end_lineno); // Only used by EXTRA macro
15752             int _end_col_offset = _token->end_col_offset;
15753             UNUSED(_end_col_offset); // Only used by EXTRA macro
15754             _res = _PyAST_Dict ( CHECK ( asdl_expr_seq* , _PyPegen_get_keys ( p , a ) ) , CHECK ( asdl_expr_seq* , _PyPegen_get_values ( p , a ) ) , EXTRA );
15755             if (_res == NULL && PyErr_Occurred()) {
15756                 p->error_indicator = 1;
15757                 p->level--;
15758                 return NULL;
15759             }
15760             goto done;
15761         }
15762         p->mark = _mark;
15763         D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
15764                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
15765     }
15766     { // '{' invalid_double_starred_kvpairs '}'
15767         if (p->error_indicator) {
15768             p->level--;
15769             return NULL;
15770         }
15771         D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
15772         Token * _literal;
15773         Token * _literal_1;
15774         void *invalid_double_starred_kvpairs_var;
15775         if (
15776             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
15777             &&
15778             (invalid_double_starred_kvpairs_var = invalid_double_starred_kvpairs_rule(p))  // invalid_double_starred_kvpairs
15779             &&
15780             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
15781         )
15782         {
15783             D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
15784             _res = _PyPegen_dummy_name(p, _literal, invalid_double_starred_kvpairs_var, _literal_1);
15785             goto done;
15786         }
15787         p->mark = _mark;
15788         D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
15789                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
15790     }
15791     _res = NULL;
15792   done:
15793     p->level--;
15794     return _res;
15795 }
15796 
15797 // double_starred_kvpairs: ','.double_starred_kvpair+ ','?
15798 static asdl_seq*
double_starred_kvpairs_rule(Parser * p)15799 double_starred_kvpairs_rule(Parser *p)
15800 {
15801     if (p->level++ == MAXSTACK) {
15802         p->error_indicator = 1;
15803         PyErr_NoMemory();
15804     }
15805     if (p->error_indicator) {
15806         p->level--;
15807         return NULL;
15808     }
15809     asdl_seq* _res = NULL;
15810     int _mark = p->mark;
15811     { // ','.double_starred_kvpair+ ','?
15812         if (p->error_indicator) {
15813             p->level--;
15814             return NULL;
15815         }
15816         D(fprintf(stderr, "%*c> double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
15817         void *_opt_var;
15818         UNUSED(_opt_var); // Silence compiler warnings
15819         asdl_seq * a;
15820         if (
15821             (a = _gather_111_rule(p))  // ','.double_starred_kvpair+
15822             &&
15823             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
15824         )
15825         {
15826             D(fprintf(stderr, "%*c+ double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
15827             _res = a;
15828             if (_res == NULL && PyErr_Occurred()) {
15829                 p->error_indicator = 1;
15830                 p->level--;
15831                 return NULL;
15832             }
15833             goto done;
15834         }
15835         p->mark = _mark;
15836         D(fprintf(stderr, "%*c%s double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
15837                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ','?"));
15838     }
15839     _res = NULL;
15840   done:
15841     p->level--;
15842     return _res;
15843 }
15844 
15845 // double_starred_kvpair: '**' bitwise_or | kvpair
15846 static KeyValuePair*
double_starred_kvpair_rule(Parser * p)15847 double_starred_kvpair_rule(Parser *p)
15848 {
15849     if (p->level++ == MAXSTACK) {
15850         p->error_indicator = 1;
15851         PyErr_NoMemory();
15852     }
15853     if (p->error_indicator) {
15854         p->level--;
15855         return NULL;
15856     }
15857     KeyValuePair* _res = NULL;
15858     int _mark = p->mark;
15859     { // '**' bitwise_or
15860         if (p->error_indicator) {
15861             p->level--;
15862             return NULL;
15863         }
15864         D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
15865         Token * _literal;
15866         expr_ty a;
15867         if (
15868             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
15869             &&
15870             (a = bitwise_or_rule(p))  // bitwise_or
15871         )
15872         {
15873             D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
15874             _res = _PyPegen_key_value_pair ( p , NULL , a );
15875             if (_res == NULL && PyErr_Occurred()) {
15876                 p->error_indicator = 1;
15877                 p->level--;
15878                 return NULL;
15879             }
15880             goto done;
15881         }
15882         p->mark = _mark;
15883         D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
15884                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' bitwise_or"));
15885     }
15886     { // kvpair
15887         if (p->error_indicator) {
15888             p->level--;
15889             return NULL;
15890         }
15891         D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kvpair"));
15892         KeyValuePair* kvpair_var;
15893         if (
15894             (kvpair_var = kvpair_rule(p))  // kvpair
15895         )
15896         {
15897             D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kvpair"));
15898             _res = kvpair_var;
15899             goto done;
15900         }
15901         p->mark = _mark;
15902         D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
15903                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kvpair"));
15904     }
15905     _res = NULL;
15906   done:
15907     p->level--;
15908     return _res;
15909 }
15910 
15911 // kvpair: expression ':' expression
15912 static KeyValuePair*
kvpair_rule(Parser * p)15913 kvpair_rule(Parser *p)
15914 {
15915     if (p->level++ == MAXSTACK) {
15916         p->error_indicator = 1;
15917         PyErr_NoMemory();
15918     }
15919     if (p->error_indicator) {
15920         p->level--;
15921         return NULL;
15922     }
15923     KeyValuePair* _res = NULL;
15924     int _mark = p->mark;
15925     { // expression ':' expression
15926         if (p->error_indicator) {
15927             p->level--;
15928             return NULL;
15929         }
15930         D(fprintf(stderr, "%*c> kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
15931         Token * _literal;
15932         expr_ty a;
15933         expr_ty b;
15934         if (
15935             (a = expression_rule(p))  // expression
15936             &&
15937             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
15938             &&
15939             (b = expression_rule(p))  // expression
15940         )
15941         {
15942             D(fprintf(stderr, "%*c+ kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
15943             _res = _PyPegen_key_value_pair ( p , a , b );
15944             if (_res == NULL && PyErr_Occurred()) {
15945                 p->error_indicator = 1;
15946                 p->level--;
15947                 return NULL;
15948             }
15949             goto done;
15950         }
15951         p->mark = _mark;
15952         D(fprintf(stderr, "%*c%s kvpair[%d-%d]: %s failed!\n", p->level, ' ',
15953                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
15954     }
15955     _res = NULL;
15956   done:
15957     p->level--;
15958     return _res;
15959 }
15960 
15961 // for_if_clauses: for_if_clause+
15962 static asdl_comprehension_seq*
for_if_clauses_rule(Parser * p)15963 for_if_clauses_rule(Parser *p)
15964 {
15965     if (p->level++ == MAXSTACK) {
15966         p->error_indicator = 1;
15967         PyErr_NoMemory();
15968     }
15969     if (p->error_indicator) {
15970         p->level--;
15971         return NULL;
15972     }
15973     asdl_comprehension_seq* _res = NULL;
15974     int _mark = p->mark;
15975     { // for_if_clause+
15976         if (p->error_indicator) {
15977             p->level--;
15978             return NULL;
15979         }
15980         D(fprintf(stderr, "%*c> for_if_clauses[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
15981         asdl_comprehension_seq* a;
15982         if (
15983             (a = (asdl_comprehension_seq*)_loop1_113_rule(p))  // for_if_clause+
15984         )
15985         {
15986             D(fprintf(stderr, "%*c+ for_if_clauses[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
15987             _res = a;
15988             if (_res == NULL && PyErr_Occurred()) {
15989                 p->error_indicator = 1;
15990                 p->level--;
15991                 return NULL;
15992             }
15993             goto done;
15994         }
15995         p->mark = _mark;
15996         D(fprintf(stderr, "%*c%s for_if_clauses[%d-%d]: %s failed!\n", p->level, ' ',
15997                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause+"));
15998     }
15999     _res = NULL;
16000   done:
16001     p->level--;
16002     return _res;
16003 }
16004 
16005 // for_if_clause:
16006 //     | ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
16007 //     | 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
16008 //     | invalid_for_target
16009 static comprehension_ty
for_if_clause_rule(Parser * p)16010 for_if_clause_rule(Parser *p)
16011 {
16012     if (p->level++ == MAXSTACK) {
16013         p->error_indicator = 1;
16014         PyErr_NoMemory();
16015     }
16016     if (p->error_indicator) {
16017         p->level--;
16018         return NULL;
16019     }
16020     comprehension_ty _res = NULL;
16021     int _mark = p->mark;
16022     { // ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
16023         if (p->error_indicator) {
16024             p->level--;
16025             return NULL;
16026         }
16027         D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
16028         int _cut_var = 0;
16029         Token * _keyword;
16030         Token * _keyword_1;
16031         expr_ty a;
16032         Token * async_var;
16033         expr_ty b;
16034         asdl_expr_seq* c;
16035         if (
16036             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
16037             &&
16038             (_keyword = _PyPegen_expect_token(p, 647))  // token='for'
16039             &&
16040             (a = star_targets_rule(p))  // star_targets
16041             &&
16042             (_keyword_1 = _PyPegen_expect_token(p, 648))  // token='in'
16043             &&
16044             (_cut_var = 1)
16045             &&
16046             (b = disjunction_rule(p))  // disjunction
16047             &&
16048             (c = (asdl_expr_seq*)_loop0_114_rule(p))  // (('if' disjunction))*
16049         )
16050         {
16051             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))*"));
16052             _res = CHECK_VERSION ( comprehension_ty , 6 , "Async comprehensions are" , _PyAST_comprehension ( a , b , c , 1 , p -> arena ) );
16053             if (_res == NULL && PyErr_Occurred()) {
16054                 p->error_indicator = 1;
16055                 p->level--;
16056                 return NULL;
16057             }
16058             goto done;
16059         }
16060         p->mark = _mark;
16061         D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
16062                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
16063         if (_cut_var) {
16064             p->level--;
16065             return NULL;
16066         }
16067     }
16068     { // 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
16069         if (p->error_indicator) {
16070             p->level--;
16071             return NULL;
16072         }
16073         D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
16074         int _cut_var = 0;
16075         Token * _keyword;
16076         Token * _keyword_1;
16077         expr_ty a;
16078         expr_ty b;
16079         asdl_expr_seq* c;
16080         if (
16081             (_keyword = _PyPegen_expect_token(p, 647))  // token='for'
16082             &&
16083             (a = star_targets_rule(p))  // star_targets
16084             &&
16085             (_keyword_1 = _PyPegen_expect_token(p, 648))  // token='in'
16086             &&
16087             (_cut_var = 1)
16088             &&
16089             (b = disjunction_rule(p))  // disjunction
16090             &&
16091             (c = (asdl_expr_seq*)_loop0_115_rule(p))  // (('if' disjunction))*
16092         )
16093         {
16094             D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
16095             _res = _PyAST_comprehension ( a , b , c , 0 , p -> arena );
16096             if (_res == NULL && PyErr_Occurred()) {
16097                 p->error_indicator = 1;
16098                 p->level--;
16099                 return NULL;
16100             }
16101             goto done;
16102         }
16103         p->mark = _mark;
16104         D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
16105                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
16106         if (_cut_var) {
16107             p->level--;
16108             return NULL;
16109         }
16110     }
16111     if (p->call_invalid_rules) { // invalid_for_target
16112         if (p->error_indicator) {
16113             p->level--;
16114             return NULL;
16115         }
16116         D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
16117         void *invalid_for_target_var;
16118         if (
16119             (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
16120         )
16121         {
16122             D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
16123             _res = invalid_for_target_var;
16124             goto done;
16125         }
16126         p->mark = _mark;
16127         D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
16128                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
16129     }
16130     _res = NULL;
16131   done:
16132     p->level--;
16133     return _res;
16134 }
16135 
16136 // listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
16137 static expr_ty
listcomp_rule(Parser * p)16138 listcomp_rule(Parser *p)
16139 {
16140     if (p->level++ == MAXSTACK) {
16141         p->error_indicator = 1;
16142         PyErr_NoMemory();
16143     }
16144     if (p->error_indicator) {
16145         p->level--;
16146         return NULL;
16147     }
16148     expr_ty _res = NULL;
16149     int _mark = p->mark;
16150     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16151         p->error_indicator = 1;
16152         p->level--;
16153         return NULL;
16154     }
16155     int _start_lineno = p->tokens[_mark]->lineno;
16156     UNUSED(_start_lineno); // Only used by EXTRA macro
16157     int _start_col_offset = p->tokens[_mark]->col_offset;
16158     UNUSED(_start_col_offset); // Only used by EXTRA macro
16159     { // '[' named_expression for_if_clauses ']'
16160         if (p->error_indicator) {
16161             p->level--;
16162             return NULL;
16163         }
16164         D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
16165         Token * _literal;
16166         Token * _literal_1;
16167         expr_ty a;
16168         asdl_comprehension_seq* b;
16169         if (
16170             (_literal = _PyPegen_expect_token(p, 9))  // token='['
16171             &&
16172             (a = named_expression_rule(p))  // named_expression
16173             &&
16174             (b = for_if_clauses_rule(p))  // for_if_clauses
16175             &&
16176             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
16177         )
16178         {
16179             D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
16180             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16181             if (_token == NULL) {
16182                 p->level--;
16183                 return NULL;
16184             }
16185             int _end_lineno = _token->end_lineno;
16186             UNUSED(_end_lineno); // Only used by EXTRA macro
16187             int _end_col_offset = _token->end_col_offset;
16188             UNUSED(_end_col_offset); // Only used by EXTRA macro
16189             _res = _PyAST_ListComp ( a , b , EXTRA );
16190             if (_res == NULL && PyErr_Occurred()) {
16191                 p->error_indicator = 1;
16192                 p->level--;
16193                 return NULL;
16194             }
16195             goto done;
16196         }
16197         p->mark = _mark;
16198         D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
16199                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
16200     }
16201     if (p->call_invalid_rules) { // invalid_comprehension
16202         if (p->error_indicator) {
16203             p->level--;
16204             return NULL;
16205         }
16206         D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
16207         void *invalid_comprehension_var;
16208         if (
16209             (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
16210         )
16211         {
16212             D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
16213             _res = invalid_comprehension_var;
16214             goto done;
16215         }
16216         p->mark = _mark;
16217         D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
16218                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
16219     }
16220     _res = NULL;
16221   done:
16222     p->level--;
16223     return _res;
16224 }
16225 
16226 // setcomp: '{' named_expression for_if_clauses '}' | invalid_comprehension
16227 static expr_ty
setcomp_rule(Parser * p)16228 setcomp_rule(Parser *p)
16229 {
16230     if (p->level++ == MAXSTACK) {
16231         p->error_indicator = 1;
16232         PyErr_NoMemory();
16233     }
16234     if (p->error_indicator) {
16235         p->level--;
16236         return NULL;
16237     }
16238     expr_ty _res = NULL;
16239     int _mark = p->mark;
16240     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16241         p->error_indicator = 1;
16242         p->level--;
16243         return NULL;
16244     }
16245     int _start_lineno = p->tokens[_mark]->lineno;
16246     UNUSED(_start_lineno); // Only used by EXTRA macro
16247     int _start_col_offset = p->tokens[_mark]->col_offset;
16248     UNUSED(_start_col_offset); // Only used by EXTRA macro
16249     { // '{' named_expression for_if_clauses '}'
16250         if (p->error_indicator) {
16251             p->level--;
16252             return NULL;
16253         }
16254         D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
16255         Token * _literal;
16256         Token * _literal_1;
16257         expr_ty a;
16258         asdl_comprehension_seq* b;
16259         if (
16260             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16261             &&
16262             (a = named_expression_rule(p))  // named_expression
16263             &&
16264             (b = for_if_clauses_rule(p))  // for_if_clauses
16265             &&
16266             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
16267         )
16268         {
16269             D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
16270             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16271             if (_token == NULL) {
16272                 p->level--;
16273                 return NULL;
16274             }
16275             int _end_lineno = _token->end_lineno;
16276             UNUSED(_end_lineno); // Only used by EXTRA macro
16277             int _end_col_offset = _token->end_col_offset;
16278             UNUSED(_end_col_offset); // Only used by EXTRA macro
16279             _res = _PyAST_SetComp ( a , b , EXTRA );
16280             if (_res == NULL && PyErr_Occurred()) {
16281                 p->error_indicator = 1;
16282                 p->level--;
16283                 return NULL;
16284             }
16285             goto done;
16286         }
16287         p->mark = _mark;
16288         D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
16289                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
16290     }
16291     if (p->call_invalid_rules) { // invalid_comprehension
16292         if (p->error_indicator) {
16293             p->level--;
16294             return NULL;
16295         }
16296         D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
16297         void *invalid_comprehension_var;
16298         if (
16299             (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
16300         )
16301         {
16302             D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
16303             _res = invalid_comprehension_var;
16304             goto done;
16305         }
16306         p->mark = _mark;
16307         D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
16308                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
16309     }
16310     _res = NULL;
16311   done:
16312     p->level--;
16313     return _res;
16314 }
16315 
16316 // genexp:
16317 //     | '(' (assignment_expression | expression !':=') for_if_clauses ')'
16318 //     | invalid_comprehension
16319 static expr_ty
genexp_rule(Parser * p)16320 genexp_rule(Parser *p)
16321 {
16322     if (p->level++ == MAXSTACK) {
16323         p->error_indicator = 1;
16324         PyErr_NoMemory();
16325     }
16326     if (p->error_indicator) {
16327         p->level--;
16328         return NULL;
16329     }
16330     expr_ty _res = NULL;
16331     int _mark = p->mark;
16332     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16333         p->error_indicator = 1;
16334         p->level--;
16335         return NULL;
16336     }
16337     int _start_lineno = p->tokens[_mark]->lineno;
16338     UNUSED(_start_lineno); // Only used by EXTRA macro
16339     int _start_col_offset = p->tokens[_mark]->col_offset;
16340     UNUSED(_start_col_offset); // Only used by EXTRA macro
16341     { // '(' (assignment_expression | expression !':=') for_if_clauses ')'
16342         if (p->error_indicator) {
16343             p->level--;
16344             return NULL;
16345         }
16346         D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
16347         Token * _literal;
16348         Token * _literal_1;
16349         void *a;
16350         asdl_comprehension_seq* b;
16351         if (
16352             (_literal = _PyPegen_expect_token(p, 7))  // token='('
16353             &&
16354             (a = _tmp_116_rule(p))  // assignment_expression | expression !':='
16355             &&
16356             (b = for_if_clauses_rule(p))  // for_if_clauses
16357             &&
16358             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
16359         )
16360         {
16361             D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
16362             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16363             if (_token == NULL) {
16364                 p->level--;
16365                 return NULL;
16366             }
16367             int _end_lineno = _token->end_lineno;
16368             UNUSED(_end_lineno); // Only used by EXTRA macro
16369             int _end_col_offset = _token->end_col_offset;
16370             UNUSED(_end_col_offset); // Only used by EXTRA macro
16371             _res = _PyAST_GeneratorExp ( a , b , EXTRA );
16372             if (_res == NULL && PyErr_Occurred()) {
16373                 p->error_indicator = 1;
16374                 p->level--;
16375                 return NULL;
16376             }
16377             goto done;
16378         }
16379         p->mark = _mark;
16380         D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
16381                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
16382     }
16383     if (p->call_invalid_rules) { // invalid_comprehension
16384         if (p->error_indicator) {
16385             p->level--;
16386             return NULL;
16387         }
16388         D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
16389         void *invalid_comprehension_var;
16390         if (
16391             (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
16392         )
16393         {
16394             D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
16395             _res = invalid_comprehension_var;
16396             goto done;
16397         }
16398         p->mark = _mark;
16399         D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
16400                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
16401     }
16402     _res = NULL;
16403   done:
16404     p->level--;
16405     return _res;
16406 }
16407 
16408 // dictcomp: '{' kvpair for_if_clauses '}' | invalid_dict_comprehension
16409 static expr_ty
dictcomp_rule(Parser * p)16410 dictcomp_rule(Parser *p)
16411 {
16412     if (p->level++ == MAXSTACK) {
16413         p->error_indicator = 1;
16414         PyErr_NoMemory();
16415     }
16416     if (p->error_indicator) {
16417         p->level--;
16418         return NULL;
16419     }
16420     expr_ty _res = NULL;
16421     int _mark = p->mark;
16422     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16423         p->error_indicator = 1;
16424         p->level--;
16425         return NULL;
16426     }
16427     int _start_lineno = p->tokens[_mark]->lineno;
16428     UNUSED(_start_lineno); // Only used by EXTRA macro
16429     int _start_col_offset = p->tokens[_mark]->col_offset;
16430     UNUSED(_start_col_offset); // Only used by EXTRA macro
16431     { // '{' kvpair for_if_clauses '}'
16432         if (p->error_indicator) {
16433             p->level--;
16434             return NULL;
16435         }
16436         D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
16437         Token * _literal;
16438         Token * _literal_1;
16439         KeyValuePair* a;
16440         asdl_comprehension_seq* b;
16441         if (
16442             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
16443             &&
16444             (a = kvpair_rule(p))  // kvpair
16445             &&
16446             (b = for_if_clauses_rule(p))  // for_if_clauses
16447             &&
16448             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
16449         )
16450         {
16451             D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
16452             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16453             if (_token == NULL) {
16454                 p->level--;
16455                 return NULL;
16456             }
16457             int _end_lineno = _token->end_lineno;
16458             UNUSED(_end_lineno); // Only used by EXTRA macro
16459             int _end_col_offset = _token->end_col_offset;
16460             UNUSED(_end_col_offset); // Only used by EXTRA macro
16461             _res = _PyAST_DictComp ( a -> key , a -> value , b , EXTRA );
16462             if (_res == NULL && PyErr_Occurred()) {
16463                 p->error_indicator = 1;
16464                 p->level--;
16465                 return NULL;
16466             }
16467             goto done;
16468         }
16469         p->mark = _mark;
16470         D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
16471                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
16472     }
16473     if (p->call_invalid_rules) { // invalid_dict_comprehension
16474         if (p->error_indicator) {
16475             p->level--;
16476             return NULL;
16477         }
16478         D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
16479         void *invalid_dict_comprehension_var;
16480         if (
16481             (invalid_dict_comprehension_var = invalid_dict_comprehension_rule(p))  // invalid_dict_comprehension
16482         )
16483         {
16484             D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
16485             _res = invalid_dict_comprehension_var;
16486             goto done;
16487         }
16488         p->mark = _mark;
16489         D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
16490                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_dict_comprehension"));
16491     }
16492     _res = NULL;
16493   done:
16494     p->level--;
16495     return _res;
16496 }
16497 
16498 // arguments: args ','? &')' | invalid_arguments
16499 static expr_ty
arguments_rule(Parser * p)16500 arguments_rule(Parser *p)
16501 {
16502     if (p->level++ == MAXSTACK) {
16503         p->error_indicator = 1;
16504         PyErr_NoMemory();
16505     }
16506     if (p->error_indicator) {
16507         p->level--;
16508         return NULL;
16509     }
16510     expr_ty _res = NULL;
16511     if (_PyPegen_is_memoized(p, arguments_type, &_res)) {
16512         p->level--;
16513         return _res;
16514     }
16515     int _mark = p->mark;
16516     { // args ','? &')'
16517         if (p->error_indicator) {
16518             p->level--;
16519             return NULL;
16520         }
16521         D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
16522         void *_opt_var;
16523         UNUSED(_opt_var); // Silence compiler warnings
16524         expr_ty a;
16525         if (
16526             (a = args_rule(p))  // args
16527             &&
16528             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
16529             &&
16530             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
16531         )
16532         {
16533             D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
16534             _res = a;
16535             if (_res == NULL && PyErr_Occurred()) {
16536                 p->error_indicator = 1;
16537                 p->level--;
16538                 return NULL;
16539             }
16540             goto done;
16541         }
16542         p->mark = _mark;
16543         D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
16544                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','? &')'"));
16545     }
16546     if (p->call_invalid_rules) { // invalid_arguments
16547         if (p->error_indicator) {
16548             p->level--;
16549             return NULL;
16550         }
16551         D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
16552         void *invalid_arguments_var;
16553         if (
16554             (invalid_arguments_var = invalid_arguments_rule(p))  // invalid_arguments
16555         )
16556         {
16557             D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
16558             _res = invalid_arguments_var;
16559             goto done;
16560         }
16561         p->mark = _mark;
16562         D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
16563                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_arguments"));
16564     }
16565     _res = NULL;
16566   done:
16567     _PyPegen_insert_memo(p, _mark, arguments_type, _res);
16568     p->level--;
16569     return _res;
16570 }
16571 
16572 // args:
16573 //     | ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
16574 //     | kwargs
16575 static expr_ty
args_rule(Parser * p)16576 args_rule(Parser *p)
16577 {
16578     if (p->level++ == MAXSTACK) {
16579         p->error_indicator = 1;
16580         PyErr_NoMemory();
16581     }
16582     if (p->error_indicator) {
16583         p->level--;
16584         return NULL;
16585     }
16586     expr_ty _res = NULL;
16587     int _mark = p->mark;
16588     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16589         p->error_indicator = 1;
16590         p->level--;
16591         return NULL;
16592     }
16593     int _start_lineno = p->tokens[_mark]->lineno;
16594     UNUSED(_start_lineno); // Only used by EXTRA macro
16595     int _start_col_offset = p->tokens[_mark]->col_offset;
16596     UNUSED(_start_col_offset); // Only used by EXTRA macro
16597     { // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
16598         if (p->error_indicator) {
16599             p->level--;
16600             return NULL;
16601         }
16602         D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
16603         asdl_expr_seq* a;
16604         void *b;
16605         if (
16606             (a = (asdl_expr_seq*)_gather_117_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+
16607             &&
16608             (b = _tmp_119_rule(p), !p->error_indicator)  // [',' kwargs]
16609         )
16610         {
16611             D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
16612             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16613             if (_token == NULL) {
16614                 p->level--;
16615                 return NULL;
16616             }
16617             int _end_lineno = _token->end_lineno;
16618             UNUSED(_end_lineno); // Only used by EXTRA macro
16619             int _end_col_offset = _token->end_col_offset;
16620             UNUSED(_end_col_offset); // Only used by EXTRA macro
16621             _res = _PyPegen_collect_call_seqs ( p , a , b , EXTRA );
16622             if (_res == NULL && PyErr_Occurred()) {
16623                 p->error_indicator = 1;
16624                 p->level--;
16625                 return NULL;
16626             }
16627             goto done;
16628         }
16629         p->mark = _mark;
16630         D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
16631                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
16632     }
16633     { // kwargs
16634         if (p->error_indicator) {
16635             p->level--;
16636             return NULL;
16637         }
16638         D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwargs"));
16639         asdl_seq* a;
16640         if (
16641             (a = kwargs_rule(p))  // kwargs
16642         )
16643         {
16644             D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwargs"));
16645             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16646             if (_token == NULL) {
16647                 p->level--;
16648                 return NULL;
16649             }
16650             int _end_lineno = _token->end_lineno;
16651             UNUSED(_end_lineno); // Only used by EXTRA macro
16652             int _end_col_offset = _token->end_col_offset;
16653             UNUSED(_end_col_offset); // Only used by EXTRA macro
16654             _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 );
16655             if (_res == NULL && PyErr_Occurred()) {
16656                 p->error_indicator = 1;
16657                 p->level--;
16658                 return NULL;
16659             }
16660             goto done;
16661         }
16662         p->mark = _mark;
16663         D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
16664                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwargs"));
16665     }
16666     _res = NULL;
16667   done:
16668     p->level--;
16669     return _res;
16670 }
16671 
16672 // kwargs:
16673 //     | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
16674 //     | ','.kwarg_or_starred+
16675 //     | ','.kwarg_or_double_starred+
16676 static asdl_seq*
kwargs_rule(Parser * p)16677 kwargs_rule(Parser *p)
16678 {
16679     if (p->level++ == MAXSTACK) {
16680         p->error_indicator = 1;
16681         PyErr_NoMemory();
16682     }
16683     if (p->error_indicator) {
16684         p->level--;
16685         return NULL;
16686     }
16687     asdl_seq* _res = NULL;
16688     int _mark = p->mark;
16689     { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
16690         if (p->error_indicator) {
16691             p->level--;
16692             return NULL;
16693         }
16694         D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
16695         Token * _literal;
16696         asdl_seq * a;
16697         asdl_seq * b;
16698         if (
16699             (a = _gather_120_rule(p))  // ','.kwarg_or_starred+
16700             &&
16701             (_literal = _PyPegen_expect_token(p, 12))  // token=','
16702             &&
16703             (b = _gather_122_rule(p))  // ','.kwarg_or_double_starred+
16704         )
16705         {
16706             D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
16707             _res = _PyPegen_join_sequences ( p , a , b );
16708             if (_res == NULL && PyErr_Occurred()) {
16709                 p->error_indicator = 1;
16710                 p->level--;
16711                 return NULL;
16712             }
16713             goto done;
16714         }
16715         p->mark = _mark;
16716         D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
16717                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
16718     }
16719     { // ','.kwarg_or_starred+
16720         if (p->error_indicator) {
16721             p->level--;
16722             return NULL;
16723         }
16724         D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
16725         asdl_seq * _gather_124_var;
16726         if (
16727             (_gather_124_var = _gather_124_rule(p))  // ','.kwarg_or_starred+
16728         )
16729         {
16730             D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
16731             _res = _gather_124_var;
16732             goto done;
16733         }
16734         p->mark = _mark;
16735         D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
16736                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+"));
16737     }
16738     { // ','.kwarg_or_double_starred+
16739         if (p->error_indicator) {
16740             p->level--;
16741             return NULL;
16742         }
16743         D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
16744         asdl_seq * _gather_126_var;
16745         if (
16746             (_gather_126_var = _gather_126_rule(p))  // ','.kwarg_or_double_starred+
16747         )
16748         {
16749             D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
16750             _res = _gather_126_var;
16751             goto done;
16752         }
16753         p->mark = _mark;
16754         D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
16755                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_double_starred+"));
16756     }
16757     _res = NULL;
16758   done:
16759     p->level--;
16760     return _res;
16761 }
16762 
16763 // starred_expression: '*' expression
16764 static expr_ty
starred_expression_rule(Parser * p)16765 starred_expression_rule(Parser *p)
16766 {
16767     if (p->level++ == MAXSTACK) {
16768         p->error_indicator = 1;
16769         PyErr_NoMemory();
16770     }
16771     if (p->error_indicator) {
16772         p->level--;
16773         return NULL;
16774     }
16775     expr_ty _res = NULL;
16776     int _mark = p->mark;
16777     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16778         p->error_indicator = 1;
16779         p->level--;
16780         return NULL;
16781     }
16782     int _start_lineno = p->tokens[_mark]->lineno;
16783     UNUSED(_start_lineno); // Only used by EXTRA macro
16784     int _start_col_offset = p->tokens[_mark]->col_offset;
16785     UNUSED(_start_col_offset); // Only used by EXTRA macro
16786     { // '*' expression
16787         if (p->error_indicator) {
16788             p->level--;
16789             return NULL;
16790         }
16791         D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
16792         Token * _literal;
16793         expr_ty a;
16794         if (
16795             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
16796             &&
16797             (a = expression_rule(p))  // expression
16798         )
16799         {
16800             D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
16801             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16802             if (_token == NULL) {
16803                 p->level--;
16804                 return NULL;
16805             }
16806             int _end_lineno = _token->end_lineno;
16807             UNUSED(_end_lineno); // Only used by EXTRA macro
16808             int _end_col_offset = _token->end_col_offset;
16809             UNUSED(_end_col_offset); // Only used by EXTRA macro
16810             _res = _PyAST_Starred ( a , Load , EXTRA );
16811             if (_res == NULL && PyErr_Occurred()) {
16812                 p->error_indicator = 1;
16813                 p->level--;
16814                 return NULL;
16815             }
16816             goto done;
16817         }
16818         p->mark = _mark;
16819         D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
16820                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
16821     }
16822     _res = NULL;
16823   done:
16824     p->level--;
16825     return _res;
16826 }
16827 
16828 // kwarg_or_starred: invalid_kwarg | NAME '=' expression | starred_expression
16829 static KeywordOrStarred*
kwarg_or_starred_rule(Parser * p)16830 kwarg_or_starred_rule(Parser *p)
16831 {
16832     if (p->level++ == MAXSTACK) {
16833         p->error_indicator = 1;
16834         PyErr_NoMemory();
16835     }
16836     if (p->error_indicator) {
16837         p->level--;
16838         return NULL;
16839     }
16840     KeywordOrStarred* _res = NULL;
16841     int _mark = p->mark;
16842     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16843         p->error_indicator = 1;
16844         p->level--;
16845         return NULL;
16846     }
16847     int _start_lineno = p->tokens[_mark]->lineno;
16848     UNUSED(_start_lineno); // Only used by EXTRA macro
16849     int _start_col_offset = p->tokens[_mark]->col_offset;
16850     UNUSED(_start_col_offset); // Only used by EXTRA macro
16851     if (p->call_invalid_rules) { // invalid_kwarg
16852         if (p->error_indicator) {
16853             p->level--;
16854             return NULL;
16855         }
16856         D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
16857         void *invalid_kwarg_var;
16858         if (
16859             (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
16860         )
16861         {
16862             D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
16863             _res = invalid_kwarg_var;
16864             goto done;
16865         }
16866         p->mark = _mark;
16867         D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
16868                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
16869     }
16870     { // NAME '=' expression
16871         if (p->error_indicator) {
16872             p->level--;
16873             return NULL;
16874         }
16875         D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
16876         Token * _literal;
16877         expr_ty a;
16878         expr_ty b;
16879         if (
16880             (a = _PyPegen_name_token(p))  // NAME
16881             &&
16882             (_literal = _PyPegen_expect_token(p, 22))  // token='='
16883             &&
16884             (b = expression_rule(p))  // expression
16885         )
16886         {
16887             D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
16888             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16889             if (_token == NULL) {
16890                 p->level--;
16891                 return NULL;
16892             }
16893             int _end_lineno = _token->end_lineno;
16894             UNUSED(_end_lineno); // Only used by EXTRA macro
16895             int _end_col_offset = _token->end_col_offset;
16896             UNUSED(_end_col_offset); // Only used by EXTRA macro
16897             _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
16898             if (_res == NULL && PyErr_Occurred()) {
16899                 p->error_indicator = 1;
16900                 p->level--;
16901                 return NULL;
16902             }
16903             goto done;
16904         }
16905         p->mark = _mark;
16906         D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
16907                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
16908     }
16909     { // starred_expression
16910         if (p->error_indicator) {
16911             p->level--;
16912             return NULL;
16913         }
16914         D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
16915         expr_ty a;
16916         if (
16917             (a = starred_expression_rule(p))  // starred_expression
16918         )
16919         {
16920             D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
16921             _res = _PyPegen_keyword_or_starred ( p , a , 0 );
16922             if (_res == NULL && PyErr_Occurred()) {
16923                 p->error_indicator = 1;
16924                 p->level--;
16925                 return NULL;
16926             }
16927             goto done;
16928         }
16929         p->mark = _mark;
16930         D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
16931                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
16932     }
16933     _res = NULL;
16934   done:
16935     p->level--;
16936     return _res;
16937 }
16938 
16939 // kwarg_or_double_starred: invalid_kwarg | NAME '=' expression | '**' expression
16940 static KeywordOrStarred*
kwarg_or_double_starred_rule(Parser * p)16941 kwarg_or_double_starred_rule(Parser *p)
16942 {
16943     if (p->level++ == MAXSTACK) {
16944         p->error_indicator = 1;
16945         PyErr_NoMemory();
16946     }
16947     if (p->error_indicator) {
16948         p->level--;
16949         return NULL;
16950     }
16951     KeywordOrStarred* _res = NULL;
16952     int _mark = p->mark;
16953     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16954         p->error_indicator = 1;
16955         p->level--;
16956         return NULL;
16957     }
16958     int _start_lineno = p->tokens[_mark]->lineno;
16959     UNUSED(_start_lineno); // Only used by EXTRA macro
16960     int _start_col_offset = p->tokens[_mark]->col_offset;
16961     UNUSED(_start_col_offset); // Only used by EXTRA macro
16962     if (p->call_invalid_rules) { // invalid_kwarg
16963         if (p->error_indicator) {
16964             p->level--;
16965             return NULL;
16966         }
16967         D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
16968         void *invalid_kwarg_var;
16969         if (
16970             (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
16971         )
16972         {
16973             D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
16974             _res = invalid_kwarg_var;
16975             goto done;
16976         }
16977         p->mark = _mark;
16978         D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
16979                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
16980     }
16981     { // NAME '=' expression
16982         if (p->error_indicator) {
16983             p->level--;
16984             return NULL;
16985         }
16986         D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
16987         Token * _literal;
16988         expr_ty a;
16989         expr_ty b;
16990         if (
16991             (a = _PyPegen_name_token(p))  // NAME
16992             &&
16993             (_literal = _PyPegen_expect_token(p, 22))  // token='='
16994             &&
16995             (b = expression_rule(p))  // expression
16996         )
16997         {
16998             D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
16999             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17000             if (_token == NULL) {
17001                 p->level--;
17002                 return NULL;
17003             }
17004             int _end_lineno = _token->end_lineno;
17005             UNUSED(_end_lineno); // Only used by EXTRA macro
17006             int _end_col_offset = _token->end_col_offset;
17007             UNUSED(_end_col_offset); // Only used by EXTRA macro
17008             _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
17009             if (_res == NULL && PyErr_Occurred()) {
17010                 p->error_indicator = 1;
17011                 p->level--;
17012                 return NULL;
17013             }
17014             goto done;
17015         }
17016         p->mark = _mark;
17017         D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
17018                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
17019     }
17020     { // '**' expression
17021         if (p->error_indicator) {
17022             p->level--;
17023             return NULL;
17024         }
17025         D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
17026         Token * _literal;
17027         expr_ty a;
17028         if (
17029             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
17030             &&
17031             (a = expression_rule(p))  // expression
17032         )
17033         {
17034             D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
17035             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17036             if (_token == NULL) {
17037                 p->level--;
17038                 return NULL;
17039             }
17040             int _end_lineno = _token->end_lineno;
17041             UNUSED(_end_lineno); // Only used by EXTRA macro
17042             int _end_col_offset = _token->end_col_offset;
17043             UNUSED(_end_col_offset); // Only used by EXTRA macro
17044             _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( NULL , a , EXTRA ) ) , 1 );
17045             if (_res == NULL && PyErr_Occurred()) {
17046                 p->error_indicator = 1;
17047                 p->level--;
17048                 return NULL;
17049             }
17050             goto done;
17051         }
17052         p->mark = _mark;
17053         D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
17054                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
17055     }
17056     _res = NULL;
17057   done:
17058     p->level--;
17059     return _res;
17060 }
17061 
17062 // star_targets: star_target !',' | star_target ((',' star_target))* ','?
17063 static expr_ty
star_targets_rule(Parser * p)17064 star_targets_rule(Parser *p)
17065 {
17066     if (p->level++ == MAXSTACK) {
17067         p->error_indicator = 1;
17068         PyErr_NoMemory();
17069     }
17070     if (p->error_indicator) {
17071         p->level--;
17072         return NULL;
17073     }
17074     expr_ty _res = NULL;
17075     int _mark = p->mark;
17076     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17077         p->error_indicator = 1;
17078         p->level--;
17079         return NULL;
17080     }
17081     int _start_lineno = p->tokens[_mark]->lineno;
17082     UNUSED(_start_lineno); // Only used by EXTRA macro
17083     int _start_col_offset = p->tokens[_mark]->col_offset;
17084     UNUSED(_start_col_offset); // Only used by EXTRA macro
17085     { // star_target !','
17086         if (p->error_indicator) {
17087             p->level--;
17088             return NULL;
17089         }
17090         D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target !','"));
17091         expr_ty a;
17092         if (
17093             (a = star_target_rule(p))  // star_target
17094             &&
17095             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
17096         )
17097         {
17098             D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target !','"));
17099             _res = a;
17100             if (_res == NULL && PyErr_Occurred()) {
17101                 p->error_indicator = 1;
17102                 p->level--;
17103                 return NULL;
17104             }
17105             goto done;
17106         }
17107         p->mark = _mark;
17108         D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
17109                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target !','"));
17110     }
17111     { // star_target ((',' star_target))* ','?
17112         if (p->error_indicator) {
17113             p->level--;
17114             return NULL;
17115         }
17116         D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
17117         void *_opt_var;
17118         UNUSED(_opt_var); // Silence compiler warnings
17119         expr_ty a;
17120         asdl_seq * b;
17121         if (
17122             (a = star_target_rule(p))  // star_target
17123             &&
17124             (b = _loop0_128_rule(p))  // ((',' star_target))*
17125             &&
17126             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
17127         )
17128         {
17129             D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
17130             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17131             if (_token == NULL) {
17132                 p->level--;
17133                 return NULL;
17134             }
17135             int _end_lineno = _token->end_lineno;
17136             UNUSED(_end_lineno); // Only used by EXTRA macro
17137             int _end_col_offset = _token->end_col_offset;
17138             UNUSED(_end_col_offset); // Only used by EXTRA macro
17139             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
17140             if (_res == NULL && PyErr_Occurred()) {
17141                 p->error_indicator = 1;
17142                 p->level--;
17143                 return NULL;
17144             }
17145             goto done;
17146         }
17147         p->mark = _mark;
17148         D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
17149                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))* ','?"));
17150     }
17151     _res = NULL;
17152   done:
17153     p->level--;
17154     return _res;
17155 }
17156 
17157 // star_targets_list_seq: ','.star_target+ ','?
17158 static asdl_expr_seq*
star_targets_list_seq_rule(Parser * p)17159 star_targets_list_seq_rule(Parser *p)
17160 {
17161     if (p->level++ == MAXSTACK) {
17162         p->error_indicator = 1;
17163         PyErr_NoMemory();
17164     }
17165     if (p->error_indicator) {
17166         p->level--;
17167         return NULL;
17168     }
17169     asdl_expr_seq* _res = NULL;
17170     int _mark = p->mark;
17171     { // ','.star_target+ ','?
17172         if (p->error_indicator) {
17173             p->level--;
17174             return NULL;
17175         }
17176         D(fprintf(stderr, "%*c> star_targets_list_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
17177         void *_opt_var;
17178         UNUSED(_opt_var); // Silence compiler warnings
17179         asdl_expr_seq* a;
17180         if (
17181             (a = (asdl_expr_seq*)_gather_129_rule(p))  // ','.star_target+
17182             &&
17183             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
17184         )
17185         {
17186             D(fprintf(stderr, "%*c+ star_targets_list_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
17187             _res = a;
17188             if (_res == NULL && PyErr_Occurred()) {
17189                 p->error_indicator = 1;
17190                 p->level--;
17191                 return NULL;
17192             }
17193             goto done;
17194         }
17195         p->mark = _mark;
17196         D(fprintf(stderr, "%*c%s star_targets_list_seq[%d-%d]: %s failed!\n", p->level, ' ',
17197                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_target+ ','?"));
17198     }
17199     _res = NULL;
17200   done:
17201     p->level--;
17202     return _res;
17203 }
17204 
17205 // star_targets_tuple_seq: star_target ((',' star_target))+ ','? | star_target ','
17206 static asdl_expr_seq*
star_targets_tuple_seq_rule(Parser * p)17207 star_targets_tuple_seq_rule(Parser *p)
17208 {
17209     if (p->level++ == MAXSTACK) {
17210         p->error_indicator = 1;
17211         PyErr_NoMemory();
17212     }
17213     if (p->error_indicator) {
17214         p->level--;
17215         return NULL;
17216     }
17217     asdl_expr_seq* _res = NULL;
17218     int _mark = p->mark;
17219     { // star_target ((',' star_target))+ ','?
17220         if (p->error_indicator) {
17221             p->level--;
17222             return NULL;
17223         }
17224         D(fprintf(stderr, "%*c> star_targets_tuple_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
17225         void *_opt_var;
17226         UNUSED(_opt_var); // Silence compiler warnings
17227         expr_ty a;
17228         asdl_seq * b;
17229         if (
17230             (a = star_target_rule(p))  // star_target
17231             &&
17232             (b = _loop1_131_rule(p))  // ((',' star_target))+
17233             &&
17234             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
17235         )
17236         {
17237             D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
17238             _res = ( asdl_expr_seq* ) _PyPegen_seq_insert_in_front ( p , a , b );
17239             if (_res == NULL && PyErr_Occurred()) {
17240                 p->error_indicator = 1;
17241                 p->level--;
17242                 return NULL;
17243             }
17244             goto done;
17245         }
17246         p->mark = _mark;
17247         D(fprintf(stderr, "%*c%s star_targets_tuple_seq[%d-%d]: %s failed!\n", p->level, ' ',
17248                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))+ ','?"));
17249     }
17250     { // star_target ','
17251         if (p->error_indicator) {
17252             p->level--;
17253             return NULL;
17254         }
17255         D(fprintf(stderr, "%*c> star_targets_tuple_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ','"));
17256         Token * _literal;
17257         expr_ty a;
17258         if (
17259             (a = star_target_rule(p))  // star_target
17260             &&
17261             (_literal = _PyPegen_expect_token(p, 12))  // token=','
17262         )
17263         {
17264             D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ','"));
17265             _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
17266             if (_res == NULL && PyErr_Occurred()) {
17267                 p->error_indicator = 1;
17268                 p->level--;
17269                 return NULL;
17270             }
17271             goto done;
17272         }
17273         p->mark = _mark;
17274         D(fprintf(stderr, "%*c%s star_targets_tuple_seq[%d-%d]: %s failed!\n", p->level, ' ',
17275                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ','"));
17276     }
17277     _res = NULL;
17278   done:
17279     p->level--;
17280     return _res;
17281 }
17282 
17283 // star_target: '*' (!'*' star_target) | target_with_star_atom
17284 static expr_ty
star_target_rule(Parser * p)17285 star_target_rule(Parser *p)
17286 {
17287     if (p->level++ == MAXSTACK) {
17288         p->error_indicator = 1;
17289         PyErr_NoMemory();
17290     }
17291     if (p->error_indicator) {
17292         p->level--;
17293         return NULL;
17294     }
17295     expr_ty _res = NULL;
17296     if (_PyPegen_is_memoized(p, star_target_type, &_res)) {
17297         p->level--;
17298         return _res;
17299     }
17300     int _mark = p->mark;
17301     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17302         p->error_indicator = 1;
17303         p->level--;
17304         return NULL;
17305     }
17306     int _start_lineno = p->tokens[_mark]->lineno;
17307     UNUSED(_start_lineno); // Only used by EXTRA macro
17308     int _start_col_offset = p->tokens[_mark]->col_offset;
17309     UNUSED(_start_col_offset); // Only used by EXTRA macro
17310     { // '*' (!'*' star_target)
17311         if (p->error_indicator) {
17312             p->level--;
17313             return NULL;
17314         }
17315         D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
17316         Token * _literal;
17317         void *a;
17318         if (
17319             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
17320             &&
17321             (a = _tmp_132_rule(p))  // !'*' star_target
17322         )
17323         {
17324             D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
17325             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17326             if (_token == NULL) {
17327                 p->level--;
17328                 return NULL;
17329             }
17330             int _end_lineno = _token->end_lineno;
17331             UNUSED(_end_lineno); // Only used by EXTRA macro
17332             int _end_col_offset = _token->end_col_offset;
17333             UNUSED(_end_col_offset); // Only used by EXTRA macro
17334             _res = _PyAST_Starred ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
17335             if (_res == NULL && PyErr_Occurred()) {
17336                 p->error_indicator = 1;
17337                 p->level--;
17338                 return NULL;
17339             }
17340             goto done;
17341         }
17342         p->mark = _mark;
17343         D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
17344                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (!'*' star_target)"));
17345     }
17346     { // target_with_star_atom
17347         if (p->error_indicator) {
17348             p->level--;
17349             return NULL;
17350         }
17351         D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
17352         expr_ty target_with_star_atom_var;
17353         if (
17354             (target_with_star_atom_var = target_with_star_atom_rule(p))  // target_with_star_atom
17355         )
17356         {
17357             D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
17358             _res = target_with_star_atom_var;
17359             goto done;
17360         }
17361         p->mark = _mark;
17362         D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
17363                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target_with_star_atom"));
17364     }
17365     _res = NULL;
17366   done:
17367     _PyPegen_insert_memo(p, _mark, star_target_type, _res);
17368     p->level--;
17369     return _res;
17370 }
17371 
17372 // target_with_star_atom:
17373 //     | t_primary '.' NAME !t_lookahead
17374 //     | t_primary '[' slices ']' !t_lookahead
17375 //     | star_atom
17376 static expr_ty
target_with_star_atom_rule(Parser * p)17377 target_with_star_atom_rule(Parser *p)
17378 {
17379     if (p->level++ == MAXSTACK) {
17380         p->error_indicator = 1;
17381         PyErr_NoMemory();
17382     }
17383     if (p->error_indicator) {
17384         p->level--;
17385         return NULL;
17386     }
17387     expr_ty _res = NULL;
17388     if (_PyPegen_is_memoized(p, target_with_star_atom_type, &_res)) {
17389         p->level--;
17390         return _res;
17391     }
17392     int _mark = p->mark;
17393     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17394         p->error_indicator = 1;
17395         p->level--;
17396         return NULL;
17397     }
17398     int _start_lineno = p->tokens[_mark]->lineno;
17399     UNUSED(_start_lineno); // Only used by EXTRA macro
17400     int _start_col_offset = p->tokens[_mark]->col_offset;
17401     UNUSED(_start_col_offset); // Only used by EXTRA macro
17402     { // t_primary '.' NAME !t_lookahead
17403         if (p->error_indicator) {
17404             p->level--;
17405             return NULL;
17406         }
17407         D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17408         Token * _literal;
17409         expr_ty a;
17410         expr_ty b;
17411         if (
17412             (a = t_primary_rule(p))  // t_primary
17413             &&
17414             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
17415             &&
17416             (b = _PyPegen_name_token(p))  // NAME
17417             &&
17418             _PyPegen_lookahead(0, t_lookahead_rule, p)
17419         )
17420         {
17421             D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17422             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17423             if (_token == NULL) {
17424                 p->level--;
17425                 return NULL;
17426             }
17427             int _end_lineno = _token->end_lineno;
17428             UNUSED(_end_lineno); // Only used by EXTRA macro
17429             int _end_col_offset = _token->end_col_offset;
17430             UNUSED(_end_col_offset); // Only used by EXTRA macro
17431             _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
17432             if (_res == NULL && PyErr_Occurred()) {
17433                 p->error_indicator = 1;
17434                 p->level--;
17435                 return NULL;
17436             }
17437             goto done;
17438         }
17439         p->mark = _mark;
17440         D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
17441                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17442     }
17443     { // t_primary '[' slices ']' !t_lookahead
17444         if (p->error_indicator) {
17445             p->level--;
17446             return NULL;
17447         }
17448         D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17449         Token * _literal;
17450         Token * _literal_1;
17451         expr_ty a;
17452         expr_ty b;
17453         if (
17454             (a = t_primary_rule(p))  // t_primary
17455             &&
17456             (_literal = _PyPegen_expect_token(p, 9))  // token='['
17457             &&
17458             (b = slices_rule(p))  // slices
17459             &&
17460             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17461             &&
17462             _PyPegen_lookahead(0, t_lookahead_rule, p)
17463         )
17464         {
17465             D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17466             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17467             if (_token == NULL) {
17468                 p->level--;
17469                 return NULL;
17470             }
17471             int _end_lineno = _token->end_lineno;
17472             UNUSED(_end_lineno); // Only used by EXTRA macro
17473             int _end_col_offset = _token->end_col_offset;
17474             UNUSED(_end_col_offset); // Only used by EXTRA macro
17475             _res = _PyAST_Subscript ( a , b , Store , EXTRA );
17476             if (_res == NULL && PyErr_Occurred()) {
17477                 p->error_indicator = 1;
17478                 p->level--;
17479                 return NULL;
17480             }
17481             goto done;
17482         }
17483         p->mark = _mark;
17484         D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
17485                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17486     }
17487     { // star_atom
17488         if (p->error_indicator) {
17489             p->level--;
17490             return NULL;
17491         }
17492         D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_atom"));
17493         expr_ty star_atom_var;
17494         if (
17495             (star_atom_var = star_atom_rule(p))  // star_atom
17496         )
17497         {
17498             D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_atom"));
17499             _res = star_atom_var;
17500             goto done;
17501         }
17502         p->mark = _mark;
17503         D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
17504                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_atom"));
17505     }
17506     _res = NULL;
17507   done:
17508     _PyPegen_insert_memo(p, _mark, target_with_star_atom_type, _res);
17509     p->level--;
17510     return _res;
17511 }
17512 
17513 // star_atom:
17514 //     | NAME
17515 //     | '(' target_with_star_atom ')'
17516 //     | '(' star_targets_tuple_seq? ')'
17517 //     | '[' star_targets_list_seq? ']'
17518 static expr_ty
star_atom_rule(Parser * p)17519 star_atom_rule(Parser *p)
17520 {
17521     if (p->level++ == MAXSTACK) {
17522         p->error_indicator = 1;
17523         PyErr_NoMemory();
17524     }
17525     if (p->error_indicator) {
17526         p->level--;
17527         return NULL;
17528     }
17529     expr_ty _res = NULL;
17530     int _mark = p->mark;
17531     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17532         p->error_indicator = 1;
17533         p->level--;
17534         return NULL;
17535     }
17536     int _start_lineno = p->tokens[_mark]->lineno;
17537     UNUSED(_start_lineno); // Only used by EXTRA macro
17538     int _start_col_offset = p->tokens[_mark]->col_offset;
17539     UNUSED(_start_col_offset); // Only used by EXTRA macro
17540     { // NAME
17541         if (p->error_indicator) {
17542             p->level--;
17543             return NULL;
17544         }
17545         D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
17546         expr_ty a;
17547         if (
17548             (a = _PyPegen_name_token(p))  // NAME
17549         )
17550         {
17551             D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
17552             _res = _PyPegen_set_expr_context ( p , a , Store );
17553             if (_res == NULL && PyErr_Occurred()) {
17554                 p->error_indicator = 1;
17555                 p->level--;
17556                 return NULL;
17557             }
17558             goto done;
17559         }
17560         p->mark = _mark;
17561         D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
17562                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
17563     }
17564     { // '(' target_with_star_atom ')'
17565         if (p->error_indicator) {
17566             p->level--;
17567             return NULL;
17568         }
17569         D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' target_with_star_atom ')'"));
17570         Token * _literal;
17571         Token * _literal_1;
17572         expr_ty a;
17573         if (
17574             (_literal = _PyPegen_expect_token(p, 7))  // token='('
17575             &&
17576             (a = target_with_star_atom_rule(p))  // target_with_star_atom
17577             &&
17578             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17579         )
17580         {
17581             D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' target_with_star_atom ')'"));
17582             _res = _PyPegen_set_expr_context ( p , a , Store );
17583             if (_res == NULL && PyErr_Occurred()) {
17584                 p->error_indicator = 1;
17585                 p->level--;
17586                 return NULL;
17587             }
17588             goto done;
17589         }
17590         p->mark = _mark;
17591         D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
17592                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' target_with_star_atom ')'"));
17593     }
17594     { // '(' star_targets_tuple_seq? ')'
17595         if (p->error_indicator) {
17596             p->level--;
17597             return NULL;
17598         }
17599         D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
17600         Token * _literal;
17601         Token * _literal_1;
17602         void *a;
17603         if (
17604             (_literal = _PyPegen_expect_token(p, 7))  // token='('
17605             &&
17606             (a = star_targets_tuple_seq_rule(p), !p->error_indicator)  // star_targets_tuple_seq?
17607             &&
17608             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17609         )
17610         {
17611             D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
17612             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17613             if (_token == NULL) {
17614                 p->level--;
17615                 return NULL;
17616             }
17617             int _end_lineno = _token->end_lineno;
17618             UNUSED(_end_lineno); // Only used by EXTRA macro
17619             int _end_col_offset = _token->end_col_offset;
17620             UNUSED(_end_col_offset); // Only used by EXTRA macro
17621             _res = _PyAST_Tuple ( a , Store , EXTRA );
17622             if (_res == NULL && PyErr_Occurred()) {
17623                 p->error_indicator = 1;
17624                 p->level--;
17625                 return NULL;
17626             }
17627             goto done;
17628         }
17629         p->mark = _mark;
17630         D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
17631                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
17632     }
17633     { // '[' star_targets_list_seq? ']'
17634         if (p->error_indicator) {
17635             p->level--;
17636             return NULL;
17637         }
17638         D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
17639         Token * _literal;
17640         Token * _literal_1;
17641         void *a;
17642         if (
17643             (_literal = _PyPegen_expect_token(p, 9))  // token='['
17644             &&
17645             (a = star_targets_list_seq_rule(p), !p->error_indicator)  // star_targets_list_seq?
17646             &&
17647             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17648         )
17649         {
17650             D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
17651             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17652             if (_token == NULL) {
17653                 p->level--;
17654                 return NULL;
17655             }
17656             int _end_lineno = _token->end_lineno;
17657             UNUSED(_end_lineno); // Only used by EXTRA macro
17658             int _end_col_offset = _token->end_col_offset;
17659             UNUSED(_end_col_offset); // Only used by EXTRA macro
17660             _res = _PyAST_List ( a , Store , EXTRA );
17661             if (_res == NULL && PyErr_Occurred()) {
17662                 p->error_indicator = 1;
17663                 p->level--;
17664                 return NULL;
17665             }
17666             goto done;
17667         }
17668         p->mark = _mark;
17669         D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
17670                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_targets_list_seq? ']'"));
17671     }
17672     _res = NULL;
17673   done:
17674     p->level--;
17675     return _res;
17676 }
17677 
17678 // single_target: single_subscript_attribute_target | NAME | '(' single_target ')'
17679 static expr_ty
single_target_rule(Parser * p)17680 single_target_rule(Parser *p)
17681 {
17682     if (p->level++ == MAXSTACK) {
17683         p->error_indicator = 1;
17684         PyErr_NoMemory();
17685     }
17686     if (p->error_indicator) {
17687         p->level--;
17688         return NULL;
17689     }
17690     expr_ty _res = NULL;
17691     int _mark = p->mark;
17692     { // single_subscript_attribute_target
17693         if (p->error_indicator) {
17694             p->level--;
17695             return NULL;
17696         }
17697         D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
17698         expr_ty single_subscript_attribute_target_var;
17699         if (
17700             (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
17701         )
17702         {
17703             D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
17704             _res = single_subscript_attribute_target_var;
17705             goto done;
17706         }
17707         p->mark = _mark;
17708         D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
17709                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
17710     }
17711     { // NAME
17712         if (p->error_indicator) {
17713             p->level--;
17714             return NULL;
17715         }
17716         D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
17717         expr_ty a;
17718         if (
17719             (a = _PyPegen_name_token(p))  // NAME
17720         )
17721         {
17722             D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
17723             _res = _PyPegen_set_expr_context ( p , a , Store );
17724             if (_res == NULL && PyErr_Occurred()) {
17725                 p->error_indicator = 1;
17726                 p->level--;
17727                 return NULL;
17728             }
17729             goto done;
17730         }
17731         p->mark = _mark;
17732         D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
17733                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
17734     }
17735     { // '(' single_target ')'
17736         if (p->error_indicator) {
17737             p->level--;
17738             return NULL;
17739         }
17740         D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
17741         Token * _literal;
17742         Token * _literal_1;
17743         expr_ty a;
17744         if (
17745             (_literal = _PyPegen_expect_token(p, 7))  // token='('
17746             &&
17747             (a = single_target_rule(p))  // single_target
17748             &&
17749             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17750         )
17751         {
17752             D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
17753             _res = a;
17754             if (_res == NULL && PyErr_Occurred()) {
17755                 p->error_indicator = 1;
17756                 p->level--;
17757                 return NULL;
17758             }
17759             goto done;
17760         }
17761         p->mark = _mark;
17762         D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
17763                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
17764     }
17765     _res = NULL;
17766   done:
17767     p->level--;
17768     return _res;
17769 }
17770 
17771 // single_subscript_attribute_target:
17772 //     | t_primary '.' NAME !t_lookahead
17773 //     | t_primary '[' slices ']' !t_lookahead
17774 static expr_ty
single_subscript_attribute_target_rule(Parser * p)17775 single_subscript_attribute_target_rule(Parser *p)
17776 {
17777     if (p->level++ == MAXSTACK) {
17778         p->error_indicator = 1;
17779         PyErr_NoMemory();
17780     }
17781     if (p->error_indicator) {
17782         p->level--;
17783         return NULL;
17784     }
17785     expr_ty _res = NULL;
17786     int _mark = p->mark;
17787     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17788         p->error_indicator = 1;
17789         p->level--;
17790         return NULL;
17791     }
17792     int _start_lineno = p->tokens[_mark]->lineno;
17793     UNUSED(_start_lineno); // Only used by EXTRA macro
17794     int _start_col_offset = p->tokens[_mark]->col_offset;
17795     UNUSED(_start_col_offset); // Only used by EXTRA macro
17796     { // t_primary '.' NAME !t_lookahead
17797         if (p->error_indicator) {
17798             p->level--;
17799             return NULL;
17800         }
17801         D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17802         Token * _literal;
17803         expr_ty a;
17804         expr_ty b;
17805         if (
17806             (a = t_primary_rule(p))  // t_primary
17807             &&
17808             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
17809             &&
17810             (b = _PyPegen_name_token(p))  // NAME
17811             &&
17812             _PyPegen_lookahead(0, t_lookahead_rule, p)
17813         )
17814         {
17815             D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17816             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17817             if (_token == NULL) {
17818                 p->level--;
17819                 return NULL;
17820             }
17821             int _end_lineno = _token->end_lineno;
17822             UNUSED(_end_lineno); // Only used by EXTRA macro
17823             int _end_col_offset = _token->end_col_offset;
17824             UNUSED(_end_col_offset); // Only used by EXTRA macro
17825             _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
17826             if (_res == NULL && PyErr_Occurred()) {
17827                 p->error_indicator = 1;
17828                 p->level--;
17829                 return NULL;
17830             }
17831             goto done;
17832         }
17833         p->mark = _mark;
17834         D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
17835                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17836     }
17837     { // t_primary '[' slices ']' !t_lookahead
17838         if (p->error_indicator) {
17839             p->level--;
17840             return NULL;
17841         }
17842         D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17843         Token * _literal;
17844         Token * _literal_1;
17845         expr_ty a;
17846         expr_ty b;
17847         if (
17848             (a = t_primary_rule(p))  // t_primary
17849             &&
17850             (_literal = _PyPegen_expect_token(p, 9))  // token='['
17851             &&
17852             (b = slices_rule(p))  // slices
17853             &&
17854             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17855             &&
17856             _PyPegen_lookahead(0, t_lookahead_rule, p)
17857         )
17858         {
17859             D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17860             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17861             if (_token == NULL) {
17862                 p->level--;
17863                 return NULL;
17864             }
17865             int _end_lineno = _token->end_lineno;
17866             UNUSED(_end_lineno); // Only used by EXTRA macro
17867             int _end_col_offset = _token->end_col_offset;
17868             UNUSED(_end_col_offset); // Only used by EXTRA macro
17869             _res = _PyAST_Subscript ( a , b , Store , EXTRA );
17870             if (_res == NULL && PyErr_Occurred()) {
17871                 p->error_indicator = 1;
17872                 p->level--;
17873                 return NULL;
17874             }
17875             goto done;
17876         }
17877         p->mark = _mark;
17878         D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
17879                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17880     }
17881     _res = NULL;
17882   done:
17883     p->level--;
17884     return _res;
17885 }
17886 
17887 // Left-recursive
17888 // t_primary:
17889 //     | t_primary '.' NAME &t_lookahead
17890 //     | t_primary '[' slices ']' &t_lookahead
17891 //     | t_primary genexp &t_lookahead
17892 //     | t_primary '(' arguments? ')' &t_lookahead
17893 //     | atom &t_lookahead
17894 static expr_ty t_primary_raw(Parser *);
17895 static expr_ty
t_primary_rule(Parser * p)17896 t_primary_rule(Parser *p)
17897 {
17898     if (p->level++ == MAXSTACK) {
17899         p->error_indicator = 1;
17900         PyErr_NoMemory();
17901     }
17902     expr_ty _res = NULL;
17903     if (_PyPegen_is_memoized(p, t_primary_type, &_res)) {
17904         p->level--;
17905         return _res;
17906     }
17907     int _mark = p->mark;
17908     int _resmark = p->mark;
17909     while (1) {
17910         int tmpvar_9 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
17911         if (tmpvar_9) {
17912             p->level--;
17913             return _res;
17914         }
17915         p->mark = _mark;
17916         void *_raw = t_primary_raw(p);
17917         if (p->error_indicator) {
17918             p->level--;
17919             return NULL;
17920         }
17921         if (_raw == NULL || p->mark <= _resmark)
17922             break;
17923         _resmark = p->mark;
17924         _res = _raw;
17925     }
17926     p->mark = _resmark;
17927     p->level--;
17928     return _res;
17929 }
17930 static expr_ty
t_primary_raw(Parser * p)17931 t_primary_raw(Parser *p)
17932 {
17933     if (p->level++ == MAXSTACK) {
17934         p->error_indicator = 1;
17935         PyErr_NoMemory();
17936     }
17937     if (p->error_indicator) {
17938         p->level--;
17939         return NULL;
17940     }
17941     expr_ty _res = NULL;
17942     int _mark = p->mark;
17943     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17944         p->error_indicator = 1;
17945         p->level--;
17946         return NULL;
17947     }
17948     int _start_lineno = p->tokens[_mark]->lineno;
17949     UNUSED(_start_lineno); // Only used by EXTRA macro
17950     int _start_col_offset = p->tokens[_mark]->col_offset;
17951     UNUSED(_start_col_offset); // Only used by EXTRA macro
17952     { // t_primary '.' NAME &t_lookahead
17953         if (p->error_indicator) {
17954             p->level--;
17955             return NULL;
17956         }
17957         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
17958         Token * _literal;
17959         expr_ty a;
17960         expr_ty b;
17961         if (
17962             (a = t_primary_rule(p))  // t_primary
17963             &&
17964             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
17965             &&
17966             (b = _PyPegen_name_token(p))  // NAME
17967             &&
17968             _PyPegen_lookahead(1, t_lookahead_rule, p)
17969         )
17970         {
17971             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
17972             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17973             if (_token == NULL) {
17974                 p->level--;
17975                 return NULL;
17976             }
17977             int _end_lineno = _token->end_lineno;
17978             UNUSED(_end_lineno); // Only used by EXTRA macro
17979             int _end_col_offset = _token->end_col_offset;
17980             UNUSED(_end_col_offset); // Only used by EXTRA macro
17981             _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
17982             if (_res == NULL && PyErr_Occurred()) {
17983                 p->error_indicator = 1;
17984                 p->level--;
17985                 return NULL;
17986             }
17987             goto done;
17988         }
17989         p->mark = _mark;
17990         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
17991                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
17992     }
17993     { // t_primary '[' slices ']' &t_lookahead
17994         if (p->error_indicator) {
17995             p->level--;
17996             return NULL;
17997         }
17998         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
17999         Token * _literal;
18000         Token * _literal_1;
18001         expr_ty a;
18002         expr_ty b;
18003         if (
18004             (a = t_primary_rule(p))  // t_primary
18005             &&
18006             (_literal = _PyPegen_expect_token(p, 9))  // token='['
18007             &&
18008             (b = slices_rule(p))  // slices
18009             &&
18010             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
18011             &&
18012             _PyPegen_lookahead(1, t_lookahead_rule, p)
18013         )
18014         {
18015             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
18016             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18017             if (_token == NULL) {
18018                 p->level--;
18019                 return NULL;
18020             }
18021             int _end_lineno = _token->end_lineno;
18022             UNUSED(_end_lineno); // Only used by EXTRA macro
18023             int _end_col_offset = _token->end_col_offset;
18024             UNUSED(_end_col_offset); // Only used by EXTRA macro
18025             _res = _PyAST_Subscript ( a , b , Load , EXTRA );
18026             if (_res == NULL && PyErr_Occurred()) {
18027                 p->error_indicator = 1;
18028                 p->level--;
18029                 return NULL;
18030             }
18031             goto done;
18032         }
18033         p->mark = _mark;
18034         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
18035                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
18036     }
18037     { // t_primary genexp &t_lookahead
18038         if (p->error_indicator) {
18039             p->level--;
18040             return NULL;
18041         }
18042         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
18043         expr_ty a;
18044         expr_ty b;
18045         if (
18046             (a = t_primary_rule(p))  // t_primary
18047             &&
18048             (b = genexp_rule(p))  // genexp
18049             &&
18050             _PyPegen_lookahead(1, t_lookahead_rule, p)
18051         )
18052         {
18053             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
18054             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18055             if (_token == NULL) {
18056                 p->level--;
18057                 return NULL;
18058             }
18059             int _end_lineno = _token->end_lineno;
18060             UNUSED(_end_lineno); // Only used by EXTRA macro
18061             int _end_col_offset = _token->end_col_offset;
18062             UNUSED(_end_col_offset); // Only used by EXTRA macro
18063             _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq* , ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
18064             if (_res == NULL && PyErr_Occurred()) {
18065                 p->error_indicator = 1;
18066                 p->level--;
18067                 return NULL;
18068             }
18069             goto done;
18070         }
18071         p->mark = _mark;
18072         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
18073                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary genexp &t_lookahead"));
18074     }
18075     { // t_primary '(' arguments? ')' &t_lookahead
18076         if (p->error_indicator) {
18077             p->level--;
18078             return NULL;
18079         }
18080         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
18081         Token * _literal;
18082         Token * _literal_1;
18083         expr_ty a;
18084         void *b;
18085         if (
18086             (a = t_primary_rule(p))  // t_primary
18087             &&
18088             (_literal = _PyPegen_expect_token(p, 7))  // token='('
18089             &&
18090             (b = arguments_rule(p), !p->error_indicator)  // arguments?
18091             &&
18092             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
18093             &&
18094             _PyPegen_lookahead(1, t_lookahead_rule, p)
18095         )
18096         {
18097             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
18098             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18099             if (_token == NULL) {
18100                 p->level--;
18101                 return NULL;
18102             }
18103             int _end_lineno = _token->end_lineno;
18104             UNUSED(_end_lineno); // Only used by EXTRA macro
18105             int _end_col_offset = _token->end_col_offset;
18106             UNUSED(_end_col_offset); // Only used by EXTRA macro
18107             _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
18108             if (_res == NULL && PyErr_Occurred()) {
18109                 p->error_indicator = 1;
18110                 p->level--;
18111                 return NULL;
18112             }
18113             goto done;
18114         }
18115         p->mark = _mark;
18116         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
18117                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
18118     }
18119     { // atom &t_lookahead
18120         if (p->error_indicator) {
18121             p->level--;
18122             return NULL;
18123         }
18124         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
18125         expr_ty a;
18126         if (
18127             (a = atom_rule(p))  // atom
18128             &&
18129             _PyPegen_lookahead(1, t_lookahead_rule, p)
18130         )
18131         {
18132             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
18133             _res = a;
18134             if (_res == NULL && PyErr_Occurred()) {
18135                 p->error_indicator = 1;
18136                 p->level--;
18137                 return NULL;
18138             }
18139             goto done;
18140         }
18141         p->mark = _mark;
18142         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
18143                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom &t_lookahead"));
18144     }
18145     _res = NULL;
18146   done:
18147     p->level--;
18148     return _res;
18149 }
18150 
18151 // t_lookahead: '(' | '[' | '.'
18152 static void *
t_lookahead_rule(Parser * p)18153 t_lookahead_rule(Parser *p)
18154 {
18155     if (p->level++ == MAXSTACK) {
18156         p->error_indicator = 1;
18157         PyErr_NoMemory();
18158     }
18159     if (p->error_indicator) {
18160         p->level--;
18161         return NULL;
18162     }
18163     void * _res = NULL;
18164     int _mark = p->mark;
18165     { // '('
18166         if (p->error_indicator) {
18167             p->level--;
18168             return NULL;
18169         }
18170         D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
18171         Token * _literal;
18172         if (
18173             (_literal = _PyPegen_expect_token(p, 7))  // token='('
18174         )
18175         {
18176             D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
18177             _res = _literal;
18178             goto done;
18179         }
18180         p->mark = _mark;
18181         D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
18182                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
18183     }
18184     { // '['
18185         if (p->error_indicator) {
18186             p->level--;
18187             return NULL;
18188         }
18189         D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
18190         Token * _literal;
18191         if (
18192             (_literal = _PyPegen_expect_token(p, 9))  // token='['
18193         )
18194         {
18195             D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
18196             _res = _literal;
18197             goto done;
18198         }
18199         p->mark = _mark;
18200         D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
18201                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
18202     }
18203     { // '.'
18204         if (p->error_indicator) {
18205             p->level--;
18206             return NULL;
18207         }
18208         D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
18209         Token * _literal;
18210         if (
18211             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
18212         )
18213         {
18214             D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
18215             _res = _literal;
18216             goto done;
18217         }
18218         p->mark = _mark;
18219         D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
18220                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
18221     }
18222     _res = NULL;
18223   done:
18224     p->level--;
18225     return _res;
18226 }
18227 
18228 // del_targets: ','.del_target+ ','?
18229 static asdl_expr_seq*
del_targets_rule(Parser * p)18230 del_targets_rule(Parser *p)
18231 {
18232     if (p->level++ == MAXSTACK) {
18233         p->error_indicator = 1;
18234         PyErr_NoMemory();
18235     }
18236     if (p->error_indicator) {
18237         p->level--;
18238         return NULL;
18239     }
18240     asdl_expr_seq* _res = NULL;
18241     int _mark = p->mark;
18242     { // ','.del_target+ ','?
18243         if (p->error_indicator) {
18244             p->level--;
18245             return NULL;
18246         }
18247         D(fprintf(stderr, "%*c> del_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
18248         void *_opt_var;
18249         UNUSED(_opt_var); // Silence compiler warnings
18250         asdl_expr_seq* a;
18251         if (
18252             (a = (asdl_expr_seq*)_gather_133_rule(p))  // ','.del_target+
18253             &&
18254             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
18255         )
18256         {
18257             D(fprintf(stderr, "%*c+ del_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
18258             _res = a;
18259             if (_res == NULL && PyErr_Occurred()) {
18260                 p->error_indicator = 1;
18261                 p->level--;
18262                 return NULL;
18263             }
18264             goto done;
18265         }
18266         p->mark = _mark;
18267         D(fprintf(stderr, "%*c%s del_targets[%d-%d]: %s failed!\n", p->level, ' ',
18268                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.del_target+ ','?"));
18269     }
18270     _res = NULL;
18271   done:
18272     p->level--;
18273     return _res;
18274 }
18275 
18276 // del_target:
18277 //     | t_primary '.' NAME !t_lookahead
18278 //     | t_primary '[' slices ']' !t_lookahead
18279 //     | del_t_atom
18280 static expr_ty
del_target_rule(Parser * p)18281 del_target_rule(Parser *p)
18282 {
18283     if (p->level++ == MAXSTACK) {
18284         p->error_indicator = 1;
18285         PyErr_NoMemory();
18286     }
18287     if (p->error_indicator) {
18288         p->level--;
18289         return NULL;
18290     }
18291     expr_ty _res = NULL;
18292     if (_PyPegen_is_memoized(p, del_target_type, &_res)) {
18293         p->level--;
18294         return _res;
18295     }
18296     int _mark = p->mark;
18297     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18298         p->error_indicator = 1;
18299         p->level--;
18300         return NULL;
18301     }
18302     int _start_lineno = p->tokens[_mark]->lineno;
18303     UNUSED(_start_lineno); // Only used by EXTRA macro
18304     int _start_col_offset = p->tokens[_mark]->col_offset;
18305     UNUSED(_start_col_offset); // Only used by EXTRA macro
18306     { // t_primary '.' NAME !t_lookahead
18307         if (p->error_indicator) {
18308             p->level--;
18309             return NULL;
18310         }
18311         D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
18312         Token * _literal;
18313         expr_ty a;
18314         expr_ty b;
18315         if (
18316             (a = t_primary_rule(p))  // t_primary
18317             &&
18318             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
18319             &&
18320             (b = _PyPegen_name_token(p))  // NAME
18321             &&
18322             _PyPegen_lookahead(0, t_lookahead_rule, p)
18323         )
18324         {
18325             D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
18326             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18327             if (_token == NULL) {
18328                 p->level--;
18329                 return NULL;
18330             }
18331             int _end_lineno = _token->end_lineno;
18332             UNUSED(_end_lineno); // Only used by EXTRA macro
18333             int _end_col_offset = _token->end_col_offset;
18334             UNUSED(_end_col_offset); // Only used by EXTRA macro
18335             _res = _PyAST_Attribute ( a , b -> v . Name . id , Del , EXTRA );
18336             if (_res == NULL && PyErr_Occurred()) {
18337                 p->error_indicator = 1;
18338                 p->level--;
18339                 return NULL;
18340             }
18341             goto done;
18342         }
18343         p->mark = _mark;
18344         D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
18345                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
18346     }
18347     { // t_primary '[' slices ']' !t_lookahead
18348         if (p->error_indicator) {
18349             p->level--;
18350             return NULL;
18351         }
18352         D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
18353         Token * _literal;
18354         Token * _literal_1;
18355         expr_ty a;
18356         expr_ty b;
18357         if (
18358             (a = t_primary_rule(p))  // t_primary
18359             &&
18360             (_literal = _PyPegen_expect_token(p, 9))  // token='['
18361             &&
18362             (b = slices_rule(p))  // slices
18363             &&
18364             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
18365             &&
18366             _PyPegen_lookahead(0, t_lookahead_rule, p)
18367         )
18368         {
18369             D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
18370             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18371             if (_token == NULL) {
18372                 p->level--;
18373                 return NULL;
18374             }
18375             int _end_lineno = _token->end_lineno;
18376             UNUSED(_end_lineno); // Only used by EXTRA macro
18377             int _end_col_offset = _token->end_col_offset;
18378             UNUSED(_end_col_offset); // Only used by EXTRA macro
18379             _res = _PyAST_Subscript ( a , b , Del , EXTRA );
18380             if (_res == NULL && PyErr_Occurred()) {
18381                 p->error_indicator = 1;
18382                 p->level--;
18383                 return NULL;
18384             }
18385             goto done;
18386         }
18387         p->mark = _mark;
18388         D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
18389                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
18390     }
18391     { // del_t_atom
18392         if (p->error_indicator) {
18393             p->level--;
18394             return NULL;
18395         }
18396         D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
18397         expr_ty del_t_atom_var;
18398         if (
18399             (del_t_atom_var = del_t_atom_rule(p))  // del_t_atom
18400         )
18401         {
18402             D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
18403             _res = del_t_atom_var;
18404             goto done;
18405         }
18406         p->mark = _mark;
18407         D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
18408                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_t_atom"));
18409     }
18410     _res = NULL;
18411   done:
18412     _PyPegen_insert_memo(p, _mark, del_target_type, _res);
18413     p->level--;
18414     return _res;
18415 }
18416 
18417 // del_t_atom: NAME | '(' del_target ')' | '(' del_targets? ')' | '[' del_targets? ']'
18418 static expr_ty
del_t_atom_rule(Parser * p)18419 del_t_atom_rule(Parser *p)
18420 {
18421     if (p->level++ == MAXSTACK) {
18422         p->error_indicator = 1;
18423         PyErr_NoMemory();
18424     }
18425     if (p->error_indicator) {
18426         p->level--;
18427         return NULL;
18428     }
18429     expr_ty _res = NULL;
18430     int _mark = p->mark;
18431     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18432         p->error_indicator = 1;
18433         p->level--;
18434         return NULL;
18435     }
18436     int _start_lineno = p->tokens[_mark]->lineno;
18437     UNUSED(_start_lineno); // Only used by EXTRA macro
18438     int _start_col_offset = p->tokens[_mark]->col_offset;
18439     UNUSED(_start_col_offset); // Only used by EXTRA macro
18440     { // NAME
18441         if (p->error_indicator) {
18442             p->level--;
18443             return NULL;
18444         }
18445         D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
18446         expr_ty a;
18447         if (
18448             (a = _PyPegen_name_token(p))  // NAME
18449         )
18450         {
18451             D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
18452             _res = _PyPegen_set_expr_context ( p , a , Del );
18453             if (_res == NULL && PyErr_Occurred()) {
18454                 p->error_indicator = 1;
18455                 p->level--;
18456                 return NULL;
18457             }
18458             goto done;
18459         }
18460         p->mark = _mark;
18461         D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
18462                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
18463     }
18464     { // '(' del_target ')'
18465         if (p->error_indicator) {
18466             p->level--;
18467             return NULL;
18468         }
18469         D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
18470         Token * _literal;
18471         Token * _literal_1;
18472         expr_ty a;
18473         if (
18474             (_literal = _PyPegen_expect_token(p, 7))  // token='('
18475             &&
18476             (a = del_target_rule(p))  // del_target
18477             &&
18478             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
18479         )
18480         {
18481             D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
18482             _res = _PyPegen_set_expr_context ( p , a , Del );
18483             if (_res == NULL && PyErr_Occurred()) {
18484                 p->error_indicator = 1;
18485                 p->level--;
18486                 return NULL;
18487             }
18488             goto done;
18489         }
18490         p->mark = _mark;
18491         D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
18492                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_target ')'"));
18493     }
18494     { // '(' del_targets? ')'
18495         if (p->error_indicator) {
18496             p->level--;
18497             return NULL;
18498         }
18499         D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
18500         Token * _literal;
18501         Token * _literal_1;
18502         void *a;
18503         if (
18504             (_literal = _PyPegen_expect_token(p, 7))  // token='('
18505             &&
18506             (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
18507             &&
18508             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
18509         )
18510         {
18511             D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
18512             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18513             if (_token == NULL) {
18514                 p->level--;
18515                 return NULL;
18516             }
18517             int _end_lineno = _token->end_lineno;
18518             UNUSED(_end_lineno); // Only used by EXTRA macro
18519             int _end_col_offset = _token->end_col_offset;
18520             UNUSED(_end_col_offset); // Only used by EXTRA macro
18521             _res = _PyAST_Tuple ( a , Del , EXTRA );
18522             if (_res == NULL && PyErr_Occurred()) {
18523                 p->error_indicator = 1;
18524                 p->level--;
18525                 return NULL;
18526             }
18527             goto done;
18528         }
18529         p->mark = _mark;
18530         D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
18531                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_targets? ')'"));
18532     }
18533     { // '[' del_targets? ']'
18534         if (p->error_indicator) {
18535             p->level--;
18536             return NULL;
18537         }
18538         D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
18539         Token * _literal;
18540         Token * _literal_1;
18541         void *a;
18542         if (
18543             (_literal = _PyPegen_expect_token(p, 9))  // token='['
18544             &&
18545             (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
18546             &&
18547             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
18548         )
18549         {
18550             D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
18551             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18552             if (_token == NULL) {
18553                 p->level--;
18554                 return NULL;
18555             }
18556             int _end_lineno = _token->end_lineno;
18557             UNUSED(_end_lineno); // Only used by EXTRA macro
18558             int _end_col_offset = _token->end_col_offset;
18559             UNUSED(_end_col_offset); // Only used by EXTRA macro
18560             _res = _PyAST_List ( a , Del , EXTRA );
18561             if (_res == NULL && PyErr_Occurred()) {
18562                 p->error_indicator = 1;
18563                 p->level--;
18564                 return NULL;
18565             }
18566             goto done;
18567         }
18568         p->mark = _mark;
18569         D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
18570                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' del_targets? ']'"));
18571     }
18572     _res = NULL;
18573   done:
18574     p->level--;
18575     return _res;
18576 }
18577 
18578 // type_expressions:
18579 //     | ','.expression+ ',' '*' expression ',' '**' expression
18580 //     | ','.expression+ ',' '*' expression
18581 //     | ','.expression+ ',' '**' expression
18582 //     | '*' expression ',' '**' expression
18583 //     | '*' expression
18584 //     | '**' expression
18585 //     | ','.expression+
18586 static asdl_expr_seq*
type_expressions_rule(Parser * p)18587 type_expressions_rule(Parser *p)
18588 {
18589     if (p->level++ == MAXSTACK) {
18590         p->error_indicator = 1;
18591         PyErr_NoMemory();
18592     }
18593     if (p->error_indicator) {
18594         p->level--;
18595         return NULL;
18596     }
18597     asdl_expr_seq* _res = NULL;
18598     int _mark = p->mark;
18599     { // ','.expression+ ',' '*' expression ',' '**' expression
18600         if (p->error_indicator) {
18601             p->level--;
18602             return NULL;
18603         }
18604         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
18605         Token * _literal;
18606         Token * _literal_1;
18607         Token * _literal_2;
18608         Token * _literal_3;
18609         asdl_seq * a;
18610         expr_ty b;
18611         expr_ty c;
18612         if (
18613             (a = _gather_135_rule(p))  // ','.expression+
18614             &&
18615             (_literal = _PyPegen_expect_token(p, 12))  // token=','
18616             &&
18617             (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
18618             &&
18619             (b = expression_rule(p))  // expression
18620             &&
18621             (_literal_2 = _PyPegen_expect_token(p, 12))  // token=','
18622             &&
18623             (_literal_3 = _PyPegen_expect_token(p, 35))  // token='**'
18624             &&
18625             (c = expression_rule(p))  // expression
18626         )
18627         {
18628             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
18629             _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , CHECK ( asdl_seq* , _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
18630             if (_res == NULL && PyErr_Occurred()) {
18631                 p->error_indicator = 1;
18632                 p->level--;
18633                 return NULL;
18634             }
18635             goto done;
18636         }
18637         p->mark = _mark;
18638         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
18639                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
18640     }
18641     { // ','.expression+ ',' '*' expression
18642         if (p->error_indicator) {
18643             p->level--;
18644             return NULL;
18645         }
18646         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
18647         Token * _literal;
18648         Token * _literal_1;
18649         asdl_seq * a;
18650         expr_ty b;
18651         if (
18652             (a = _gather_137_rule(p))  // ','.expression+
18653             &&
18654             (_literal = _PyPegen_expect_token(p, 12))  // token=','
18655             &&
18656             (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
18657             &&
18658             (b = expression_rule(p))  // expression
18659         )
18660         {
18661             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
18662             _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , a , b );
18663             if (_res == NULL && PyErr_Occurred()) {
18664                 p->error_indicator = 1;
18665                 p->level--;
18666                 return NULL;
18667             }
18668             goto done;
18669         }
18670         p->mark = _mark;
18671         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
18672                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression"));
18673     }
18674     { // ','.expression+ ',' '**' expression
18675         if (p->error_indicator) {
18676             p->level--;
18677             return NULL;
18678         }
18679         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
18680         Token * _literal;
18681         Token * _literal_1;
18682         asdl_seq * a;
18683         expr_ty b;
18684         if (
18685             (a = _gather_139_rule(p))  // ','.expression+
18686             &&
18687             (_literal = _PyPegen_expect_token(p, 12))  // token=','
18688             &&
18689             (_literal_1 = _PyPegen_expect_token(p, 35))  // token='**'
18690             &&
18691             (b = expression_rule(p))  // expression
18692         )
18693         {
18694             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
18695             _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , a , b );
18696             if (_res == NULL && PyErr_Occurred()) {
18697                 p->error_indicator = 1;
18698                 p->level--;
18699                 return NULL;
18700             }
18701             goto done;
18702         }
18703         p->mark = _mark;
18704         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
18705                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '**' expression"));
18706     }
18707     { // '*' expression ',' '**' expression
18708         if (p->error_indicator) {
18709             p->level--;
18710             return NULL;
18711         }
18712         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
18713         Token * _literal;
18714         Token * _literal_1;
18715         Token * _literal_2;
18716         expr_ty a;
18717         expr_ty b;
18718         if (
18719             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
18720             &&
18721             (a = expression_rule(p))  // expression
18722             &&
18723             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
18724             &&
18725             (_literal_2 = _PyPegen_expect_token(p, 35))  // token='**'
18726             &&
18727             (b = expression_rule(p))  // expression
18728         )
18729         {
18730             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
18731             _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , CHECK ( asdl_seq* , _PyPegen_singleton_seq ( p , a ) ) , b );
18732             if (_res == NULL && PyErr_Occurred()) {
18733                 p->error_indicator = 1;
18734                 p->level--;
18735                 return NULL;
18736             }
18737             goto done;
18738         }
18739         p->mark = _mark;
18740         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
18741                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression ',' '**' expression"));
18742     }
18743     { // '*' expression
18744         if (p->error_indicator) {
18745             p->level--;
18746             return NULL;
18747         }
18748         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
18749         Token * _literal;
18750         expr_ty a;
18751         if (
18752             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
18753             &&
18754             (a = expression_rule(p))  // expression
18755         )
18756         {
18757             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
18758             _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
18759             if (_res == NULL && PyErr_Occurred()) {
18760                 p->error_indicator = 1;
18761                 p->level--;
18762                 return NULL;
18763             }
18764             goto done;
18765         }
18766         p->mark = _mark;
18767         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
18768                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
18769     }
18770     { // '**' expression
18771         if (p->error_indicator) {
18772             p->level--;
18773             return NULL;
18774         }
18775         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
18776         Token * _literal;
18777         expr_ty a;
18778         if (
18779             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
18780             &&
18781             (a = expression_rule(p))  // expression
18782         )
18783         {
18784             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
18785             _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
18786             if (_res == NULL && PyErr_Occurred()) {
18787                 p->error_indicator = 1;
18788                 p->level--;
18789                 return NULL;
18790             }
18791             goto done;
18792         }
18793         p->mark = _mark;
18794         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
18795                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
18796     }
18797     { // ','.expression+
18798         if (p->error_indicator) {
18799             p->level--;
18800             return NULL;
18801         }
18802         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+"));
18803         asdl_expr_seq* a;
18804         if (
18805             (a = (asdl_expr_seq*)_gather_141_rule(p))  // ','.expression+
18806         )
18807         {
18808             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+"));
18809             _res = a;
18810             if (_res == NULL && PyErr_Occurred()) {
18811                 p->error_indicator = 1;
18812                 p->level--;
18813                 return NULL;
18814             }
18815             goto done;
18816         }
18817         p->mark = _mark;
18818         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
18819                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+"));
18820     }
18821     _res = NULL;
18822   done:
18823     p->level--;
18824     return _res;
18825 }
18826 
18827 // func_type_comment:
18828 //     | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
18829 //     | invalid_double_type_comments
18830 //     | TYPE_COMMENT
18831 static Token*
func_type_comment_rule(Parser * p)18832 func_type_comment_rule(Parser *p)
18833 {
18834     if (p->level++ == MAXSTACK) {
18835         p->error_indicator = 1;
18836         PyErr_NoMemory();
18837     }
18838     if (p->error_indicator) {
18839         p->level--;
18840         return NULL;
18841     }
18842     Token* _res = NULL;
18843     int _mark = p->mark;
18844     { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
18845         if (p->error_indicator) {
18846             p->level--;
18847             return NULL;
18848         }
18849         D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
18850         Token * newline_var;
18851         Token * t;
18852         if (
18853             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
18854             &&
18855             (t = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
18856             &&
18857             _PyPegen_lookahead(1, _tmp_143_rule, p)
18858         )
18859         {
18860             D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
18861             _res = t;
18862             if (_res == NULL && PyErr_Occurred()) {
18863                 p->error_indicator = 1;
18864                 p->level--;
18865                 return NULL;
18866             }
18867             goto done;
18868         }
18869         p->mark = _mark;
18870         D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
18871                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
18872     }
18873     if (p->call_invalid_rules) { // invalid_double_type_comments
18874         if (p->error_indicator) {
18875             p->level--;
18876             return NULL;
18877         }
18878         D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
18879         void *invalid_double_type_comments_var;
18880         if (
18881             (invalid_double_type_comments_var = invalid_double_type_comments_rule(p))  // invalid_double_type_comments
18882         )
18883         {
18884             D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
18885             _res = invalid_double_type_comments_var;
18886             goto done;
18887         }
18888         p->mark = _mark;
18889         D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
18890                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_double_type_comments"));
18891     }
18892     { // TYPE_COMMENT
18893         if (p->error_indicator) {
18894             p->level--;
18895             return NULL;
18896         }
18897         D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
18898         Token * type_comment_var;
18899         if (
18900             (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
18901         )
18902         {
18903             D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
18904             _res = type_comment_var;
18905             goto done;
18906         }
18907         p->mark = _mark;
18908         D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
18909                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT"));
18910     }
18911     _res = NULL;
18912   done:
18913     p->level--;
18914     return _res;
18915 }
18916 
18917 // invalid_arguments:
18918 //     | args ',' '*'
18919 //     | expression for_if_clauses ',' [args | expression for_if_clauses]
18920 //     | NAME '=' expression for_if_clauses
18921 //     | args for_if_clauses
18922 //     | args ',' expression for_if_clauses
18923 //     | args ',' args
18924 static void *
invalid_arguments_rule(Parser * p)18925 invalid_arguments_rule(Parser *p)
18926 {
18927     if (p->level++ == MAXSTACK) {
18928         p->error_indicator = 1;
18929         PyErr_NoMemory();
18930     }
18931     if (p->error_indicator) {
18932         p->level--;
18933         return NULL;
18934     }
18935     void * _res = NULL;
18936     int _mark = p->mark;
18937     { // args ',' '*'
18938         if (p->error_indicator) {
18939             p->level--;
18940             return NULL;
18941         }
18942         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' '*'"));
18943         Token * _literal;
18944         Token * _literal_1;
18945         expr_ty a;
18946         if (
18947             (a = args_rule(p))  // args
18948             &&
18949             (_literal = _PyPegen_expect_token(p, 12))  // token=','
18950             &&
18951             (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
18952         )
18953         {
18954             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' '*'"));
18955             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable argument unpacking follows keyword argument unpacking" );
18956             if (_res == NULL && PyErr_Occurred()) {
18957                 p->error_indicator = 1;
18958                 p->level--;
18959                 return NULL;
18960             }
18961             goto done;
18962         }
18963         p->mark = _mark;
18964         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
18965                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' '*'"));
18966     }
18967     { // expression for_if_clauses ',' [args | expression for_if_clauses]
18968         if (p->error_indicator) {
18969             p->level--;
18970             return NULL;
18971         }
18972         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
18973         Token * _literal;
18974         void *_opt_var;
18975         UNUSED(_opt_var); // Silence compiler warnings
18976         expr_ty a;
18977         asdl_comprehension_seq* b;
18978         if (
18979             (a = expression_rule(p))  // expression
18980             &&
18981             (b = for_if_clauses_rule(p))  // for_if_clauses
18982             &&
18983             (_literal = _PyPegen_expect_token(p, 12))  // token=','
18984             &&
18985             (_opt_var = _tmp_144_rule(p), !p->error_indicator)  // [args | expression for_if_clauses]
18986         )
18987         {
18988             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]"));
18989             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , _PyPegen_get_last_comprehension_item ( PyPegen_last_item ( b , comprehension_ty ) ) , "Generator expression must be parenthesized" );
18990             if (_res == NULL && PyErr_Occurred()) {
18991                 p->error_indicator = 1;
18992                 p->level--;
18993                 return NULL;
18994             }
18995             goto done;
18996         }
18997         p->mark = _mark;
18998         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
18999                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
19000     }
19001     { // NAME '=' expression for_if_clauses
19002         if (p->error_indicator) {
19003             p->level--;
19004             return NULL;
19005         }
19006         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
19007         expr_ty a;
19008         Token * b;
19009         expr_ty expression_var;
19010         asdl_comprehension_seq* for_if_clauses_var;
19011         if (
19012             (a = _PyPegen_name_token(p))  // NAME
19013             &&
19014             (b = _PyPegen_expect_token(p, 22))  // token='='
19015             &&
19016             (expression_var = expression_rule(p))  // expression
19017             &&
19018             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
19019         )
19020         {
19021             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
19022             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
19023             if (_res == NULL && PyErr_Occurred()) {
19024                 p->error_indicator = 1;
19025                 p->level--;
19026                 return NULL;
19027             }
19028             goto done;
19029         }
19030         p->mark = _mark;
19031         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
19032                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
19033     }
19034     { // args for_if_clauses
19035         if (p->error_indicator) {
19036             p->level--;
19037             return NULL;
19038         }
19039         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
19040         expr_ty a;
19041         asdl_comprehension_seq* b;
19042         if (
19043             (a = args_rule(p))  // args
19044             &&
19045             (b = for_if_clauses_rule(p))  // for_if_clauses
19046         )
19047         {
19048             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
19049             _res = _PyPegen_nonparen_genexp_in_call ( p , a , b );
19050             if (_res == NULL && PyErr_Occurred()) {
19051                 p->error_indicator = 1;
19052                 p->level--;
19053                 return NULL;
19054             }
19055             goto done;
19056         }
19057         p->mark = _mark;
19058         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
19059                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args for_if_clauses"));
19060     }
19061     { // args ',' expression for_if_clauses
19062         if (p->error_indicator) {
19063             p->level--;
19064             return NULL;
19065         }
19066         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
19067         Token * _literal;
19068         expr_ty a;
19069         expr_ty args_var;
19070         asdl_comprehension_seq* b;
19071         if (
19072             (args_var = args_rule(p))  // args
19073             &&
19074             (_literal = _PyPegen_expect_token(p, 12))  // token=','
19075             &&
19076             (a = expression_rule(p))  // expression
19077             &&
19078             (b = for_if_clauses_rule(p))  // for_if_clauses
19079         )
19080         {
19081             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
19082             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , _PyPegen_get_last_comprehension_item ( PyPegen_last_item ( b , comprehension_ty ) ) , "Generator expression must be parenthesized" );
19083             if (_res == NULL && PyErr_Occurred()) {
19084                 p->error_indicator = 1;
19085                 p->level--;
19086                 return NULL;
19087             }
19088             goto done;
19089         }
19090         p->mark = _mark;
19091         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
19092                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' expression for_if_clauses"));
19093     }
19094     { // args ',' args
19095         if (p->error_indicator) {
19096             p->level--;
19097             return NULL;
19098         }
19099         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' args"));
19100         Token * _literal;
19101         expr_ty a;
19102         expr_ty args_var;
19103         if (
19104             (a = args_rule(p))  // args
19105             &&
19106             (_literal = _PyPegen_expect_token(p, 12))  // token=','
19107             &&
19108             (args_var = args_rule(p))  // args
19109         )
19110         {
19111             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' args"));
19112             _res = _PyPegen_arguments_parsing_error ( p , a );
19113             if (_res == NULL && PyErr_Occurred()) {
19114                 p->error_indicator = 1;
19115                 p->level--;
19116                 return NULL;
19117             }
19118             goto done;
19119         }
19120         p->mark = _mark;
19121         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
19122                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' args"));
19123     }
19124     _res = NULL;
19125   done:
19126     p->level--;
19127     return _res;
19128 }
19129 
19130 // invalid_kwarg:
19131 //     | ('True' | 'False' | 'None') '='
19132 //     | NAME '=' expression for_if_clauses
19133 //     | !(NAME '=') expression '='
19134 static void *
invalid_kwarg_rule(Parser * p)19135 invalid_kwarg_rule(Parser *p)
19136 {
19137     if (p->level++ == MAXSTACK) {
19138         p->error_indicator = 1;
19139         PyErr_NoMemory();
19140     }
19141     if (p->error_indicator) {
19142         p->level--;
19143         return NULL;
19144     }
19145     void * _res = NULL;
19146     int _mark = p->mark;
19147     { // ('True' | 'False' | 'None') '='
19148         if (p->error_indicator) {
19149             p->level--;
19150             return NULL;
19151         }
19152         D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('True' | 'False' | 'None') '='"));
19153         Token* a;
19154         Token * b;
19155         if (
19156             (a = (Token*)_tmp_145_rule(p))  // 'True' | 'False' | 'None'
19157             &&
19158             (b = _PyPegen_expect_token(p, 22))  // token='='
19159         )
19160         {
19161             D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('True' | 'False' | 'None') '='"));
19162             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to %s" , PyBytes_AS_STRING ( a -> bytes ) );
19163             if (_res == NULL && PyErr_Occurred()) {
19164                 p->error_indicator = 1;
19165                 p->level--;
19166                 return NULL;
19167             }
19168             goto done;
19169         }
19170         p->mark = _mark;
19171         D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
19172                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('True' | 'False' | 'None') '='"));
19173     }
19174     { // NAME '=' expression for_if_clauses
19175         if (p->error_indicator) {
19176             p->level--;
19177             return NULL;
19178         }
19179         D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
19180         expr_ty a;
19181         Token * b;
19182         expr_ty expression_var;
19183         asdl_comprehension_seq* for_if_clauses_var;
19184         if (
19185             (a = _PyPegen_name_token(p))  // NAME
19186             &&
19187             (b = _PyPegen_expect_token(p, 22))  // token='='
19188             &&
19189             (expression_var = expression_rule(p))  // expression
19190             &&
19191             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
19192         )
19193         {
19194             D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
19195             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
19196             if (_res == NULL && PyErr_Occurred()) {
19197                 p->error_indicator = 1;
19198                 p->level--;
19199                 return NULL;
19200             }
19201             goto done;
19202         }
19203         p->mark = _mark;
19204         D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
19205                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
19206     }
19207     { // !(NAME '=') expression '='
19208         if (p->error_indicator) {
19209             p->level--;
19210             return NULL;
19211         }
19212         D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
19213         expr_ty a;
19214         Token * b;
19215         if (
19216             _PyPegen_lookahead(0, _tmp_146_rule, p)
19217             &&
19218             (a = expression_rule(p))  // expression
19219             &&
19220             (b = _PyPegen_expect_token(p, 22))  // token='='
19221         )
19222         {
19223             D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
19224             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expression cannot contain assignment, perhaps you meant \"==\"?" );
19225             if (_res == NULL && PyErr_Occurred()) {
19226                 p->error_indicator = 1;
19227                 p->level--;
19228                 return NULL;
19229             }
19230             goto done;
19231         }
19232         p->mark = _mark;
19233         D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
19234                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME '=') expression '='"));
19235     }
19236     _res = NULL;
19237   done:
19238     p->level--;
19239     return _res;
19240 }
19241 
19242 // expression_without_invalid:
19243 //     | disjunction 'if' disjunction 'else' expression
19244 //     | disjunction
19245 //     | lambdef
19246 static expr_ty
expression_without_invalid_rule(Parser * p)19247 expression_without_invalid_rule(Parser *p)
19248 {
19249     int _prev_call_invalid = p->call_invalid_rules;
19250     p->call_invalid_rules = 0;
19251     if (p->level++ == MAXSTACK) {
19252         p->error_indicator = 1;
19253         PyErr_NoMemory();
19254     }
19255     if (p->error_indicator) {
19256         p->call_invalid_rules = _prev_call_invalid;
19257         p->level--;
19258         return NULL;
19259     }
19260     expr_ty _res = NULL;
19261     int _mark = p->mark;
19262     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
19263         p->error_indicator = 1;
19264         p->call_invalid_rules = _prev_call_invalid;
19265         p->level--;
19266         return NULL;
19267     }
19268     int _start_lineno = p->tokens[_mark]->lineno;
19269     UNUSED(_start_lineno); // Only used by EXTRA macro
19270     int _start_col_offset = p->tokens[_mark]->col_offset;
19271     UNUSED(_start_col_offset); // Only used by EXTRA macro
19272     { // disjunction 'if' disjunction 'else' expression
19273         if (p->error_indicator) {
19274             p->call_invalid_rules = _prev_call_invalid;
19275             p->level--;
19276             return NULL;
19277         }
19278         D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
19279         Token * _keyword;
19280         Token * _keyword_1;
19281         expr_ty a;
19282         expr_ty b;
19283         expr_ty c;
19284         if (
19285             (a = disjunction_rule(p))  // disjunction
19286             &&
19287             (_keyword = _PyPegen_expect_token(p, 639))  // token='if'
19288             &&
19289             (b = disjunction_rule(p))  // disjunction
19290             &&
19291             (_keyword_1 = _PyPegen_expect_token(p, 642))  // token='else'
19292             &&
19293             (c = expression_rule(p))  // expression
19294         )
19295         {
19296             D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
19297             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
19298             if (_token == NULL) {
19299                 p->call_invalid_rules = _prev_call_invalid;
19300                 p->level--;
19301                 return NULL;
19302             }
19303             int _end_lineno = _token->end_lineno;
19304             UNUSED(_end_lineno); // Only used by EXTRA macro
19305             int _end_col_offset = _token->end_col_offset;
19306             UNUSED(_end_col_offset); // Only used by EXTRA macro
19307             _res = _PyAST_IfExp ( b , a , c , EXTRA );
19308             if (_res == NULL && PyErr_Occurred()) {
19309                 p->error_indicator = 1;
19310                 p->call_invalid_rules = _prev_call_invalid;
19311                 p->level--;
19312                 return NULL;
19313             }
19314             goto done;
19315         }
19316         p->mark = _mark;
19317         D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
19318                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
19319     }
19320     { // disjunction
19321         if (p->error_indicator) {
19322             p->call_invalid_rules = _prev_call_invalid;
19323             p->level--;
19324             return NULL;
19325         }
19326         D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
19327         expr_ty disjunction_var;
19328         if (
19329             (disjunction_var = disjunction_rule(p))  // disjunction
19330         )
19331         {
19332             D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
19333             _res = disjunction_var;
19334             goto done;
19335         }
19336         p->mark = _mark;
19337         D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
19338                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
19339     }
19340     { // lambdef
19341         if (p->error_indicator) {
19342             p->call_invalid_rules = _prev_call_invalid;
19343             p->level--;
19344             return NULL;
19345         }
19346         D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
19347         expr_ty lambdef_var;
19348         if (
19349             (lambdef_var = lambdef_rule(p))  // lambdef
19350         )
19351         {
19352             D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
19353             _res = lambdef_var;
19354             goto done;
19355         }
19356         p->mark = _mark;
19357         D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
19358                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
19359     }
19360     _res = NULL;
19361   done:
19362     p->call_invalid_rules = _prev_call_invalid;
19363     p->level--;
19364     return _res;
19365 }
19366 
19367 // invalid_legacy_expression: NAME !'(' star_expressions
19368 static void *
invalid_legacy_expression_rule(Parser * p)19369 invalid_legacy_expression_rule(Parser *p)
19370 {
19371     if (p->level++ == MAXSTACK) {
19372         p->error_indicator = 1;
19373         PyErr_NoMemory();
19374     }
19375     if (p->error_indicator) {
19376         p->level--;
19377         return NULL;
19378     }
19379     void * _res = NULL;
19380     int _mark = p->mark;
19381     { // NAME !'(' star_expressions
19382         if (p->error_indicator) {
19383             p->level--;
19384             return NULL;
19385         }
19386         D(fprintf(stderr, "%*c> invalid_legacy_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
19387         expr_ty a;
19388         expr_ty b;
19389         if (
19390             (a = _PyPegen_name_token(p))  // NAME
19391             &&
19392             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 7)  // token='('
19393             &&
19394             (b = star_expressions_rule(p))  // star_expressions
19395         )
19396         {
19397             D(fprintf(stderr, "%*c+ invalid_legacy_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
19398             _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;
19399             if (_res == NULL && PyErr_Occurred()) {
19400                 p->error_indicator = 1;
19401                 p->level--;
19402                 return NULL;
19403             }
19404             goto done;
19405         }
19406         p->mark = _mark;
19407         D(fprintf(stderr, "%*c%s invalid_legacy_expression[%d-%d]: %s failed!\n", p->level, ' ',
19408                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME !'(' star_expressions"));
19409     }
19410     _res = NULL;
19411   done:
19412     p->level--;
19413     return _res;
19414 }
19415 
19416 // invalid_expression:
19417 //     | !(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid
19418 //     | disjunction 'if' disjunction !('else' | ':')
19419 static void *
invalid_expression_rule(Parser * p)19420 invalid_expression_rule(Parser *p)
19421 {
19422     if (p->level++ == MAXSTACK) {
19423         p->error_indicator = 1;
19424         PyErr_NoMemory();
19425     }
19426     if (p->error_indicator) {
19427         p->level--;
19428         return NULL;
19429     }
19430     void * _res = NULL;
19431     int _mark = p->mark;
19432     { // !(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid
19433         if (p->error_indicator) {
19434             p->level--;
19435             return NULL;
19436         }
19437         D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
19438         expr_ty a;
19439         expr_ty b;
19440         if (
19441             _PyPegen_lookahead(0, _tmp_147_rule, p)
19442             &&
19443             (a = disjunction_rule(p))  // disjunction
19444             &&
19445             (b = expression_without_invalid_rule(p))  // expression_without_invalid
19446         )
19447         {
19448             D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
19449             _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?" );
19450             if (_res == NULL && PyErr_Occurred()) {
19451                 p->error_indicator = 1;
19452                 p->level--;
19453                 return NULL;
19454             }
19455             goto done;
19456         }
19457         p->mark = _mark;
19458         D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
19459                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
19460     }
19461     { // disjunction 'if' disjunction !('else' | ':')
19462         if (p->error_indicator) {
19463             p->level--;
19464             return NULL;
19465         }
19466         D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
19467         Token * _keyword;
19468         expr_ty a;
19469         expr_ty b;
19470         if (
19471             (a = disjunction_rule(p))  // disjunction
19472             &&
19473             (_keyword = _PyPegen_expect_token(p, 639))  // token='if'
19474             &&
19475             (b = disjunction_rule(p))  // disjunction
19476             &&
19477             _PyPegen_lookahead(0, _tmp_148_rule, p)
19478         )
19479         {
19480             D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
19481             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expected 'else' after 'if' expression" );
19482             if (_res == NULL && PyErr_Occurred()) {
19483                 p->error_indicator = 1;
19484                 p->level--;
19485                 return NULL;
19486             }
19487             goto done;
19488         }
19489         p->mark = _mark;
19490         D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
19491                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
19492     }
19493     _res = NULL;
19494   done:
19495     p->level--;
19496     return _res;
19497 }
19498 
19499 // invalid_named_expression:
19500 //     | expression ':=' expression
19501 //     | NAME '=' bitwise_or !('=' | ':=')
19502 //     | !(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')
19503 static void *
invalid_named_expression_rule(Parser * p)19504 invalid_named_expression_rule(Parser *p)
19505 {
19506     if (p->level++ == MAXSTACK) {
19507         p->error_indicator = 1;
19508         PyErr_NoMemory();
19509     }
19510     if (p->error_indicator) {
19511         p->level--;
19512         return NULL;
19513     }
19514     void * _res = NULL;
19515     if (_PyPegen_is_memoized(p, invalid_named_expression_type, &_res)) {
19516         p->level--;
19517         return _res;
19518     }
19519     int _mark = p->mark;
19520     { // expression ':=' expression
19521         if (p->error_indicator) {
19522             p->level--;
19523             return NULL;
19524         }
19525         D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
19526         Token * _literal;
19527         expr_ty a;
19528         expr_ty expression_var;
19529         if (
19530             (a = expression_rule(p))  // expression
19531             &&
19532             (_literal = _PyPegen_expect_token(p, 53))  // token=':='
19533             &&
19534             (expression_var = expression_rule(p))  // expression
19535         )
19536         {
19537             D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
19538             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use assignment expressions with %s" , _PyPegen_get_expr_name ( a ) );
19539             if (_res == NULL && PyErr_Occurred()) {
19540                 p->error_indicator = 1;
19541                 p->level--;
19542                 return NULL;
19543             }
19544             goto done;
19545         }
19546         p->mark = _mark;
19547         D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
19548                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':=' expression"));
19549     }
19550     { // NAME '=' bitwise_or !('=' | ':=')
19551         if (p->error_indicator) {
19552             p->level--;
19553             return NULL;
19554         }
19555         D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
19556         Token * _literal;
19557         expr_ty a;
19558         expr_ty b;
19559         if (
19560             (a = _PyPegen_name_token(p))  // NAME
19561             &&
19562             (_literal = _PyPegen_expect_token(p, 22))  // token='='
19563             &&
19564             (b = bitwise_or_rule(p))  // bitwise_or
19565             &&
19566             _PyPegen_lookahead(0, _tmp_149_rule, p)
19567         )
19568         {
19569             D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
19570             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
19571             if (_res == NULL && PyErr_Occurred()) {
19572                 p->error_indicator = 1;
19573                 p->level--;
19574                 return NULL;
19575             }
19576             goto done;
19577         }
19578         p->mark = _mark;
19579         D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
19580                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
19581     }
19582     { // !(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')
19583         if (p->error_indicator) {
19584             p->level--;
19585             return NULL;
19586         }
19587         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 !('=' | ':=')"));
19588         expr_ty a;
19589         Token * b;
19590         expr_ty bitwise_or_var;
19591         if (
19592             _PyPegen_lookahead(0, _tmp_150_rule, p)
19593             &&
19594             (a = bitwise_or_rule(p))  // bitwise_or
19595             &&
19596             (b = _PyPegen_expect_token(p, 22))  // token='='
19597             &&
19598             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
19599             &&
19600             _PyPegen_lookahead(0, _tmp_151_rule, p)
19601         )
19602         {
19603             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 !('=' | ':=')"));
19604             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot assign to %s here. Maybe you meant '==' instead of '='?" , _PyPegen_get_expr_name ( a ) );
19605             if (_res == NULL && PyErr_Occurred()) {
19606                 p->error_indicator = 1;
19607                 p->level--;
19608                 return NULL;
19609             }
19610             goto done;
19611         }
19612         p->mark = _mark;
19613         D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
19614                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')"));
19615     }
19616     _res = NULL;
19617   done:
19618     _PyPegen_insert_memo(p, _mark, invalid_named_expression_type, _res);
19619     p->level--;
19620     return _res;
19621 }
19622 
19623 // invalid_assignment:
19624 //     | invalid_ann_assign_target ':' expression
19625 //     | star_named_expression ',' star_named_expressions* ':' expression
19626 //     | expression ':' expression
19627 //     | ((star_targets '='))* star_expressions '='
19628 //     | ((star_targets '='))* yield_expr '='
19629 //     | star_expressions augassign (yield_expr | star_expressions)
19630 static void *
invalid_assignment_rule(Parser * p)19631 invalid_assignment_rule(Parser *p)
19632 {
19633     if (p->level++ == MAXSTACK) {
19634         p->error_indicator = 1;
19635         PyErr_NoMemory();
19636     }
19637     if (p->error_indicator) {
19638         p->level--;
19639         return NULL;
19640     }
19641     void * _res = NULL;
19642     int _mark = p->mark;
19643     { // invalid_ann_assign_target ':' expression
19644         if (p->error_indicator) {
19645             p->level--;
19646             return NULL;
19647         }
19648         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_ann_assign_target ':' expression"));
19649         Token * _literal;
19650         expr_ty a;
19651         expr_ty expression_var;
19652         if (
19653             (a = invalid_ann_assign_target_rule(p))  // invalid_ann_assign_target
19654             &&
19655             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
19656             &&
19657             (expression_var = expression_rule(p))  // expression
19658         )
19659         {
19660             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_ann_assign_target ':' expression"));
19661             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not %s) can be annotated" , _PyPegen_get_expr_name ( a ) );
19662             if (_res == NULL && PyErr_Occurred()) {
19663                 p->error_indicator = 1;
19664                 p->level--;
19665                 return NULL;
19666             }
19667             goto done;
19668         }
19669         p->mark = _mark;
19670         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
19671                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_ann_assign_target ':' expression"));
19672     }
19673     { // star_named_expression ',' star_named_expressions* ':' expression
19674         if (p->error_indicator) {
19675             p->level--;
19676             return NULL;
19677         }
19678         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
19679         Token * _literal;
19680         Token * _literal_1;
19681         asdl_seq * _loop0_152_var;
19682         expr_ty a;
19683         expr_ty expression_var;
19684         if (
19685             (a = star_named_expression_rule(p))  // star_named_expression
19686             &&
19687             (_literal = _PyPegen_expect_token(p, 12))  // token=','
19688             &&
19689             (_loop0_152_var = _loop0_152_rule(p))  // star_named_expressions*
19690             &&
19691             (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
19692             &&
19693             (expression_var = expression_rule(p))  // expression
19694         )
19695         {
19696             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
19697             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
19698             if (_res == NULL && PyErr_Occurred()) {
19699                 p->error_indicator = 1;
19700                 p->level--;
19701                 return NULL;
19702             }
19703             goto done;
19704         }
19705         p->mark = _mark;
19706         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
19707                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
19708     }
19709     { // expression ':' expression
19710         if (p->error_indicator) {
19711             p->level--;
19712             return NULL;
19713         }
19714         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
19715         Token * _literal;
19716         expr_ty a;
19717         expr_ty expression_var;
19718         if (
19719             (a = expression_rule(p))  // expression
19720             &&
19721             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
19722             &&
19723             (expression_var = expression_rule(p))  // expression
19724         )
19725         {
19726             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
19727             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
19728             if (_res == NULL && PyErr_Occurred()) {
19729                 p->error_indicator = 1;
19730                 p->level--;
19731                 return NULL;
19732             }
19733             goto done;
19734         }
19735         p->mark = _mark;
19736         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
19737                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
19738     }
19739     { // ((star_targets '='))* star_expressions '='
19740         if (p->error_indicator) {
19741             p->level--;
19742             return NULL;
19743         }
19744         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
19745         Token * _literal;
19746         asdl_seq * _loop0_153_var;
19747         expr_ty a;
19748         if (
19749             (_loop0_153_var = _loop0_153_rule(p))  // ((star_targets '='))*
19750             &&
19751             (a = star_expressions_rule(p))  // star_expressions
19752             &&
19753             (_literal = _PyPegen_expect_token(p, 22))  // token='='
19754         )
19755         {
19756             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
19757             _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( STAR_TARGETS , a );
19758             if (_res == NULL && PyErr_Occurred()) {
19759                 p->error_indicator = 1;
19760                 p->level--;
19761                 return NULL;
19762             }
19763             goto done;
19764         }
19765         p->mark = _mark;
19766         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
19767                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* star_expressions '='"));
19768     }
19769     { // ((star_targets '='))* yield_expr '='
19770         if (p->error_indicator) {
19771             p->level--;
19772             return NULL;
19773         }
19774         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
19775         Token * _literal;
19776         asdl_seq * _loop0_154_var;
19777         expr_ty a;
19778         if (
19779             (_loop0_154_var = _loop0_154_rule(p))  // ((star_targets '='))*
19780             &&
19781             (a = yield_expr_rule(p))  // yield_expr
19782             &&
19783             (_literal = _PyPegen_expect_token(p, 22))  // token='='
19784         )
19785         {
19786             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
19787             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "assignment to yield expression not possible" );
19788             if (_res == NULL && PyErr_Occurred()) {
19789                 p->error_indicator = 1;
19790                 p->level--;
19791                 return NULL;
19792             }
19793             goto done;
19794         }
19795         p->mark = _mark;
19796         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
19797                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* yield_expr '='"));
19798     }
19799     { // star_expressions augassign (yield_expr | star_expressions)
19800         if (p->error_indicator) {
19801             p->level--;
19802             return NULL;
19803         }
19804         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)"));
19805         void *_tmp_155_var;
19806         expr_ty a;
19807         AugOperator* augassign_var;
19808         if (
19809             (a = star_expressions_rule(p))  // star_expressions
19810             &&
19811             (augassign_var = augassign_rule(p))  // augassign
19812             &&
19813             (_tmp_155_var = _tmp_155_rule(p))  // yield_expr | star_expressions
19814         )
19815         {
19816             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)"));
19817             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "'%s' is an illegal expression for augmented assignment" , _PyPegen_get_expr_name ( a ) );
19818             if (_res == NULL && PyErr_Occurred()) {
19819                 p->error_indicator = 1;
19820                 p->level--;
19821                 return NULL;
19822             }
19823             goto done;
19824         }
19825         p->mark = _mark;
19826         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
19827                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)"));
19828     }
19829     _res = NULL;
19830   done:
19831     p->level--;
19832     return _res;
19833 }
19834 
19835 // invalid_ann_assign_target: list | tuple | '(' invalid_ann_assign_target ')'
19836 static expr_ty
invalid_ann_assign_target_rule(Parser * p)19837 invalid_ann_assign_target_rule(Parser *p)
19838 {
19839     if (p->level++ == MAXSTACK) {
19840         p->error_indicator = 1;
19841         PyErr_NoMemory();
19842     }
19843     if (p->error_indicator) {
19844         p->level--;
19845         return NULL;
19846     }
19847     expr_ty _res = NULL;
19848     int _mark = p->mark;
19849     { // list
19850         if (p->error_indicator) {
19851             p->level--;
19852             return NULL;
19853         }
19854         D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
19855         expr_ty list_var;
19856         if (
19857             (list_var = list_rule(p))  // list
19858         )
19859         {
19860             D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
19861             _res = list_var;
19862             goto done;
19863         }
19864         p->mark = _mark;
19865         D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
19866                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
19867     }
19868     { // tuple
19869         if (p->error_indicator) {
19870             p->level--;
19871             return NULL;
19872         }
19873         D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
19874         expr_ty tuple_var;
19875         if (
19876             (tuple_var = tuple_rule(p))  // tuple
19877         )
19878         {
19879             D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
19880             _res = tuple_var;
19881             goto done;
19882         }
19883         p->mark = _mark;
19884         D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
19885                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
19886     }
19887     { // '(' invalid_ann_assign_target ')'
19888         if (p->error_indicator) {
19889             p->level--;
19890             return NULL;
19891         }
19892         D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
19893         Token * _literal;
19894         Token * _literal_1;
19895         expr_ty a;
19896         if (
19897             (_literal = _PyPegen_expect_token(p, 7))  // token='('
19898             &&
19899             (a = invalid_ann_assign_target_rule(p))  // invalid_ann_assign_target
19900             &&
19901             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19902         )
19903         {
19904             D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
19905             _res = a;
19906             if (_res == NULL && PyErr_Occurred()) {
19907                 p->error_indicator = 1;
19908                 p->level--;
19909                 return NULL;
19910             }
19911             goto done;
19912         }
19913         p->mark = _mark;
19914         D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
19915                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
19916     }
19917     _res = NULL;
19918   done:
19919     p->level--;
19920     return _res;
19921 }
19922 
19923 // invalid_del_stmt: 'del' star_expressions
19924 static void *
invalid_del_stmt_rule(Parser * p)19925 invalid_del_stmt_rule(Parser *p)
19926 {
19927     if (p->level++ == MAXSTACK) {
19928         p->error_indicator = 1;
19929         PyErr_NoMemory();
19930     }
19931     if (p->error_indicator) {
19932         p->level--;
19933         return NULL;
19934     }
19935     void * _res = NULL;
19936     int _mark = p->mark;
19937     { // 'del' star_expressions
19938         if (p->error_indicator) {
19939             p->level--;
19940             return NULL;
19941         }
19942         D(fprintf(stderr, "%*c> invalid_del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' star_expressions"));
19943         Token * _keyword;
19944         expr_ty a;
19945         if (
19946             (_keyword = _PyPegen_expect_token(p, 603))  // token='del'
19947             &&
19948             (a = star_expressions_rule(p))  // star_expressions
19949         )
19950         {
19951             D(fprintf(stderr, "%*c+ invalid_del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' star_expressions"));
19952             _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( DEL_TARGETS , a );
19953             if (_res == NULL && PyErr_Occurred()) {
19954                 p->error_indicator = 1;
19955                 p->level--;
19956                 return NULL;
19957             }
19958             goto done;
19959         }
19960         p->mark = _mark;
19961         D(fprintf(stderr, "%*c%s invalid_del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
19962                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' star_expressions"));
19963     }
19964     _res = NULL;
19965   done:
19966     p->level--;
19967     return _res;
19968 }
19969 
19970 // invalid_block: NEWLINE !INDENT
19971 static void *
invalid_block_rule(Parser * p)19972 invalid_block_rule(Parser *p)
19973 {
19974     if (p->level++ == MAXSTACK) {
19975         p->error_indicator = 1;
19976         PyErr_NoMemory();
19977     }
19978     if (p->error_indicator) {
19979         p->level--;
19980         return NULL;
19981     }
19982     void * _res = NULL;
19983     int _mark = p->mark;
19984     { // NEWLINE !INDENT
19985         if (p->error_indicator) {
19986             p->level--;
19987             return NULL;
19988         }
19989         D(fprintf(stderr, "%*c> invalid_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
19990         Token * newline_var;
19991         if (
19992             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19993             &&
19994             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
19995         )
19996         {
19997             D(fprintf(stderr, "%*c+ invalid_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
19998             _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
19999             if (_res == NULL && PyErr_Occurred()) {
20000                 p->error_indicator = 1;
20001                 p->level--;
20002                 return NULL;
20003             }
20004             goto done;
20005         }
20006         p->mark = _mark;
20007         D(fprintf(stderr, "%*c%s invalid_block[%d-%d]: %s failed!\n", p->level, ' ',
20008                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE !INDENT"));
20009     }
20010     _res = NULL;
20011   done:
20012     p->level--;
20013     return _res;
20014 }
20015 
20016 // invalid_comprehension:
20017 //     | ('[' | '(' | '{') starred_expression for_if_clauses
20018 //     | ('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses
20019 //     | ('[' | '{') star_named_expression ',' for_if_clauses
20020 static void *
invalid_comprehension_rule(Parser * p)20021 invalid_comprehension_rule(Parser *p)
20022 {
20023     if (p->level++ == MAXSTACK) {
20024         p->error_indicator = 1;
20025         PyErr_NoMemory();
20026     }
20027     if (p->error_indicator) {
20028         p->level--;
20029         return NULL;
20030     }
20031     void * _res = NULL;
20032     int _mark = p->mark;
20033     { // ('[' | '(' | '{') starred_expression for_if_clauses
20034         if (p->error_indicator) {
20035             p->level--;
20036             return NULL;
20037         }
20038         D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
20039         void *_tmp_156_var;
20040         expr_ty a;
20041         asdl_comprehension_seq* for_if_clauses_var;
20042         if (
20043             (_tmp_156_var = _tmp_156_rule(p))  // '[' | '(' | '{'
20044             &&
20045             (a = starred_expression_rule(p))  // starred_expression
20046             &&
20047             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
20048         )
20049         {
20050             D(fprintf(stderr, "%*c+ invalid_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
20051             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable unpacking cannot be used in comprehension" );
20052             if (_res == NULL && PyErr_Occurred()) {
20053                 p->error_indicator = 1;
20054                 p->level--;
20055                 return NULL;
20056             }
20057             goto done;
20058         }
20059         p->mark = _mark;
20060         D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
20061                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
20062     }
20063     { // ('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses
20064         if (p->error_indicator) {
20065             p->level--;
20066             return NULL;
20067         }
20068         D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses"));
20069         Token * _literal;
20070         void *_tmp_157_var;
20071         expr_ty a;
20072         asdl_expr_seq* b;
20073         asdl_comprehension_seq* for_if_clauses_var;
20074         if (
20075             (_tmp_157_var = _tmp_157_rule(p))  // '[' | '{'
20076             &&
20077             (a = star_named_expression_rule(p))  // star_named_expression
20078             &&
20079             (_literal = _PyPegen_expect_token(p, 12))  // token=','
20080             &&
20081             (b = star_named_expressions_rule(p))  // star_named_expressions
20082             &&
20083             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
20084         )
20085         {
20086             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"));
20087             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , PyPegen_last_item ( b , expr_ty ) , "did you forget parentheses around the comprehension target?" );
20088             if (_res == NULL && PyErr_Occurred()) {
20089                 p->error_indicator = 1;
20090                 p->level--;
20091                 return NULL;
20092             }
20093             goto done;
20094         }
20095         p->mark = _mark;
20096         D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
20097                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses"));
20098     }
20099     { // ('[' | '{') star_named_expression ',' for_if_clauses
20100         if (p->error_indicator) {
20101             p->level--;
20102             return NULL;
20103         }
20104         D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
20105         void *_tmp_158_var;
20106         expr_ty a;
20107         Token * b;
20108         asdl_comprehension_seq* for_if_clauses_var;
20109         if (
20110             (_tmp_158_var = _tmp_158_rule(p))  // '[' | '{'
20111             &&
20112             (a = star_named_expression_rule(p))  // star_named_expression
20113             &&
20114             (b = _PyPegen_expect_token(p, 12))  // token=','
20115             &&
20116             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
20117         )
20118         {
20119             D(fprintf(stderr, "%*c+ invalid_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
20120             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "did you forget parentheses around the comprehension target?" );
20121             if (_res == NULL && PyErr_Occurred()) {
20122                 p->error_indicator = 1;
20123                 p->level--;
20124                 return NULL;
20125             }
20126             goto done;
20127         }
20128         p->mark = _mark;
20129         D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
20130                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
20131     }
20132     _res = NULL;
20133   done:
20134     p->level--;
20135     return _res;
20136 }
20137 
20138 // invalid_dict_comprehension: '{' '**' bitwise_or for_if_clauses '}'
20139 static void *
invalid_dict_comprehension_rule(Parser * p)20140 invalid_dict_comprehension_rule(Parser *p)
20141 {
20142     if (p->level++ == MAXSTACK) {
20143         p->error_indicator = 1;
20144         PyErr_NoMemory();
20145     }
20146     if (p->error_indicator) {
20147         p->level--;
20148         return NULL;
20149     }
20150     void * _res = NULL;
20151     int _mark = p->mark;
20152     { // '{' '**' bitwise_or for_if_clauses '}'
20153         if (p->error_indicator) {
20154             p->level--;
20155             return NULL;
20156         }
20157         D(fprintf(stderr, "%*c> invalid_dict_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
20158         Token * _literal;
20159         Token * _literal_1;
20160         Token * a;
20161         expr_ty bitwise_or_var;
20162         asdl_comprehension_seq* for_if_clauses_var;
20163         if (
20164             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
20165             &&
20166             (a = _PyPegen_expect_token(p, 35))  // token='**'
20167             &&
20168             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
20169             &&
20170             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
20171             &&
20172             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
20173         )
20174         {
20175             D(fprintf(stderr, "%*c+ invalid_dict_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
20176             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "dict unpacking cannot be used in dict comprehension" );
20177             if (_res == NULL && PyErr_Occurred()) {
20178                 p->error_indicator = 1;
20179                 p->level--;
20180                 return NULL;
20181             }
20182             goto done;
20183         }
20184         p->mark = _mark;
20185         D(fprintf(stderr, "%*c%s invalid_dict_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
20186                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
20187     }
20188     _res = NULL;
20189   done:
20190     p->level--;
20191     return _res;
20192 }
20193 
20194 // invalid_parameters:
20195 //     | param_no_default* invalid_parameters_helper param_no_default
20196 //     | param_no_default* '(' param_no_default+ ','? ')'
20197 //     | "/" ','
20198 //     | (slash_no_default | slash_with_default) param_maybe_default* '/'
20199 //     | [(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'
20200 //     | param_maybe_default+ '/' '*'
20201 static void *
invalid_parameters_rule(Parser * p)20202 invalid_parameters_rule(Parser *p)
20203 {
20204     if (p->level++ == MAXSTACK) {
20205         p->error_indicator = 1;
20206         PyErr_NoMemory();
20207     }
20208     if (p->error_indicator) {
20209         p->level--;
20210         return NULL;
20211     }
20212     void * _res = NULL;
20213     int _mark = p->mark;
20214     { // param_no_default* invalid_parameters_helper param_no_default
20215         if (p->error_indicator) {
20216             p->level--;
20217             return NULL;
20218         }
20219         D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* invalid_parameters_helper param_no_default"));
20220         asdl_seq * _loop0_159_var;
20221         arg_ty a;
20222         void *invalid_parameters_helper_var;
20223         if (
20224             (_loop0_159_var = _loop0_159_rule(p))  // param_no_default*
20225             &&
20226             (invalid_parameters_helper_var = invalid_parameters_helper_rule(p))  // invalid_parameters_helper
20227             &&
20228             (a = param_no_default_rule(p))  // param_no_default
20229         )
20230         {
20231             D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* invalid_parameters_helper param_no_default"));
20232             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "non-default argument follows default argument" );
20233             if (_res == NULL && PyErr_Occurred()) {
20234                 p->error_indicator = 1;
20235                 p->level--;
20236                 return NULL;
20237             }
20238             goto done;
20239         }
20240         p->mark = _mark;
20241         D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
20242                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* invalid_parameters_helper param_no_default"));
20243     }
20244     { // param_no_default* '(' param_no_default+ ','? ')'
20245         if (p->error_indicator) {
20246             p->level--;
20247             return NULL;
20248         }
20249         D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
20250         asdl_seq * _loop0_160_var;
20251         asdl_seq * _loop1_161_var;
20252         void *_opt_var;
20253         UNUSED(_opt_var); // Silence compiler warnings
20254         Token * a;
20255         Token * b;
20256         if (
20257             (_loop0_160_var = _loop0_160_rule(p))  // param_no_default*
20258             &&
20259             (a = _PyPegen_expect_token(p, 7))  // token='('
20260             &&
20261             (_loop1_161_var = _loop1_161_rule(p))  // param_no_default+
20262             &&
20263             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
20264             &&
20265             (b = _PyPegen_expect_token(p, 8))  // token=')'
20266         )
20267         {
20268             D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
20269             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "Function parameters cannot be parenthesized" );
20270             if (_res == NULL && PyErr_Occurred()) {
20271                 p->error_indicator = 1;
20272                 p->level--;
20273                 return NULL;
20274             }
20275             goto done;
20276         }
20277         p->mark = _mark;
20278         D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
20279                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
20280     }
20281     { // "/" ','
20282         if (p->error_indicator) {
20283             p->level--;
20284             return NULL;
20285         }
20286         D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
20287         Token * _literal;
20288         Token * a;
20289         if (
20290             (a = _PyPegen_expect_token(p, 17))  // token='/'
20291             &&
20292             (_literal = _PyPegen_expect_token(p, 12))  // token=','
20293         )
20294         {
20295             D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
20296             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "at least one argument must precede /" );
20297             if (_res == NULL && PyErr_Occurred()) {
20298                 p->error_indicator = 1;
20299                 p->level--;
20300                 return NULL;
20301             }
20302             goto done;
20303         }
20304         p->mark = _mark;
20305         D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
20306                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"/\" ','"));
20307     }
20308     { // (slash_no_default | slash_with_default) param_maybe_default* '/'
20309         if (p->error_indicator) {
20310             p->level--;
20311             return NULL;
20312         }
20313         D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(slash_no_default | slash_with_default) param_maybe_default* '/'"));
20314         asdl_seq * _loop0_163_var;
20315         void *_tmp_162_var;
20316         Token * a;
20317         if (
20318             (_tmp_162_var = _tmp_162_rule(p))  // slash_no_default | slash_with_default
20319             &&
20320             (_loop0_163_var = _loop0_163_rule(p))  // param_maybe_default*
20321             &&
20322             (a = _PyPegen_expect_token(p, 17))  // token='/'
20323         )
20324         {
20325             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* '/'"));
20326             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ may appear only once" );
20327             if (_res == NULL && PyErr_Occurred()) {
20328                 p->error_indicator = 1;
20329                 p->level--;
20330                 return NULL;
20331             }
20332             goto done;
20333         }
20334         p->mark = _mark;
20335         D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
20336                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(slash_no_default | slash_with_default) param_maybe_default* '/'"));
20337     }
20338     { // [(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'
20339         if (p->error_indicator) {
20340             p->level--;
20341             return NULL;
20342         }
20343         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* '/'"));
20344         Token * _literal;
20345         asdl_seq * _loop0_165_var;
20346         asdl_seq * _loop0_167_var;
20347         void *_opt_var;
20348         UNUSED(_opt_var); // Silence compiler warnings
20349         void *_tmp_166_var;
20350         Token * a;
20351         if (
20352             (_opt_var = _tmp_164_rule(p), !p->error_indicator)  // [(slash_no_default | slash_with_default)]
20353             &&
20354             (_loop0_165_var = _loop0_165_rule(p))  // param_maybe_default*
20355             &&
20356             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
20357             &&
20358             (_tmp_166_var = _tmp_166_rule(p))  // ',' | param_no_default
20359             &&
20360             (_loop0_167_var = _loop0_167_rule(p))  // param_maybe_default*
20361             &&
20362             (a = _PyPegen_expect_token(p, 17))  // token='/'
20363         )
20364         {
20365             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* '/'"));
20366             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ must be ahead of *" );
20367             if (_res == NULL && PyErr_Occurred()) {
20368                 p->error_indicator = 1;
20369                 p->level--;
20370                 return NULL;
20371             }
20372             goto done;
20373         }
20374         p->mark = _mark;
20375         D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
20376                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[(slash_no_default | slash_with_default)] param_maybe_default* '*' (',' | param_no_default) param_maybe_default* '/'"));
20377     }
20378     { // param_maybe_default+ '/' '*'
20379         if (p->error_indicator) {
20380             p->level--;
20381             return NULL;
20382         }
20383         D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default+ '/' '*'"));
20384         Token * _literal;
20385         asdl_seq * _loop1_168_var;
20386         Token * a;
20387         if (
20388             (_loop1_168_var = _loop1_168_rule(p))  // param_maybe_default+
20389             &&
20390             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
20391             &&
20392             (a = _PyPegen_expect_token(p, 16))  // token='*'
20393         )
20394         {
20395             D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_maybe_default+ '/' '*'"));
20396             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected comma between / and *" );
20397             if (_res == NULL && PyErr_Occurred()) {
20398                 p->error_indicator = 1;
20399                 p->level--;
20400                 return NULL;
20401             }
20402             goto done;
20403         }
20404         p->mark = _mark;
20405         D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
20406                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default+ '/' '*'"));
20407     }
20408     _res = NULL;
20409   done:
20410     p->level--;
20411     return _res;
20412 }
20413 
20414 // invalid_default: '=' &(')' | ',')
20415 static void *
invalid_default_rule(Parser * p)20416 invalid_default_rule(Parser *p)
20417 {
20418     if (p->level++ == MAXSTACK) {
20419         p->error_indicator = 1;
20420         PyErr_NoMemory();
20421     }
20422     if (p->error_indicator) {
20423         p->level--;
20424         return NULL;
20425     }
20426     void * _res = NULL;
20427     int _mark = p->mark;
20428     { // '=' &(')' | ',')
20429         if (p->error_indicator) {
20430             p->level--;
20431             return NULL;
20432         }
20433         D(fprintf(stderr, "%*c> invalid_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' &(')' | ',')"));
20434         Token * a;
20435         if (
20436             (a = _PyPegen_expect_token(p, 22))  // token='='
20437             &&
20438             _PyPegen_lookahead(1, _tmp_169_rule, p)
20439         )
20440         {
20441             D(fprintf(stderr, "%*c+ invalid_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' &(')' | ',')"));
20442             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected default value expression" );
20443             if (_res == NULL && PyErr_Occurred()) {
20444                 p->error_indicator = 1;
20445                 p->level--;
20446                 return NULL;
20447             }
20448             goto done;
20449         }
20450         p->mark = _mark;
20451         D(fprintf(stderr, "%*c%s invalid_default[%d-%d]: %s failed!\n", p->level, ' ',
20452                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' &(')' | ',')"));
20453     }
20454     _res = NULL;
20455   done:
20456     p->level--;
20457     return _res;
20458 }
20459 
20460 // invalid_star_etc:
20461 //     | '*' (')' | ',' (')' | '**'))
20462 //     | '*' ',' TYPE_COMMENT
20463 //     | '*' param '='
20464 //     | '*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')
20465 static void *
invalid_star_etc_rule(Parser * p)20466 invalid_star_etc_rule(Parser *p)
20467 {
20468     if (p->level++ == MAXSTACK) {
20469         p->error_indicator = 1;
20470         PyErr_NoMemory();
20471     }
20472     if (p->error_indicator) {
20473         p->level--;
20474         return NULL;
20475     }
20476     void * _res = NULL;
20477     int _mark = p->mark;
20478     { // '*' (')' | ',' (')' | '**'))
20479         if (p->error_indicator) {
20480             p->level--;
20481             return NULL;
20482         }
20483         D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
20484         void *_tmp_170_var;
20485         Token * a;
20486         if (
20487             (a = _PyPegen_expect_token(p, 16))  // token='*'
20488             &&
20489             (_tmp_170_var = _tmp_170_rule(p))  // ')' | ',' (')' | '**')
20490         )
20491         {
20492             D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
20493             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "named arguments must follow bare *" );
20494             if (_res == NULL && PyErr_Occurred()) {
20495                 p->error_indicator = 1;
20496                 p->level--;
20497                 return NULL;
20498             }
20499             goto done;
20500         }
20501         p->mark = _mark;
20502         D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
20503                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
20504     }
20505     { // '*' ',' TYPE_COMMENT
20506         if (p->error_indicator) {
20507             p->level--;
20508             return NULL;
20509         }
20510         D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
20511         Token * _literal;
20512         Token * _literal_1;
20513         Token * type_comment_var;
20514         if (
20515             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
20516             &&
20517             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
20518             &&
20519             (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
20520         )
20521         {
20522             D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
20523             _res = RAISE_SYNTAX_ERROR ( "bare * has associated type comment" );
20524             if (_res == NULL && PyErr_Occurred()) {
20525                 p->error_indicator = 1;
20526                 p->level--;
20527                 return NULL;
20528             }
20529             goto done;
20530         }
20531         p->mark = _mark;
20532         D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
20533                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' TYPE_COMMENT"));
20534     }
20535     { // '*' param '='
20536         if (p->error_indicator) {
20537             p->level--;
20538             return NULL;
20539         }
20540         D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param '='"));
20541         Token * _literal;
20542         Token * a;
20543         arg_ty param_var;
20544         if (
20545             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
20546             &&
20547             (param_var = param_rule(p))  // param
20548             &&
20549             (a = _PyPegen_expect_token(p, 22))  // token='='
20550         )
20551         {
20552             D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param '='"));
20553             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-positional argument cannot have default value" );
20554             if (_res == NULL && PyErr_Occurred()) {
20555                 p->error_indicator = 1;
20556                 p->level--;
20557                 return NULL;
20558             }
20559             goto done;
20560         }
20561         p->mark = _mark;
20562         D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
20563                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param '='"));
20564     }
20565     { // '*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')
20566         if (p->error_indicator) {
20567             p->level--;
20568             return NULL;
20569         }
20570         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 | ',')"));
20571         Token * _literal;
20572         asdl_seq * _loop0_172_var;
20573         void *_tmp_171_var;
20574         void *_tmp_173_var;
20575         Token * a;
20576         if (
20577             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
20578             &&
20579             (_tmp_171_var = _tmp_171_rule(p))  // param_no_default | ','
20580             &&
20581             (_loop0_172_var = _loop0_172_rule(p))  // param_maybe_default*
20582             &&
20583             (a = _PyPegen_expect_token(p, 16))  // token='*'
20584             &&
20585             (_tmp_173_var = _tmp_173_rule(p))  // param_no_default | ','
20586         )
20587         {
20588             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 | ',')"));
20589             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "* argument may appear only once" );
20590             if (_res == NULL && PyErr_Occurred()) {
20591                 p->error_indicator = 1;
20592                 p->level--;
20593                 return NULL;
20594             }
20595             goto done;
20596         }
20597         p->mark = _mark;
20598         D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
20599                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (param_no_default | ',') param_maybe_default* '*' (param_no_default | ',')"));
20600     }
20601     _res = NULL;
20602   done:
20603     p->level--;
20604     return _res;
20605 }
20606 
20607 // invalid_kwds: '**' param '=' | '**' param ',' param | '**' param ',' ('*' | '**' | '/')
20608 static void *
invalid_kwds_rule(Parser * p)20609 invalid_kwds_rule(Parser *p)
20610 {
20611     if (p->level++ == MAXSTACK) {
20612         p->error_indicator = 1;
20613         PyErr_NoMemory();
20614     }
20615     if (p->error_indicator) {
20616         p->level--;
20617         return NULL;
20618     }
20619     void * _res = NULL;
20620     int _mark = p->mark;
20621     { // '**' param '='
20622         if (p->error_indicator) {
20623             p->level--;
20624             return NULL;
20625         }
20626         D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param '='"));
20627         Token * _literal;
20628         Token * a;
20629         arg_ty param_var;
20630         if (
20631             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
20632             &&
20633             (param_var = param_rule(p))  // param
20634             &&
20635             (a = _PyPegen_expect_token(p, 22))  // token='='
20636         )
20637         {
20638             D(fprintf(stderr, "%*c+ invalid_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param '='"));
20639             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-keyword argument cannot have default value" );
20640             if (_res == NULL && PyErr_Occurred()) {
20641                 p->error_indicator = 1;
20642                 p->level--;
20643                 return NULL;
20644             }
20645             goto done;
20646         }
20647         p->mark = _mark;
20648         D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
20649                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param '='"));
20650     }
20651     { // '**' param ',' param
20652         if (p->error_indicator) {
20653             p->level--;
20654             return NULL;
20655         }
20656         D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param ',' param"));
20657         Token * _literal;
20658         Token * _literal_1;
20659         arg_ty a;
20660         arg_ty param_var;
20661         if (
20662             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
20663             &&
20664             (param_var = param_rule(p))  // param
20665             &&
20666             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
20667             &&
20668             (a = param_rule(p))  // param
20669         )
20670         {
20671             D(fprintf(stderr, "%*c+ invalid_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param ',' param"));
20672             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "arguments cannot follow var-keyword argument" );
20673             if (_res == NULL && PyErr_Occurred()) {
20674                 p->error_indicator = 1;
20675                 p->level--;
20676                 return NULL;
20677             }
20678             goto done;
20679         }
20680         p->mark = _mark;
20681         D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
20682                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param ',' param"));
20683     }
20684     { // '**' param ',' ('*' | '**' | '/')
20685         if (p->error_indicator) {
20686             p->level--;
20687             return NULL;
20688         }
20689         D(fprintf(stderr, "%*c> invalid_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param ',' ('*' | '**' | '/')"));
20690         Token * _literal;
20691         Token * _literal_1;
20692         Token* a;
20693         arg_ty param_var;
20694         if (
20695             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
20696             &&
20697             (param_var = param_rule(p))  // param
20698             &&
20699             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
20700             &&
20701             (a = (Token*)_tmp_174_rule(p))  // '*' | '**' | '/'
20702         )
20703         {
20704             D(fprintf(stderr, "%*c+ invalid_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param ',' ('*' | '**' | '/')"));
20705             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "arguments cannot follow var-keyword argument" );
20706             if (_res == NULL && PyErr_Occurred()) {
20707                 p->error_indicator = 1;
20708                 p->level--;
20709                 return NULL;
20710             }
20711             goto done;
20712         }
20713         p->mark = _mark;
20714         D(fprintf(stderr, "%*c%s invalid_kwds[%d-%d]: %s failed!\n", p->level, ' ',
20715                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param ',' ('*' | '**' | '/')"));
20716     }
20717     _res = NULL;
20718   done:
20719     p->level--;
20720     return _res;
20721 }
20722 
20723 // invalid_parameters_helper: slash_with_default | param_with_default+
20724 static void *
invalid_parameters_helper_rule(Parser * p)20725 invalid_parameters_helper_rule(Parser *p)
20726 {
20727     if (p->level++ == MAXSTACK) {
20728         p->error_indicator = 1;
20729         PyErr_NoMemory();
20730     }
20731     if (p->error_indicator) {
20732         p->level--;
20733         return NULL;
20734     }
20735     void * _res = NULL;
20736     int _mark = p->mark;
20737     { // slash_with_default
20738         if (p->error_indicator) {
20739             p->level--;
20740             return NULL;
20741         }
20742         D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
20743         SlashWithDefault* a;
20744         if (
20745             (a = slash_with_default_rule(p))  // slash_with_default
20746         )
20747         {
20748             D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
20749             _res = _PyPegen_singleton_seq ( p , a );
20750             if (_res == NULL && PyErr_Occurred()) {
20751                 p->error_indicator = 1;
20752                 p->level--;
20753                 return NULL;
20754             }
20755             goto done;
20756         }
20757         p->mark = _mark;
20758         D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
20759                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
20760     }
20761     { // param_with_default+
20762         if (p->error_indicator) {
20763             p->level--;
20764             return NULL;
20765         }
20766         D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
20767         asdl_seq * _loop1_175_var;
20768         if (
20769             (_loop1_175_var = _loop1_175_rule(p))  // param_with_default+
20770         )
20771         {
20772             D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
20773             _res = _loop1_175_var;
20774             goto done;
20775         }
20776         p->mark = _mark;
20777         D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
20778                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+"));
20779     }
20780     _res = NULL;
20781   done:
20782     p->level--;
20783     return _res;
20784 }
20785 
20786 // invalid_lambda_parameters:
20787 //     | lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default
20788 //     | lambda_param_no_default* '(' ','.lambda_param+ ','? ')'
20789 //     | "/" ','
20790 //     | (lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'
20791 //     | [(lambda_slash_no_default | lambda_slash_with_default)] lambda_param_maybe_default* '*' (',' | lambda_param_no_default) lambda_param_maybe_default* '/'
20792 //     | lambda_param_maybe_default+ '/' '*'
20793 static void *
invalid_lambda_parameters_rule(Parser * p)20794 invalid_lambda_parameters_rule(Parser *p)
20795 {
20796     if (p->level++ == MAXSTACK) {
20797         p->error_indicator = 1;
20798         PyErr_NoMemory();
20799     }
20800     if (p->error_indicator) {
20801         p->level--;
20802         return NULL;
20803     }
20804     void * _res = NULL;
20805     int _mark = p->mark;
20806     { // lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default
20807         if (p->error_indicator) {
20808             p->level--;
20809             return NULL;
20810         }
20811         D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default"));
20812         asdl_seq * _loop0_176_var;
20813         arg_ty a;
20814         void *invalid_lambda_parameters_helper_var;
20815         if (
20816             (_loop0_176_var = _loop0_176_rule(p))  // lambda_param_no_default*
20817             &&
20818             (invalid_lambda_parameters_helper_var = invalid_lambda_parameters_helper_rule(p))  // invalid_lambda_parameters_helper
20819             &&
20820             (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
20821         )
20822         {
20823             D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default"));
20824             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "non-default argument follows default argument" );
20825             if (_res == NULL && PyErr_Occurred()) {
20826                 p->error_indicator = 1;
20827                 p->level--;
20828                 return NULL;
20829             }
20830             goto done;
20831         }
20832         p->mark = _mark;
20833         D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
20834                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default"));
20835     }
20836     { // lambda_param_no_default* '(' ','.lambda_param+ ','? ')'
20837         if (p->error_indicator) {
20838             p->level--;
20839             return NULL;
20840         }
20841         D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
20842         asdl_seq * _gather_178_var;
20843         asdl_seq * _loop0_177_var;
20844         void *_opt_var;
20845         UNUSED(_opt_var); // Silence compiler warnings
20846         Token * a;
20847         Token * b;
20848         if (
20849             (_loop0_177_var = _loop0_177_rule(p))  // lambda_param_no_default*
20850             &&
20851             (a = _PyPegen_expect_token(p, 7))  // token='('
20852             &&
20853             (_gather_178_var = _gather_178_rule(p))  // ','.lambda_param+
20854             &&
20855             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
20856             &&
20857             (b = _PyPegen_expect_token(p, 8))  // token=')'
20858         )
20859         {
20860             D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
20861             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "Lambda expression parameters cannot be parenthesized" );
20862             if (_res == NULL && PyErr_Occurred()) {
20863                 p->error_indicator = 1;
20864                 p->level--;
20865                 return NULL;
20866             }
20867             goto done;
20868         }
20869         p->mark = _mark;
20870         D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
20871                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
20872     }
20873     { // "/" ','
20874         if (p->error_indicator) {
20875             p->level--;
20876             return NULL;
20877         }
20878         D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
20879         Token * _literal;
20880         Token * a;
20881         if (
20882             (a = _PyPegen_expect_token(p, 17))  // token='/'
20883             &&
20884             (_literal = _PyPegen_expect_token(p, 12))  // token=','
20885         )
20886         {
20887             D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"/\" ','"));
20888             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "at least one argument must precede /" );
20889             if (_res == NULL && PyErr_Occurred()) {
20890                 p->error_indicator = 1;
20891                 p->level--;
20892                 return NULL;
20893             }
20894             goto done;
20895         }
20896         p->mark = _mark;
20897         D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
20898                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"/\" ','"));
20899     }
20900     { // (lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'
20901         if (p->error_indicator) {
20902             p->level--;
20903             return NULL;
20904         }
20905         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* '/'"));
20906         asdl_seq * _loop0_181_var;
20907         void *_tmp_180_var;
20908         Token * a;
20909         if (
20910             (_tmp_180_var = _tmp_180_rule(p))  // lambda_slash_no_default | lambda_slash_with_default
20911             &&
20912             (_loop0_181_var = _loop0_181_rule(p))  // lambda_param_maybe_default*
20913             &&
20914             (a = _PyPegen_expect_token(p, 17))  // token='/'
20915         )
20916         {
20917             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* '/'"));
20918             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ may appear only once" );
20919             if (_res == NULL && PyErr_Occurred()) {
20920                 p->error_indicator = 1;
20921                 p->level--;
20922                 return NULL;
20923             }
20924             goto done;
20925         }
20926         p->mark = _mark;
20927         D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
20928                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(lambda_slash_no_default | lambda_slash_with_default) lambda_param_maybe_default* '/'"));
20929     }
20930     { // [(lambda_slash_no_default | lambda_slash_with_default)] lambda_param_maybe_default* '*' (',' | lambda_param_no_default) lambda_param_maybe_default* '/'
20931         if (p->error_indicator) {
20932             p->level--;
20933             return NULL;
20934         }
20935         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* '/'"));
20936         Token * _literal;
20937         asdl_seq * _loop0_183_var;
20938         asdl_seq * _loop0_185_var;
20939         void *_opt_var;
20940         UNUSED(_opt_var); // Silence compiler warnings
20941         void *_tmp_184_var;
20942         Token * a;
20943         if (
20944             (_opt_var = _tmp_182_rule(p), !p->error_indicator)  // [(lambda_slash_no_default | lambda_slash_with_default)]
20945             &&
20946             (_loop0_183_var = _loop0_183_rule(p))  // lambda_param_maybe_default*
20947             &&
20948             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
20949             &&
20950             (_tmp_184_var = _tmp_184_rule(p))  // ',' | lambda_param_no_default
20951             &&
20952             (_loop0_185_var = _loop0_185_rule(p))  // lambda_param_maybe_default*
20953             &&
20954             (a = _PyPegen_expect_token(p, 17))  // token='/'
20955         )
20956         {
20957             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* '/'"));
20958             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "/ must be ahead of *" );
20959             if (_res == NULL && PyErr_Occurred()) {
20960                 p->error_indicator = 1;
20961                 p->level--;
20962                 return NULL;
20963             }
20964             goto done;
20965         }
20966         p->mark = _mark;
20967         D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
20968                   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* '/'"));
20969     }
20970     { // lambda_param_maybe_default+ '/' '*'
20971         if (p->error_indicator) {
20972             p->level--;
20973             return NULL;
20974         }
20975         D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default+ '/' '*'"));
20976         Token * _literal;
20977         asdl_seq * _loop1_186_var;
20978         Token * a;
20979         if (
20980             (_loop1_186_var = _loop1_186_rule(p))  // lambda_param_maybe_default+
20981             &&
20982             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
20983             &&
20984             (a = _PyPegen_expect_token(p, 16))  // token='*'
20985         )
20986         {
20987             D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default+ '/' '*'"));
20988             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expected comma between / and *" );
20989             if (_res == NULL && PyErr_Occurred()) {
20990                 p->error_indicator = 1;
20991                 p->level--;
20992                 return NULL;
20993             }
20994             goto done;
20995         }
20996         p->mark = _mark;
20997         D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
20998                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default+ '/' '*'"));
20999     }
21000     _res = NULL;
21001   done:
21002     p->level--;
21003     return _res;
21004 }
21005 
21006 // invalid_lambda_parameters_helper:
21007 //     | lambda_slash_with_default
21008 //     | lambda_param_with_default+
21009 static void *
invalid_lambda_parameters_helper_rule(Parser * p)21010 invalid_lambda_parameters_helper_rule(Parser *p)
21011 {
21012     if (p->level++ == MAXSTACK) {
21013         p->error_indicator = 1;
21014         PyErr_NoMemory();
21015     }
21016     if (p->error_indicator) {
21017         p->level--;
21018         return NULL;
21019     }
21020     void * _res = NULL;
21021     int _mark = p->mark;
21022     { // lambda_slash_with_default
21023         if (p->error_indicator) {
21024             p->level--;
21025             return NULL;
21026         }
21027         D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
21028         SlashWithDefault* a;
21029         if (
21030             (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
21031         )
21032         {
21033             D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
21034             _res = _PyPegen_singleton_seq ( p , a );
21035             if (_res == NULL && PyErr_Occurred()) {
21036                 p->error_indicator = 1;
21037                 p->level--;
21038                 return NULL;
21039             }
21040             goto done;
21041         }
21042         p->mark = _mark;
21043         D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
21044                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
21045     }
21046     { // lambda_param_with_default+
21047         if (p->error_indicator) {
21048             p->level--;
21049             return NULL;
21050         }
21051         D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
21052         asdl_seq * _loop1_187_var;
21053         if (
21054             (_loop1_187_var = _loop1_187_rule(p))  // lambda_param_with_default+
21055         )
21056         {
21057             D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
21058             _res = _loop1_187_var;
21059             goto done;
21060         }
21061         p->mark = _mark;
21062         D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
21063                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+"));
21064     }
21065     _res = NULL;
21066   done:
21067     p->level--;
21068     return _res;
21069 }
21070 
21071 // invalid_lambda_star_etc:
21072 //     | '*' (':' | ',' (':' | '**'))
21073 //     | '*' lambda_param '='
21074 //     | '*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')
21075 static void *
invalid_lambda_star_etc_rule(Parser * p)21076 invalid_lambda_star_etc_rule(Parser *p)
21077 {
21078     if (p->level++ == MAXSTACK) {
21079         p->error_indicator = 1;
21080         PyErr_NoMemory();
21081     }
21082     if (p->error_indicator) {
21083         p->level--;
21084         return NULL;
21085     }
21086     void * _res = NULL;
21087     int _mark = p->mark;
21088     { // '*' (':' | ',' (':' | '**'))
21089         if (p->error_indicator) {
21090             p->level--;
21091             return NULL;
21092         }
21093         D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
21094         Token * _literal;
21095         void *_tmp_188_var;
21096         if (
21097             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
21098             &&
21099             (_tmp_188_var = _tmp_188_rule(p))  // ':' | ',' (':' | '**')
21100         )
21101         {
21102             D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
21103             _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
21104             if (_res == NULL && PyErr_Occurred()) {
21105                 p->error_indicator = 1;
21106                 p->level--;
21107                 return NULL;
21108             }
21109             goto done;
21110         }
21111         p->mark = _mark;
21112         D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
21113                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
21114     }
21115     { // '*' lambda_param '='
21116         if (p->error_indicator) {
21117             p->level--;
21118             return NULL;
21119         }
21120         D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' lambda_param '='"));
21121         Token * _literal;
21122         Token * a;
21123         arg_ty lambda_param_var;
21124         if (
21125             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
21126             &&
21127             (lambda_param_var = lambda_param_rule(p))  // lambda_param
21128             &&
21129             (a = _PyPegen_expect_token(p, 22))  // token='='
21130         )
21131         {
21132             D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' lambda_param '='"));
21133             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-positional argument cannot have default value" );
21134             if (_res == NULL && PyErr_Occurred()) {
21135                 p->error_indicator = 1;
21136                 p->level--;
21137                 return NULL;
21138             }
21139             goto done;
21140         }
21141         p->mark = _mark;
21142         D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
21143                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param '='"));
21144     }
21145     { // '*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')
21146         if (p->error_indicator) {
21147             p->level--;
21148             return NULL;
21149         }
21150         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 | ',')"));
21151         Token * _literal;
21152         asdl_seq * _loop0_190_var;
21153         void *_tmp_189_var;
21154         void *_tmp_191_var;
21155         Token * a;
21156         if (
21157             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
21158             &&
21159             (_tmp_189_var = _tmp_189_rule(p))  // lambda_param_no_default | ','
21160             &&
21161             (_loop0_190_var = _loop0_190_rule(p))  // lambda_param_maybe_default*
21162             &&
21163             (a = _PyPegen_expect_token(p, 16))  // token='*'
21164             &&
21165             (_tmp_191_var = _tmp_191_rule(p))  // lambda_param_no_default | ','
21166         )
21167         {
21168             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 | ',')"));
21169             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "* argument may appear only once" );
21170             if (_res == NULL && PyErr_Occurred()) {
21171                 p->error_indicator = 1;
21172                 p->level--;
21173                 return NULL;
21174             }
21175             goto done;
21176         }
21177         p->mark = _mark;
21178         D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
21179                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (lambda_param_no_default | ',') lambda_param_maybe_default* '*' (lambda_param_no_default | ',')"));
21180     }
21181     _res = NULL;
21182   done:
21183     p->level--;
21184     return _res;
21185 }
21186 
21187 // invalid_lambda_kwds:
21188 //     | '**' lambda_param '='
21189 //     | '**' lambda_param ',' lambda_param
21190 //     | '**' lambda_param ',' ('*' | '**' | '/')
21191 static void *
invalid_lambda_kwds_rule(Parser * p)21192 invalid_lambda_kwds_rule(Parser *p)
21193 {
21194     if (p->level++ == MAXSTACK) {
21195         p->error_indicator = 1;
21196         PyErr_NoMemory();
21197     }
21198     if (p->error_indicator) {
21199         p->level--;
21200         return NULL;
21201     }
21202     void * _res = NULL;
21203     int _mark = p->mark;
21204     { // '**' lambda_param '='
21205         if (p->error_indicator) {
21206             p->level--;
21207             return NULL;
21208         }
21209         D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param '='"));
21210         Token * _literal;
21211         Token * a;
21212         arg_ty lambda_param_var;
21213         if (
21214             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
21215             &&
21216             (lambda_param_var = lambda_param_rule(p))  // lambda_param
21217             &&
21218             (a = _PyPegen_expect_token(p, 22))  // token='='
21219         )
21220         {
21221             D(fprintf(stderr, "%*c+ invalid_lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param '='"));
21222             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "var-keyword argument cannot have default value" );
21223             if (_res == NULL && PyErr_Occurred()) {
21224                 p->error_indicator = 1;
21225                 p->level--;
21226                 return NULL;
21227             }
21228             goto done;
21229         }
21230         p->mark = _mark;
21231         D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
21232                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param '='"));
21233     }
21234     { // '**' lambda_param ',' lambda_param
21235         if (p->error_indicator) {
21236             p->level--;
21237             return NULL;
21238         }
21239         D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' lambda_param"));
21240         Token * _literal;
21241         Token * _literal_1;
21242         arg_ty a;
21243         arg_ty lambda_param_var;
21244         if (
21245             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
21246             &&
21247             (lambda_param_var = lambda_param_rule(p))  // lambda_param
21248             &&
21249             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
21250             &&
21251             (a = lambda_param_rule(p))  // lambda_param
21252         )
21253         {
21254             D(fprintf(stderr, "%*c+ invalid_lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' lambda_param"));
21255             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "arguments cannot follow var-keyword argument" );
21256             if (_res == NULL && PyErr_Occurred()) {
21257                 p->error_indicator = 1;
21258                 p->level--;
21259                 return NULL;
21260             }
21261             goto done;
21262         }
21263         p->mark = _mark;
21264         D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
21265                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param ',' lambda_param"));
21266     }
21267     { // '**' lambda_param ',' ('*' | '**' | '/')
21268         if (p->error_indicator) {
21269             p->level--;
21270             return NULL;
21271         }
21272         D(fprintf(stderr, "%*c> invalid_lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')"));
21273         Token * _literal;
21274         Token * _literal_1;
21275         Token* a;
21276         arg_ty lambda_param_var;
21277         if (
21278             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
21279             &&
21280             (lambda_param_var = lambda_param_rule(p))  // lambda_param
21281             &&
21282             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
21283             &&
21284             (a = (Token*)_tmp_192_rule(p))  // '*' | '**' | '/'
21285         )
21286         {
21287             D(fprintf(stderr, "%*c+ invalid_lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')"));
21288             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "arguments cannot follow var-keyword argument" );
21289             if (_res == NULL && PyErr_Occurred()) {
21290                 p->error_indicator = 1;
21291                 p->level--;
21292                 return NULL;
21293             }
21294             goto done;
21295         }
21296         p->mark = _mark;
21297         D(fprintf(stderr, "%*c%s invalid_lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
21298                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param ',' ('*' | '**' | '/')"));
21299     }
21300     _res = NULL;
21301   done:
21302     p->level--;
21303     return _res;
21304 }
21305 
21306 // invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
21307 static void *
invalid_double_type_comments_rule(Parser * p)21308 invalid_double_type_comments_rule(Parser *p)
21309 {
21310     if (p->level++ == MAXSTACK) {
21311         p->error_indicator = 1;
21312         PyErr_NoMemory();
21313     }
21314     if (p->error_indicator) {
21315         p->level--;
21316         return NULL;
21317     }
21318     void * _res = NULL;
21319     int _mark = p->mark;
21320     { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
21321         if (p->error_indicator) {
21322             p->level--;
21323             return NULL;
21324         }
21325         D(fprintf(stderr, "%*c> invalid_double_type_comments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
21326         Token * indent_var;
21327         Token * newline_var;
21328         Token * newline_var_1;
21329         Token * type_comment_var;
21330         Token * type_comment_var_1;
21331         if (
21332             (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
21333             &&
21334             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21335             &&
21336             (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
21337             &&
21338             (newline_var_1 = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21339             &&
21340             (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
21341         )
21342         {
21343             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"));
21344             _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
21345             if (_res == NULL && PyErr_Occurred()) {
21346                 p->error_indicator = 1;
21347                 p->level--;
21348                 return NULL;
21349             }
21350             goto done;
21351         }
21352         p->mark = _mark;
21353         D(fprintf(stderr, "%*c%s invalid_double_type_comments[%d-%d]: %s failed!\n", p->level, ' ',
21354                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
21355     }
21356     _res = NULL;
21357   done:
21358     p->level--;
21359     return _res;
21360 }
21361 
21362 // invalid_with_item: expression 'as' expression &(',' | ')' | ':')
21363 static void *
invalid_with_item_rule(Parser * p)21364 invalid_with_item_rule(Parser *p)
21365 {
21366     if (p->level++ == MAXSTACK) {
21367         p->error_indicator = 1;
21368         PyErr_NoMemory();
21369     }
21370     if (p->error_indicator) {
21371         p->level--;
21372         return NULL;
21373     }
21374     void * _res = NULL;
21375     int _mark = p->mark;
21376     { // expression 'as' expression &(',' | ')' | ':')
21377         if (p->error_indicator) {
21378             p->level--;
21379             return NULL;
21380         }
21381         D(fprintf(stderr, "%*c> invalid_with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
21382         Token * _keyword;
21383         expr_ty a;
21384         expr_ty expression_var;
21385         if (
21386             (expression_var = expression_rule(p))  // expression
21387             &&
21388             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
21389             &&
21390             (a = expression_rule(p))  // expression
21391             &&
21392             _PyPegen_lookahead(1, _tmp_193_rule, p)
21393         )
21394         {
21395             D(fprintf(stderr, "%*c+ invalid_with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
21396             _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( STAR_TARGETS , a );
21397             if (_res == NULL && PyErr_Occurred()) {
21398                 p->error_indicator = 1;
21399                 p->level--;
21400                 return NULL;
21401             }
21402             goto done;
21403         }
21404         p->mark = _mark;
21405         D(fprintf(stderr, "%*c%s invalid_with_item[%d-%d]: %s failed!\n", p->level, ' ',
21406                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
21407     }
21408     _res = NULL;
21409   done:
21410     p->level--;
21411     return _res;
21412 }
21413 
21414 // invalid_for_target: ASYNC? 'for' star_expressions
21415 static void *
invalid_for_target_rule(Parser * p)21416 invalid_for_target_rule(Parser *p)
21417 {
21418     if (p->level++ == MAXSTACK) {
21419         p->error_indicator = 1;
21420         PyErr_NoMemory();
21421     }
21422     if (p->error_indicator) {
21423         p->level--;
21424         return NULL;
21425     }
21426     void * _res = NULL;
21427     int _mark = p->mark;
21428     { // ASYNC? 'for' star_expressions
21429         if (p->error_indicator) {
21430             p->level--;
21431             return NULL;
21432         }
21433         D(fprintf(stderr, "%*c> invalid_for_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'for' star_expressions"));
21434         Token * _keyword;
21435         void *_opt_var;
21436         UNUSED(_opt_var); // Silence compiler warnings
21437         expr_ty a;
21438         if (
21439             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
21440             &&
21441             (_keyword = _PyPegen_expect_token(p, 647))  // token='for'
21442             &&
21443             (a = star_expressions_rule(p))  // star_expressions
21444         )
21445         {
21446             D(fprintf(stderr, "%*c+ invalid_for_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'for' star_expressions"));
21447             _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( FOR_TARGETS , a );
21448             if (_res == NULL && PyErr_Occurred()) {
21449                 p->error_indicator = 1;
21450                 p->level--;
21451                 return NULL;
21452             }
21453             goto done;
21454         }
21455         p->mark = _mark;
21456         D(fprintf(stderr, "%*c%s invalid_for_target[%d-%d]: %s failed!\n", p->level, ' ',
21457                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'for' star_expressions"));
21458     }
21459     _res = NULL;
21460   done:
21461     p->level--;
21462     return _res;
21463 }
21464 
21465 // invalid_group: '(' starred_expression ')' | '(' '**' expression ')'
21466 static void *
invalid_group_rule(Parser * p)21467 invalid_group_rule(Parser *p)
21468 {
21469     if (p->level++ == MAXSTACK) {
21470         p->error_indicator = 1;
21471         PyErr_NoMemory();
21472     }
21473     if (p->error_indicator) {
21474         p->level--;
21475         return NULL;
21476     }
21477     void * _res = NULL;
21478     int _mark = p->mark;
21479     { // '(' starred_expression ')'
21480         if (p->error_indicator) {
21481             p->level--;
21482             return NULL;
21483         }
21484         D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' starred_expression ')'"));
21485         Token * _literal;
21486         Token * _literal_1;
21487         expr_ty a;
21488         if (
21489             (_literal = _PyPegen_expect_token(p, 7))  // token='('
21490             &&
21491             (a = starred_expression_rule(p))  // starred_expression
21492             &&
21493             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
21494         )
21495         {
21496             D(fprintf(stderr, "%*c+ invalid_group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' starred_expression ')'"));
21497             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use starred expression here" );
21498             if (_res == NULL && PyErr_Occurred()) {
21499                 p->error_indicator = 1;
21500                 p->level--;
21501                 return NULL;
21502             }
21503             goto done;
21504         }
21505         p->mark = _mark;
21506         D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
21507                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' starred_expression ')'"));
21508     }
21509     { // '(' '**' expression ')'
21510         if (p->error_indicator) {
21511             p->level--;
21512             return NULL;
21513         }
21514         D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' '**' expression ')'"));
21515         Token * _literal;
21516         Token * _literal_1;
21517         Token * a;
21518         expr_ty expression_var;
21519         if (
21520             (_literal = _PyPegen_expect_token(p, 7))  // token='('
21521             &&
21522             (a = _PyPegen_expect_token(p, 35))  // token='**'
21523             &&
21524             (expression_var = expression_rule(p))  // expression
21525             &&
21526             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
21527         )
21528         {
21529             D(fprintf(stderr, "%*c+ invalid_group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' '**' expression ')'"));
21530             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use double starred expression here" );
21531             if (_res == NULL && PyErr_Occurred()) {
21532                 p->error_indicator = 1;
21533                 p->level--;
21534                 return NULL;
21535             }
21536             goto done;
21537         }
21538         p->mark = _mark;
21539         D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
21540                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' '**' expression ')'"));
21541     }
21542     _res = NULL;
21543   done:
21544     p->level--;
21545     return _res;
21546 }
21547 
21548 // invalid_import_from_targets: import_from_as_names ',' NEWLINE
21549 static void *
invalid_import_from_targets_rule(Parser * p)21550 invalid_import_from_targets_rule(Parser *p)
21551 {
21552     if (p->level++ == MAXSTACK) {
21553         p->error_indicator = 1;
21554         PyErr_NoMemory();
21555     }
21556     if (p->error_indicator) {
21557         p->level--;
21558         return NULL;
21559     }
21560     void * _res = NULL;
21561     int _mark = p->mark;
21562     { // import_from_as_names ',' NEWLINE
21563         if (p->error_indicator) {
21564             p->level--;
21565             return NULL;
21566         }
21567         D(fprintf(stderr, "%*c> invalid_import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names ',' NEWLINE"));
21568         Token * _literal;
21569         asdl_alias_seq* import_from_as_names_var;
21570         Token * newline_var;
21571         if (
21572             (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
21573             &&
21574             (_literal = _PyPegen_expect_token(p, 12))  // token=','
21575             &&
21576             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21577         )
21578         {
21579             D(fprintf(stderr, "%*c+ invalid_import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names ',' NEWLINE"));
21580             _res = RAISE_SYNTAX_ERROR ( "trailing comma not allowed without surrounding parentheses" );
21581             if (_res == NULL && PyErr_Occurred()) {
21582                 p->error_indicator = 1;
21583                 p->level--;
21584                 return NULL;
21585             }
21586             goto done;
21587         }
21588         p->mark = _mark;
21589         D(fprintf(stderr, "%*c%s invalid_import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
21590                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names ',' NEWLINE"));
21591     }
21592     _res = NULL;
21593   done:
21594     p->level--;
21595     return _res;
21596 }
21597 
21598 // invalid_with_stmt:
21599 //     | ASYNC? 'with' ','.(expression ['as' star_target])+ NEWLINE
21600 //     | ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE
21601 static void *
invalid_with_stmt_rule(Parser * p)21602 invalid_with_stmt_rule(Parser *p)
21603 {
21604     if (p->level++ == MAXSTACK) {
21605         p->error_indicator = 1;
21606         PyErr_NoMemory();
21607     }
21608     if (p->error_indicator) {
21609         p->level--;
21610         return NULL;
21611     }
21612     void * _res = NULL;
21613     int _mark = p->mark;
21614     { // ASYNC? 'with' ','.(expression ['as' star_target])+ NEWLINE
21615         if (p->error_indicator) {
21616             p->level--;
21617             return NULL;
21618         }
21619         D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ NEWLINE"));
21620         asdl_seq * _gather_194_var;
21621         Token * _keyword;
21622         void *_opt_var;
21623         UNUSED(_opt_var); // Silence compiler warnings
21624         Token * newline_var;
21625         if (
21626             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
21627             &&
21628             (_keyword = _PyPegen_expect_token(p, 612))  // token='with'
21629             &&
21630             (_gather_194_var = _gather_194_rule(p))  // ','.(expression ['as' star_target])+
21631             &&
21632             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21633         )
21634         {
21635             D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ NEWLINE"));
21636             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
21637             if (_res == NULL && PyErr_Occurred()) {
21638                 p->error_indicator = 1;
21639                 p->level--;
21640                 return NULL;
21641             }
21642             goto done;
21643         }
21644         p->mark = _mark;
21645         D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
21646                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ NEWLINE"));
21647     }
21648     { // ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE
21649         if (p->error_indicator) {
21650             p->level--;
21651             return NULL;
21652         }
21653         D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE"));
21654         asdl_seq * _gather_196_var;
21655         Token * _keyword;
21656         Token * _literal;
21657         Token * _literal_1;
21658         void *_opt_var;
21659         UNUSED(_opt_var); // Silence compiler warnings
21660         void *_opt_var_1;
21661         UNUSED(_opt_var_1); // Silence compiler warnings
21662         Token * newline_var;
21663         if (
21664             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
21665             &&
21666             (_keyword = _PyPegen_expect_token(p, 612))  // token='with'
21667             &&
21668             (_literal = _PyPegen_expect_token(p, 7))  // token='('
21669             &&
21670             (_gather_196_var = _gather_196_rule(p))  // ','.(expressions ['as' star_target])+
21671             &&
21672             (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
21673             &&
21674             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
21675             &&
21676             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21677         )
21678         {
21679             D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE"));
21680             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
21681             if (_res == NULL && PyErr_Occurred()) {
21682                 p->error_indicator = 1;
21683                 p->level--;
21684                 return NULL;
21685             }
21686             goto done;
21687         }
21688         p->mark = _mark;
21689         D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
21690                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' NEWLINE"));
21691     }
21692     _res = NULL;
21693   done:
21694     p->level--;
21695     return _res;
21696 }
21697 
21698 // invalid_with_stmt_indent:
21699 //     | ASYNC? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT
21700 //     | ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT
21701 static void *
invalid_with_stmt_indent_rule(Parser * p)21702 invalid_with_stmt_indent_rule(Parser *p)
21703 {
21704     if (p->level++ == MAXSTACK) {
21705         p->error_indicator = 1;
21706         PyErr_NoMemory();
21707     }
21708     if (p->error_indicator) {
21709         p->level--;
21710         return NULL;
21711     }
21712     void * _res = NULL;
21713     int _mark = p->mark;
21714     { // ASYNC? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT
21715         if (p->error_indicator) {
21716             p->level--;
21717             return NULL;
21718         }
21719         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"));
21720         asdl_seq * _gather_198_var;
21721         Token * _literal;
21722         void *_opt_var;
21723         UNUSED(_opt_var); // Silence compiler warnings
21724         Token * a;
21725         Token * newline_var;
21726         if (
21727             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
21728             &&
21729             (a = _PyPegen_expect_token(p, 612))  // token='with'
21730             &&
21731             (_gather_198_var = _gather_198_rule(p))  // ','.(expression ['as' star_target])+
21732             &&
21733             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21734             &&
21735             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21736             &&
21737             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
21738         )
21739         {
21740             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"));
21741             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'with' statement on line %d" , a -> lineno );
21742             if (_res == NULL && PyErr_Occurred()) {
21743                 p->error_indicator = 1;
21744                 p->level--;
21745                 return NULL;
21746             }
21747             goto done;
21748         }
21749         p->mark = _mark;
21750         D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
21751                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT"));
21752     }
21753     { // ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT
21754         if (p->error_indicator) {
21755             p->level--;
21756             return NULL;
21757         }
21758         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"));
21759         asdl_seq * _gather_200_var;
21760         Token * _literal;
21761         Token * _literal_1;
21762         Token * _literal_2;
21763         void *_opt_var;
21764         UNUSED(_opt_var); // Silence compiler warnings
21765         void *_opt_var_1;
21766         UNUSED(_opt_var_1); // Silence compiler warnings
21767         Token * a;
21768         Token * newline_var;
21769         if (
21770             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
21771             &&
21772             (a = _PyPegen_expect_token(p, 612))  // token='with'
21773             &&
21774             (_literal = _PyPegen_expect_token(p, 7))  // token='('
21775             &&
21776             (_gather_200_var = _gather_200_rule(p))  // ','.(expressions ['as' star_target])+
21777             &&
21778             (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
21779             &&
21780             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
21781             &&
21782             (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
21783             &&
21784             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21785             &&
21786             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
21787         )
21788         {
21789             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"));
21790             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'with' statement on line %d" , a -> lineno );
21791             if (_res == NULL && PyErr_Occurred()) {
21792                 p->error_indicator = 1;
21793                 p->level--;
21794                 return NULL;
21795             }
21796             goto done;
21797         }
21798         p->mark = _mark;
21799         D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
21800                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT"));
21801     }
21802     _res = NULL;
21803   done:
21804     p->level--;
21805     return _res;
21806 }
21807 
21808 // invalid_try_stmt:
21809 //     | 'try' ':' NEWLINE !INDENT
21810 //     | 'try' ':' block !('except' | 'finally')
21811 //     | 'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'
21812 //     | 'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'
21813 static void *
invalid_try_stmt_rule(Parser * p)21814 invalid_try_stmt_rule(Parser *p)
21815 {
21816     if (p->level++ == MAXSTACK) {
21817         p->error_indicator = 1;
21818         PyErr_NoMemory();
21819     }
21820     if (p->error_indicator) {
21821         p->level--;
21822         return NULL;
21823     }
21824     void * _res = NULL;
21825     int _mark = p->mark;
21826     { // 'try' ':' NEWLINE !INDENT
21827         if (p->error_indicator) {
21828             p->level--;
21829             return NULL;
21830         }
21831         D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
21832         Token * _literal;
21833         Token * a;
21834         Token * newline_var;
21835         if (
21836             (a = _PyPegen_expect_token(p, 621))  // token='try'
21837             &&
21838             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21839             &&
21840             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21841             &&
21842             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
21843         )
21844         {
21845             D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
21846             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'try' statement on line %d" , a -> lineno );
21847             if (_res == NULL && PyErr_Occurred()) {
21848                 p->error_indicator = 1;
21849                 p->level--;
21850                 return NULL;
21851             }
21852             goto done;
21853         }
21854         p->mark = _mark;
21855         D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
21856                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
21857     }
21858     { // 'try' ':' block !('except' | 'finally')
21859         if (p->error_indicator) {
21860             p->level--;
21861             return NULL;
21862         }
21863         D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
21864         Token * _keyword;
21865         Token * _literal;
21866         asdl_stmt_seq* block_var;
21867         if (
21868             (_keyword = _PyPegen_expect_token(p, 621))  // token='try'
21869             &&
21870             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21871             &&
21872             (block_var = block_rule(p))  // block
21873             &&
21874             _PyPegen_lookahead(0, _tmp_202_rule, p)
21875         )
21876         {
21877             D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
21878             _res = RAISE_SYNTAX_ERROR ( "expected 'except' or 'finally' block" );
21879             if (_res == NULL && PyErr_Occurred()) {
21880                 p->error_indicator = 1;
21881                 p->level--;
21882                 return NULL;
21883             }
21884             goto done;
21885         }
21886         p->mark = _mark;
21887         D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
21888                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
21889     }
21890     { // 'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'
21891         if (p->error_indicator) {
21892             p->level--;
21893             return NULL;
21894         }
21895         D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'"));
21896         Token * _keyword;
21897         Token * _literal;
21898         Token * _literal_1;
21899         asdl_seq * _loop0_203_var;
21900         asdl_seq * _loop1_204_var;
21901         void *_opt_var;
21902         UNUSED(_opt_var); // Silence compiler warnings
21903         Token * a;
21904         Token * b;
21905         expr_ty expression_var;
21906         if (
21907             (_keyword = _PyPegen_expect_token(p, 621))  // token='try'
21908             &&
21909             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21910             &&
21911             (_loop0_203_var = _loop0_203_rule(p))  // block*
21912             &&
21913             (_loop1_204_var = _loop1_204_rule(p))  // except_block+
21914             &&
21915             (a = _PyPegen_expect_token(p, 634))  // token='except'
21916             &&
21917             (b = _PyPegen_expect_token(p, 16))  // token='*'
21918             &&
21919             (expression_var = expression_rule(p))  // expression
21920             &&
21921             (_opt_var = _tmp_205_rule(p), !p->error_indicator)  // ['as' NAME]
21922             &&
21923             (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
21924         )
21925         {
21926             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] ':'"));
21927             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot have both 'except' and 'except*' on the same 'try'" );
21928             if (_res == NULL && PyErr_Occurred()) {
21929                 p->error_indicator = 1;
21930                 p->level--;
21931                 return NULL;
21932             }
21933             goto done;
21934         }
21935         p->mark = _mark;
21936         D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
21937                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block* except_block+ 'except' '*' expression ['as' NAME] ':'"));
21938     }
21939     { // 'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'
21940         if (p->error_indicator) {
21941             p->level--;
21942             return NULL;
21943         }
21944         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]] ':'"));
21945         Token * _keyword;
21946         Token * _literal;
21947         Token * _literal_1;
21948         asdl_seq * _loop0_206_var;
21949         asdl_seq * _loop1_207_var;
21950         void *_opt_var;
21951         UNUSED(_opt_var); // Silence compiler warnings
21952         Token * a;
21953         if (
21954             (_keyword = _PyPegen_expect_token(p, 621))  // token='try'
21955             &&
21956             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21957             &&
21958             (_loop0_206_var = _loop0_206_rule(p))  // block*
21959             &&
21960             (_loop1_207_var = _loop1_207_rule(p))  // except_star_block+
21961             &&
21962             (a = _PyPegen_expect_token(p, 634))  // token='except'
21963             &&
21964             (_opt_var = _tmp_208_rule(p), !p->error_indicator)  // [expression ['as' NAME]]
21965             &&
21966             (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
21967         )
21968         {
21969             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]] ':'"));
21970             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot have both 'except' and 'except*' on the same 'try'" );
21971             if (_res == NULL && PyErr_Occurred()) {
21972                 p->error_indicator = 1;
21973                 p->level--;
21974                 return NULL;
21975             }
21976             goto done;
21977         }
21978         p->mark = _mark;
21979         D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
21980                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block* except_star_block+ 'except' [expression ['as' NAME]] ':'"));
21981     }
21982     _res = NULL;
21983   done:
21984     p->level--;
21985     return _res;
21986 }
21987 
21988 // invalid_except_stmt:
21989 //     | 'except' '*'? expression ',' expressions ['as' NAME] ':'
21990 //     | 'except' '*'? expression ['as' NAME] NEWLINE
21991 //     | 'except' NEWLINE
21992 //     | 'except' '*' (NEWLINE | ':')
21993 static void *
invalid_except_stmt_rule(Parser * p)21994 invalid_except_stmt_rule(Parser *p)
21995 {
21996     if (p->level++ == MAXSTACK) {
21997         p->error_indicator = 1;
21998         PyErr_NoMemory();
21999     }
22000     if (p->error_indicator) {
22001         p->level--;
22002         return NULL;
22003     }
22004     void * _res = NULL;
22005     int _mark = p->mark;
22006     { // 'except' '*'? expression ',' expressions ['as' NAME] ':'
22007         if (p->error_indicator) {
22008             p->level--;
22009             return NULL;
22010         }
22011         D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*'? expression ',' expressions ['as' NAME] ':'"));
22012         Token * _keyword;
22013         Token * _literal;
22014         Token * _literal_1;
22015         void *_opt_var;
22016         UNUSED(_opt_var); // Silence compiler warnings
22017         void *_opt_var_1;
22018         UNUSED(_opt_var_1); // Silence compiler warnings
22019         expr_ty a;
22020         expr_ty expressions_var;
22021         if (
22022             (_keyword = _PyPegen_expect_token(p, 634))  // token='except'
22023             &&
22024             (_opt_var = _PyPegen_expect_token(p, 16), !p->error_indicator)  // '*'?
22025             &&
22026             (a = expression_rule(p))  // expression
22027             &&
22028             (_literal = _PyPegen_expect_token(p, 12))  // token=','
22029             &&
22030             (expressions_var = expressions_rule(p))  // expressions
22031             &&
22032             (_opt_var_1 = _tmp_209_rule(p), !p->error_indicator)  // ['as' NAME]
22033             &&
22034             (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
22035         )
22036         {
22037             D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*'? expression ',' expressions ['as' NAME] ':'"));
22038             _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "multiple exception types must be parenthesized" );
22039             if (_res == NULL && PyErr_Occurred()) {
22040                 p->error_indicator = 1;
22041                 p->level--;
22042                 return NULL;
22043             }
22044             goto done;
22045         }
22046         p->mark = _mark;
22047         D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22048                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*'? expression ',' expressions ['as' NAME] ':'"));
22049     }
22050     { // 'except' '*'? expression ['as' NAME] NEWLINE
22051         if (p->error_indicator) {
22052             p->level--;
22053             return NULL;
22054         }
22055         D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*'? expression ['as' NAME] NEWLINE"));
22056         void *_opt_var;
22057         UNUSED(_opt_var); // Silence compiler warnings
22058         void *_opt_var_1;
22059         UNUSED(_opt_var_1); // Silence compiler warnings
22060         Token * a;
22061         expr_ty expression_var;
22062         Token * newline_var;
22063         if (
22064             (a = _PyPegen_expect_token(p, 634))  // token='except'
22065             &&
22066             (_opt_var = _PyPegen_expect_token(p, 16), !p->error_indicator)  // '*'?
22067             &&
22068             (expression_var = expression_rule(p))  // expression
22069             &&
22070             (_opt_var_1 = _tmp_210_rule(p), !p->error_indicator)  // ['as' NAME]
22071             &&
22072             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22073         )
22074         {
22075             D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*'? expression ['as' NAME] NEWLINE"));
22076             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
22077             if (_res == NULL && PyErr_Occurred()) {
22078                 p->error_indicator = 1;
22079                 p->level--;
22080                 return NULL;
22081             }
22082             goto done;
22083         }
22084         p->mark = _mark;
22085         D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22086                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*'? expression ['as' NAME] NEWLINE"));
22087     }
22088     { // 'except' NEWLINE
22089         if (p->error_indicator) {
22090             p->level--;
22091             return NULL;
22092         }
22093         D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
22094         Token * a;
22095         Token * newline_var;
22096         if (
22097             (a = _PyPegen_expect_token(p, 634))  // token='except'
22098             &&
22099             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22100         )
22101         {
22102             D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
22103             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
22104             if (_res == NULL && PyErr_Occurred()) {
22105                 p->error_indicator = 1;
22106                 p->level--;
22107                 return NULL;
22108             }
22109             goto done;
22110         }
22111         p->mark = _mark;
22112         D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22113                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' NEWLINE"));
22114     }
22115     { // 'except' '*' (NEWLINE | ':')
22116         if (p->error_indicator) {
22117             p->level--;
22118             return NULL;
22119         }
22120         D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' (NEWLINE | ':')"));
22121         Token * _literal;
22122         void *_tmp_211_var;
22123         Token * a;
22124         if (
22125             (a = _PyPegen_expect_token(p, 634))  // token='except'
22126             &&
22127             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22128             &&
22129             (_tmp_211_var = _tmp_211_rule(p))  // NEWLINE | ':'
22130         )
22131         {
22132             D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' '*' (NEWLINE | ':')"));
22133             _res = RAISE_SYNTAX_ERROR ( "expected one or more exception types" );
22134             if (_res == NULL && PyErr_Occurred()) {
22135                 p->error_indicator = 1;
22136                 p->level--;
22137                 return NULL;
22138             }
22139             goto done;
22140         }
22141         p->mark = _mark;
22142         D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22143                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' (NEWLINE | ':')"));
22144     }
22145     _res = NULL;
22146   done:
22147     p->level--;
22148     return _res;
22149 }
22150 
22151 // invalid_finally_stmt: 'finally' ':' NEWLINE !INDENT
22152 static void *
invalid_finally_stmt_rule(Parser * p)22153 invalid_finally_stmt_rule(Parser *p)
22154 {
22155     if (p->level++ == MAXSTACK) {
22156         p->error_indicator = 1;
22157         PyErr_NoMemory();
22158     }
22159     if (p->error_indicator) {
22160         p->level--;
22161         return NULL;
22162     }
22163     void * _res = NULL;
22164     int _mark = p->mark;
22165     { // 'finally' ':' NEWLINE !INDENT
22166         if (p->error_indicator) {
22167             p->level--;
22168             return NULL;
22169         }
22170         D(fprintf(stderr, "%*c> invalid_finally_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
22171         Token * _literal;
22172         Token * a;
22173         Token * newline_var;
22174         if (
22175             (a = _PyPegen_expect_token(p, 630))  // token='finally'
22176             &&
22177             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
22178             &&
22179             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22180             &&
22181             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
22182         )
22183         {
22184             D(fprintf(stderr, "%*c+ invalid_finally_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
22185             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'finally' statement on line %d" , a -> lineno );
22186             if (_res == NULL && PyErr_Occurred()) {
22187                 p->error_indicator = 1;
22188                 p->level--;
22189                 return NULL;
22190             }
22191             goto done;
22192         }
22193         p->mark = _mark;
22194         D(fprintf(stderr, "%*c%s invalid_finally_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22195                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
22196     }
22197     _res = NULL;
22198   done:
22199     p->level--;
22200     return _res;
22201 }
22202 
22203 // invalid_except_stmt_indent:
22204 //     | 'except' expression ['as' NAME] ':' NEWLINE !INDENT
22205 //     | 'except' ':' NEWLINE !INDENT
22206 static void *
invalid_except_stmt_indent_rule(Parser * p)22207 invalid_except_stmt_indent_rule(Parser *p)
22208 {
22209     if (p->level++ == MAXSTACK) {
22210         p->error_indicator = 1;
22211         PyErr_NoMemory();
22212     }
22213     if (p->error_indicator) {
22214         p->level--;
22215         return NULL;
22216     }
22217     void * _res = NULL;
22218     int _mark = p->mark;
22219     { // 'except' expression ['as' NAME] ':' NEWLINE !INDENT
22220         if (p->error_indicator) {
22221             p->level--;
22222             return NULL;
22223         }
22224         D(fprintf(stderr, "%*c> invalid_except_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
22225         Token * _literal;
22226         void *_opt_var;
22227         UNUSED(_opt_var); // Silence compiler warnings
22228         Token * a;
22229         expr_ty expression_var;
22230         Token * newline_var;
22231         if (
22232             (a = _PyPegen_expect_token(p, 634))  // token='except'
22233             &&
22234             (expression_var = expression_rule(p))  // expression
22235             &&
22236             (_opt_var = _tmp_212_rule(p), !p->error_indicator)  // ['as' NAME]
22237             &&
22238             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
22239             &&
22240             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22241             &&
22242             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
22243         )
22244         {
22245             D(fprintf(stderr, "%*c+ invalid_except_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
22246             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except' statement on line %d" , a -> lineno );
22247             if (_res == NULL && PyErr_Occurred()) {
22248                 p->error_indicator = 1;
22249                 p->level--;
22250                 return NULL;
22251             }
22252             goto done;
22253         }
22254         p->mark = _mark;
22255         D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
22256                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
22257     }
22258     { // 'except' ':' NEWLINE !INDENT
22259         if (p->error_indicator) {
22260             p->level--;
22261             return NULL;
22262         }
22263         D(fprintf(stderr, "%*c> invalid_except_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
22264         Token * _literal;
22265         Token * a;
22266         Token * newline_var;
22267         if (
22268             (a = _PyPegen_expect_token(p, 634))  // token='except'
22269             &&
22270             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
22271             &&
22272             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22273             &&
22274             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
22275         )
22276         {
22277             D(fprintf(stderr, "%*c+ invalid_except_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
22278             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except' statement on line %d" , a -> lineno );
22279             if (_res == NULL && PyErr_Occurred()) {
22280                 p->error_indicator = 1;
22281                 p->level--;
22282                 return NULL;
22283             }
22284             goto done;
22285         }
22286         p->mark = _mark;
22287         D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
22288                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
22289     }
22290     _res = NULL;
22291   done:
22292     p->level--;
22293     return _res;
22294 }
22295 
22296 // invalid_except_star_stmt_indent:
22297 //     | 'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT
22298 static void *
invalid_except_star_stmt_indent_rule(Parser * p)22299 invalid_except_star_stmt_indent_rule(Parser *p)
22300 {
22301     if (p->level++ == MAXSTACK) {
22302         p->error_indicator = 1;
22303         PyErr_NoMemory();
22304     }
22305     if (p->error_indicator) {
22306         p->level--;
22307         return NULL;
22308     }
22309     void * _res = NULL;
22310     int _mark = p->mark;
22311     { // 'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT
22312         if (p->error_indicator) {
22313             p->level--;
22314             return NULL;
22315         }
22316         D(fprintf(stderr, "%*c> invalid_except_star_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT"));
22317         Token * _literal;
22318         Token * _literal_1;
22319         void *_opt_var;
22320         UNUSED(_opt_var); // Silence compiler warnings
22321         Token * a;
22322         expr_ty expression_var;
22323         Token * newline_var;
22324         if (
22325             (a = _PyPegen_expect_token(p, 634))  // token='except'
22326             &&
22327             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
22328             &&
22329             (expression_var = expression_rule(p))  // expression
22330             &&
22331             (_opt_var = _tmp_213_rule(p), !p->error_indicator)  // ['as' NAME]
22332             &&
22333             (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
22334             &&
22335             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22336             &&
22337             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
22338         )
22339         {
22340             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"));
22341             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except*' statement on line %d" , a -> lineno );
22342             if (_res == NULL && PyErr_Occurred()) {
22343                 p->error_indicator = 1;
22344                 p->level--;
22345                 return NULL;
22346             }
22347             goto done;
22348         }
22349         p->mark = _mark;
22350         D(fprintf(stderr, "%*c%s invalid_except_star_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
22351                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' '*' expression ['as' NAME] ':' NEWLINE !INDENT"));
22352     }
22353     _res = NULL;
22354   done:
22355     p->level--;
22356     return _res;
22357 }
22358 
22359 // invalid_match_stmt:
22360 //     | "match" subject_expr NEWLINE
22361 //     | "match" subject_expr ':' NEWLINE !INDENT
22362 static void *
invalid_match_stmt_rule(Parser * p)22363 invalid_match_stmt_rule(Parser *p)
22364 {
22365     if (p->level++ == MAXSTACK) {
22366         p->error_indicator = 1;
22367         PyErr_NoMemory();
22368     }
22369     if (p->error_indicator) {
22370         p->level--;
22371         return NULL;
22372     }
22373     void * _res = NULL;
22374     int _mark = p->mark;
22375     { // "match" subject_expr NEWLINE
22376         if (p->error_indicator) {
22377             p->level--;
22378             return NULL;
22379         }
22380         D(fprintf(stderr, "%*c> invalid_match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr NEWLINE"));
22381         expr_ty _keyword;
22382         Token * newline_var;
22383         expr_ty subject_expr_var;
22384         if (
22385             (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
22386             &&
22387             (subject_expr_var = subject_expr_rule(p))  // subject_expr
22388             &&
22389             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22390         )
22391         {
22392             D(fprintf(stderr, "%*c+ invalid_match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr NEWLINE"));
22393             _res = CHECK_VERSION ( void* , 10 , "Pattern matching is" , RAISE_SYNTAX_ERROR ( "expected ':'" ) );
22394             if (_res == NULL && PyErr_Occurred()) {
22395                 p->error_indicator = 1;
22396                 p->level--;
22397                 return NULL;
22398             }
22399             goto done;
22400         }
22401         p->mark = _mark;
22402         D(fprintf(stderr, "%*c%s invalid_match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22403                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr NEWLINE"));
22404     }
22405     { // "match" subject_expr ':' NEWLINE !INDENT
22406         if (p->error_indicator) {
22407             p->level--;
22408             return NULL;
22409         }
22410         D(fprintf(stderr, "%*c> invalid_match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
22411         Token * _literal;
22412         expr_ty a;
22413         Token * newline_var;
22414         expr_ty subject;
22415         if (
22416             (a = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
22417             &&
22418             (subject = subject_expr_rule(p))  // subject_expr
22419             &&
22420             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
22421             &&
22422             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22423             &&
22424             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
22425         )
22426         {
22427             D(fprintf(stderr, "%*c+ invalid_match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
22428             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'match' statement on line %d" , a -> lineno );
22429             if (_res == NULL && PyErr_Occurred()) {
22430                 p->error_indicator = 1;
22431                 p->level--;
22432                 return NULL;
22433             }
22434             goto done;
22435         }
22436         p->mark = _mark;
22437         D(fprintf(stderr, "%*c%s invalid_match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22438                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
22439     }
22440     _res = NULL;
22441   done:
22442     p->level--;
22443     return _res;
22444 }
22445 
22446 // invalid_case_block:
22447 //     | "case" patterns guard? NEWLINE
22448 //     | "case" patterns guard? ':' NEWLINE !INDENT
22449 static void *
invalid_case_block_rule(Parser * p)22450 invalid_case_block_rule(Parser *p)
22451 {
22452     if (p->level++ == MAXSTACK) {
22453         p->error_indicator = 1;
22454         PyErr_NoMemory();
22455     }
22456     if (p->error_indicator) {
22457         p->level--;
22458         return NULL;
22459     }
22460     void * _res = NULL;
22461     int _mark = p->mark;
22462     { // "case" patterns guard? NEWLINE
22463         if (p->error_indicator) {
22464             p->level--;
22465             return NULL;
22466         }
22467         D(fprintf(stderr, "%*c> invalid_case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? NEWLINE"));
22468         expr_ty _keyword;
22469         void *_opt_var;
22470         UNUSED(_opt_var); // Silence compiler warnings
22471         Token * newline_var;
22472         pattern_ty patterns_var;
22473         if (
22474             (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
22475             &&
22476             (patterns_var = patterns_rule(p))  // patterns
22477             &&
22478             (_opt_var = guard_rule(p), !p->error_indicator)  // guard?
22479             &&
22480             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22481         )
22482         {
22483             D(fprintf(stderr, "%*c+ invalid_case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? NEWLINE"));
22484             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
22485             if (_res == NULL && PyErr_Occurred()) {
22486                 p->error_indicator = 1;
22487                 p->level--;
22488                 return NULL;
22489             }
22490             goto done;
22491         }
22492         p->mark = _mark;
22493         D(fprintf(stderr, "%*c%s invalid_case_block[%d-%d]: %s failed!\n", p->level, ' ',
22494                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? NEWLINE"));
22495     }
22496     { // "case" patterns guard? ':' NEWLINE !INDENT
22497         if (p->error_indicator) {
22498             p->level--;
22499             return NULL;
22500         }
22501         D(fprintf(stderr, "%*c> invalid_case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
22502         Token * _literal;
22503         void *_opt_var;
22504         UNUSED(_opt_var); // Silence compiler warnings
22505         expr_ty a;
22506         Token * newline_var;
22507         pattern_ty patterns_var;
22508         if (
22509             (a = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
22510             &&
22511             (patterns_var = patterns_rule(p))  // patterns
22512             &&
22513             (_opt_var = guard_rule(p), !p->error_indicator)  // guard?
22514             &&
22515             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
22516             &&
22517             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22518             &&
22519             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
22520         )
22521         {
22522             D(fprintf(stderr, "%*c+ invalid_case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
22523             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'case' statement on line %d" , a -> lineno );
22524             if (_res == NULL && PyErr_Occurred()) {
22525                 p->error_indicator = 1;
22526                 p->level--;
22527                 return NULL;
22528             }
22529             goto done;
22530         }
22531         p->mark = _mark;
22532         D(fprintf(stderr, "%*c%s invalid_case_block[%d-%d]: %s failed!\n", p->level, ' ',
22533                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
22534     }
22535     _res = NULL;
22536   done:
22537     p->level--;
22538     return _res;
22539 }
22540 
22541 // invalid_as_pattern: or_pattern 'as' "_" | or_pattern 'as' !NAME expression
22542 static void *
invalid_as_pattern_rule(Parser * p)22543 invalid_as_pattern_rule(Parser *p)
22544 {
22545     if (p->level++ == MAXSTACK) {
22546         p->error_indicator = 1;
22547         PyErr_NoMemory();
22548     }
22549     if (p->error_indicator) {
22550         p->level--;
22551         return NULL;
22552     }
22553     void * _res = NULL;
22554     int _mark = p->mark;
22555     { // or_pattern 'as' "_"
22556         if (p->error_indicator) {
22557             p->level--;
22558             return NULL;
22559         }
22560         D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\""));
22561         Token * _keyword;
22562         expr_ty a;
22563         pattern_ty or_pattern_var;
22564         if (
22565             (or_pattern_var = or_pattern_rule(p))  // or_pattern
22566             &&
22567             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
22568             &&
22569             (a = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
22570         )
22571         {
22572             D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\""));
22573             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use '_' as a target" );
22574             if (_res == NULL && PyErr_Occurred()) {
22575                 p->error_indicator = 1;
22576                 p->level--;
22577                 return NULL;
22578             }
22579             goto done;
22580         }
22581         p->mark = _mark;
22582         D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
22583                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' \"_\""));
22584     }
22585     { // or_pattern 'as' !NAME expression
22586         if (p->error_indicator) {
22587             p->level--;
22588             return NULL;
22589         }
22590         D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' !NAME expression"));
22591         Token * _keyword;
22592         expr_ty a;
22593         pattern_ty or_pattern_var;
22594         if (
22595             (or_pattern_var = or_pattern_rule(p))  // or_pattern
22596             &&
22597             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
22598             &&
22599             _PyPegen_lookahead_with_name(0, _PyPegen_name_token, p)
22600             &&
22601             (a = expression_rule(p))  // expression
22602         )
22603         {
22604             D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' !NAME expression"));
22605             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "invalid pattern target" );
22606             if (_res == NULL && PyErr_Occurred()) {
22607                 p->error_indicator = 1;
22608                 p->level--;
22609                 return NULL;
22610             }
22611             goto done;
22612         }
22613         p->mark = _mark;
22614         D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
22615                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' !NAME expression"));
22616     }
22617     _res = NULL;
22618   done:
22619     p->level--;
22620     return _res;
22621 }
22622 
22623 // invalid_class_pattern: name_or_attr '(' invalid_class_argument_pattern
22624 static void *
invalid_class_pattern_rule(Parser * p)22625 invalid_class_pattern_rule(Parser *p)
22626 {
22627     if (p->level++ == MAXSTACK) {
22628         p->error_indicator = 1;
22629         PyErr_NoMemory();
22630     }
22631     if (p->error_indicator) {
22632         p->level--;
22633         return NULL;
22634     }
22635     void * _res = NULL;
22636     int _mark = p->mark;
22637     { // name_or_attr '(' invalid_class_argument_pattern
22638         if (p->error_indicator) {
22639             p->level--;
22640             return NULL;
22641         }
22642         D(fprintf(stderr, "%*c> invalid_class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
22643         Token * _literal;
22644         asdl_pattern_seq* a;
22645         expr_ty name_or_attr_var;
22646         if (
22647             (name_or_attr_var = name_or_attr_rule(p))  // name_or_attr
22648             &&
22649             (_literal = _PyPegen_expect_token(p, 7))  // token='('
22650             &&
22651             (a = invalid_class_argument_pattern_rule(p))  // invalid_class_argument_pattern
22652         )
22653         {
22654             D(fprintf(stderr, "%*c+ invalid_class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
22655             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( PyPegen_first_item ( a , pattern_ty ) , PyPegen_last_item ( a , pattern_ty ) , "positional patterns follow keyword patterns" );
22656             if (_res == NULL && PyErr_Occurred()) {
22657                 p->error_indicator = 1;
22658                 p->level--;
22659                 return NULL;
22660             }
22661             goto done;
22662         }
22663         p->mark = _mark;
22664         D(fprintf(stderr, "%*c%s invalid_class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
22665                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
22666     }
22667     _res = NULL;
22668   done:
22669     p->level--;
22670     return _res;
22671 }
22672 
22673 // invalid_class_argument_pattern:
22674 //     | [positional_patterns ','] keyword_patterns ',' positional_patterns
22675 static asdl_pattern_seq*
invalid_class_argument_pattern_rule(Parser * p)22676 invalid_class_argument_pattern_rule(Parser *p)
22677 {
22678     if (p->level++ == MAXSTACK) {
22679         p->error_indicator = 1;
22680         PyErr_NoMemory();
22681     }
22682     if (p->error_indicator) {
22683         p->level--;
22684         return NULL;
22685     }
22686     asdl_pattern_seq* _res = NULL;
22687     int _mark = p->mark;
22688     { // [positional_patterns ','] keyword_patterns ',' positional_patterns
22689         if (p->error_indicator) {
22690             p->level--;
22691             return NULL;
22692         }
22693         D(fprintf(stderr, "%*c> invalid_class_argument_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
22694         Token * _literal;
22695         void *_opt_var;
22696         UNUSED(_opt_var); // Silence compiler warnings
22697         asdl_pattern_seq* a;
22698         asdl_seq* keyword_patterns_var;
22699         if (
22700             (_opt_var = _tmp_214_rule(p), !p->error_indicator)  // [positional_patterns ',']
22701             &&
22702             (keyword_patterns_var = keyword_patterns_rule(p))  // keyword_patterns
22703             &&
22704             (_literal = _PyPegen_expect_token(p, 12))  // token=','
22705             &&
22706             (a = positional_patterns_rule(p))  // positional_patterns
22707         )
22708         {
22709             D(fprintf(stderr, "%*c+ invalid_class_argument_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
22710             _res = a;
22711             if (_res == NULL && PyErr_Occurred()) {
22712                 p->error_indicator = 1;
22713                 p->level--;
22714                 return NULL;
22715             }
22716             goto done;
22717         }
22718         p->mark = _mark;
22719         D(fprintf(stderr, "%*c%s invalid_class_argument_pattern[%d-%d]: %s failed!\n", p->level, ' ',
22720                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
22721     }
22722     _res = NULL;
22723   done:
22724     p->level--;
22725     return _res;
22726 }
22727 
22728 // invalid_if_stmt:
22729 //     | 'if' named_expression NEWLINE
22730 //     | 'if' named_expression ':' NEWLINE !INDENT
22731 static void *
invalid_if_stmt_rule(Parser * p)22732 invalid_if_stmt_rule(Parser *p)
22733 {
22734     if (p->level++ == MAXSTACK) {
22735         p->error_indicator = 1;
22736         PyErr_NoMemory();
22737     }
22738     if (p->error_indicator) {
22739         p->level--;
22740         return NULL;
22741     }
22742     void * _res = NULL;
22743     int _mark = p->mark;
22744     { // 'if' named_expression NEWLINE
22745         if (p->error_indicator) {
22746             p->level--;
22747             return NULL;
22748         }
22749         D(fprintf(stderr, "%*c> invalid_if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression NEWLINE"));
22750         Token * _keyword;
22751         expr_ty named_expression_var;
22752         Token * newline_var;
22753         if (
22754             (_keyword = _PyPegen_expect_token(p, 639))  // token='if'
22755             &&
22756             (named_expression_var = named_expression_rule(p))  // named_expression
22757             &&
22758             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22759         )
22760         {
22761             D(fprintf(stderr, "%*c+ invalid_if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression NEWLINE"));
22762             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
22763             if (_res == NULL && PyErr_Occurred()) {
22764                 p->error_indicator = 1;
22765                 p->level--;
22766                 return NULL;
22767             }
22768             goto done;
22769         }
22770         p->mark = _mark;
22771         D(fprintf(stderr, "%*c%s invalid_if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22772                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression NEWLINE"));
22773     }
22774     { // 'if' named_expression ':' NEWLINE !INDENT
22775         if (p->error_indicator) {
22776             p->level--;
22777             return NULL;
22778         }
22779         D(fprintf(stderr, "%*c> invalid_if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
22780         Token * _literal;
22781         Token * a;
22782         expr_ty a_1;
22783         Token * newline_var;
22784         if (
22785             (a = _PyPegen_expect_token(p, 639))  // token='if'
22786             &&
22787             (a_1 = named_expression_rule(p))  // named_expression
22788             &&
22789             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
22790             &&
22791             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22792             &&
22793             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
22794         )
22795         {
22796             D(fprintf(stderr, "%*c+ invalid_if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
22797             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'if' statement on line %d" , a -> lineno );
22798             if (_res == NULL && PyErr_Occurred()) {
22799                 p->error_indicator = 1;
22800                 p->level--;
22801                 return NULL;
22802             }
22803             goto done;
22804         }
22805         p->mark = _mark;
22806         D(fprintf(stderr, "%*c%s invalid_if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22807                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
22808     }
22809     _res = NULL;
22810   done:
22811     p->level--;
22812     return _res;
22813 }
22814 
22815 // invalid_elif_stmt:
22816 //     | 'elif' named_expression NEWLINE
22817 //     | 'elif' named_expression ':' NEWLINE !INDENT
22818 static void *
invalid_elif_stmt_rule(Parser * p)22819 invalid_elif_stmt_rule(Parser *p)
22820 {
22821     if (p->level++ == MAXSTACK) {
22822         p->error_indicator = 1;
22823         PyErr_NoMemory();
22824     }
22825     if (p->error_indicator) {
22826         p->level--;
22827         return NULL;
22828     }
22829     void * _res = NULL;
22830     int _mark = p->mark;
22831     { // 'elif' named_expression NEWLINE
22832         if (p->error_indicator) {
22833             p->level--;
22834             return NULL;
22835         }
22836         D(fprintf(stderr, "%*c> invalid_elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression NEWLINE"));
22837         Token * _keyword;
22838         expr_ty named_expression_var;
22839         Token * newline_var;
22840         if (
22841             (_keyword = _PyPegen_expect_token(p, 641))  // token='elif'
22842             &&
22843             (named_expression_var = named_expression_rule(p))  // named_expression
22844             &&
22845             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22846         )
22847         {
22848             D(fprintf(stderr, "%*c+ invalid_elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression NEWLINE"));
22849             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
22850             if (_res == NULL && PyErr_Occurred()) {
22851                 p->error_indicator = 1;
22852                 p->level--;
22853                 return NULL;
22854             }
22855             goto done;
22856         }
22857         p->mark = _mark;
22858         D(fprintf(stderr, "%*c%s invalid_elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22859                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression NEWLINE"));
22860     }
22861     { // 'elif' named_expression ':' NEWLINE !INDENT
22862         if (p->error_indicator) {
22863             p->level--;
22864             return NULL;
22865         }
22866         D(fprintf(stderr, "%*c> invalid_elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
22867         Token * _literal;
22868         Token * a;
22869         expr_ty named_expression_var;
22870         Token * newline_var;
22871         if (
22872             (a = _PyPegen_expect_token(p, 641))  // token='elif'
22873             &&
22874             (named_expression_var = named_expression_rule(p))  // named_expression
22875             &&
22876             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
22877             &&
22878             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22879             &&
22880             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
22881         )
22882         {
22883             D(fprintf(stderr, "%*c+ invalid_elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
22884             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'elif' statement on line %d" , a -> lineno );
22885             if (_res == NULL && PyErr_Occurred()) {
22886                 p->error_indicator = 1;
22887                 p->level--;
22888                 return NULL;
22889             }
22890             goto done;
22891         }
22892         p->mark = _mark;
22893         D(fprintf(stderr, "%*c%s invalid_elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22894                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
22895     }
22896     _res = NULL;
22897   done:
22898     p->level--;
22899     return _res;
22900 }
22901 
22902 // invalid_else_stmt: 'else' ':' NEWLINE !INDENT
22903 static void *
invalid_else_stmt_rule(Parser * p)22904 invalid_else_stmt_rule(Parser *p)
22905 {
22906     if (p->level++ == MAXSTACK) {
22907         p->error_indicator = 1;
22908         PyErr_NoMemory();
22909     }
22910     if (p->error_indicator) {
22911         p->level--;
22912         return NULL;
22913     }
22914     void * _res = NULL;
22915     int _mark = p->mark;
22916     { // 'else' ':' NEWLINE !INDENT
22917         if (p->error_indicator) {
22918             p->level--;
22919             return NULL;
22920         }
22921         D(fprintf(stderr, "%*c> invalid_else_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
22922         Token * _literal;
22923         Token * a;
22924         Token * newline_var;
22925         if (
22926             (a = _PyPegen_expect_token(p, 642))  // token='else'
22927             &&
22928             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
22929             &&
22930             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22931             &&
22932             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
22933         )
22934         {
22935             D(fprintf(stderr, "%*c+ invalid_else_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
22936             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'else' statement on line %d" , a -> lineno );
22937             if (_res == NULL && PyErr_Occurred()) {
22938                 p->error_indicator = 1;
22939                 p->level--;
22940                 return NULL;
22941             }
22942             goto done;
22943         }
22944         p->mark = _mark;
22945         D(fprintf(stderr, "%*c%s invalid_else_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22946                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
22947     }
22948     _res = NULL;
22949   done:
22950     p->level--;
22951     return _res;
22952 }
22953 
22954 // invalid_while_stmt:
22955 //     | 'while' named_expression NEWLINE
22956 //     | 'while' named_expression ':' NEWLINE !INDENT
22957 static void *
invalid_while_stmt_rule(Parser * p)22958 invalid_while_stmt_rule(Parser *p)
22959 {
22960     if (p->level++ == MAXSTACK) {
22961         p->error_indicator = 1;
22962         PyErr_NoMemory();
22963     }
22964     if (p->error_indicator) {
22965         p->level--;
22966         return NULL;
22967     }
22968     void * _res = NULL;
22969     int _mark = p->mark;
22970     { // 'while' named_expression NEWLINE
22971         if (p->error_indicator) {
22972             p->level--;
22973             return NULL;
22974         }
22975         D(fprintf(stderr, "%*c> invalid_while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression NEWLINE"));
22976         Token * _keyword;
22977         expr_ty named_expression_var;
22978         Token * newline_var;
22979         if (
22980             (_keyword = _PyPegen_expect_token(p, 644))  // token='while'
22981             &&
22982             (named_expression_var = named_expression_rule(p))  // named_expression
22983             &&
22984             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22985         )
22986         {
22987             D(fprintf(stderr, "%*c+ invalid_while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression NEWLINE"));
22988             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
22989             if (_res == NULL && PyErr_Occurred()) {
22990                 p->error_indicator = 1;
22991                 p->level--;
22992                 return NULL;
22993             }
22994             goto done;
22995         }
22996         p->mark = _mark;
22997         D(fprintf(stderr, "%*c%s invalid_while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
22998                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression NEWLINE"));
22999     }
23000     { // 'while' named_expression ':' NEWLINE !INDENT
23001         if (p->error_indicator) {
23002             p->level--;
23003             return NULL;
23004         }
23005         D(fprintf(stderr, "%*c> invalid_while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
23006         Token * _literal;
23007         Token * a;
23008         expr_ty named_expression_var;
23009         Token * newline_var;
23010         if (
23011             (a = _PyPegen_expect_token(p, 644))  // token='while'
23012             &&
23013             (named_expression_var = named_expression_rule(p))  // named_expression
23014             &&
23015             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
23016             &&
23017             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23018             &&
23019             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
23020         )
23021         {
23022             D(fprintf(stderr, "%*c+ invalid_while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
23023             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'while' statement on line %d" , a -> lineno );
23024             if (_res == NULL && PyErr_Occurred()) {
23025                 p->error_indicator = 1;
23026                 p->level--;
23027                 return NULL;
23028             }
23029             goto done;
23030         }
23031         p->mark = _mark;
23032         D(fprintf(stderr, "%*c%s invalid_while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
23033                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
23034     }
23035     _res = NULL;
23036   done:
23037     p->level--;
23038     return _res;
23039 }
23040 
23041 // invalid_for_stmt:
23042 //     | ASYNC? 'for' star_targets 'in' star_expressions NEWLINE
23043 //     | ASYNC? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT
23044 static void *
invalid_for_stmt_rule(Parser * p)23045 invalid_for_stmt_rule(Parser *p)
23046 {
23047     if (p->level++ == MAXSTACK) {
23048         p->error_indicator = 1;
23049         PyErr_NoMemory();
23050     }
23051     if (p->error_indicator) {
23052         p->level--;
23053         return NULL;
23054     }
23055     void * _res = NULL;
23056     int _mark = p->mark;
23057     { // ASYNC? 'for' star_targets 'in' star_expressions NEWLINE
23058         if (p->error_indicator) {
23059             p->level--;
23060             return NULL;
23061         }
23062         D(fprintf(stderr, "%*c> invalid_for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'for' star_targets 'in' star_expressions NEWLINE"));
23063         Token * _keyword;
23064         Token * _keyword_1;
23065         void *_opt_var;
23066         UNUSED(_opt_var); // Silence compiler warnings
23067         Token * newline_var;
23068         expr_ty star_expressions_var;
23069         expr_ty star_targets_var;
23070         if (
23071             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
23072             &&
23073             (_keyword = _PyPegen_expect_token(p, 647))  // token='for'
23074             &&
23075             (star_targets_var = star_targets_rule(p))  // star_targets
23076             &&
23077             (_keyword_1 = _PyPegen_expect_token(p, 648))  // token='in'
23078             &&
23079             (star_expressions_var = star_expressions_rule(p))  // star_expressions
23080             &&
23081             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23082         )
23083         {
23084             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"));
23085             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
23086             if (_res == NULL && PyErr_Occurred()) {
23087                 p->error_indicator = 1;
23088                 p->level--;
23089                 return NULL;
23090             }
23091             goto done;
23092         }
23093         p->mark = _mark;
23094         D(fprintf(stderr, "%*c%s invalid_for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
23095                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'for' star_targets 'in' star_expressions NEWLINE"));
23096     }
23097     { // ASYNC? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT
23098         if (p->error_indicator) {
23099             p->level--;
23100             return NULL;
23101         }
23102         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"));
23103         Token * _keyword;
23104         Token * _literal;
23105         void *_opt_var;
23106         UNUSED(_opt_var); // Silence compiler warnings
23107         Token * a;
23108         Token * newline_var;
23109         expr_ty star_expressions_var;
23110         expr_ty star_targets_var;
23111         if (
23112             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
23113             &&
23114             (a = _PyPegen_expect_token(p, 647))  // token='for'
23115             &&
23116             (star_targets_var = star_targets_rule(p))  // star_targets
23117             &&
23118             (_keyword = _PyPegen_expect_token(p, 648))  // token='in'
23119             &&
23120             (star_expressions_var = star_expressions_rule(p))  // star_expressions
23121             &&
23122             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
23123             &&
23124             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23125             &&
23126             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
23127         )
23128         {
23129             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"));
23130             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'for' statement on line %d" , a -> lineno );
23131             if (_res == NULL && PyErr_Occurred()) {
23132                 p->error_indicator = 1;
23133                 p->level--;
23134                 return NULL;
23135             }
23136             goto done;
23137         }
23138         p->mark = _mark;
23139         D(fprintf(stderr, "%*c%s invalid_for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
23140                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT"));
23141     }
23142     _res = NULL;
23143   done:
23144     p->level--;
23145     return _res;
23146 }
23147 
23148 // invalid_def_raw:
23149 //     | ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT
23150 static void *
invalid_def_raw_rule(Parser * p)23151 invalid_def_raw_rule(Parser *p)
23152 {
23153     if (p->level++ == MAXSTACK) {
23154         p->error_indicator = 1;
23155         PyErr_NoMemory();
23156     }
23157     if (p->error_indicator) {
23158         p->level--;
23159         return NULL;
23160     }
23161     void * _res = NULL;
23162     int _mark = p->mark;
23163     { // ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT
23164         if (p->error_indicator) {
23165             p->level--;
23166             return NULL;
23167         }
23168         D(fprintf(stderr, "%*c> invalid_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
23169         Token * _literal;
23170         Token * _literal_1;
23171         Token * _literal_2;
23172         void *_opt_var;
23173         UNUSED(_opt_var); // Silence compiler warnings
23174         void *_opt_var_1;
23175         UNUSED(_opt_var_1); // Silence compiler warnings
23176         void *_opt_var_2;
23177         UNUSED(_opt_var_2); // Silence compiler warnings
23178         Token * a;
23179         expr_ty name_var;
23180         Token * newline_var;
23181         if (
23182             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
23183             &&
23184             (a = _PyPegen_expect_token(p, 649))  // token='def'
23185             &&
23186             (name_var = _PyPegen_name_token(p))  // NAME
23187             &&
23188             (_literal = _PyPegen_expect_token(p, 7))  // token='('
23189             &&
23190             (_opt_var_1 = params_rule(p), !p->error_indicator)  // params?
23191             &&
23192             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
23193             &&
23194             (_opt_var_2 = _tmp_215_rule(p), !p->error_indicator)  // ['->' expression]
23195             &&
23196             (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
23197             &&
23198             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23199             &&
23200             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
23201         )
23202         {
23203             D(fprintf(stderr, "%*c+ invalid_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
23204             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after function definition on line %d" , a -> lineno );
23205             if (_res == NULL && PyErr_Occurred()) {
23206                 p->error_indicator = 1;
23207                 p->level--;
23208                 return NULL;
23209             }
23210             goto done;
23211         }
23212         p->mark = _mark;
23213         D(fprintf(stderr, "%*c%s invalid_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
23214                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
23215     }
23216     _res = NULL;
23217   done:
23218     p->level--;
23219     return _res;
23220 }
23221 
23222 // invalid_class_def_raw:
23223 //     | 'class' NAME ['(' arguments? ')'] NEWLINE
23224 //     | 'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT
23225 static void *
invalid_class_def_raw_rule(Parser * p)23226 invalid_class_def_raw_rule(Parser *p)
23227 {
23228     if (p->level++ == MAXSTACK) {
23229         p->error_indicator = 1;
23230         PyErr_NoMemory();
23231     }
23232     if (p->error_indicator) {
23233         p->level--;
23234         return NULL;
23235     }
23236     void * _res = NULL;
23237     int _mark = p->mark;
23238     { // 'class' NAME ['(' arguments? ')'] NEWLINE
23239         if (p->error_indicator) {
23240             p->level--;
23241             return NULL;
23242         }
23243         D(fprintf(stderr, "%*c> invalid_class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] NEWLINE"));
23244         Token * _keyword;
23245         void *_opt_var;
23246         UNUSED(_opt_var); // Silence compiler warnings
23247         expr_ty name_var;
23248         Token * newline_var;
23249         if (
23250             (_keyword = _PyPegen_expect_token(p, 651))  // token='class'
23251             &&
23252             (name_var = _PyPegen_name_token(p))  // NAME
23253             &&
23254             (_opt_var = _tmp_216_rule(p), !p->error_indicator)  // ['(' arguments? ')']
23255             &&
23256             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23257         )
23258         {
23259             D(fprintf(stderr, "%*c+ invalid_class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] NEWLINE"));
23260             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
23261             if (_res == NULL && PyErr_Occurred()) {
23262                 p->error_indicator = 1;
23263                 p->level--;
23264                 return NULL;
23265             }
23266             goto done;
23267         }
23268         p->mark = _mark;
23269         D(fprintf(stderr, "%*c%s invalid_class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
23270                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME ['(' arguments? ')'] NEWLINE"));
23271     }
23272     { // 'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT
23273         if (p->error_indicator) {
23274             p->level--;
23275             return NULL;
23276         }
23277         D(fprintf(stderr, "%*c> invalid_class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT"));
23278         Token * _literal;
23279         void *_opt_var;
23280         UNUSED(_opt_var); // Silence compiler warnings
23281         Token * a;
23282         expr_ty name_var;
23283         Token * newline_var;
23284         if (
23285             (a = _PyPegen_expect_token(p, 651))  // token='class'
23286             &&
23287             (name_var = _PyPegen_name_token(p))  // NAME
23288             &&
23289             (_opt_var = _tmp_217_rule(p), !p->error_indicator)  // ['(' arguments? ')']
23290             &&
23291             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
23292             &&
23293             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23294             &&
23295             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
23296         )
23297         {
23298             D(fprintf(stderr, "%*c+ invalid_class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT"));
23299             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after class definition on line %d" , a -> lineno );
23300             if (_res == NULL && PyErr_Occurred()) {
23301                 p->error_indicator = 1;
23302                 p->level--;
23303                 return NULL;
23304             }
23305             goto done;
23306         }
23307         p->mark = _mark;
23308         D(fprintf(stderr, "%*c%s invalid_class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
23309                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT"));
23310     }
23311     _res = NULL;
23312   done:
23313     p->level--;
23314     return _res;
23315 }
23316 
23317 // invalid_double_starred_kvpairs:
23318 //     | ','.double_starred_kvpair+ ',' invalid_kvpair
23319 //     | expression ':' '*' bitwise_or
23320 //     | expression ':' &('}' | ',')
23321 static void *
invalid_double_starred_kvpairs_rule(Parser * p)23322 invalid_double_starred_kvpairs_rule(Parser *p)
23323 {
23324     if (p->level++ == MAXSTACK) {
23325         p->error_indicator = 1;
23326         PyErr_NoMemory();
23327     }
23328     if (p->error_indicator) {
23329         p->level--;
23330         return NULL;
23331     }
23332     void * _res = NULL;
23333     int _mark = p->mark;
23334     { // ','.double_starred_kvpair+ ',' invalid_kvpair
23335         if (p->error_indicator) {
23336             p->level--;
23337             return NULL;
23338         }
23339         D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
23340         asdl_seq * _gather_218_var;
23341         Token * _literal;
23342         void *invalid_kvpair_var;
23343         if (
23344             (_gather_218_var = _gather_218_rule(p))  // ','.double_starred_kvpair+
23345             &&
23346             (_literal = _PyPegen_expect_token(p, 12))  // token=','
23347             &&
23348             (invalid_kvpair_var = invalid_kvpair_rule(p))  // invalid_kvpair
23349         )
23350         {
23351             D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
23352             _res = _PyPegen_dummy_name(p, _gather_218_var, _literal, invalid_kvpair_var);
23353             goto done;
23354         }
23355         p->mark = _mark;
23356         D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
23357                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
23358     }
23359     { // expression ':' '*' bitwise_or
23360         if (p->error_indicator) {
23361             p->level--;
23362             return NULL;
23363         }
23364         D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
23365         Token * _literal;
23366         Token * a;
23367         expr_ty bitwise_or_var;
23368         expr_ty expression_var;
23369         if (
23370             (expression_var = expression_rule(p))  // expression
23371             &&
23372             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
23373             &&
23374             (a = _PyPegen_expect_token(p, 16))  // token='*'
23375             &&
23376             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
23377         )
23378         {
23379             D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
23380             _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "cannot use a starred expression in a dictionary value" );
23381             if (_res == NULL && PyErr_Occurred()) {
23382                 p->error_indicator = 1;
23383                 p->level--;
23384                 return NULL;
23385             }
23386             goto done;
23387         }
23388         p->mark = _mark;
23389         D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
23390                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
23391     }
23392     { // expression ':' &('}' | ',')
23393         if (p->error_indicator) {
23394             p->level--;
23395             return NULL;
23396         }
23397         D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
23398         Token * a;
23399         expr_ty expression_var;
23400         if (
23401             (expression_var = expression_rule(p))  // expression
23402             &&
23403             (a = _PyPegen_expect_token(p, 11))  // token=':'
23404             &&
23405             _PyPegen_lookahead(1, _tmp_220_rule, p)
23406         )
23407         {
23408             D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
23409             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression expected after dictionary key and ':'" );
23410             if (_res == NULL && PyErr_Occurred()) {
23411                 p->error_indicator = 1;
23412                 p->level--;
23413                 return NULL;
23414             }
23415             goto done;
23416         }
23417         p->mark = _mark;
23418         D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
23419                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' &('}' | ',')"));
23420     }
23421     _res = NULL;
23422   done:
23423     p->level--;
23424     return _res;
23425 }
23426 
23427 // invalid_kvpair:
23428 //     | expression !(':')
23429 //     | expression ':' '*' bitwise_or
23430 //     | expression ':' &('}' | ',')
23431 static void *
invalid_kvpair_rule(Parser * p)23432 invalid_kvpair_rule(Parser *p)
23433 {
23434     if (p->level++ == MAXSTACK) {
23435         p->error_indicator = 1;
23436         PyErr_NoMemory();
23437     }
23438     if (p->error_indicator) {
23439         p->level--;
23440         return NULL;
23441     }
23442     void * _res = NULL;
23443     int _mark = p->mark;
23444     { // expression !(':')
23445         if (p->error_indicator) {
23446             p->level--;
23447             return NULL;
23448         }
23449         D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
23450         expr_ty a;
23451         if (
23452             (a = expression_rule(p))  // expression
23453             &&
23454             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 11)  // token=(':')
23455         )
23456         {
23457             D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
23458             _res = RAISE_ERROR_KNOWN_LOCATION ( p , PyExc_SyntaxError , a -> lineno , a -> end_col_offset - 1 , a -> end_lineno , - 1 , "':' expected after dictionary key" );
23459             if (_res == NULL && PyErr_Occurred()) {
23460                 p->error_indicator = 1;
23461                 p->level--;
23462                 return NULL;
23463             }
23464             goto done;
23465         }
23466         p->mark = _mark;
23467         D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
23468                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !(':')"));
23469     }
23470     { // expression ':' '*' bitwise_or
23471         if (p->error_indicator) {
23472             p->level--;
23473             return NULL;
23474         }
23475         D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
23476         Token * _literal;
23477         Token * a;
23478         expr_ty bitwise_or_var;
23479         expr_ty expression_var;
23480         if (
23481             (expression_var = expression_rule(p))  // expression
23482             &&
23483             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
23484             &&
23485             (a = _PyPegen_expect_token(p, 16))  // token='*'
23486             &&
23487             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
23488         )
23489         {
23490             D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
23491             _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "cannot use a starred expression in a dictionary value" );
23492             if (_res == NULL && PyErr_Occurred()) {
23493                 p->error_indicator = 1;
23494                 p->level--;
23495                 return NULL;
23496             }
23497             goto done;
23498         }
23499         p->mark = _mark;
23500         D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
23501                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
23502     }
23503     { // expression ':' &('}' | ',')
23504         if (p->error_indicator) {
23505             p->level--;
23506             return NULL;
23507         }
23508         D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
23509         Token * a;
23510         expr_ty expression_var;
23511         if (
23512             (expression_var = expression_rule(p))  // expression
23513             &&
23514             (a = _PyPegen_expect_token(p, 11))  // token=':'
23515             &&
23516             _PyPegen_lookahead(1, _tmp_221_rule, p)
23517         )
23518         {
23519             D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
23520             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression expected after dictionary key and ':'" );
23521             if (_res == NULL && PyErr_Occurred()) {
23522                 p->error_indicator = 1;
23523                 p->level--;
23524                 return NULL;
23525             }
23526             goto done;
23527         }
23528         p->mark = _mark;
23529         D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
23530                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' &('}' | ',')"));
23531     }
23532     _res = NULL;
23533   done:
23534     p->level--;
23535     return _res;
23536 }
23537 
23538 // _loop0_1: NEWLINE
23539 static asdl_seq *
_loop0_1_rule(Parser * p)23540 _loop0_1_rule(Parser *p)
23541 {
23542     if (p->level++ == MAXSTACK) {
23543         p->error_indicator = 1;
23544         PyErr_NoMemory();
23545     }
23546     if (p->error_indicator) {
23547         p->level--;
23548         return NULL;
23549     }
23550     void *_res = NULL;
23551     int _mark = p->mark;
23552     void **_children = PyMem_Malloc(sizeof(void *));
23553     if (!_children) {
23554         p->error_indicator = 1;
23555         PyErr_NoMemory();
23556         p->level--;
23557         return NULL;
23558     }
23559     Py_ssize_t _children_capacity = 1;
23560     Py_ssize_t _n = 0;
23561     { // NEWLINE
23562         if (p->error_indicator) {
23563             p->level--;
23564             return NULL;
23565         }
23566         D(fprintf(stderr, "%*c> _loop0_1[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
23567         Token * newline_var;
23568         while (
23569             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23570         )
23571         {
23572             _res = newline_var;
23573             if (_n == _children_capacity) {
23574                 _children_capacity *= 2;
23575                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23576                 if (!_new_children) {
23577                     PyMem_Free(_children);
23578                     p->error_indicator = 1;
23579                     PyErr_NoMemory();
23580                     p->level--;
23581                     return NULL;
23582                 }
23583                 _children = _new_children;
23584             }
23585             _children[_n++] = _res;
23586             _mark = p->mark;
23587         }
23588         p->mark = _mark;
23589         D(fprintf(stderr, "%*c%s _loop0_1[%d-%d]: %s failed!\n", p->level, ' ',
23590                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
23591     }
23592     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23593     if (!_seq) {
23594         PyMem_Free(_children);
23595         p->error_indicator = 1;
23596         PyErr_NoMemory();
23597         p->level--;
23598         return NULL;
23599     }
23600     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23601     PyMem_Free(_children);
23602     p->level--;
23603     return _seq;
23604 }
23605 
23606 // _loop0_2: NEWLINE
23607 static asdl_seq *
_loop0_2_rule(Parser * p)23608 _loop0_2_rule(Parser *p)
23609 {
23610     if (p->level++ == MAXSTACK) {
23611         p->error_indicator = 1;
23612         PyErr_NoMemory();
23613     }
23614     if (p->error_indicator) {
23615         p->level--;
23616         return NULL;
23617     }
23618     void *_res = NULL;
23619     int _mark = p->mark;
23620     void **_children = PyMem_Malloc(sizeof(void *));
23621     if (!_children) {
23622         p->error_indicator = 1;
23623         PyErr_NoMemory();
23624         p->level--;
23625         return NULL;
23626     }
23627     Py_ssize_t _children_capacity = 1;
23628     Py_ssize_t _n = 0;
23629     { // NEWLINE
23630         if (p->error_indicator) {
23631             p->level--;
23632             return NULL;
23633         }
23634         D(fprintf(stderr, "%*c> _loop0_2[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
23635         Token * newline_var;
23636         while (
23637             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
23638         )
23639         {
23640             _res = newline_var;
23641             if (_n == _children_capacity) {
23642                 _children_capacity *= 2;
23643                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23644                 if (!_new_children) {
23645                     PyMem_Free(_children);
23646                     p->error_indicator = 1;
23647                     PyErr_NoMemory();
23648                     p->level--;
23649                     return NULL;
23650                 }
23651                 _children = _new_children;
23652             }
23653             _children[_n++] = _res;
23654             _mark = p->mark;
23655         }
23656         p->mark = _mark;
23657         D(fprintf(stderr, "%*c%s _loop0_2[%d-%d]: %s failed!\n", p->level, ' ',
23658                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
23659     }
23660     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23661     if (!_seq) {
23662         PyMem_Free(_children);
23663         p->error_indicator = 1;
23664         PyErr_NoMemory();
23665         p->level--;
23666         return NULL;
23667     }
23668     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23669     PyMem_Free(_children);
23670     p->level--;
23671     return _seq;
23672 }
23673 
23674 // _loop1_3: statement
23675 static asdl_seq *
_loop1_3_rule(Parser * p)23676 _loop1_3_rule(Parser *p)
23677 {
23678     if (p->level++ == MAXSTACK) {
23679         p->error_indicator = 1;
23680         PyErr_NoMemory();
23681     }
23682     if (p->error_indicator) {
23683         p->level--;
23684         return NULL;
23685     }
23686     void *_res = NULL;
23687     int _mark = p->mark;
23688     void **_children = PyMem_Malloc(sizeof(void *));
23689     if (!_children) {
23690         p->error_indicator = 1;
23691         PyErr_NoMemory();
23692         p->level--;
23693         return NULL;
23694     }
23695     Py_ssize_t _children_capacity = 1;
23696     Py_ssize_t _n = 0;
23697     { // statement
23698         if (p->error_indicator) {
23699             p->level--;
23700             return NULL;
23701         }
23702         D(fprintf(stderr, "%*c> _loop1_3[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement"));
23703         asdl_stmt_seq* statement_var;
23704         while (
23705             (statement_var = statement_rule(p))  // statement
23706         )
23707         {
23708             _res = statement_var;
23709             if (_n == _children_capacity) {
23710                 _children_capacity *= 2;
23711                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23712                 if (!_new_children) {
23713                     PyMem_Free(_children);
23714                     p->error_indicator = 1;
23715                     PyErr_NoMemory();
23716                     p->level--;
23717                     return NULL;
23718                 }
23719                 _children = _new_children;
23720             }
23721             _children[_n++] = _res;
23722             _mark = p->mark;
23723         }
23724         p->mark = _mark;
23725         D(fprintf(stderr, "%*c%s _loop1_3[%d-%d]: %s failed!\n", p->level, ' ',
23726                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement"));
23727     }
23728     if (_n == 0 || p->error_indicator) {
23729         PyMem_Free(_children);
23730         p->level--;
23731         return NULL;
23732     }
23733     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23734     if (!_seq) {
23735         PyMem_Free(_children);
23736         p->error_indicator = 1;
23737         PyErr_NoMemory();
23738         p->level--;
23739         return NULL;
23740     }
23741     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23742     PyMem_Free(_children);
23743     p->level--;
23744     return _seq;
23745 }
23746 
23747 // _loop0_5: ';' simple_stmt
23748 static asdl_seq *
_loop0_5_rule(Parser * p)23749 _loop0_5_rule(Parser *p)
23750 {
23751     if (p->level++ == MAXSTACK) {
23752         p->error_indicator = 1;
23753         PyErr_NoMemory();
23754     }
23755     if (p->error_indicator) {
23756         p->level--;
23757         return NULL;
23758     }
23759     void *_res = NULL;
23760     int _mark = p->mark;
23761     void **_children = PyMem_Malloc(sizeof(void *));
23762     if (!_children) {
23763         p->error_indicator = 1;
23764         PyErr_NoMemory();
23765         p->level--;
23766         return NULL;
23767     }
23768     Py_ssize_t _children_capacity = 1;
23769     Py_ssize_t _n = 0;
23770     { // ';' simple_stmt
23771         if (p->error_indicator) {
23772             p->level--;
23773             return NULL;
23774         }
23775         D(fprintf(stderr, "%*c> _loop0_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';' simple_stmt"));
23776         Token * _literal;
23777         stmt_ty elem;
23778         while (
23779             (_literal = _PyPegen_expect_token(p, 13))  // token=';'
23780             &&
23781             (elem = simple_stmt_rule(p))  // simple_stmt
23782         )
23783         {
23784             _res = elem;
23785             if (_res == NULL && PyErr_Occurred()) {
23786                 p->error_indicator = 1;
23787                 PyMem_Free(_children);
23788                 p->level--;
23789                 return NULL;
23790             }
23791             if (_n == _children_capacity) {
23792                 _children_capacity *= 2;
23793                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23794                 if (!_new_children) {
23795                     PyMem_Free(_children);
23796                     p->error_indicator = 1;
23797                     PyErr_NoMemory();
23798                     p->level--;
23799                     return NULL;
23800                 }
23801                 _children = _new_children;
23802             }
23803             _children[_n++] = _res;
23804             _mark = p->mark;
23805         }
23806         p->mark = _mark;
23807         D(fprintf(stderr, "%*c%s _loop0_5[%d-%d]: %s failed!\n", p->level, ' ',
23808                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';' simple_stmt"));
23809     }
23810     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23811     if (!_seq) {
23812         PyMem_Free(_children);
23813         p->error_indicator = 1;
23814         PyErr_NoMemory();
23815         p->level--;
23816         return NULL;
23817     }
23818     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23819     PyMem_Free(_children);
23820     p->level--;
23821     return _seq;
23822 }
23823 
23824 // _gather_4: simple_stmt _loop0_5
23825 static asdl_seq *
_gather_4_rule(Parser * p)23826 _gather_4_rule(Parser *p)
23827 {
23828     if (p->level++ == MAXSTACK) {
23829         p->error_indicator = 1;
23830         PyErr_NoMemory();
23831     }
23832     if (p->error_indicator) {
23833         p->level--;
23834         return NULL;
23835     }
23836     asdl_seq * _res = NULL;
23837     int _mark = p->mark;
23838     { // simple_stmt _loop0_5
23839         if (p->error_indicator) {
23840             p->level--;
23841             return NULL;
23842         }
23843         D(fprintf(stderr, "%*c> _gather_4[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_5"));
23844         stmt_ty elem;
23845         asdl_seq * seq;
23846         if (
23847             (elem = simple_stmt_rule(p))  // simple_stmt
23848             &&
23849             (seq = _loop0_5_rule(p))  // _loop0_5
23850         )
23851         {
23852             D(fprintf(stderr, "%*c+ _gather_4[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_5"));
23853             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
23854             goto done;
23855         }
23856         p->mark = _mark;
23857         D(fprintf(stderr, "%*c%s _gather_4[%d-%d]: %s failed!\n", p->level, ' ',
23858                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt _loop0_5"));
23859     }
23860     _res = NULL;
23861   done:
23862     p->level--;
23863     return _res;
23864 }
23865 
23866 // _tmp_6: 'import' | 'from'
23867 static void *
_tmp_6_rule(Parser * p)23868 _tmp_6_rule(Parser *p)
23869 {
23870     if (p->level++ == MAXSTACK) {
23871         p->error_indicator = 1;
23872         PyErr_NoMemory();
23873     }
23874     if (p->error_indicator) {
23875         p->level--;
23876         return NULL;
23877     }
23878     void * _res = NULL;
23879     int _mark = p->mark;
23880     { // 'import'
23881         if (p->error_indicator) {
23882             p->level--;
23883             return NULL;
23884         }
23885         D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import'"));
23886         Token * _keyword;
23887         if (
23888             (_keyword = _PyPegen_expect_token(p, 531))  // token='import'
23889         )
23890         {
23891             D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import'"));
23892             _res = _keyword;
23893             goto done;
23894         }
23895         p->mark = _mark;
23896         D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
23897                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import'"));
23898     }
23899     { // 'from'
23900         if (p->error_indicator) {
23901             p->level--;
23902             return NULL;
23903         }
23904         D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from'"));
23905         Token * _keyword;
23906         if (
23907             (_keyword = _PyPegen_expect_token(p, 572))  // token='from'
23908         )
23909         {
23910             D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from'"));
23911             _res = _keyword;
23912             goto done;
23913         }
23914         p->mark = _mark;
23915         D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
23916                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from'"));
23917     }
23918     _res = NULL;
23919   done:
23920     p->level--;
23921     return _res;
23922 }
23923 
23924 // _tmp_7: 'def' | '@' | ASYNC
23925 static void *
_tmp_7_rule(Parser * p)23926 _tmp_7_rule(Parser *p)
23927 {
23928     if (p->level++ == MAXSTACK) {
23929         p->error_indicator = 1;
23930         PyErr_NoMemory();
23931     }
23932     if (p->error_indicator) {
23933         p->level--;
23934         return NULL;
23935     }
23936     void * _res = NULL;
23937     int _mark = p->mark;
23938     { // 'def'
23939         if (p->error_indicator) {
23940             p->level--;
23941             return NULL;
23942         }
23943         D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def'"));
23944         Token * _keyword;
23945         if (
23946             (_keyword = _PyPegen_expect_token(p, 649))  // token='def'
23947         )
23948         {
23949             D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def'"));
23950             _res = _keyword;
23951             goto done;
23952         }
23953         p->mark = _mark;
23954         D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
23955                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def'"));
23956     }
23957     { // '@'
23958         if (p->error_indicator) {
23959             p->level--;
23960             return NULL;
23961         }
23962         D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
23963         Token * _literal;
23964         if (
23965             (_literal = _PyPegen_expect_token(p, 49))  // token='@'
23966         )
23967         {
23968             D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
23969             _res = _literal;
23970             goto done;
23971         }
23972         p->mark = _mark;
23973         D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
23974                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
23975     }
23976     { // ASYNC
23977         if (p->error_indicator) {
23978             p->level--;
23979             return NULL;
23980         }
23981         D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
23982         Token * async_var;
23983         if (
23984             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
23985         )
23986         {
23987             D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
23988             _res = async_var;
23989             goto done;
23990         }
23991         p->mark = _mark;
23992         D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
23993                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
23994     }
23995     _res = NULL;
23996   done:
23997     p->level--;
23998     return _res;
23999 }
24000 
24001 // _tmp_8: 'class' | '@'
24002 static void *
_tmp_8_rule(Parser * p)24003 _tmp_8_rule(Parser *p)
24004 {
24005     if (p->level++ == MAXSTACK) {
24006         p->error_indicator = 1;
24007         PyErr_NoMemory();
24008     }
24009     if (p->error_indicator) {
24010         p->level--;
24011         return NULL;
24012     }
24013     void * _res = NULL;
24014     int _mark = p->mark;
24015     { // 'class'
24016         if (p->error_indicator) {
24017             p->level--;
24018             return NULL;
24019         }
24020         D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class'"));
24021         Token * _keyword;
24022         if (
24023             (_keyword = _PyPegen_expect_token(p, 651))  // token='class'
24024         )
24025         {
24026             D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class'"));
24027             _res = _keyword;
24028             goto done;
24029         }
24030         p->mark = _mark;
24031         D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ',
24032                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class'"));
24033     }
24034     { // '@'
24035         if (p->error_indicator) {
24036             p->level--;
24037             return NULL;
24038         }
24039         D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
24040         Token * _literal;
24041         if (
24042             (_literal = _PyPegen_expect_token(p, 49))  // token='@'
24043         )
24044         {
24045             D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
24046             _res = _literal;
24047             goto done;
24048         }
24049         p->mark = _mark;
24050         D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ',
24051                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
24052     }
24053     _res = NULL;
24054   done:
24055     p->level--;
24056     return _res;
24057 }
24058 
24059 // _tmp_9: 'with' | ASYNC
24060 static void *
_tmp_9_rule(Parser * p)24061 _tmp_9_rule(Parser *p)
24062 {
24063     if (p->level++ == MAXSTACK) {
24064         p->error_indicator = 1;
24065         PyErr_NoMemory();
24066     }
24067     if (p->error_indicator) {
24068         p->level--;
24069         return NULL;
24070     }
24071     void * _res = NULL;
24072     int _mark = p->mark;
24073     { // 'with'
24074         if (p->error_indicator) {
24075             p->level--;
24076             return NULL;
24077         }
24078         D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with'"));
24079         Token * _keyword;
24080         if (
24081             (_keyword = _PyPegen_expect_token(p, 612))  // token='with'
24082         )
24083         {
24084             D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with'"));
24085             _res = _keyword;
24086             goto done;
24087         }
24088         p->mark = _mark;
24089         D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ',
24090                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with'"));
24091     }
24092     { // ASYNC
24093         if (p->error_indicator) {
24094             p->level--;
24095             return NULL;
24096         }
24097         D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
24098         Token * async_var;
24099         if (
24100             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
24101         )
24102         {
24103             D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
24104             _res = async_var;
24105             goto done;
24106         }
24107         p->mark = _mark;
24108         D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ',
24109                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
24110     }
24111     _res = NULL;
24112   done:
24113     p->level--;
24114     return _res;
24115 }
24116 
24117 // _tmp_10: 'for' | ASYNC
24118 static void *
_tmp_10_rule(Parser * p)24119 _tmp_10_rule(Parser *p)
24120 {
24121     if (p->level++ == MAXSTACK) {
24122         p->error_indicator = 1;
24123         PyErr_NoMemory();
24124     }
24125     if (p->error_indicator) {
24126         p->level--;
24127         return NULL;
24128     }
24129     void * _res = NULL;
24130     int _mark = p->mark;
24131     { // 'for'
24132         if (p->error_indicator) {
24133             p->level--;
24134             return NULL;
24135         }
24136         D(fprintf(stderr, "%*c> _tmp_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for'"));
24137         Token * _keyword;
24138         if (
24139             (_keyword = _PyPegen_expect_token(p, 647))  // token='for'
24140         )
24141         {
24142             D(fprintf(stderr, "%*c+ _tmp_10[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for'"));
24143             _res = _keyword;
24144             goto done;
24145         }
24146         p->mark = _mark;
24147         D(fprintf(stderr, "%*c%s _tmp_10[%d-%d]: %s failed!\n", p->level, ' ',
24148                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for'"));
24149     }
24150     { // ASYNC
24151         if (p->error_indicator) {
24152             p->level--;
24153             return NULL;
24154         }
24155         D(fprintf(stderr, "%*c> _tmp_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
24156         Token * async_var;
24157         if (
24158             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
24159         )
24160         {
24161             D(fprintf(stderr, "%*c+ _tmp_10[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
24162             _res = async_var;
24163             goto done;
24164         }
24165         p->mark = _mark;
24166         D(fprintf(stderr, "%*c%s _tmp_10[%d-%d]: %s failed!\n", p->level, ' ',
24167                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
24168     }
24169     _res = NULL;
24170   done:
24171     p->level--;
24172     return _res;
24173 }
24174 
24175 // _tmp_11: '=' annotated_rhs
24176 static void *
_tmp_11_rule(Parser * p)24177 _tmp_11_rule(Parser *p)
24178 {
24179     if (p->level++ == MAXSTACK) {
24180         p->error_indicator = 1;
24181         PyErr_NoMemory();
24182     }
24183     if (p->error_indicator) {
24184         p->level--;
24185         return NULL;
24186     }
24187     void * _res = NULL;
24188     int _mark = p->mark;
24189     { // '=' annotated_rhs
24190         if (p->error_indicator) {
24191             p->level--;
24192             return NULL;
24193         }
24194         D(fprintf(stderr, "%*c> _tmp_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
24195         Token * _literal;
24196         expr_ty d;
24197         if (
24198             (_literal = _PyPegen_expect_token(p, 22))  // token='='
24199             &&
24200             (d = annotated_rhs_rule(p))  // annotated_rhs
24201         )
24202         {
24203             D(fprintf(stderr, "%*c+ _tmp_11[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
24204             _res = d;
24205             if (_res == NULL && PyErr_Occurred()) {
24206                 p->error_indicator = 1;
24207                 p->level--;
24208                 return NULL;
24209             }
24210             goto done;
24211         }
24212         p->mark = _mark;
24213         D(fprintf(stderr, "%*c%s _tmp_11[%d-%d]: %s failed!\n", p->level, ' ',
24214                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
24215     }
24216     _res = NULL;
24217   done:
24218     p->level--;
24219     return _res;
24220 }
24221 
24222 // _tmp_12: '(' single_target ')' | single_subscript_attribute_target
24223 static void *
_tmp_12_rule(Parser * p)24224 _tmp_12_rule(Parser *p)
24225 {
24226     if (p->level++ == MAXSTACK) {
24227         p->error_indicator = 1;
24228         PyErr_NoMemory();
24229     }
24230     if (p->error_indicator) {
24231         p->level--;
24232         return NULL;
24233     }
24234     void * _res = NULL;
24235     int _mark = p->mark;
24236     { // '(' single_target ')'
24237         if (p->error_indicator) {
24238             p->level--;
24239             return NULL;
24240         }
24241         D(fprintf(stderr, "%*c> _tmp_12[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
24242         Token * _literal;
24243         Token * _literal_1;
24244         expr_ty b;
24245         if (
24246             (_literal = _PyPegen_expect_token(p, 7))  // token='('
24247             &&
24248             (b = single_target_rule(p))  // single_target
24249             &&
24250             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
24251         )
24252         {
24253             D(fprintf(stderr, "%*c+ _tmp_12[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
24254             _res = b;
24255             if (_res == NULL && PyErr_Occurred()) {
24256                 p->error_indicator = 1;
24257                 p->level--;
24258                 return NULL;
24259             }
24260             goto done;
24261         }
24262         p->mark = _mark;
24263         D(fprintf(stderr, "%*c%s _tmp_12[%d-%d]: %s failed!\n", p->level, ' ',
24264                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
24265     }
24266     { // single_subscript_attribute_target
24267         if (p->error_indicator) {
24268             p->level--;
24269             return NULL;
24270         }
24271         D(fprintf(stderr, "%*c> _tmp_12[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
24272         expr_ty single_subscript_attribute_target_var;
24273         if (
24274             (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
24275         )
24276         {
24277             D(fprintf(stderr, "%*c+ _tmp_12[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
24278             _res = single_subscript_attribute_target_var;
24279             goto done;
24280         }
24281         p->mark = _mark;
24282         D(fprintf(stderr, "%*c%s _tmp_12[%d-%d]: %s failed!\n", p->level, ' ',
24283                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
24284     }
24285     _res = NULL;
24286   done:
24287     p->level--;
24288     return _res;
24289 }
24290 
24291 // _tmp_13: '=' annotated_rhs
24292 static void *
_tmp_13_rule(Parser * p)24293 _tmp_13_rule(Parser *p)
24294 {
24295     if (p->level++ == MAXSTACK) {
24296         p->error_indicator = 1;
24297         PyErr_NoMemory();
24298     }
24299     if (p->error_indicator) {
24300         p->level--;
24301         return NULL;
24302     }
24303     void * _res = NULL;
24304     int _mark = p->mark;
24305     { // '=' annotated_rhs
24306         if (p->error_indicator) {
24307             p->level--;
24308             return NULL;
24309         }
24310         D(fprintf(stderr, "%*c> _tmp_13[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
24311         Token * _literal;
24312         expr_ty d;
24313         if (
24314             (_literal = _PyPegen_expect_token(p, 22))  // token='='
24315             &&
24316             (d = annotated_rhs_rule(p))  // annotated_rhs
24317         )
24318         {
24319             D(fprintf(stderr, "%*c+ _tmp_13[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
24320             _res = d;
24321             if (_res == NULL && PyErr_Occurred()) {
24322                 p->error_indicator = 1;
24323                 p->level--;
24324                 return NULL;
24325             }
24326             goto done;
24327         }
24328         p->mark = _mark;
24329         D(fprintf(stderr, "%*c%s _tmp_13[%d-%d]: %s failed!\n", p->level, ' ',
24330                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
24331     }
24332     _res = NULL;
24333   done:
24334     p->level--;
24335     return _res;
24336 }
24337 
24338 // _loop1_14: (star_targets '=')
24339 static asdl_seq *
_loop1_14_rule(Parser * p)24340 _loop1_14_rule(Parser *p)
24341 {
24342     if (p->level++ == MAXSTACK) {
24343         p->error_indicator = 1;
24344         PyErr_NoMemory();
24345     }
24346     if (p->error_indicator) {
24347         p->level--;
24348         return NULL;
24349     }
24350     void *_res = NULL;
24351     int _mark = p->mark;
24352     void **_children = PyMem_Malloc(sizeof(void *));
24353     if (!_children) {
24354         p->error_indicator = 1;
24355         PyErr_NoMemory();
24356         p->level--;
24357         return NULL;
24358     }
24359     Py_ssize_t _children_capacity = 1;
24360     Py_ssize_t _n = 0;
24361     { // (star_targets '=')
24362         if (p->error_indicator) {
24363             p->level--;
24364             return NULL;
24365         }
24366         D(fprintf(stderr, "%*c> _loop1_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
24367         void *_tmp_222_var;
24368         while (
24369             (_tmp_222_var = _tmp_222_rule(p))  // star_targets '='
24370         )
24371         {
24372             _res = _tmp_222_var;
24373             if (_n == _children_capacity) {
24374                 _children_capacity *= 2;
24375                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24376                 if (!_new_children) {
24377                     PyMem_Free(_children);
24378                     p->error_indicator = 1;
24379                     PyErr_NoMemory();
24380                     p->level--;
24381                     return NULL;
24382                 }
24383                 _children = _new_children;
24384             }
24385             _children[_n++] = _res;
24386             _mark = p->mark;
24387         }
24388         p->mark = _mark;
24389         D(fprintf(stderr, "%*c%s _loop1_14[%d-%d]: %s failed!\n", p->level, ' ',
24390                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
24391     }
24392     if (_n == 0 || p->error_indicator) {
24393         PyMem_Free(_children);
24394         p->level--;
24395         return NULL;
24396     }
24397     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24398     if (!_seq) {
24399         PyMem_Free(_children);
24400         p->error_indicator = 1;
24401         PyErr_NoMemory();
24402         p->level--;
24403         return NULL;
24404     }
24405     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24406     PyMem_Free(_children);
24407     p->level--;
24408     return _seq;
24409 }
24410 
24411 // _tmp_15: yield_expr | star_expressions
24412 static void *
_tmp_15_rule(Parser * p)24413 _tmp_15_rule(Parser *p)
24414 {
24415     if (p->level++ == MAXSTACK) {
24416         p->error_indicator = 1;
24417         PyErr_NoMemory();
24418     }
24419     if (p->error_indicator) {
24420         p->level--;
24421         return NULL;
24422     }
24423     void * _res = NULL;
24424     int _mark = p->mark;
24425     { // yield_expr
24426         if (p->error_indicator) {
24427             p->level--;
24428             return NULL;
24429         }
24430         D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
24431         expr_ty yield_expr_var;
24432         if (
24433             (yield_expr_var = yield_expr_rule(p))  // yield_expr
24434         )
24435         {
24436             D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
24437             _res = yield_expr_var;
24438             goto done;
24439         }
24440         p->mark = _mark;
24441         D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
24442                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
24443     }
24444     { // star_expressions
24445         if (p->error_indicator) {
24446             p->level--;
24447             return NULL;
24448         }
24449         D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
24450         expr_ty star_expressions_var;
24451         if (
24452             (star_expressions_var = star_expressions_rule(p))  // star_expressions
24453         )
24454         {
24455             D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
24456             _res = star_expressions_var;
24457             goto done;
24458         }
24459         p->mark = _mark;
24460         D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
24461                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
24462     }
24463     _res = NULL;
24464   done:
24465     p->level--;
24466     return _res;
24467 }
24468 
24469 // _tmp_16: yield_expr | star_expressions
24470 static void *
_tmp_16_rule(Parser * p)24471 _tmp_16_rule(Parser *p)
24472 {
24473     if (p->level++ == MAXSTACK) {
24474         p->error_indicator = 1;
24475         PyErr_NoMemory();
24476     }
24477     if (p->error_indicator) {
24478         p->level--;
24479         return NULL;
24480     }
24481     void * _res = NULL;
24482     int _mark = p->mark;
24483     { // yield_expr
24484         if (p->error_indicator) {
24485             p->level--;
24486             return NULL;
24487         }
24488         D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
24489         expr_ty yield_expr_var;
24490         if (
24491             (yield_expr_var = yield_expr_rule(p))  // yield_expr
24492         )
24493         {
24494             D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
24495             _res = yield_expr_var;
24496             goto done;
24497         }
24498         p->mark = _mark;
24499         D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
24500                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
24501     }
24502     { // star_expressions
24503         if (p->error_indicator) {
24504             p->level--;
24505             return NULL;
24506         }
24507         D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
24508         expr_ty star_expressions_var;
24509         if (
24510             (star_expressions_var = star_expressions_rule(p))  // star_expressions
24511         )
24512         {
24513             D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
24514             _res = star_expressions_var;
24515             goto done;
24516         }
24517         p->mark = _mark;
24518         D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
24519                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
24520     }
24521     _res = NULL;
24522   done:
24523     p->level--;
24524     return _res;
24525 }
24526 
24527 // _tmp_17: 'from' expression
24528 static void *
_tmp_17_rule(Parser * p)24529 _tmp_17_rule(Parser *p)
24530 {
24531     if (p->level++ == MAXSTACK) {
24532         p->error_indicator = 1;
24533         PyErr_NoMemory();
24534     }
24535     if (p->error_indicator) {
24536         p->level--;
24537         return NULL;
24538     }
24539     void * _res = NULL;
24540     int _mark = p->mark;
24541     { // 'from' expression
24542         if (p->error_indicator) {
24543             p->level--;
24544             return NULL;
24545         }
24546         D(fprintf(stderr, "%*c> _tmp_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' expression"));
24547         Token * _keyword;
24548         expr_ty z;
24549         if (
24550             (_keyword = _PyPegen_expect_token(p, 572))  // token='from'
24551             &&
24552             (z = expression_rule(p))  // expression
24553         )
24554         {
24555             D(fprintf(stderr, "%*c+ _tmp_17[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' expression"));
24556             _res = z;
24557             if (_res == NULL && PyErr_Occurred()) {
24558                 p->error_indicator = 1;
24559                 p->level--;
24560                 return NULL;
24561             }
24562             goto done;
24563         }
24564         p->mark = _mark;
24565         D(fprintf(stderr, "%*c%s _tmp_17[%d-%d]: %s failed!\n", p->level, ' ',
24566                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' expression"));
24567     }
24568     _res = NULL;
24569   done:
24570     p->level--;
24571     return _res;
24572 }
24573 
24574 // _loop0_19: ',' NAME
24575 static asdl_seq *
_loop0_19_rule(Parser * p)24576 _loop0_19_rule(Parser *p)
24577 {
24578     if (p->level++ == MAXSTACK) {
24579         p->error_indicator = 1;
24580         PyErr_NoMemory();
24581     }
24582     if (p->error_indicator) {
24583         p->level--;
24584         return NULL;
24585     }
24586     void *_res = NULL;
24587     int _mark = p->mark;
24588     void **_children = PyMem_Malloc(sizeof(void *));
24589     if (!_children) {
24590         p->error_indicator = 1;
24591         PyErr_NoMemory();
24592         p->level--;
24593         return NULL;
24594     }
24595     Py_ssize_t _children_capacity = 1;
24596     Py_ssize_t _n = 0;
24597     { // ',' NAME
24598         if (p->error_indicator) {
24599             p->level--;
24600             return NULL;
24601         }
24602         D(fprintf(stderr, "%*c> _loop0_19[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
24603         Token * _literal;
24604         expr_ty elem;
24605         while (
24606             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24607             &&
24608             (elem = _PyPegen_name_token(p))  // NAME
24609         )
24610         {
24611             _res = elem;
24612             if (_res == NULL && PyErr_Occurred()) {
24613                 p->error_indicator = 1;
24614                 PyMem_Free(_children);
24615                 p->level--;
24616                 return NULL;
24617             }
24618             if (_n == _children_capacity) {
24619                 _children_capacity *= 2;
24620                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24621                 if (!_new_children) {
24622                     PyMem_Free(_children);
24623                     p->error_indicator = 1;
24624                     PyErr_NoMemory();
24625                     p->level--;
24626                     return NULL;
24627                 }
24628                 _children = _new_children;
24629             }
24630             _children[_n++] = _res;
24631             _mark = p->mark;
24632         }
24633         p->mark = _mark;
24634         D(fprintf(stderr, "%*c%s _loop0_19[%d-%d]: %s failed!\n", p->level, ' ',
24635                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
24636     }
24637     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24638     if (!_seq) {
24639         PyMem_Free(_children);
24640         p->error_indicator = 1;
24641         PyErr_NoMemory();
24642         p->level--;
24643         return NULL;
24644     }
24645     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24646     PyMem_Free(_children);
24647     p->level--;
24648     return _seq;
24649 }
24650 
24651 // _gather_18: NAME _loop0_19
24652 static asdl_seq *
_gather_18_rule(Parser * p)24653 _gather_18_rule(Parser *p)
24654 {
24655     if (p->level++ == MAXSTACK) {
24656         p->error_indicator = 1;
24657         PyErr_NoMemory();
24658     }
24659     if (p->error_indicator) {
24660         p->level--;
24661         return NULL;
24662     }
24663     asdl_seq * _res = NULL;
24664     int _mark = p->mark;
24665     { // NAME _loop0_19
24666         if (p->error_indicator) {
24667             p->level--;
24668             return NULL;
24669         }
24670         D(fprintf(stderr, "%*c> _gather_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_19"));
24671         expr_ty elem;
24672         asdl_seq * seq;
24673         if (
24674             (elem = _PyPegen_name_token(p))  // NAME
24675             &&
24676             (seq = _loop0_19_rule(p))  // _loop0_19
24677         )
24678         {
24679             D(fprintf(stderr, "%*c+ _gather_18[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_19"));
24680             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24681             goto done;
24682         }
24683         p->mark = _mark;
24684         D(fprintf(stderr, "%*c%s _gather_18[%d-%d]: %s failed!\n", p->level, ' ',
24685                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_19"));
24686     }
24687     _res = NULL;
24688   done:
24689     p->level--;
24690     return _res;
24691 }
24692 
24693 // _loop0_21: ',' NAME
24694 static asdl_seq *
_loop0_21_rule(Parser * p)24695 _loop0_21_rule(Parser *p)
24696 {
24697     if (p->level++ == MAXSTACK) {
24698         p->error_indicator = 1;
24699         PyErr_NoMemory();
24700     }
24701     if (p->error_indicator) {
24702         p->level--;
24703         return NULL;
24704     }
24705     void *_res = NULL;
24706     int _mark = p->mark;
24707     void **_children = PyMem_Malloc(sizeof(void *));
24708     if (!_children) {
24709         p->error_indicator = 1;
24710         PyErr_NoMemory();
24711         p->level--;
24712         return NULL;
24713     }
24714     Py_ssize_t _children_capacity = 1;
24715     Py_ssize_t _n = 0;
24716     { // ',' NAME
24717         if (p->error_indicator) {
24718             p->level--;
24719             return NULL;
24720         }
24721         D(fprintf(stderr, "%*c> _loop0_21[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
24722         Token * _literal;
24723         expr_ty elem;
24724         while (
24725             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24726             &&
24727             (elem = _PyPegen_name_token(p))  // NAME
24728         )
24729         {
24730             _res = elem;
24731             if (_res == NULL && PyErr_Occurred()) {
24732                 p->error_indicator = 1;
24733                 PyMem_Free(_children);
24734                 p->level--;
24735                 return NULL;
24736             }
24737             if (_n == _children_capacity) {
24738                 _children_capacity *= 2;
24739                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24740                 if (!_new_children) {
24741                     PyMem_Free(_children);
24742                     p->error_indicator = 1;
24743                     PyErr_NoMemory();
24744                     p->level--;
24745                     return NULL;
24746                 }
24747                 _children = _new_children;
24748             }
24749             _children[_n++] = _res;
24750             _mark = p->mark;
24751         }
24752         p->mark = _mark;
24753         D(fprintf(stderr, "%*c%s _loop0_21[%d-%d]: %s failed!\n", p->level, ' ',
24754                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
24755     }
24756     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24757     if (!_seq) {
24758         PyMem_Free(_children);
24759         p->error_indicator = 1;
24760         PyErr_NoMemory();
24761         p->level--;
24762         return NULL;
24763     }
24764     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24765     PyMem_Free(_children);
24766     p->level--;
24767     return _seq;
24768 }
24769 
24770 // _gather_20: NAME _loop0_21
24771 static asdl_seq *
_gather_20_rule(Parser * p)24772 _gather_20_rule(Parser *p)
24773 {
24774     if (p->level++ == MAXSTACK) {
24775         p->error_indicator = 1;
24776         PyErr_NoMemory();
24777     }
24778     if (p->error_indicator) {
24779         p->level--;
24780         return NULL;
24781     }
24782     asdl_seq * _res = NULL;
24783     int _mark = p->mark;
24784     { // NAME _loop0_21
24785         if (p->error_indicator) {
24786             p->level--;
24787             return NULL;
24788         }
24789         D(fprintf(stderr, "%*c> _gather_20[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_21"));
24790         expr_ty elem;
24791         asdl_seq * seq;
24792         if (
24793             (elem = _PyPegen_name_token(p))  // NAME
24794             &&
24795             (seq = _loop0_21_rule(p))  // _loop0_21
24796         )
24797         {
24798             D(fprintf(stderr, "%*c+ _gather_20[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_21"));
24799             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24800             goto done;
24801         }
24802         p->mark = _mark;
24803         D(fprintf(stderr, "%*c%s _gather_20[%d-%d]: %s failed!\n", p->level, ' ',
24804                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_21"));
24805     }
24806     _res = NULL;
24807   done:
24808     p->level--;
24809     return _res;
24810 }
24811 
24812 // _tmp_22: ';' | NEWLINE
24813 static void *
_tmp_22_rule(Parser * p)24814 _tmp_22_rule(Parser *p)
24815 {
24816     if (p->level++ == MAXSTACK) {
24817         p->error_indicator = 1;
24818         PyErr_NoMemory();
24819     }
24820     if (p->error_indicator) {
24821         p->level--;
24822         return NULL;
24823     }
24824     void * _res = NULL;
24825     int _mark = p->mark;
24826     { // ';'
24827         if (p->error_indicator) {
24828             p->level--;
24829             return NULL;
24830         }
24831         D(fprintf(stderr, "%*c> _tmp_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'"));
24832         Token * _literal;
24833         if (
24834             (_literal = _PyPegen_expect_token(p, 13))  // token=';'
24835         )
24836         {
24837             D(fprintf(stderr, "%*c+ _tmp_22[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'"));
24838             _res = _literal;
24839             goto done;
24840         }
24841         p->mark = _mark;
24842         D(fprintf(stderr, "%*c%s _tmp_22[%d-%d]: %s failed!\n", p->level, ' ',
24843                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'"));
24844     }
24845     { // NEWLINE
24846         if (p->error_indicator) {
24847             p->level--;
24848             return NULL;
24849         }
24850         D(fprintf(stderr, "%*c> _tmp_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
24851         Token * newline_var;
24852         if (
24853             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
24854         )
24855         {
24856             D(fprintf(stderr, "%*c+ _tmp_22[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
24857             _res = newline_var;
24858             goto done;
24859         }
24860         p->mark = _mark;
24861         D(fprintf(stderr, "%*c%s _tmp_22[%d-%d]: %s failed!\n", p->level, ' ',
24862                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
24863     }
24864     _res = NULL;
24865   done:
24866     p->level--;
24867     return _res;
24868 }
24869 
24870 // _tmp_23: ',' expression
24871 static void *
_tmp_23_rule(Parser * p)24872 _tmp_23_rule(Parser *p)
24873 {
24874     if (p->level++ == MAXSTACK) {
24875         p->error_indicator = 1;
24876         PyErr_NoMemory();
24877     }
24878     if (p->error_indicator) {
24879         p->level--;
24880         return NULL;
24881     }
24882     void * _res = NULL;
24883     int _mark = p->mark;
24884     { // ',' expression
24885         if (p->error_indicator) {
24886             p->level--;
24887             return NULL;
24888         }
24889         D(fprintf(stderr, "%*c> _tmp_23[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
24890         Token * _literal;
24891         expr_ty z;
24892         if (
24893             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24894             &&
24895             (z = expression_rule(p))  // expression
24896         )
24897         {
24898             D(fprintf(stderr, "%*c+ _tmp_23[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression"));
24899             _res = z;
24900             if (_res == NULL && PyErr_Occurred()) {
24901                 p->error_indicator = 1;
24902                 p->level--;
24903                 return NULL;
24904             }
24905             goto done;
24906         }
24907         p->mark = _mark;
24908         D(fprintf(stderr, "%*c%s _tmp_23[%d-%d]: %s failed!\n", p->level, ' ',
24909                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
24910     }
24911     _res = NULL;
24912   done:
24913     p->level--;
24914     return _res;
24915 }
24916 
24917 // _loop0_24: ('.' | '...')
24918 static asdl_seq *
_loop0_24_rule(Parser * p)24919 _loop0_24_rule(Parser *p)
24920 {
24921     if (p->level++ == MAXSTACK) {
24922         p->error_indicator = 1;
24923         PyErr_NoMemory();
24924     }
24925     if (p->error_indicator) {
24926         p->level--;
24927         return NULL;
24928     }
24929     void *_res = NULL;
24930     int _mark = p->mark;
24931     void **_children = PyMem_Malloc(sizeof(void *));
24932     if (!_children) {
24933         p->error_indicator = 1;
24934         PyErr_NoMemory();
24935         p->level--;
24936         return NULL;
24937     }
24938     Py_ssize_t _children_capacity = 1;
24939     Py_ssize_t _n = 0;
24940     { // ('.' | '...')
24941         if (p->error_indicator) {
24942             p->level--;
24943             return NULL;
24944         }
24945         D(fprintf(stderr, "%*c> _loop0_24[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
24946         void *_tmp_223_var;
24947         while (
24948             (_tmp_223_var = _tmp_223_rule(p))  // '.' | '...'
24949         )
24950         {
24951             _res = _tmp_223_var;
24952             if (_n == _children_capacity) {
24953                 _children_capacity *= 2;
24954                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24955                 if (!_new_children) {
24956                     PyMem_Free(_children);
24957                     p->error_indicator = 1;
24958                     PyErr_NoMemory();
24959                     p->level--;
24960                     return NULL;
24961                 }
24962                 _children = _new_children;
24963             }
24964             _children[_n++] = _res;
24965             _mark = p->mark;
24966         }
24967         p->mark = _mark;
24968         D(fprintf(stderr, "%*c%s _loop0_24[%d-%d]: %s failed!\n", p->level, ' ',
24969                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
24970     }
24971     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24972     if (!_seq) {
24973         PyMem_Free(_children);
24974         p->error_indicator = 1;
24975         PyErr_NoMemory();
24976         p->level--;
24977         return NULL;
24978     }
24979     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24980     PyMem_Free(_children);
24981     p->level--;
24982     return _seq;
24983 }
24984 
24985 // _loop1_25: ('.' | '...')
24986 static asdl_seq *
_loop1_25_rule(Parser * p)24987 _loop1_25_rule(Parser *p)
24988 {
24989     if (p->level++ == MAXSTACK) {
24990         p->error_indicator = 1;
24991         PyErr_NoMemory();
24992     }
24993     if (p->error_indicator) {
24994         p->level--;
24995         return NULL;
24996     }
24997     void *_res = NULL;
24998     int _mark = p->mark;
24999     void **_children = PyMem_Malloc(sizeof(void *));
25000     if (!_children) {
25001         p->error_indicator = 1;
25002         PyErr_NoMemory();
25003         p->level--;
25004         return NULL;
25005     }
25006     Py_ssize_t _children_capacity = 1;
25007     Py_ssize_t _n = 0;
25008     { // ('.' | '...')
25009         if (p->error_indicator) {
25010             p->level--;
25011             return NULL;
25012         }
25013         D(fprintf(stderr, "%*c> _loop1_25[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
25014         void *_tmp_224_var;
25015         while (
25016             (_tmp_224_var = _tmp_224_rule(p))  // '.' | '...'
25017         )
25018         {
25019             _res = _tmp_224_var;
25020             if (_n == _children_capacity) {
25021                 _children_capacity *= 2;
25022                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25023                 if (!_new_children) {
25024                     PyMem_Free(_children);
25025                     p->error_indicator = 1;
25026                     PyErr_NoMemory();
25027                     p->level--;
25028                     return NULL;
25029                 }
25030                 _children = _new_children;
25031             }
25032             _children[_n++] = _res;
25033             _mark = p->mark;
25034         }
25035         p->mark = _mark;
25036         D(fprintf(stderr, "%*c%s _loop1_25[%d-%d]: %s failed!\n", p->level, ' ',
25037                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
25038     }
25039     if (_n == 0 || p->error_indicator) {
25040         PyMem_Free(_children);
25041         p->level--;
25042         return NULL;
25043     }
25044     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25045     if (!_seq) {
25046         PyMem_Free(_children);
25047         p->error_indicator = 1;
25048         PyErr_NoMemory();
25049         p->level--;
25050         return NULL;
25051     }
25052     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25053     PyMem_Free(_children);
25054     p->level--;
25055     return _seq;
25056 }
25057 
25058 // _loop0_27: ',' import_from_as_name
25059 static asdl_seq *
_loop0_27_rule(Parser * p)25060 _loop0_27_rule(Parser *p)
25061 {
25062     if (p->level++ == MAXSTACK) {
25063         p->error_indicator = 1;
25064         PyErr_NoMemory();
25065     }
25066     if (p->error_indicator) {
25067         p->level--;
25068         return NULL;
25069     }
25070     void *_res = NULL;
25071     int _mark = p->mark;
25072     void **_children = PyMem_Malloc(sizeof(void *));
25073     if (!_children) {
25074         p->error_indicator = 1;
25075         PyErr_NoMemory();
25076         p->level--;
25077         return NULL;
25078     }
25079     Py_ssize_t _children_capacity = 1;
25080     Py_ssize_t _n = 0;
25081     { // ',' import_from_as_name
25082         if (p->error_indicator) {
25083             p->level--;
25084             return NULL;
25085         }
25086         D(fprintf(stderr, "%*c> _loop0_27[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' import_from_as_name"));
25087         Token * _literal;
25088         alias_ty elem;
25089         while (
25090             (_literal = _PyPegen_expect_token(p, 12))  // token=','
25091             &&
25092             (elem = import_from_as_name_rule(p))  // import_from_as_name
25093         )
25094         {
25095             _res = elem;
25096             if (_res == NULL && PyErr_Occurred()) {
25097                 p->error_indicator = 1;
25098                 PyMem_Free(_children);
25099                 p->level--;
25100                 return NULL;
25101             }
25102             if (_n == _children_capacity) {
25103                 _children_capacity *= 2;
25104                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25105                 if (!_new_children) {
25106                     PyMem_Free(_children);
25107                     p->error_indicator = 1;
25108                     PyErr_NoMemory();
25109                     p->level--;
25110                     return NULL;
25111                 }
25112                 _children = _new_children;
25113             }
25114             _children[_n++] = _res;
25115             _mark = p->mark;
25116         }
25117         p->mark = _mark;
25118         D(fprintf(stderr, "%*c%s _loop0_27[%d-%d]: %s failed!\n", p->level, ' ',
25119                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' import_from_as_name"));
25120     }
25121     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25122     if (!_seq) {
25123         PyMem_Free(_children);
25124         p->error_indicator = 1;
25125         PyErr_NoMemory();
25126         p->level--;
25127         return NULL;
25128     }
25129     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25130     PyMem_Free(_children);
25131     p->level--;
25132     return _seq;
25133 }
25134 
25135 // _gather_26: import_from_as_name _loop0_27
25136 static asdl_seq *
_gather_26_rule(Parser * p)25137 _gather_26_rule(Parser *p)
25138 {
25139     if (p->level++ == MAXSTACK) {
25140         p->error_indicator = 1;
25141         PyErr_NoMemory();
25142     }
25143     if (p->error_indicator) {
25144         p->level--;
25145         return NULL;
25146     }
25147     asdl_seq * _res = NULL;
25148     int _mark = p->mark;
25149     { // import_from_as_name _loop0_27
25150         if (p->error_indicator) {
25151             p->level--;
25152             return NULL;
25153         }
25154         D(fprintf(stderr, "%*c> _gather_26[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_27"));
25155         alias_ty elem;
25156         asdl_seq * seq;
25157         if (
25158             (elem = import_from_as_name_rule(p))  // import_from_as_name
25159             &&
25160             (seq = _loop0_27_rule(p))  // _loop0_27
25161         )
25162         {
25163             D(fprintf(stderr, "%*c+ _gather_26[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_27"));
25164             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
25165             goto done;
25166         }
25167         p->mark = _mark;
25168         D(fprintf(stderr, "%*c%s _gather_26[%d-%d]: %s failed!\n", p->level, ' ',
25169                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_name _loop0_27"));
25170     }
25171     _res = NULL;
25172   done:
25173     p->level--;
25174     return _res;
25175 }
25176 
25177 // _tmp_28: 'as' NAME
25178 static void *
_tmp_28_rule(Parser * p)25179 _tmp_28_rule(Parser *p)
25180 {
25181     if (p->level++ == MAXSTACK) {
25182         p->error_indicator = 1;
25183         PyErr_NoMemory();
25184     }
25185     if (p->error_indicator) {
25186         p->level--;
25187         return NULL;
25188     }
25189     void * _res = NULL;
25190     int _mark = p->mark;
25191     { // 'as' NAME
25192         if (p->error_indicator) {
25193             p->level--;
25194             return NULL;
25195         }
25196         D(fprintf(stderr, "%*c> _tmp_28[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
25197         Token * _keyword;
25198         expr_ty z;
25199         if (
25200             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
25201             &&
25202             (z = _PyPegen_name_token(p))  // NAME
25203         )
25204         {
25205             D(fprintf(stderr, "%*c+ _tmp_28[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
25206             _res = z;
25207             if (_res == NULL && PyErr_Occurred()) {
25208                 p->error_indicator = 1;
25209                 p->level--;
25210                 return NULL;
25211             }
25212             goto done;
25213         }
25214         p->mark = _mark;
25215         D(fprintf(stderr, "%*c%s _tmp_28[%d-%d]: %s failed!\n", p->level, ' ',
25216                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
25217     }
25218     _res = NULL;
25219   done:
25220     p->level--;
25221     return _res;
25222 }
25223 
25224 // _loop0_30: ',' dotted_as_name
25225 static asdl_seq *
_loop0_30_rule(Parser * p)25226 _loop0_30_rule(Parser *p)
25227 {
25228     if (p->level++ == MAXSTACK) {
25229         p->error_indicator = 1;
25230         PyErr_NoMemory();
25231     }
25232     if (p->error_indicator) {
25233         p->level--;
25234         return NULL;
25235     }
25236     void *_res = NULL;
25237     int _mark = p->mark;
25238     void **_children = PyMem_Malloc(sizeof(void *));
25239     if (!_children) {
25240         p->error_indicator = 1;
25241         PyErr_NoMemory();
25242         p->level--;
25243         return NULL;
25244     }
25245     Py_ssize_t _children_capacity = 1;
25246     Py_ssize_t _n = 0;
25247     { // ',' dotted_as_name
25248         if (p->error_indicator) {
25249             p->level--;
25250             return NULL;
25251         }
25252         D(fprintf(stderr, "%*c> _loop0_30[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' dotted_as_name"));
25253         Token * _literal;
25254         alias_ty elem;
25255         while (
25256             (_literal = _PyPegen_expect_token(p, 12))  // token=','
25257             &&
25258             (elem = dotted_as_name_rule(p))  // dotted_as_name
25259         )
25260         {
25261             _res = elem;
25262             if (_res == NULL && PyErr_Occurred()) {
25263                 p->error_indicator = 1;
25264                 PyMem_Free(_children);
25265                 p->level--;
25266                 return NULL;
25267             }
25268             if (_n == _children_capacity) {
25269                 _children_capacity *= 2;
25270                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25271                 if (!_new_children) {
25272                     PyMem_Free(_children);
25273                     p->error_indicator = 1;
25274                     PyErr_NoMemory();
25275                     p->level--;
25276                     return NULL;
25277                 }
25278                 _children = _new_children;
25279             }
25280             _children[_n++] = _res;
25281             _mark = p->mark;
25282         }
25283         p->mark = _mark;
25284         D(fprintf(stderr, "%*c%s _loop0_30[%d-%d]: %s failed!\n", p->level, ' ',
25285                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' dotted_as_name"));
25286     }
25287     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25288     if (!_seq) {
25289         PyMem_Free(_children);
25290         p->error_indicator = 1;
25291         PyErr_NoMemory();
25292         p->level--;
25293         return NULL;
25294     }
25295     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25296     PyMem_Free(_children);
25297     p->level--;
25298     return _seq;
25299 }
25300 
25301 // _gather_29: dotted_as_name _loop0_30
25302 static asdl_seq *
_gather_29_rule(Parser * p)25303 _gather_29_rule(Parser *p)
25304 {
25305     if (p->level++ == MAXSTACK) {
25306         p->error_indicator = 1;
25307         PyErr_NoMemory();
25308     }
25309     if (p->error_indicator) {
25310         p->level--;
25311         return NULL;
25312     }
25313     asdl_seq * _res = NULL;
25314     int _mark = p->mark;
25315     { // dotted_as_name _loop0_30
25316         if (p->error_indicator) {
25317             p->level--;
25318             return NULL;
25319         }
25320         D(fprintf(stderr, "%*c> _gather_29[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_30"));
25321         alias_ty elem;
25322         asdl_seq * seq;
25323         if (
25324             (elem = dotted_as_name_rule(p))  // dotted_as_name
25325             &&
25326             (seq = _loop0_30_rule(p))  // _loop0_30
25327         )
25328         {
25329             D(fprintf(stderr, "%*c+ _gather_29[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_30"));
25330             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
25331             goto done;
25332         }
25333         p->mark = _mark;
25334         D(fprintf(stderr, "%*c%s _gather_29[%d-%d]: %s failed!\n", p->level, ' ',
25335                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_as_name _loop0_30"));
25336     }
25337     _res = NULL;
25338   done:
25339     p->level--;
25340     return _res;
25341 }
25342 
25343 // _tmp_31: 'as' NAME
25344 static void *
_tmp_31_rule(Parser * p)25345 _tmp_31_rule(Parser *p)
25346 {
25347     if (p->level++ == MAXSTACK) {
25348         p->error_indicator = 1;
25349         PyErr_NoMemory();
25350     }
25351     if (p->error_indicator) {
25352         p->level--;
25353         return NULL;
25354     }
25355     void * _res = NULL;
25356     int _mark = p->mark;
25357     { // 'as' NAME
25358         if (p->error_indicator) {
25359             p->level--;
25360             return NULL;
25361         }
25362         D(fprintf(stderr, "%*c> _tmp_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
25363         Token * _keyword;
25364         expr_ty z;
25365         if (
25366             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
25367             &&
25368             (z = _PyPegen_name_token(p))  // NAME
25369         )
25370         {
25371             D(fprintf(stderr, "%*c+ _tmp_31[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
25372             _res = z;
25373             if (_res == NULL && PyErr_Occurred()) {
25374                 p->error_indicator = 1;
25375                 p->level--;
25376                 return NULL;
25377             }
25378             goto done;
25379         }
25380         p->mark = _mark;
25381         D(fprintf(stderr, "%*c%s _tmp_31[%d-%d]: %s failed!\n", p->level, ' ',
25382                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
25383     }
25384     _res = NULL;
25385   done:
25386     p->level--;
25387     return _res;
25388 }
25389 
25390 // _loop1_32: ('@' named_expression NEWLINE)
25391 static asdl_seq *
_loop1_32_rule(Parser * p)25392 _loop1_32_rule(Parser *p)
25393 {
25394     if (p->level++ == MAXSTACK) {
25395         p->error_indicator = 1;
25396         PyErr_NoMemory();
25397     }
25398     if (p->error_indicator) {
25399         p->level--;
25400         return NULL;
25401     }
25402     void *_res = NULL;
25403     int _mark = p->mark;
25404     void **_children = PyMem_Malloc(sizeof(void *));
25405     if (!_children) {
25406         p->error_indicator = 1;
25407         PyErr_NoMemory();
25408         p->level--;
25409         return NULL;
25410     }
25411     Py_ssize_t _children_capacity = 1;
25412     Py_ssize_t _n = 0;
25413     { // ('@' named_expression NEWLINE)
25414         if (p->error_indicator) {
25415             p->level--;
25416             return NULL;
25417         }
25418         D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)"));
25419         void *_tmp_225_var;
25420         while (
25421             (_tmp_225_var = _tmp_225_rule(p))  // '@' named_expression NEWLINE
25422         )
25423         {
25424             _res = _tmp_225_var;
25425             if (_n == _children_capacity) {
25426                 _children_capacity *= 2;
25427                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25428                 if (!_new_children) {
25429                     PyMem_Free(_children);
25430                     p->error_indicator = 1;
25431                     PyErr_NoMemory();
25432                     p->level--;
25433                     return NULL;
25434                 }
25435                 _children = _new_children;
25436             }
25437             _children[_n++] = _res;
25438             _mark = p->mark;
25439         }
25440         p->mark = _mark;
25441         D(fprintf(stderr, "%*c%s _loop1_32[%d-%d]: %s failed!\n", p->level, ' ',
25442                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('@' named_expression NEWLINE)"));
25443     }
25444     if (_n == 0 || p->error_indicator) {
25445         PyMem_Free(_children);
25446         p->level--;
25447         return NULL;
25448     }
25449     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25450     if (!_seq) {
25451         PyMem_Free(_children);
25452         p->error_indicator = 1;
25453         PyErr_NoMemory();
25454         p->level--;
25455         return NULL;
25456     }
25457     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25458     PyMem_Free(_children);
25459     p->level--;
25460     return _seq;
25461 }
25462 
25463 // _tmp_33: '(' arguments? ')'
25464 static void *
_tmp_33_rule(Parser * p)25465 _tmp_33_rule(Parser *p)
25466 {
25467     if (p->level++ == MAXSTACK) {
25468         p->error_indicator = 1;
25469         PyErr_NoMemory();
25470     }
25471     if (p->error_indicator) {
25472         p->level--;
25473         return NULL;
25474     }
25475     void * _res = NULL;
25476     int _mark = p->mark;
25477     { // '(' arguments? ')'
25478         if (p->error_indicator) {
25479             p->level--;
25480             return NULL;
25481         }
25482         D(fprintf(stderr, "%*c> _tmp_33[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
25483         Token * _literal;
25484         Token * _literal_1;
25485         void *z;
25486         if (
25487             (_literal = _PyPegen_expect_token(p, 7))  // token='('
25488             &&
25489             (z = arguments_rule(p), !p->error_indicator)  // arguments?
25490             &&
25491             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
25492         )
25493         {
25494             D(fprintf(stderr, "%*c+ _tmp_33[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
25495             _res = z;
25496             if (_res == NULL && PyErr_Occurred()) {
25497                 p->error_indicator = 1;
25498                 p->level--;
25499                 return NULL;
25500             }
25501             goto done;
25502         }
25503         p->mark = _mark;
25504         D(fprintf(stderr, "%*c%s _tmp_33[%d-%d]: %s failed!\n", p->level, ' ',
25505                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'"));
25506     }
25507     _res = NULL;
25508   done:
25509     p->level--;
25510     return _res;
25511 }
25512 
25513 // _tmp_34: '->' expression
25514 static void *
_tmp_34_rule(Parser * p)25515 _tmp_34_rule(Parser *p)
25516 {
25517     if (p->level++ == MAXSTACK) {
25518         p->error_indicator = 1;
25519         PyErr_NoMemory();
25520     }
25521     if (p->error_indicator) {
25522         p->level--;
25523         return NULL;
25524     }
25525     void * _res = NULL;
25526     int _mark = p->mark;
25527     { // '->' expression
25528         if (p->error_indicator) {
25529             p->level--;
25530             return NULL;
25531         }
25532         D(fprintf(stderr, "%*c> _tmp_34[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
25533         Token * _literal;
25534         expr_ty z;
25535         if (
25536             (_literal = _PyPegen_expect_token(p, 51))  // token='->'
25537             &&
25538             (z = expression_rule(p))  // expression
25539         )
25540         {
25541             D(fprintf(stderr, "%*c+ _tmp_34[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
25542             _res = z;
25543             if (_res == NULL && PyErr_Occurred()) {
25544                 p->error_indicator = 1;
25545                 p->level--;
25546                 return NULL;
25547             }
25548             goto done;
25549         }
25550         p->mark = _mark;
25551         D(fprintf(stderr, "%*c%s _tmp_34[%d-%d]: %s failed!\n", p->level, ' ',
25552                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
25553     }
25554     _res = NULL;
25555   done:
25556     p->level--;
25557     return _res;
25558 }
25559 
25560 // _tmp_35: '->' expression
25561 static void *
_tmp_35_rule(Parser * p)25562 _tmp_35_rule(Parser *p)
25563 {
25564     if (p->level++ == MAXSTACK) {
25565         p->error_indicator = 1;
25566         PyErr_NoMemory();
25567     }
25568     if (p->error_indicator) {
25569         p->level--;
25570         return NULL;
25571     }
25572     void * _res = NULL;
25573     int _mark = p->mark;
25574     { // '->' expression
25575         if (p->error_indicator) {
25576             p->level--;
25577             return NULL;
25578         }
25579         D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
25580         Token * _literal;
25581         expr_ty z;
25582         if (
25583             (_literal = _PyPegen_expect_token(p, 51))  // token='->'
25584             &&
25585             (z = expression_rule(p))  // expression
25586         )
25587         {
25588             D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
25589             _res = z;
25590             if (_res == NULL && PyErr_Occurred()) {
25591                 p->error_indicator = 1;
25592                 p->level--;
25593                 return NULL;
25594             }
25595             goto done;
25596         }
25597         p->mark = _mark;
25598         D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
25599                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
25600     }
25601     _res = NULL;
25602   done:
25603     p->level--;
25604     return _res;
25605 }
25606 
25607 // _loop0_36: param_no_default
25608 static asdl_seq *
_loop0_36_rule(Parser * p)25609 _loop0_36_rule(Parser *p)
25610 {
25611     if (p->level++ == MAXSTACK) {
25612         p->error_indicator = 1;
25613         PyErr_NoMemory();
25614     }
25615     if (p->error_indicator) {
25616         p->level--;
25617         return NULL;
25618     }
25619     void *_res = NULL;
25620     int _mark = p->mark;
25621     void **_children = PyMem_Malloc(sizeof(void *));
25622     if (!_children) {
25623         p->error_indicator = 1;
25624         PyErr_NoMemory();
25625         p->level--;
25626         return NULL;
25627     }
25628     Py_ssize_t _children_capacity = 1;
25629     Py_ssize_t _n = 0;
25630     { // param_no_default
25631         if (p->error_indicator) {
25632             p->level--;
25633             return NULL;
25634         }
25635         D(fprintf(stderr, "%*c> _loop0_36[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
25636         arg_ty param_no_default_var;
25637         while (
25638             (param_no_default_var = param_no_default_rule(p))  // param_no_default
25639         )
25640         {
25641             _res = param_no_default_var;
25642             if (_n == _children_capacity) {
25643                 _children_capacity *= 2;
25644                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25645                 if (!_new_children) {
25646                     PyMem_Free(_children);
25647                     p->error_indicator = 1;
25648                     PyErr_NoMemory();
25649                     p->level--;
25650                     return NULL;
25651                 }
25652                 _children = _new_children;
25653             }
25654             _children[_n++] = _res;
25655             _mark = p->mark;
25656         }
25657         p->mark = _mark;
25658         D(fprintf(stderr, "%*c%s _loop0_36[%d-%d]: %s failed!\n", p->level, ' ',
25659                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
25660     }
25661     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25662     if (!_seq) {
25663         PyMem_Free(_children);
25664         p->error_indicator = 1;
25665         PyErr_NoMemory();
25666         p->level--;
25667         return NULL;
25668     }
25669     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25670     PyMem_Free(_children);
25671     p->level--;
25672     return _seq;
25673 }
25674 
25675 // _loop0_37: param_with_default
25676 static asdl_seq *
_loop0_37_rule(Parser * p)25677 _loop0_37_rule(Parser *p)
25678 {
25679     if (p->level++ == MAXSTACK) {
25680         p->error_indicator = 1;
25681         PyErr_NoMemory();
25682     }
25683     if (p->error_indicator) {
25684         p->level--;
25685         return NULL;
25686     }
25687     void *_res = NULL;
25688     int _mark = p->mark;
25689     void **_children = PyMem_Malloc(sizeof(void *));
25690     if (!_children) {
25691         p->error_indicator = 1;
25692         PyErr_NoMemory();
25693         p->level--;
25694         return NULL;
25695     }
25696     Py_ssize_t _children_capacity = 1;
25697     Py_ssize_t _n = 0;
25698     { // param_with_default
25699         if (p->error_indicator) {
25700             p->level--;
25701             return NULL;
25702         }
25703         D(fprintf(stderr, "%*c> _loop0_37[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
25704         NameDefaultPair* param_with_default_var;
25705         while (
25706             (param_with_default_var = param_with_default_rule(p))  // param_with_default
25707         )
25708         {
25709             _res = param_with_default_var;
25710             if (_n == _children_capacity) {
25711                 _children_capacity *= 2;
25712                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25713                 if (!_new_children) {
25714                     PyMem_Free(_children);
25715                     p->error_indicator = 1;
25716                     PyErr_NoMemory();
25717                     p->level--;
25718                     return NULL;
25719                 }
25720                 _children = _new_children;
25721             }
25722             _children[_n++] = _res;
25723             _mark = p->mark;
25724         }
25725         p->mark = _mark;
25726         D(fprintf(stderr, "%*c%s _loop0_37[%d-%d]: %s failed!\n", p->level, ' ',
25727                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
25728     }
25729     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25730     if (!_seq) {
25731         PyMem_Free(_children);
25732         p->error_indicator = 1;
25733         PyErr_NoMemory();
25734         p->level--;
25735         return NULL;
25736     }
25737     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25738     PyMem_Free(_children);
25739     p->level--;
25740     return _seq;
25741 }
25742 
25743 // _loop0_38: param_with_default
25744 static asdl_seq *
_loop0_38_rule(Parser * p)25745 _loop0_38_rule(Parser *p)
25746 {
25747     if (p->level++ == MAXSTACK) {
25748         p->error_indicator = 1;
25749         PyErr_NoMemory();
25750     }
25751     if (p->error_indicator) {
25752         p->level--;
25753         return NULL;
25754     }
25755     void *_res = NULL;
25756     int _mark = p->mark;
25757     void **_children = PyMem_Malloc(sizeof(void *));
25758     if (!_children) {
25759         p->error_indicator = 1;
25760         PyErr_NoMemory();
25761         p->level--;
25762         return NULL;
25763     }
25764     Py_ssize_t _children_capacity = 1;
25765     Py_ssize_t _n = 0;
25766     { // param_with_default
25767         if (p->error_indicator) {
25768             p->level--;
25769             return NULL;
25770         }
25771         D(fprintf(stderr, "%*c> _loop0_38[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
25772         NameDefaultPair* param_with_default_var;
25773         while (
25774             (param_with_default_var = param_with_default_rule(p))  // param_with_default
25775         )
25776         {
25777             _res = param_with_default_var;
25778             if (_n == _children_capacity) {
25779                 _children_capacity *= 2;
25780                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25781                 if (!_new_children) {
25782                     PyMem_Free(_children);
25783                     p->error_indicator = 1;
25784                     PyErr_NoMemory();
25785                     p->level--;
25786                     return NULL;
25787                 }
25788                 _children = _new_children;
25789             }
25790             _children[_n++] = _res;
25791             _mark = p->mark;
25792         }
25793         p->mark = _mark;
25794         D(fprintf(stderr, "%*c%s _loop0_38[%d-%d]: %s failed!\n", p->level, ' ',
25795                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
25796     }
25797     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25798     if (!_seq) {
25799         PyMem_Free(_children);
25800         p->error_indicator = 1;
25801         PyErr_NoMemory();
25802         p->level--;
25803         return NULL;
25804     }
25805     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25806     PyMem_Free(_children);
25807     p->level--;
25808     return _seq;
25809 }
25810 
25811 // _loop1_39: param_no_default
25812 static asdl_seq *
_loop1_39_rule(Parser * p)25813 _loop1_39_rule(Parser *p)
25814 {
25815     if (p->level++ == MAXSTACK) {
25816         p->error_indicator = 1;
25817         PyErr_NoMemory();
25818     }
25819     if (p->error_indicator) {
25820         p->level--;
25821         return NULL;
25822     }
25823     void *_res = NULL;
25824     int _mark = p->mark;
25825     void **_children = PyMem_Malloc(sizeof(void *));
25826     if (!_children) {
25827         p->error_indicator = 1;
25828         PyErr_NoMemory();
25829         p->level--;
25830         return NULL;
25831     }
25832     Py_ssize_t _children_capacity = 1;
25833     Py_ssize_t _n = 0;
25834     { // param_no_default
25835         if (p->error_indicator) {
25836             p->level--;
25837             return NULL;
25838         }
25839         D(fprintf(stderr, "%*c> _loop1_39[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
25840         arg_ty param_no_default_var;
25841         while (
25842             (param_no_default_var = param_no_default_rule(p))  // param_no_default
25843         )
25844         {
25845             _res = param_no_default_var;
25846             if (_n == _children_capacity) {
25847                 _children_capacity *= 2;
25848                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25849                 if (!_new_children) {
25850                     PyMem_Free(_children);
25851                     p->error_indicator = 1;
25852                     PyErr_NoMemory();
25853                     p->level--;
25854                     return NULL;
25855                 }
25856                 _children = _new_children;
25857             }
25858             _children[_n++] = _res;
25859             _mark = p->mark;
25860         }
25861         p->mark = _mark;
25862         D(fprintf(stderr, "%*c%s _loop1_39[%d-%d]: %s failed!\n", p->level, ' ',
25863                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
25864     }
25865     if (_n == 0 || p->error_indicator) {
25866         PyMem_Free(_children);
25867         p->level--;
25868         return NULL;
25869     }
25870     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25871     if (!_seq) {
25872         PyMem_Free(_children);
25873         p->error_indicator = 1;
25874         PyErr_NoMemory();
25875         p->level--;
25876         return NULL;
25877     }
25878     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25879     PyMem_Free(_children);
25880     p->level--;
25881     return _seq;
25882 }
25883 
25884 // _loop0_40: param_with_default
25885 static asdl_seq *
_loop0_40_rule(Parser * p)25886 _loop0_40_rule(Parser *p)
25887 {
25888     if (p->level++ == MAXSTACK) {
25889         p->error_indicator = 1;
25890         PyErr_NoMemory();
25891     }
25892     if (p->error_indicator) {
25893         p->level--;
25894         return NULL;
25895     }
25896     void *_res = NULL;
25897     int _mark = p->mark;
25898     void **_children = PyMem_Malloc(sizeof(void *));
25899     if (!_children) {
25900         p->error_indicator = 1;
25901         PyErr_NoMemory();
25902         p->level--;
25903         return NULL;
25904     }
25905     Py_ssize_t _children_capacity = 1;
25906     Py_ssize_t _n = 0;
25907     { // param_with_default
25908         if (p->error_indicator) {
25909             p->level--;
25910             return NULL;
25911         }
25912         D(fprintf(stderr, "%*c> _loop0_40[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
25913         NameDefaultPair* param_with_default_var;
25914         while (
25915             (param_with_default_var = param_with_default_rule(p))  // param_with_default
25916         )
25917         {
25918             _res = param_with_default_var;
25919             if (_n == _children_capacity) {
25920                 _children_capacity *= 2;
25921                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25922                 if (!_new_children) {
25923                     PyMem_Free(_children);
25924                     p->error_indicator = 1;
25925                     PyErr_NoMemory();
25926                     p->level--;
25927                     return NULL;
25928                 }
25929                 _children = _new_children;
25930             }
25931             _children[_n++] = _res;
25932             _mark = p->mark;
25933         }
25934         p->mark = _mark;
25935         D(fprintf(stderr, "%*c%s _loop0_40[%d-%d]: %s failed!\n", p->level, ' ',
25936                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
25937     }
25938     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25939     if (!_seq) {
25940         PyMem_Free(_children);
25941         p->error_indicator = 1;
25942         PyErr_NoMemory();
25943         p->level--;
25944         return NULL;
25945     }
25946     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25947     PyMem_Free(_children);
25948     p->level--;
25949     return _seq;
25950 }
25951 
25952 // _loop1_41: param_with_default
25953 static asdl_seq *
_loop1_41_rule(Parser * p)25954 _loop1_41_rule(Parser *p)
25955 {
25956     if (p->level++ == MAXSTACK) {
25957         p->error_indicator = 1;
25958         PyErr_NoMemory();
25959     }
25960     if (p->error_indicator) {
25961         p->level--;
25962         return NULL;
25963     }
25964     void *_res = NULL;
25965     int _mark = p->mark;
25966     void **_children = PyMem_Malloc(sizeof(void *));
25967     if (!_children) {
25968         p->error_indicator = 1;
25969         PyErr_NoMemory();
25970         p->level--;
25971         return NULL;
25972     }
25973     Py_ssize_t _children_capacity = 1;
25974     Py_ssize_t _n = 0;
25975     { // param_with_default
25976         if (p->error_indicator) {
25977             p->level--;
25978             return NULL;
25979         }
25980         D(fprintf(stderr, "%*c> _loop1_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
25981         NameDefaultPair* param_with_default_var;
25982         while (
25983             (param_with_default_var = param_with_default_rule(p))  // param_with_default
25984         )
25985         {
25986             _res = param_with_default_var;
25987             if (_n == _children_capacity) {
25988                 _children_capacity *= 2;
25989                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25990                 if (!_new_children) {
25991                     PyMem_Free(_children);
25992                     p->error_indicator = 1;
25993                     PyErr_NoMemory();
25994                     p->level--;
25995                     return NULL;
25996                 }
25997                 _children = _new_children;
25998             }
25999             _children[_n++] = _res;
26000             _mark = p->mark;
26001         }
26002         p->mark = _mark;
26003         D(fprintf(stderr, "%*c%s _loop1_41[%d-%d]: %s failed!\n", p->level, ' ',
26004                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
26005     }
26006     if (_n == 0 || p->error_indicator) {
26007         PyMem_Free(_children);
26008         p->level--;
26009         return NULL;
26010     }
26011     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26012     if (!_seq) {
26013         PyMem_Free(_children);
26014         p->error_indicator = 1;
26015         PyErr_NoMemory();
26016         p->level--;
26017         return NULL;
26018     }
26019     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26020     PyMem_Free(_children);
26021     p->level--;
26022     return _seq;
26023 }
26024 
26025 // _loop1_42: param_no_default
26026 static asdl_seq *
_loop1_42_rule(Parser * p)26027 _loop1_42_rule(Parser *p)
26028 {
26029     if (p->level++ == MAXSTACK) {
26030         p->error_indicator = 1;
26031         PyErr_NoMemory();
26032     }
26033     if (p->error_indicator) {
26034         p->level--;
26035         return NULL;
26036     }
26037     void *_res = NULL;
26038     int _mark = p->mark;
26039     void **_children = PyMem_Malloc(sizeof(void *));
26040     if (!_children) {
26041         p->error_indicator = 1;
26042         PyErr_NoMemory();
26043         p->level--;
26044         return NULL;
26045     }
26046     Py_ssize_t _children_capacity = 1;
26047     Py_ssize_t _n = 0;
26048     { // param_no_default
26049         if (p->error_indicator) {
26050             p->level--;
26051             return NULL;
26052         }
26053         D(fprintf(stderr, "%*c> _loop1_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
26054         arg_ty param_no_default_var;
26055         while (
26056             (param_no_default_var = param_no_default_rule(p))  // param_no_default
26057         )
26058         {
26059             _res = param_no_default_var;
26060             if (_n == _children_capacity) {
26061                 _children_capacity *= 2;
26062                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26063                 if (!_new_children) {
26064                     PyMem_Free(_children);
26065                     p->error_indicator = 1;
26066                     PyErr_NoMemory();
26067                     p->level--;
26068                     return NULL;
26069                 }
26070                 _children = _new_children;
26071             }
26072             _children[_n++] = _res;
26073             _mark = p->mark;
26074         }
26075         p->mark = _mark;
26076         D(fprintf(stderr, "%*c%s _loop1_42[%d-%d]: %s failed!\n", p->level, ' ',
26077                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
26078     }
26079     if (_n == 0 || p->error_indicator) {
26080         PyMem_Free(_children);
26081         p->level--;
26082         return NULL;
26083     }
26084     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26085     if (!_seq) {
26086         PyMem_Free(_children);
26087         p->error_indicator = 1;
26088         PyErr_NoMemory();
26089         p->level--;
26090         return NULL;
26091     }
26092     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26093     PyMem_Free(_children);
26094     p->level--;
26095     return _seq;
26096 }
26097 
26098 // _loop1_43: param_no_default
26099 static asdl_seq *
_loop1_43_rule(Parser * p)26100 _loop1_43_rule(Parser *p)
26101 {
26102     if (p->level++ == MAXSTACK) {
26103         p->error_indicator = 1;
26104         PyErr_NoMemory();
26105     }
26106     if (p->error_indicator) {
26107         p->level--;
26108         return NULL;
26109     }
26110     void *_res = NULL;
26111     int _mark = p->mark;
26112     void **_children = PyMem_Malloc(sizeof(void *));
26113     if (!_children) {
26114         p->error_indicator = 1;
26115         PyErr_NoMemory();
26116         p->level--;
26117         return NULL;
26118     }
26119     Py_ssize_t _children_capacity = 1;
26120     Py_ssize_t _n = 0;
26121     { // param_no_default
26122         if (p->error_indicator) {
26123             p->level--;
26124             return NULL;
26125         }
26126         D(fprintf(stderr, "%*c> _loop1_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
26127         arg_ty param_no_default_var;
26128         while (
26129             (param_no_default_var = param_no_default_rule(p))  // param_no_default
26130         )
26131         {
26132             _res = param_no_default_var;
26133             if (_n == _children_capacity) {
26134                 _children_capacity *= 2;
26135                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26136                 if (!_new_children) {
26137                     PyMem_Free(_children);
26138                     p->error_indicator = 1;
26139                     PyErr_NoMemory();
26140                     p->level--;
26141                     return NULL;
26142                 }
26143                 _children = _new_children;
26144             }
26145             _children[_n++] = _res;
26146             _mark = p->mark;
26147         }
26148         p->mark = _mark;
26149         D(fprintf(stderr, "%*c%s _loop1_43[%d-%d]: %s failed!\n", p->level, ' ',
26150                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
26151     }
26152     if (_n == 0 || p->error_indicator) {
26153         PyMem_Free(_children);
26154         p->level--;
26155         return NULL;
26156     }
26157     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26158     if (!_seq) {
26159         PyMem_Free(_children);
26160         p->error_indicator = 1;
26161         PyErr_NoMemory();
26162         p->level--;
26163         return NULL;
26164     }
26165     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26166     PyMem_Free(_children);
26167     p->level--;
26168     return _seq;
26169 }
26170 
26171 // _loop0_44: param_no_default
26172 static asdl_seq *
_loop0_44_rule(Parser * p)26173 _loop0_44_rule(Parser *p)
26174 {
26175     if (p->level++ == MAXSTACK) {
26176         p->error_indicator = 1;
26177         PyErr_NoMemory();
26178     }
26179     if (p->error_indicator) {
26180         p->level--;
26181         return NULL;
26182     }
26183     void *_res = NULL;
26184     int _mark = p->mark;
26185     void **_children = PyMem_Malloc(sizeof(void *));
26186     if (!_children) {
26187         p->error_indicator = 1;
26188         PyErr_NoMemory();
26189         p->level--;
26190         return NULL;
26191     }
26192     Py_ssize_t _children_capacity = 1;
26193     Py_ssize_t _n = 0;
26194     { // param_no_default
26195         if (p->error_indicator) {
26196             p->level--;
26197             return NULL;
26198         }
26199         D(fprintf(stderr, "%*c> _loop0_44[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
26200         arg_ty param_no_default_var;
26201         while (
26202             (param_no_default_var = param_no_default_rule(p))  // param_no_default
26203         )
26204         {
26205             _res = param_no_default_var;
26206             if (_n == _children_capacity) {
26207                 _children_capacity *= 2;
26208                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26209                 if (!_new_children) {
26210                     PyMem_Free(_children);
26211                     p->error_indicator = 1;
26212                     PyErr_NoMemory();
26213                     p->level--;
26214                     return NULL;
26215                 }
26216                 _children = _new_children;
26217             }
26218             _children[_n++] = _res;
26219             _mark = p->mark;
26220         }
26221         p->mark = _mark;
26222         D(fprintf(stderr, "%*c%s _loop0_44[%d-%d]: %s failed!\n", p->level, ' ',
26223                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
26224     }
26225     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26226     if (!_seq) {
26227         PyMem_Free(_children);
26228         p->error_indicator = 1;
26229         PyErr_NoMemory();
26230         p->level--;
26231         return NULL;
26232     }
26233     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26234     PyMem_Free(_children);
26235     p->level--;
26236     return _seq;
26237 }
26238 
26239 // _loop1_45: param_with_default
26240 static asdl_seq *
_loop1_45_rule(Parser * p)26241 _loop1_45_rule(Parser *p)
26242 {
26243     if (p->level++ == MAXSTACK) {
26244         p->error_indicator = 1;
26245         PyErr_NoMemory();
26246     }
26247     if (p->error_indicator) {
26248         p->level--;
26249         return NULL;
26250     }
26251     void *_res = NULL;
26252     int _mark = p->mark;
26253     void **_children = PyMem_Malloc(sizeof(void *));
26254     if (!_children) {
26255         p->error_indicator = 1;
26256         PyErr_NoMemory();
26257         p->level--;
26258         return NULL;
26259     }
26260     Py_ssize_t _children_capacity = 1;
26261     Py_ssize_t _n = 0;
26262     { // param_with_default
26263         if (p->error_indicator) {
26264             p->level--;
26265             return NULL;
26266         }
26267         D(fprintf(stderr, "%*c> _loop1_45[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
26268         NameDefaultPair* param_with_default_var;
26269         while (
26270             (param_with_default_var = param_with_default_rule(p))  // param_with_default
26271         )
26272         {
26273             _res = param_with_default_var;
26274             if (_n == _children_capacity) {
26275                 _children_capacity *= 2;
26276                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26277                 if (!_new_children) {
26278                     PyMem_Free(_children);
26279                     p->error_indicator = 1;
26280                     PyErr_NoMemory();
26281                     p->level--;
26282                     return NULL;
26283                 }
26284                 _children = _new_children;
26285             }
26286             _children[_n++] = _res;
26287             _mark = p->mark;
26288         }
26289         p->mark = _mark;
26290         D(fprintf(stderr, "%*c%s _loop1_45[%d-%d]: %s failed!\n", p->level, ' ',
26291                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
26292     }
26293     if (_n == 0 || p->error_indicator) {
26294         PyMem_Free(_children);
26295         p->level--;
26296         return NULL;
26297     }
26298     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26299     if (!_seq) {
26300         PyMem_Free(_children);
26301         p->error_indicator = 1;
26302         PyErr_NoMemory();
26303         p->level--;
26304         return NULL;
26305     }
26306     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26307     PyMem_Free(_children);
26308     p->level--;
26309     return _seq;
26310 }
26311 
26312 // _loop0_46: param_no_default
26313 static asdl_seq *
_loop0_46_rule(Parser * p)26314 _loop0_46_rule(Parser *p)
26315 {
26316     if (p->level++ == MAXSTACK) {
26317         p->error_indicator = 1;
26318         PyErr_NoMemory();
26319     }
26320     if (p->error_indicator) {
26321         p->level--;
26322         return NULL;
26323     }
26324     void *_res = NULL;
26325     int _mark = p->mark;
26326     void **_children = PyMem_Malloc(sizeof(void *));
26327     if (!_children) {
26328         p->error_indicator = 1;
26329         PyErr_NoMemory();
26330         p->level--;
26331         return NULL;
26332     }
26333     Py_ssize_t _children_capacity = 1;
26334     Py_ssize_t _n = 0;
26335     { // param_no_default
26336         if (p->error_indicator) {
26337             p->level--;
26338             return NULL;
26339         }
26340         D(fprintf(stderr, "%*c> _loop0_46[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
26341         arg_ty param_no_default_var;
26342         while (
26343             (param_no_default_var = param_no_default_rule(p))  // param_no_default
26344         )
26345         {
26346             _res = param_no_default_var;
26347             if (_n == _children_capacity) {
26348                 _children_capacity *= 2;
26349                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26350                 if (!_new_children) {
26351                     PyMem_Free(_children);
26352                     p->error_indicator = 1;
26353                     PyErr_NoMemory();
26354                     p->level--;
26355                     return NULL;
26356                 }
26357                 _children = _new_children;
26358             }
26359             _children[_n++] = _res;
26360             _mark = p->mark;
26361         }
26362         p->mark = _mark;
26363         D(fprintf(stderr, "%*c%s _loop0_46[%d-%d]: %s failed!\n", p->level, ' ',
26364                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
26365     }
26366     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26367     if (!_seq) {
26368         PyMem_Free(_children);
26369         p->error_indicator = 1;
26370         PyErr_NoMemory();
26371         p->level--;
26372         return NULL;
26373     }
26374     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26375     PyMem_Free(_children);
26376     p->level--;
26377     return _seq;
26378 }
26379 
26380 // _loop1_47: param_with_default
26381 static asdl_seq *
_loop1_47_rule(Parser * p)26382 _loop1_47_rule(Parser *p)
26383 {
26384     if (p->level++ == MAXSTACK) {
26385         p->error_indicator = 1;
26386         PyErr_NoMemory();
26387     }
26388     if (p->error_indicator) {
26389         p->level--;
26390         return NULL;
26391     }
26392     void *_res = NULL;
26393     int _mark = p->mark;
26394     void **_children = PyMem_Malloc(sizeof(void *));
26395     if (!_children) {
26396         p->error_indicator = 1;
26397         PyErr_NoMemory();
26398         p->level--;
26399         return NULL;
26400     }
26401     Py_ssize_t _children_capacity = 1;
26402     Py_ssize_t _n = 0;
26403     { // param_with_default
26404         if (p->error_indicator) {
26405             p->level--;
26406             return NULL;
26407         }
26408         D(fprintf(stderr, "%*c> _loop1_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
26409         NameDefaultPair* param_with_default_var;
26410         while (
26411             (param_with_default_var = param_with_default_rule(p))  // param_with_default
26412         )
26413         {
26414             _res = param_with_default_var;
26415             if (_n == _children_capacity) {
26416                 _children_capacity *= 2;
26417                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26418                 if (!_new_children) {
26419                     PyMem_Free(_children);
26420                     p->error_indicator = 1;
26421                     PyErr_NoMemory();
26422                     p->level--;
26423                     return NULL;
26424                 }
26425                 _children = _new_children;
26426             }
26427             _children[_n++] = _res;
26428             _mark = p->mark;
26429         }
26430         p->mark = _mark;
26431         D(fprintf(stderr, "%*c%s _loop1_47[%d-%d]: %s failed!\n", p->level, ' ',
26432                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
26433     }
26434     if (_n == 0 || p->error_indicator) {
26435         PyMem_Free(_children);
26436         p->level--;
26437         return NULL;
26438     }
26439     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26440     if (!_seq) {
26441         PyMem_Free(_children);
26442         p->error_indicator = 1;
26443         PyErr_NoMemory();
26444         p->level--;
26445         return NULL;
26446     }
26447     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26448     PyMem_Free(_children);
26449     p->level--;
26450     return _seq;
26451 }
26452 
26453 // _loop0_48: param_maybe_default
26454 static asdl_seq *
_loop0_48_rule(Parser * p)26455 _loop0_48_rule(Parser *p)
26456 {
26457     if (p->level++ == MAXSTACK) {
26458         p->error_indicator = 1;
26459         PyErr_NoMemory();
26460     }
26461     if (p->error_indicator) {
26462         p->level--;
26463         return NULL;
26464     }
26465     void *_res = NULL;
26466     int _mark = p->mark;
26467     void **_children = PyMem_Malloc(sizeof(void *));
26468     if (!_children) {
26469         p->error_indicator = 1;
26470         PyErr_NoMemory();
26471         p->level--;
26472         return NULL;
26473     }
26474     Py_ssize_t _children_capacity = 1;
26475     Py_ssize_t _n = 0;
26476     { // param_maybe_default
26477         if (p->error_indicator) {
26478             p->level--;
26479             return NULL;
26480         }
26481         D(fprintf(stderr, "%*c> _loop0_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
26482         NameDefaultPair* param_maybe_default_var;
26483         while (
26484             (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
26485         )
26486         {
26487             _res = param_maybe_default_var;
26488             if (_n == _children_capacity) {
26489                 _children_capacity *= 2;
26490                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26491                 if (!_new_children) {
26492                     PyMem_Free(_children);
26493                     p->error_indicator = 1;
26494                     PyErr_NoMemory();
26495                     p->level--;
26496                     return NULL;
26497                 }
26498                 _children = _new_children;
26499             }
26500             _children[_n++] = _res;
26501             _mark = p->mark;
26502         }
26503         p->mark = _mark;
26504         D(fprintf(stderr, "%*c%s _loop0_48[%d-%d]: %s failed!\n", p->level, ' ',
26505                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
26506     }
26507     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26508     if (!_seq) {
26509         PyMem_Free(_children);
26510         p->error_indicator = 1;
26511         PyErr_NoMemory();
26512         p->level--;
26513         return NULL;
26514     }
26515     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26516     PyMem_Free(_children);
26517     p->level--;
26518     return _seq;
26519 }
26520 
26521 // _loop0_49: param_maybe_default
26522 static asdl_seq *
_loop0_49_rule(Parser * p)26523 _loop0_49_rule(Parser *p)
26524 {
26525     if (p->level++ == MAXSTACK) {
26526         p->error_indicator = 1;
26527         PyErr_NoMemory();
26528     }
26529     if (p->error_indicator) {
26530         p->level--;
26531         return NULL;
26532     }
26533     void *_res = NULL;
26534     int _mark = p->mark;
26535     void **_children = PyMem_Malloc(sizeof(void *));
26536     if (!_children) {
26537         p->error_indicator = 1;
26538         PyErr_NoMemory();
26539         p->level--;
26540         return NULL;
26541     }
26542     Py_ssize_t _children_capacity = 1;
26543     Py_ssize_t _n = 0;
26544     { // param_maybe_default
26545         if (p->error_indicator) {
26546             p->level--;
26547             return NULL;
26548         }
26549         D(fprintf(stderr, "%*c> _loop0_49[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
26550         NameDefaultPair* param_maybe_default_var;
26551         while (
26552             (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
26553         )
26554         {
26555             _res = param_maybe_default_var;
26556             if (_n == _children_capacity) {
26557                 _children_capacity *= 2;
26558                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26559                 if (!_new_children) {
26560                     PyMem_Free(_children);
26561                     p->error_indicator = 1;
26562                     PyErr_NoMemory();
26563                     p->level--;
26564                     return NULL;
26565                 }
26566                 _children = _new_children;
26567             }
26568             _children[_n++] = _res;
26569             _mark = p->mark;
26570         }
26571         p->mark = _mark;
26572         D(fprintf(stderr, "%*c%s _loop0_49[%d-%d]: %s failed!\n", p->level, ' ',
26573                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
26574     }
26575     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26576     if (!_seq) {
26577         PyMem_Free(_children);
26578         p->error_indicator = 1;
26579         PyErr_NoMemory();
26580         p->level--;
26581         return NULL;
26582     }
26583     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26584     PyMem_Free(_children);
26585     p->level--;
26586     return _seq;
26587 }
26588 
26589 // _loop1_50: param_maybe_default
26590 static asdl_seq *
_loop1_50_rule(Parser * p)26591 _loop1_50_rule(Parser *p)
26592 {
26593     if (p->level++ == MAXSTACK) {
26594         p->error_indicator = 1;
26595         PyErr_NoMemory();
26596     }
26597     if (p->error_indicator) {
26598         p->level--;
26599         return NULL;
26600     }
26601     void *_res = NULL;
26602     int _mark = p->mark;
26603     void **_children = PyMem_Malloc(sizeof(void *));
26604     if (!_children) {
26605         p->error_indicator = 1;
26606         PyErr_NoMemory();
26607         p->level--;
26608         return NULL;
26609     }
26610     Py_ssize_t _children_capacity = 1;
26611     Py_ssize_t _n = 0;
26612     { // param_maybe_default
26613         if (p->error_indicator) {
26614             p->level--;
26615             return NULL;
26616         }
26617         D(fprintf(stderr, "%*c> _loop1_50[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
26618         NameDefaultPair* param_maybe_default_var;
26619         while (
26620             (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
26621         )
26622         {
26623             _res = param_maybe_default_var;
26624             if (_n == _children_capacity) {
26625                 _children_capacity *= 2;
26626                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26627                 if (!_new_children) {
26628                     PyMem_Free(_children);
26629                     p->error_indicator = 1;
26630                     PyErr_NoMemory();
26631                     p->level--;
26632                     return NULL;
26633                 }
26634                 _children = _new_children;
26635             }
26636             _children[_n++] = _res;
26637             _mark = p->mark;
26638         }
26639         p->mark = _mark;
26640         D(fprintf(stderr, "%*c%s _loop1_50[%d-%d]: %s failed!\n", p->level, ' ',
26641                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
26642     }
26643     if (_n == 0 || p->error_indicator) {
26644         PyMem_Free(_children);
26645         p->level--;
26646         return NULL;
26647     }
26648     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26649     if (!_seq) {
26650         PyMem_Free(_children);
26651         p->error_indicator = 1;
26652         PyErr_NoMemory();
26653         p->level--;
26654         return NULL;
26655     }
26656     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26657     PyMem_Free(_children);
26658     p->level--;
26659     return _seq;
26660 }
26661 
26662 // _loop0_52: ',' with_item
26663 static asdl_seq *
_loop0_52_rule(Parser * p)26664 _loop0_52_rule(Parser *p)
26665 {
26666     if (p->level++ == MAXSTACK) {
26667         p->error_indicator = 1;
26668         PyErr_NoMemory();
26669     }
26670     if (p->error_indicator) {
26671         p->level--;
26672         return NULL;
26673     }
26674     void *_res = NULL;
26675     int _mark = p->mark;
26676     void **_children = PyMem_Malloc(sizeof(void *));
26677     if (!_children) {
26678         p->error_indicator = 1;
26679         PyErr_NoMemory();
26680         p->level--;
26681         return NULL;
26682     }
26683     Py_ssize_t _children_capacity = 1;
26684     Py_ssize_t _n = 0;
26685     { // ',' with_item
26686         if (p->error_indicator) {
26687             p->level--;
26688             return NULL;
26689         }
26690         D(fprintf(stderr, "%*c> _loop0_52[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
26691         Token * _literal;
26692         withitem_ty elem;
26693         while (
26694             (_literal = _PyPegen_expect_token(p, 12))  // token=','
26695             &&
26696             (elem = with_item_rule(p))  // with_item
26697         )
26698         {
26699             _res = elem;
26700             if (_res == NULL && PyErr_Occurred()) {
26701                 p->error_indicator = 1;
26702                 PyMem_Free(_children);
26703                 p->level--;
26704                 return NULL;
26705             }
26706             if (_n == _children_capacity) {
26707                 _children_capacity *= 2;
26708                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26709                 if (!_new_children) {
26710                     PyMem_Free(_children);
26711                     p->error_indicator = 1;
26712                     PyErr_NoMemory();
26713                     p->level--;
26714                     return NULL;
26715                 }
26716                 _children = _new_children;
26717             }
26718             _children[_n++] = _res;
26719             _mark = p->mark;
26720         }
26721         p->mark = _mark;
26722         D(fprintf(stderr, "%*c%s _loop0_52[%d-%d]: %s failed!\n", p->level, ' ',
26723                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
26724     }
26725     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26726     if (!_seq) {
26727         PyMem_Free(_children);
26728         p->error_indicator = 1;
26729         PyErr_NoMemory();
26730         p->level--;
26731         return NULL;
26732     }
26733     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26734     PyMem_Free(_children);
26735     p->level--;
26736     return _seq;
26737 }
26738 
26739 // _gather_51: with_item _loop0_52
26740 static asdl_seq *
_gather_51_rule(Parser * p)26741 _gather_51_rule(Parser *p)
26742 {
26743     if (p->level++ == MAXSTACK) {
26744         p->error_indicator = 1;
26745         PyErr_NoMemory();
26746     }
26747     if (p->error_indicator) {
26748         p->level--;
26749         return NULL;
26750     }
26751     asdl_seq * _res = NULL;
26752     int _mark = p->mark;
26753     { // with_item _loop0_52
26754         if (p->error_indicator) {
26755             p->level--;
26756             return NULL;
26757         }
26758         D(fprintf(stderr, "%*c> _gather_51[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_52"));
26759         withitem_ty elem;
26760         asdl_seq * seq;
26761         if (
26762             (elem = with_item_rule(p))  // with_item
26763             &&
26764             (seq = _loop0_52_rule(p))  // _loop0_52
26765         )
26766         {
26767             D(fprintf(stderr, "%*c+ _gather_51[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_52"));
26768             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
26769             goto done;
26770         }
26771         p->mark = _mark;
26772         D(fprintf(stderr, "%*c%s _gather_51[%d-%d]: %s failed!\n", p->level, ' ',
26773                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_52"));
26774     }
26775     _res = NULL;
26776   done:
26777     p->level--;
26778     return _res;
26779 }
26780 
26781 // _loop0_54: ',' with_item
26782 static asdl_seq *
_loop0_54_rule(Parser * p)26783 _loop0_54_rule(Parser *p)
26784 {
26785     if (p->level++ == MAXSTACK) {
26786         p->error_indicator = 1;
26787         PyErr_NoMemory();
26788     }
26789     if (p->error_indicator) {
26790         p->level--;
26791         return NULL;
26792     }
26793     void *_res = NULL;
26794     int _mark = p->mark;
26795     void **_children = PyMem_Malloc(sizeof(void *));
26796     if (!_children) {
26797         p->error_indicator = 1;
26798         PyErr_NoMemory();
26799         p->level--;
26800         return NULL;
26801     }
26802     Py_ssize_t _children_capacity = 1;
26803     Py_ssize_t _n = 0;
26804     { // ',' with_item
26805         if (p->error_indicator) {
26806             p->level--;
26807             return NULL;
26808         }
26809         D(fprintf(stderr, "%*c> _loop0_54[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
26810         Token * _literal;
26811         withitem_ty elem;
26812         while (
26813             (_literal = _PyPegen_expect_token(p, 12))  // token=','
26814             &&
26815             (elem = with_item_rule(p))  // with_item
26816         )
26817         {
26818             _res = elem;
26819             if (_res == NULL && PyErr_Occurred()) {
26820                 p->error_indicator = 1;
26821                 PyMem_Free(_children);
26822                 p->level--;
26823                 return NULL;
26824             }
26825             if (_n == _children_capacity) {
26826                 _children_capacity *= 2;
26827                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26828                 if (!_new_children) {
26829                     PyMem_Free(_children);
26830                     p->error_indicator = 1;
26831                     PyErr_NoMemory();
26832                     p->level--;
26833                     return NULL;
26834                 }
26835                 _children = _new_children;
26836             }
26837             _children[_n++] = _res;
26838             _mark = p->mark;
26839         }
26840         p->mark = _mark;
26841         D(fprintf(stderr, "%*c%s _loop0_54[%d-%d]: %s failed!\n", p->level, ' ',
26842                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
26843     }
26844     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26845     if (!_seq) {
26846         PyMem_Free(_children);
26847         p->error_indicator = 1;
26848         PyErr_NoMemory();
26849         p->level--;
26850         return NULL;
26851     }
26852     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26853     PyMem_Free(_children);
26854     p->level--;
26855     return _seq;
26856 }
26857 
26858 // _gather_53: with_item _loop0_54
26859 static asdl_seq *
_gather_53_rule(Parser * p)26860 _gather_53_rule(Parser *p)
26861 {
26862     if (p->level++ == MAXSTACK) {
26863         p->error_indicator = 1;
26864         PyErr_NoMemory();
26865     }
26866     if (p->error_indicator) {
26867         p->level--;
26868         return NULL;
26869     }
26870     asdl_seq * _res = NULL;
26871     int _mark = p->mark;
26872     { // with_item _loop0_54
26873         if (p->error_indicator) {
26874             p->level--;
26875             return NULL;
26876         }
26877         D(fprintf(stderr, "%*c> _gather_53[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_54"));
26878         withitem_ty elem;
26879         asdl_seq * seq;
26880         if (
26881             (elem = with_item_rule(p))  // with_item
26882             &&
26883             (seq = _loop0_54_rule(p))  // _loop0_54
26884         )
26885         {
26886             D(fprintf(stderr, "%*c+ _gather_53[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_54"));
26887             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
26888             goto done;
26889         }
26890         p->mark = _mark;
26891         D(fprintf(stderr, "%*c%s _gather_53[%d-%d]: %s failed!\n", p->level, ' ',
26892                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_54"));
26893     }
26894     _res = NULL;
26895   done:
26896     p->level--;
26897     return _res;
26898 }
26899 
26900 // _loop0_56: ',' with_item
26901 static asdl_seq *
_loop0_56_rule(Parser * p)26902 _loop0_56_rule(Parser *p)
26903 {
26904     if (p->level++ == MAXSTACK) {
26905         p->error_indicator = 1;
26906         PyErr_NoMemory();
26907     }
26908     if (p->error_indicator) {
26909         p->level--;
26910         return NULL;
26911     }
26912     void *_res = NULL;
26913     int _mark = p->mark;
26914     void **_children = PyMem_Malloc(sizeof(void *));
26915     if (!_children) {
26916         p->error_indicator = 1;
26917         PyErr_NoMemory();
26918         p->level--;
26919         return NULL;
26920     }
26921     Py_ssize_t _children_capacity = 1;
26922     Py_ssize_t _n = 0;
26923     { // ',' with_item
26924         if (p->error_indicator) {
26925             p->level--;
26926             return NULL;
26927         }
26928         D(fprintf(stderr, "%*c> _loop0_56[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
26929         Token * _literal;
26930         withitem_ty elem;
26931         while (
26932             (_literal = _PyPegen_expect_token(p, 12))  // token=','
26933             &&
26934             (elem = with_item_rule(p))  // with_item
26935         )
26936         {
26937             _res = elem;
26938             if (_res == NULL && PyErr_Occurred()) {
26939                 p->error_indicator = 1;
26940                 PyMem_Free(_children);
26941                 p->level--;
26942                 return NULL;
26943             }
26944             if (_n == _children_capacity) {
26945                 _children_capacity *= 2;
26946                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26947                 if (!_new_children) {
26948                     PyMem_Free(_children);
26949                     p->error_indicator = 1;
26950                     PyErr_NoMemory();
26951                     p->level--;
26952                     return NULL;
26953                 }
26954                 _children = _new_children;
26955             }
26956             _children[_n++] = _res;
26957             _mark = p->mark;
26958         }
26959         p->mark = _mark;
26960         D(fprintf(stderr, "%*c%s _loop0_56[%d-%d]: %s failed!\n", p->level, ' ',
26961                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
26962     }
26963     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26964     if (!_seq) {
26965         PyMem_Free(_children);
26966         p->error_indicator = 1;
26967         PyErr_NoMemory();
26968         p->level--;
26969         return NULL;
26970     }
26971     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26972     PyMem_Free(_children);
26973     p->level--;
26974     return _seq;
26975 }
26976 
26977 // _gather_55: with_item _loop0_56
26978 static asdl_seq *
_gather_55_rule(Parser * p)26979 _gather_55_rule(Parser *p)
26980 {
26981     if (p->level++ == MAXSTACK) {
26982         p->error_indicator = 1;
26983         PyErr_NoMemory();
26984     }
26985     if (p->error_indicator) {
26986         p->level--;
26987         return NULL;
26988     }
26989     asdl_seq * _res = NULL;
26990     int _mark = p->mark;
26991     { // with_item _loop0_56
26992         if (p->error_indicator) {
26993             p->level--;
26994             return NULL;
26995         }
26996         D(fprintf(stderr, "%*c> _gather_55[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_56"));
26997         withitem_ty elem;
26998         asdl_seq * seq;
26999         if (
27000             (elem = with_item_rule(p))  // with_item
27001             &&
27002             (seq = _loop0_56_rule(p))  // _loop0_56
27003         )
27004         {
27005             D(fprintf(stderr, "%*c+ _gather_55[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_56"));
27006             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
27007             goto done;
27008         }
27009         p->mark = _mark;
27010         D(fprintf(stderr, "%*c%s _gather_55[%d-%d]: %s failed!\n", p->level, ' ',
27011                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_56"));
27012     }
27013     _res = NULL;
27014   done:
27015     p->level--;
27016     return _res;
27017 }
27018 
27019 // _loop0_58: ',' with_item
27020 static asdl_seq *
_loop0_58_rule(Parser * p)27021 _loop0_58_rule(Parser *p)
27022 {
27023     if (p->level++ == MAXSTACK) {
27024         p->error_indicator = 1;
27025         PyErr_NoMemory();
27026     }
27027     if (p->error_indicator) {
27028         p->level--;
27029         return NULL;
27030     }
27031     void *_res = NULL;
27032     int _mark = p->mark;
27033     void **_children = PyMem_Malloc(sizeof(void *));
27034     if (!_children) {
27035         p->error_indicator = 1;
27036         PyErr_NoMemory();
27037         p->level--;
27038         return NULL;
27039     }
27040     Py_ssize_t _children_capacity = 1;
27041     Py_ssize_t _n = 0;
27042     { // ',' with_item
27043         if (p->error_indicator) {
27044             p->level--;
27045             return NULL;
27046         }
27047         D(fprintf(stderr, "%*c> _loop0_58[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
27048         Token * _literal;
27049         withitem_ty elem;
27050         while (
27051             (_literal = _PyPegen_expect_token(p, 12))  // token=','
27052             &&
27053             (elem = with_item_rule(p))  // with_item
27054         )
27055         {
27056             _res = elem;
27057             if (_res == NULL && PyErr_Occurred()) {
27058                 p->error_indicator = 1;
27059                 PyMem_Free(_children);
27060                 p->level--;
27061                 return NULL;
27062             }
27063             if (_n == _children_capacity) {
27064                 _children_capacity *= 2;
27065                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27066                 if (!_new_children) {
27067                     PyMem_Free(_children);
27068                     p->error_indicator = 1;
27069                     PyErr_NoMemory();
27070                     p->level--;
27071                     return NULL;
27072                 }
27073                 _children = _new_children;
27074             }
27075             _children[_n++] = _res;
27076             _mark = p->mark;
27077         }
27078         p->mark = _mark;
27079         D(fprintf(stderr, "%*c%s _loop0_58[%d-%d]: %s failed!\n", p->level, ' ',
27080                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
27081     }
27082     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27083     if (!_seq) {
27084         PyMem_Free(_children);
27085         p->error_indicator = 1;
27086         PyErr_NoMemory();
27087         p->level--;
27088         return NULL;
27089     }
27090     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27091     PyMem_Free(_children);
27092     p->level--;
27093     return _seq;
27094 }
27095 
27096 // _gather_57: with_item _loop0_58
27097 static asdl_seq *
_gather_57_rule(Parser * p)27098 _gather_57_rule(Parser *p)
27099 {
27100     if (p->level++ == MAXSTACK) {
27101         p->error_indicator = 1;
27102         PyErr_NoMemory();
27103     }
27104     if (p->error_indicator) {
27105         p->level--;
27106         return NULL;
27107     }
27108     asdl_seq * _res = NULL;
27109     int _mark = p->mark;
27110     { // with_item _loop0_58
27111         if (p->error_indicator) {
27112             p->level--;
27113             return NULL;
27114         }
27115         D(fprintf(stderr, "%*c> _gather_57[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_58"));
27116         withitem_ty elem;
27117         asdl_seq * seq;
27118         if (
27119             (elem = with_item_rule(p))  // with_item
27120             &&
27121             (seq = _loop0_58_rule(p))  // _loop0_58
27122         )
27123         {
27124             D(fprintf(stderr, "%*c+ _gather_57[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_58"));
27125             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
27126             goto done;
27127         }
27128         p->mark = _mark;
27129         D(fprintf(stderr, "%*c%s _gather_57[%d-%d]: %s failed!\n", p->level, ' ',
27130                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_58"));
27131     }
27132     _res = NULL;
27133   done:
27134     p->level--;
27135     return _res;
27136 }
27137 
27138 // _tmp_59: ',' | ')' | ':'
27139 static void *
_tmp_59_rule(Parser * p)27140 _tmp_59_rule(Parser *p)
27141 {
27142     if (p->level++ == MAXSTACK) {
27143         p->error_indicator = 1;
27144         PyErr_NoMemory();
27145     }
27146     if (p->error_indicator) {
27147         p->level--;
27148         return NULL;
27149     }
27150     void * _res = NULL;
27151     int _mark = p->mark;
27152     { // ','
27153         if (p->error_indicator) {
27154             p->level--;
27155             return NULL;
27156         }
27157         D(fprintf(stderr, "%*c> _tmp_59[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
27158         Token * _literal;
27159         if (
27160             (_literal = _PyPegen_expect_token(p, 12))  // token=','
27161         )
27162         {
27163             D(fprintf(stderr, "%*c+ _tmp_59[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
27164             _res = _literal;
27165             goto done;
27166         }
27167         p->mark = _mark;
27168         D(fprintf(stderr, "%*c%s _tmp_59[%d-%d]: %s failed!\n", p->level, ' ',
27169                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
27170     }
27171     { // ')'
27172         if (p->error_indicator) {
27173             p->level--;
27174             return NULL;
27175         }
27176         D(fprintf(stderr, "%*c> _tmp_59[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
27177         Token * _literal;
27178         if (
27179             (_literal = _PyPegen_expect_token(p, 8))  // token=')'
27180         )
27181         {
27182             D(fprintf(stderr, "%*c+ _tmp_59[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
27183             _res = _literal;
27184             goto done;
27185         }
27186         p->mark = _mark;
27187         D(fprintf(stderr, "%*c%s _tmp_59[%d-%d]: %s failed!\n", p->level, ' ',
27188                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
27189     }
27190     { // ':'
27191         if (p->error_indicator) {
27192             p->level--;
27193             return NULL;
27194         }
27195         D(fprintf(stderr, "%*c> _tmp_59[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
27196         Token * _literal;
27197         if (
27198             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
27199         )
27200         {
27201             D(fprintf(stderr, "%*c+ _tmp_59[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
27202             _res = _literal;
27203             goto done;
27204         }
27205         p->mark = _mark;
27206         D(fprintf(stderr, "%*c%s _tmp_59[%d-%d]: %s failed!\n", p->level, ' ',
27207                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
27208     }
27209     _res = NULL;
27210   done:
27211     p->level--;
27212     return _res;
27213 }
27214 
27215 // _loop1_60: except_block
27216 static asdl_seq *
_loop1_60_rule(Parser * p)27217 _loop1_60_rule(Parser *p)
27218 {
27219     if (p->level++ == MAXSTACK) {
27220         p->error_indicator = 1;
27221         PyErr_NoMemory();
27222     }
27223     if (p->error_indicator) {
27224         p->level--;
27225         return NULL;
27226     }
27227     void *_res = NULL;
27228     int _mark = p->mark;
27229     void **_children = PyMem_Malloc(sizeof(void *));
27230     if (!_children) {
27231         p->error_indicator = 1;
27232         PyErr_NoMemory();
27233         p->level--;
27234         return NULL;
27235     }
27236     Py_ssize_t _children_capacity = 1;
27237     Py_ssize_t _n = 0;
27238     { // except_block
27239         if (p->error_indicator) {
27240             p->level--;
27241             return NULL;
27242         }
27243         D(fprintf(stderr, "%*c> _loop1_60[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block"));
27244         excepthandler_ty except_block_var;
27245         while (
27246             (except_block_var = except_block_rule(p))  // except_block
27247         )
27248         {
27249             _res = except_block_var;
27250             if (_n == _children_capacity) {
27251                 _children_capacity *= 2;
27252                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27253                 if (!_new_children) {
27254                     PyMem_Free(_children);
27255                     p->error_indicator = 1;
27256                     PyErr_NoMemory();
27257                     p->level--;
27258                     return NULL;
27259                 }
27260                 _children = _new_children;
27261             }
27262             _children[_n++] = _res;
27263             _mark = p->mark;
27264         }
27265         p->mark = _mark;
27266         D(fprintf(stderr, "%*c%s _loop1_60[%d-%d]: %s failed!\n", p->level, ' ',
27267                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_block"));
27268     }
27269     if (_n == 0 || p->error_indicator) {
27270         PyMem_Free(_children);
27271         p->level--;
27272         return NULL;
27273     }
27274     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27275     if (!_seq) {
27276         PyMem_Free(_children);
27277         p->error_indicator = 1;
27278         PyErr_NoMemory();
27279         p->level--;
27280         return NULL;
27281     }
27282     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27283     PyMem_Free(_children);
27284     p->level--;
27285     return _seq;
27286 }
27287 
27288 // _loop1_61: except_star_block
27289 static asdl_seq *
_loop1_61_rule(Parser * p)27290 _loop1_61_rule(Parser *p)
27291 {
27292     if (p->level++ == MAXSTACK) {
27293         p->error_indicator = 1;
27294         PyErr_NoMemory();
27295     }
27296     if (p->error_indicator) {
27297         p->level--;
27298         return NULL;
27299     }
27300     void *_res = NULL;
27301     int _mark = p->mark;
27302     void **_children = PyMem_Malloc(sizeof(void *));
27303     if (!_children) {
27304         p->error_indicator = 1;
27305         PyErr_NoMemory();
27306         p->level--;
27307         return NULL;
27308     }
27309     Py_ssize_t _children_capacity = 1;
27310     Py_ssize_t _n = 0;
27311     { // except_star_block
27312         if (p->error_indicator) {
27313             p->level--;
27314             return NULL;
27315         }
27316         D(fprintf(stderr, "%*c> _loop1_61[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_star_block"));
27317         excepthandler_ty except_star_block_var;
27318         while (
27319             (except_star_block_var = except_star_block_rule(p))  // except_star_block
27320         )
27321         {
27322             _res = except_star_block_var;
27323             if (_n == _children_capacity) {
27324                 _children_capacity *= 2;
27325                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27326                 if (!_new_children) {
27327                     PyMem_Free(_children);
27328                     p->error_indicator = 1;
27329                     PyErr_NoMemory();
27330                     p->level--;
27331                     return NULL;
27332                 }
27333                 _children = _new_children;
27334             }
27335             _children[_n++] = _res;
27336             _mark = p->mark;
27337         }
27338         p->mark = _mark;
27339         D(fprintf(stderr, "%*c%s _loop1_61[%d-%d]: %s failed!\n", p->level, ' ',
27340                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_star_block"));
27341     }
27342     if (_n == 0 || p->error_indicator) {
27343         PyMem_Free(_children);
27344         p->level--;
27345         return NULL;
27346     }
27347     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27348     if (!_seq) {
27349         PyMem_Free(_children);
27350         p->error_indicator = 1;
27351         PyErr_NoMemory();
27352         p->level--;
27353         return NULL;
27354     }
27355     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27356     PyMem_Free(_children);
27357     p->level--;
27358     return _seq;
27359 }
27360 
27361 // _tmp_62: 'as' NAME
27362 static void *
_tmp_62_rule(Parser * p)27363 _tmp_62_rule(Parser *p)
27364 {
27365     if (p->level++ == MAXSTACK) {
27366         p->error_indicator = 1;
27367         PyErr_NoMemory();
27368     }
27369     if (p->error_indicator) {
27370         p->level--;
27371         return NULL;
27372     }
27373     void * _res = NULL;
27374     int _mark = p->mark;
27375     { // 'as' NAME
27376         if (p->error_indicator) {
27377             p->level--;
27378             return NULL;
27379         }
27380         D(fprintf(stderr, "%*c> _tmp_62[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
27381         Token * _keyword;
27382         expr_ty z;
27383         if (
27384             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
27385             &&
27386             (z = _PyPegen_name_token(p))  // NAME
27387         )
27388         {
27389             D(fprintf(stderr, "%*c+ _tmp_62[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
27390             _res = z;
27391             if (_res == NULL && PyErr_Occurred()) {
27392                 p->error_indicator = 1;
27393                 p->level--;
27394                 return NULL;
27395             }
27396             goto done;
27397         }
27398         p->mark = _mark;
27399         D(fprintf(stderr, "%*c%s _tmp_62[%d-%d]: %s failed!\n", p->level, ' ',
27400                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
27401     }
27402     _res = NULL;
27403   done:
27404     p->level--;
27405     return _res;
27406 }
27407 
27408 // _tmp_63: 'as' NAME
27409 static void *
_tmp_63_rule(Parser * p)27410 _tmp_63_rule(Parser *p)
27411 {
27412     if (p->level++ == MAXSTACK) {
27413         p->error_indicator = 1;
27414         PyErr_NoMemory();
27415     }
27416     if (p->error_indicator) {
27417         p->level--;
27418         return NULL;
27419     }
27420     void * _res = NULL;
27421     int _mark = p->mark;
27422     { // 'as' NAME
27423         if (p->error_indicator) {
27424             p->level--;
27425             return NULL;
27426         }
27427         D(fprintf(stderr, "%*c> _tmp_63[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
27428         Token * _keyword;
27429         expr_ty z;
27430         if (
27431             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
27432             &&
27433             (z = _PyPegen_name_token(p))  // NAME
27434         )
27435         {
27436             D(fprintf(stderr, "%*c+ _tmp_63[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
27437             _res = z;
27438             if (_res == NULL && PyErr_Occurred()) {
27439                 p->error_indicator = 1;
27440                 p->level--;
27441                 return NULL;
27442             }
27443             goto done;
27444         }
27445         p->mark = _mark;
27446         D(fprintf(stderr, "%*c%s _tmp_63[%d-%d]: %s failed!\n", p->level, ' ',
27447                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
27448     }
27449     _res = NULL;
27450   done:
27451     p->level--;
27452     return _res;
27453 }
27454 
27455 // _loop1_64: case_block
27456 static asdl_seq *
_loop1_64_rule(Parser * p)27457 _loop1_64_rule(Parser *p)
27458 {
27459     if (p->level++ == MAXSTACK) {
27460         p->error_indicator = 1;
27461         PyErr_NoMemory();
27462     }
27463     if (p->error_indicator) {
27464         p->level--;
27465         return NULL;
27466     }
27467     void *_res = NULL;
27468     int _mark = p->mark;
27469     void **_children = PyMem_Malloc(sizeof(void *));
27470     if (!_children) {
27471         p->error_indicator = 1;
27472         PyErr_NoMemory();
27473         p->level--;
27474         return NULL;
27475     }
27476     Py_ssize_t _children_capacity = 1;
27477     Py_ssize_t _n = 0;
27478     { // case_block
27479         if (p->error_indicator) {
27480             p->level--;
27481             return NULL;
27482         }
27483         D(fprintf(stderr, "%*c> _loop1_64[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "case_block"));
27484         match_case_ty case_block_var;
27485         while (
27486             (case_block_var = case_block_rule(p))  // case_block
27487         )
27488         {
27489             _res = case_block_var;
27490             if (_n == _children_capacity) {
27491                 _children_capacity *= 2;
27492                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27493                 if (!_new_children) {
27494                     PyMem_Free(_children);
27495                     p->error_indicator = 1;
27496                     PyErr_NoMemory();
27497                     p->level--;
27498                     return NULL;
27499                 }
27500                 _children = _new_children;
27501             }
27502             _children[_n++] = _res;
27503             _mark = p->mark;
27504         }
27505         p->mark = _mark;
27506         D(fprintf(stderr, "%*c%s _loop1_64[%d-%d]: %s failed!\n", p->level, ' ',
27507                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "case_block"));
27508     }
27509     if (_n == 0 || p->error_indicator) {
27510         PyMem_Free(_children);
27511         p->level--;
27512         return NULL;
27513     }
27514     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27515     if (!_seq) {
27516         PyMem_Free(_children);
27517         p->error_indicator = 1;
27518         PyErr_NoMemory();
27519         p->level--;
27520         return NULL;
27521     }
27522     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27523     PyMem_Free(_children);
27524     p->level--;
27525     return _seq;
27526 }
27527 
27528 // _loop0_66: '|' closed_pattern
27529 static asdl_seq *
_loop0_66_rule(Parser * p)27530 _loop0_66_rule(Parser *p)
27531 {
27532     if (p->level++ == MAXSTACK) {
27533         p->error_indicator = 1;
27534         PyErr_NoMemory();
27535     }
27536     if (p->error_indicator) {
27537         p->level--;
27538         return NULL;
27539     }
27540     void *_res = NULL;
27541     int _mark = p->mark;
27542     void **_children = PyMem_Malloc(sizeof(void *));
27543     if (!_children) {
27544         p->error_indicator = 1;
27545         PyErr_NoMemory();
27546         p->level--;
27547         return NULL;
27548     }
27549     Py_ssize_t _children_capacity = 1;
27550     Py_ssize_t _n = 0;
27551     { // '|' closed_pattern
27552         if (p->error_indicator) {
27553             p->level--;
27554             return NULL;
27555         }
27556         D(fprintf(stderr, "%*c> _loop0_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|' closed_pattern"));
27557         Token * _literal;
27558         pattern_ty elem;
27559         while (
27560             (_literal = _PyPegen_expect_token(p, 18))  // token='|'
27561             &&
27562             (elem = closed_pattern_rule(p))  // closed_pattern
27563         )
27564         {
27565             _res = elem;
27566             if (_res == NULL && PyErr_Occurred()) {
27567                 p->error_indicator = 1;
27568                 PyMem_Free(_children);
27569                 p->level--;
27570                 return NULL;
27571             }
27572             if (_n == _children_capacity) {
27573                 _children_capacity *= 2;
27574                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27575                 if (!_new_children) {
27576                     PyMem_Free(_children);
27577                     p->error_indicator = 1;
27578                     PyErr_NoMemory();
27579                     p->level--;
27580                     return NULL;
27581                 }
27582                 _children = _new_children;
27583             }
27584             _children[_n++] = _res;
27585             _mark = p->mark;
27586         }
27587         p->mark = _mark;
27588         D(fprintf(stderr, "%*c%s _loop0_66[%d-%d]: %s failed!\n", p->level, ' ',
27589                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|' closed_pattern"));
27590     }
27591     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27592     if (!_seq) {
27593         PyMem_Free(_children);
27594         p->error_indicator = 1;
27595         PyErr_NoMemory();
27596         p->level--;
27597         return NULL;
27598     }
27599     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27600     PyMem_Free(_children);
27601     p->level--;
27602     return _seq;
27603 }
27604 
27605 // _gather_65: closed_pattern _loop0_66
27606 static asdl_seq *
_gather_65_rule(Parser * p)27607 _gather_65_rule(Parser *p)
27608 {
27609     if (p->level++ == MAXSTACK) {
27610         p->error_indicator = 1;
27611         PyErr_NoMemory();
27612     }
27613     if (p->error_indicator) {
27614         p->level--;
27615         return NULL;
27616     }
27617     asdl_seq * _res = NULL;
27618     int _mark = p->mark;
27619     { // closed_pattern _loop0_66
27620         if (p->error_indicator) {
27621             p->level--;
27622             return NULL;
27623         }
27624         D(fprintf(stderr, "%*c> _gather_65[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_66"));
27625         pattern_ty elem;
27626         asdl_seq * seq;
27627         if (
27628             (elem = closed_pattern_rule(p))  // closed_pattern
27629             &&
27630             (seq = _loop0_66_rule(p))  // _loop0_66
27631         )
27632         {
27633             D(fprintf(stderr, "%*c+ _gather_65[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_66"));
27634             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
27635             goto done;
27636         }
27637         p->mark = _mark;
27638         D(fprintf(stderr, "%*c%s _gather_65[%d-%d]: %s failed!\n", p->level, ' ',
27639                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "closed_pattern _loop0_66"));
27640     }
27641     _res = NULL;
27642   done:
27643     p->level--;
27644     return _res;
27645 }
27646 
27647 // _tmp_67: '+' | '-'
27648 static void *
_tmp_67_rule(Parser * p)27649 _tmp_67_rule(Parser *p)
27650 {
27651     if (p->level++ == MAXSTACK) {
27652         p->error_indicator = 1;
27653         PyErr_NoMemory();
27654     }
27655     if (p->error_indicator) {
27656         p->level--;
27657         return NULL;
27658     }
27659     void * _res = NULL;
27660     int _mark = p->mark;
27661     { // '+'
27662         if (p->error_indicator) {
27663             p->level--;
27664             return NULL;
27665         }
27666         D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
27667         Token * _literal;
27668         if (
27669             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
27670         )
27671         {
27672             D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
27673             _res = _literal;
27674             goto done;
27675         }
27676         p->mark = _mark;
27677         D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
27678                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
27679     }
27680     { // '-'
27681         if (p->error_indicator) {
27682             p->level--;
27683             return NULL;
27684         }
27685         D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
27686         Token * _literal;
27687         if (
27688             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
27689         )
27690         {
27691             D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
27692             _res = _literal;
27693             goto done;
27694         }
27695         p->mark = _mark;
27696         D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
27697                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
27698     }
27699     _res = NULL;
27700   done:
27701     p->level--;
27702     return _res;
27703 }
27704 
27705 // _tmp_68: '+' | '-'
27706 static void *
_tmp_68_rule(Parser * p)27707 _tmp_68_rule(Parser *p)
27708 {
27709     if (p->level++ == MAXSTACK) {
27710         p->error_indicator = 1;
27711         PyErr_NoMemory();
27712     }
27713     if (p->error_indicator) {
27714         p->level--;
27715         return NULL;
27716     }
27717     void * _res = NULL;
27718     int _mark = p->mark;
27719     { // '+'
27720         if (p->error_indicator) {
27721             p->level--;
27722             return NULL;
27723         }
27724         D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
27725         Token * _literal;
27726         if (
27727             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
27728         )
27729         {
27730             D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
27731             _res = _literal;
27732             goto done;
27733         }
27734         p->mark = _mark;
27735         D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
27736                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
27737     }
27738     { // '-'
27739         if (p->error_indicator) {
27740             p->level--;
27741             return NULL;
27742         }
27743         D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
27744         Token * _literal;
27745         if (
27746             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
27747         )
27748         {
27749             D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
27750             _res = _literal;
27751             goto done;
27752         }
27753         p->mark = _mark;
27754         D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
27755                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
27756     }
27757     _res = NULL;
27758   done:
27759     p->level--;
27760     return _res;
27761 }
27762 
27763 // _tmp_69: '.' | '(' | '='
27764 static void *
_tmp_69_rule(Parser * p)27765 _tmp_69_rule(Parser *p)
27766 {
27767     if (p->level++ == MAXSTACK) {
27768         p->error_indicator = 1;
27769         PyErr_NoMemory();
27770     }
27771     if (p->error_indicator) {
27772         p->level--;
27773         return NULL;
27774     }
27775     void * _res = NULL;
27776     int _mark = p->mark;
27777     { // '.'
27778         if (p->error_indicator) {
27779             p->level--;
27780             return NULL;
27781         }
27782         D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
27783         Token * _literal;
27784         if (
27785             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
27786         )
27787         {
27788             D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
27789             _res = _literal;
27790             goto done;
27791         }
27792         p->mark = _mark;
27793         D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ',
27794                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
27795     }
27796     { // '('
27797         if (p->error_indicator) {
27798             p->level--;
27799             return NULL;
27800         }
27801         D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
27802         Token * _literal;
27803         if (
27804             (_literal = _PyPegen_expect_token(p, 7))  // token='('
27805         )
27806         {
27807             D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
27808             _res = _literal;
27809             goto done;
27810         }
27811         p->mark = _mark;
27812         D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ',
27813                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
27814     }
27815     { // '='
27816         if (p->error_indicator) {
27817             p->level--;
27818             return NULL;
27819         }
27820         D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
27821         Token * _literal;
27822         if (
27823             (_literal = _PyPegen_expect_token(p, 22))  // token='='
27824         )
27825         {
27826             D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
27827             _res = _literal;
27828             goto done;
27829         }
27830         p->mark = _mark;
27831         D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ',
27832                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
27833     }
27834     _res = NULL;
27835   done:
27836     p->level--;
27837     return _res;
27838 }
27839 
27840 // _tmp_70: '.' | '(' | '='
27841 static void *
_tmp_70_rule(Parser * p)27842 _tmp_70_rule(Parser *p)
27843 {
27844     if (p->level++ == MAXSTACK) {
27845         p->error_indicator = 1;
27846         PyErr_NoMemory();
27847     }
27848     if (p->error_indicator) {
27849         p->level--;
27850         return NULL;
27851     }
27852     void * _res = NULL;
27853     int _mark = p->mark;
27854     { // '.'
27855         if (p->error_indicator) {
27856             p->level--;
27857             return NULL;
27858         }
27859         D(fprintf(stderr, "%*c> _tmp_70[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
27860         Token * _literal;
27861         if (
27862             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
27863         )
27864         {
27865             D(fprintf(stderr, "%*c+ _tmp_70[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
27866             _res = _literal;
27867             goto done;
27868         }
27869         p->mark = _mark;
27870         D(fprintf(stderr, "%*c%s _tmp_70[%d-%d]: %s failed!\n", p->level, ' ',
27871                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
27872     }
27873     { // '('
27874         if (p->error_indicator) {
27875             p->level--;
27876             return NULL;
27877         }
27878         D(fprintf(stderr, "%*c> _tmp_70[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
27879         Token * _literal;
27880         if (
27881             (_literal = _PyPegen_expect_token(p, 7))  // token='('
27882         )
27883         {
27884             D(fprintf(stderr, "%*c+ _tmp_70[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
27885             _res = _literal;
27886             goto done;
27887         }
27888         p->mark = _mark;
27889         D(fprintf(stderr, "%*c%s _tmp_70[%d-%d]: %s failed!\n", p->level, ' ',
27890                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
27891     }
27892     { // '='
27893         if (p->error_indicator) {
27894             p->level--;
27895             return NULL;
27896         }
27897         D(fprintf(stderr, "%*c> _tmp_70[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
27898         Token * _literal;
27899         if (
27900             (_literal = _PyPegen_expect_token(p, 22))  // token='='
27901         )
27902         {
27903             D(fprintf(stderr, "%*c+ _tmp_70[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
27904             _res = _literal;
27905             goto done;
27906         }
27907         p->mark = _mark;
27908         D(fprintf(stderr, "%*c%s _tmp_70[%d-%d]: %s failed!\n", p->level, ' ',
27909                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
27910     }
27911     _res = NULL;
27912   done:
27913     p->level--;
27914     return _res;
27915 }
27916 
27917 // _loop0_72: ',' maybe_star_pattern
27918 static asdl_seq *
_loop0_72_rule(Parser * p)27919 _loop0_72_rule(Parser *p)
27920 {
27921     if (p->level++ == MAXSTACK) {
27922         p->error_indicator = 1;
27923         PyErr_NoMemory();
27924     }
27925     if (p->error_indicator) {
27926         p->level--;
27927         return NULL;
27928     }
27929     void *_res = NULL;
27930     int _mark = p->mark;
27931     void **_children = PyMem_Malloc(sizeof(void *));
27932     if (!_children) {
27933         p->error_indicator = 1;
27934         PyErr_NoMemory();
27935         p->level--;
27936         return NULL;
27937     }
27938     Py_ssize_t _children_capacity = 1;
27939     Py_ssize_t _n = 0;
27940     { // ',' maybe_star_pattern
27941         if (p->error_indicator) {
27942             p->level--;
27943             return NULL;
27944         }
27945         D(fprintf(stderr, "%*c> _loop0_72[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' maybe_star_pattern"));
27946         Token * _literal;
27947         pattern_ty elem;
27948         while (
27949             (_literal = _PyPegen_expect_token(p, 12))  // token=','
27950             &&
27951             (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
27952         )
27953         {
27954             _res = elem;
27955             if (_res == NULL && PyErr_Occurred()) {
27956                 p->error_indicator = 1;
27957                 PyMem_Free(_children);
27958                 p->level--;
27959                 return NULL;
27960             }
27961             if (_n == _children_capacity) {
27962                 _children_capacity *= 2;
27963                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27964                 if (!_new_children) {
27965                     PyMem_Free(_children);
27966                     p->error_indicator = 1;
27967                     PyErr_NoMemory();
27968                     p->level--;
27969                     return NULL;
27970                 }
27971                 _children = _new_children;
27972             }
27973             _children[_n++] = _res;
27974             _mark = p->mark;
27975         }
27976         p->mark = _mark;
27977         D(fprintf(stderr, "%*c%s _loop0_72[%d-%d]: %s failed!\n", p->level, ' ',
27978                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' maybe_star_pattern"));
27979     }
27980     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27981     if (!_seq) {
27982         PyMem_Free(_children);
27983         p->error_indicator = 1;
27984         PyErr_NoMemory();
27985         p->level--;
27986         return NULL;
27987     }
27988     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27989     PyMem_Free(_children);
27990     p->level--;
27991     return _seq;
27992 }
27993 
27994 // _gather_71: maybe_star_pattern _loop0_72
27995 static asdl_seq *
_gather_71_rule(Parser * p)27996 _gather_71_rule(Parser *p)
27997 {
27998     if (p->level++ == MAXSTACK) {
27999         p->error_indicator = 1;
28000         PyErr_NoMemory();
28001     }
28002     if (p->error_indicator) {
28003         p->level--;
28004         return NULL;
28005     }
28006     asdl_seq * _res = NULL;
28007     int _mark = p->mark;
28008     { // maybe_star_pattern _loop0_72
28009         if (p->error_indicator) {
28010             p->level--;
28011             return NULL;
28012         }
28013         D(fprintf(stderr, "%*c> _gather_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_72"));
28014         pattern_ty elem;
28015         asdl_seq * seq;
28016         if (
28017             (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
28018             &&
28019             (seq = _loop0_72_rule(p))  // _loop0_72
28020         )
28021         {
28022             D(fprintf(stderr, "%*c+ _gather_71[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_72"));
28023             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28024             goto done;
28025         }
28026         p->mark = _mark;
28027         D(fprintf(stderr, "%*c%s _gather_71[%d-%d]: %s failed!\n", p->level, ' ',
28028                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern _loop0_72"));
28029     }
28030     _res = NULL;
28031   done:
28032     p->level--;
28033     return _res;
28034 }
28035 
28036 // _loop0_74: ',' key_value_pattern
28037 static asdl_seq *
_loop0_74_rule(Parser * p)28038 _loop0_74_rule(Parser *p)
28039 {
28040     if (p->level++ == MAXSTACK) {
28041         p->error_indicator = 1;
28042         PyErr_NoMemory();
28043     }
28044     if (p->error_indicator) {
28045         p->level--;
28046         return NULL;
28047     }
28048     void *_res = NULL;
28049     int _mark = p->mark;
28050     void **_children = PyMem_Malloc(sizeof(void *));
28051     if (!_children) {
28052         p->error_indicator = 1;
28053         PyErr_NoMemory();
28054         p->level--;
28055         return NULL;
28056     }
28057     Py_ssize_t _children_capacity = 1;
28058     Py_ssize_t _n = 0;
28059     { // ',' key_value_pattern
28060         if (p->error_indicator) {
28061             p->level--;
28062             return NULL;
28063         }
28064         D(fprintf(stderr, "%*c> _loop0_74[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' key_value_pattern"));
28065         Token * _literal;
28066         KeyPatternPair* elem;
28067         while (
28068             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28069             &&
28070             (elem = key_value_pattern_rule(p))  // key_value_pattern
28071         )
28072         {
28073             _res = elem;
28074             if (_res == NULL && PyErr_Occurred()) {
28075                 p->error_indicator = 1;
28076                 PyMem_Free(_children);
28077                 p->level--;
28078                 return NULL;
28079             }
28080             if (_n == _children_capacity) {
28081                 _children_capacity *= 2;
28082                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28083                 if (!_new_children) {
28084                     PyMem_Free(_children);
28085                     p->error_indicator = 1;
28086                     PyErr_NoMemory();
28087                     p->level--;
28088                     return NULL;
28089                 }
28090                 _children = _new_children;
28091             }
28092             _children[_n++] = _res;
28093             _mark = p->mark;
28094         }
28095         p->mark = _mark;
28096         D(fprintf(stderr, "%*c%s _loop0_74[%d-%d]: %s failed!\n", p->level, ' ',
28097                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' key_value_pattern"));
28098     }
28099     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28100     if (!_seq) {
28101         PyMem_Free(_children);
28102         p->error_indicator = 1;
28103         PyErr_NoMemory();
28104         p->level--;
28105         return NULL;
28106     }
28107     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28108     PyMem_Free(_children);
28109     p->level--;
28110     return _seq;
28111 }
28112 
28113 // _gather_73: key_value_pattern _loop0_74
28114 static asdl_seq *
_gather_73_rule(Parser * p)28115 _gather_73_rule(Parser *p)
28116 {
28117     if (p->level++ == MAXSTACK) {
28118         p->error_indicator = 1;
28119         PyErr_NoMemory();
28120     }
28121     if (p->error_indicator) {
28122         p->level--;
28123         return NULL;
28124     }
28125     asdl_seq * _res = NULL;
28126     int _mark = p->mark;
28127     { // key_value_pattern _loop0_74
28128         if (p->error_indicator) {
28129             p->level--;
28130             return NULL;
28131         }
28132         D(fprintf(stderr, "%*c> _gather_73[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_74"));
28133         KeyPatternPair* elem;
28134         asdl_seq * seq;
28135         if (
28136             (elem = key_value_pattern_rule(p))  // key_value_pattern
28137             &&
28138             (seq = _loop0_74_rule(p))  // _loop0_74
28139         )
28140         {
28141             D(fprintf(stderr, "%*c+ _gather_73[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_74"));
28142             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28143             goto done;
28144         }
28145         p->mark = _mark;
28146         D(fprintf(stderr, "%*c%s _gather_73[%d-%d]: %s failed!\n", p->level, ' ',
28147                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "key_value_pattern _loop0_74"));
28148     }
28149     _res = NULL;
28150   done:
28151     p->level--;
28152     return _res;
28153 }
28154 
28155 // _tmp_75: literal_expr | attr
28156 static void *
_tmp_75_rule(Parser * p)28157 _tmp_75_rule(Parser *p)
28158 {
28159     if (p->level++ == MAXSTACK) {
28160         p->error_indicator = 1;
28161         PyErr_NoMemory();
28162     }
28163     if (p->error_indicator) {
28164         p->level--;
28165         return NULL;
28166     }
28167     void * _res = NULL;
28168     int _mark = p->mark;
28169     { // literal_expr
28170         if (p->error_indicator) {
28171             p->level--;
28172             return NULL;
28173         }
28174         D(fprintf(stderr, "%*c> _tmp_75[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_expr"));
28175         expr_ty literal_expr_var;
28176         if (
28177             (literal_expr_var = literal_expr_rule(p))  // literal_expr
28178         )
28179         {
28180             D(fprintf(stderr, "%*c+ _tmp_75[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_expr"));
28181             _res = literal_expr_var;
28182             goto done;
28183         }
28184         p->mark = _mark;
28185         D(fprintf(stderr, "%*c%s _tmp_75[%d-%d]: %s failed!\n", p->level, ' ',
28186                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_expr"));
28187     }
28188     { // attr
28189         if (p->error_indicator) {
28190             p->level--;
28191             return NULL;
28192         }
28193         D(fprintf(stderr, "%*c> _tmp_75[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
28194         expr_ty attr_var;
28195         if (
28196             (attr_var = attr_rule(p))  // attr
28197         )
28198         {
28199             D(fprintf(stderr, "%*c+ _tmp_75[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
28200             _res = attr_var;
28201             goto done;
28202         }
28203         p->mark = _mark;
28204         D(fprintf(stderr, "%*c%s _tmp_75[%d-%d]: %s failed!\n", p->level, ' ',
28205                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
28206     }
28207     _res = NULL;
28208   done:
28209     p->level--;
28210     return _res;
28211 }
28212 
28213 // _loop0_77: ',' pattern
28214 static asdl_seq *
_loop0_77_rule(Parser * p)28215 _loop0_77_rule(Parser *p)
28216 {
28217     if (p->level++ == MAXSTACK) {
28218         p->error_indicator = 1;
28219         PyErr_NoMemory();
28220     }
28221     if (p->error_indicator) {
28222         p->level--;
28223         return NULL;
28224     }
28225     void *_res = NULL;
28226     int _mark = p->mark;
28227     void **_children = PyMem_Malloc(sizeof(void *));
28228     if (!_children) {
28229         p->error_indicator = 1;
28230         PyErr_NoMemory();
28231         p->level--;
28232         return NULL;
28233     }
28234     Py_ssize_t _children_capacity = 1;
28235     Py_ssize_t _n = 0;
28236     { // ',' pattern
28237         if (p->error_indicator) {
28238             p->level--;
28239             return NULL;
28240         }
28241         D(fprintf(stderr, "%*c> _loop0_77[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' pattern"));
28242         Token * _literal;
28243         pattern_ty elem;
28244         while (
28245             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28246             &&
28247             (elem = pattern_rule(p))  // pattern
28248         )
28249         {
28250             _res = elem;
28251             if (_res == NULL && PyErr_Occurred()) {
28252                 p->error_indicator = 1;
28253                 PyMem_Free(_children);
28254                 p->level--;
28255                 return NULL;
28256             }
28257             if (_n == _children_capacity) {
28258                 _children_capacity *= 2;
28259                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28260                 if (!_new_children) {
28261                     PyMem_Free(_children);
28262                     p->error_indicator = 1;
28263                     PyErr_NoMemory();
28264                     p->level--;
28265                     return NULL;
28266                 }
28267                 _children = _new_children;
28268             }
28269             _children[_n++] = _res;
28270             _mark = p->mark;
28271         }
28272         p->mark = _mark;
28273         D(fprintf(stderr, "%*c%s _loop0_77[%d-%d]: %s failed!\n", p->level, ' ',
28274                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' pattern"));
28275     }
28276     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28277     if (!_seq) {
28278         PyMem_Free(_children);
28279         p->error_indicator = 1;
28280         PyErr_NoMemory();
28281         p->level--;
28282         return NULL;
28283     }
28284     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28285     PyMem_Free(_children);
28286     p->level--;
28287     return _seq;
28288 }
28289 
28290 // _gather_76: pattern _loop0_77
28291 static asdl_seq *
_gather_76_rule(Parser * p)28292 _gather_76_rule(Parser *p)
28293 {
28294     if (p->level++ == MAXSTACK) {
28295         p->error_indicator = 1;
28296         PyErr_NoMemory();
28297     }
28298     if (p->error_indicator) {
28299         p->level--;
28300         return NULL;
28301     }
28302     asdl_seq * _res = NULL;
28303     int _mark = p->mark;
28304     { // pattern _loop0_77
28305         if (p->error_indicator) {
28306             p->level--;
28307             return NULL;
28308         }
28309         D(fprintf(stderr, "%*c> _gather_76[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern _loop0_77"));
28310         pattern_ty elem;
28311         asdl_seq * seq;
28312         if (
28313             (elem = pattern_rule(p))  // pattern
28314             &&
28315             (seq = _loop0_77_rule(p))  // _loop0_77
28316         )
28317         {
28318             D(fprintf(stderr, "%*c+ _gather_76[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern _loop0_77"));
28319             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28320             goto done;
28321         }
28322         p->mark = _mark;
28323         D(fprintf(stderr, "%*c%s _gather_76[%d-%d]: %s failed!\n", p->level, ' ',
28324                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern _loop0_77"));
28325     }
28326     _res = NULL;
28327   done:
28328     p->level--;
28329     return _res;
28330 }
28331 
28332 // _loop0_79: ',' keyword_pattern
28333 static asdl_seq *
_loop0_79_rule(Parser * p)28334 _loop0_79_rule(Parser *p)
28335 {
28336     if (p->level++ == MAXSTACK) {
28337         p->error_indicator = 1;
28338         PyErr_NoMemory();
28339     }
28340     if (p->error_indicator) {
28341         p->level--;
28342         return NULL;
28343     }
28344     void *_res = NULL;
28345     int _mark = p->mark;
28346     void **_children = PyMem_Malloc(sizeof(void *));
28347     if (!_children) {
28348         p->error_indicator = 1;
28349         PyErr_NoMemory();
28350         p->level--;
28351         return NULL;
28352     }
28353     Py_ssize_t _children_capacity = 1;
28354     Py_ssize_t _n = 0;
28355     { // ',' keyword_pattern
28356         if (p->error_indicator) {
28357             p->level--;
28358             return NULL;
28359         }
28360         D(fprintf(stderr, "%*c> _loop0_79[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' keyword_pattern"));
28361         Token * _literal;
28362         KeyPatternPair* elem;
28363         while (
28364             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28365             &&
28366             (elem = keyword_pattern_rule(p))  // keyword_pattern
28367         )
28368         {
28369             _res = elem;
28370             if (_res == NULL && PyErr_Occurred()) {
28371                 p->error_indicator = 1;
28372                 PyMem_Free(_children);
28373                 p->level--;
28374                 return NULL;
28375             }
28376             if (_n == _children_capacity) {
28377                 _children_capacity *= 2;
28378                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28379                 if (!_new_children) {
28380                     PyMem_Free(_children);
28381                     p->error_indicator = 1;
28382                     PyErr_NoMemory();
28383                     p->level--;
28384                     return NULL;
28385                 }
28386                 _children = _new_children;
28387             }
28388             _children[_n++] = _res;
28389             _mark = p->mark;
28390         }
28391         p->mark = _mark;
28392         D(fprintf(stderr, "%*c%s _loop0_79[%d-%d]: %s failed!\n", p->level, ' ',
28393                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' keyword_pattern"));
28394     }
28395     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28396     if (!_seq) {
28397         PyMem_Free(_children);
28398         p->error_indicator = 1;
28399         PyErr_NoMemory();
28400         p->level--;
28401         return NULL;
28402     }
28403     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28404     PyMem_Free(_children);
28405     p->level--;
28406     return _seq;
28407 }
28408 
28409 // _gather_78: keyword_pattern _loop0_79
28410 static asdl_seq *
_gather_78_rule(Parser * p)28411 _gather_78_rule(Parser *p)
28412 {
28413     if (p->level++ == MAXSTACK) {
28414         p->error_indicator = 1;
28415         PyErr_NoMemory();
28416     }
28417     if (p->error_indicator) {
28418         p->level--;
28419         return NULL;
28420     }
28421     asdl_seq * _res = NULL;
28422     int _mark = p->mark;
28423     { // keyword_pattern _loop0_79
28424         if (p->error_indicator) {
28425             p->level--;
28426             return NULL;
28427         }
28428         D(fprintf(stderr, "%*c> _gather_78[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_79"));
28429         KeyPatternPair* elem;
28430         asdl_seq * seq;
28431         if (
28432             (elem = keyword_pattern_rule(p))  // keyword_pattern
28433             &&
28434             (seq = _loop0_79_rule(p))  // _loop0_79
28435         )
28436         {
28437             D(fprintf(stderr, "%*c+ _gather_78[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_79"));
28438             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28439             goto done;
28440         }
28441         p->mark = _mark;
28442         D(fprintf(stderr, "%*c%s _gather_78[%d-%d]: %s failed!\n", p->level, ' ',
28443                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "keyword_pattern _loop0_79"));
28444     }
28445     _res = NULL;
28446   done:
28447     p->level--;
28448     return _res;
28449 }
28450 
28451 // _loop1_80: (',' expression)
28452 static asdl_seq *
_loop1_80_rule(Parser * p)28453 _loop1_80_rule(Parser *p)
28454 {
28455     if (p->level++ == MAXSTACK) {
28456         p->error_indicator = 1;
28457         PyErr_NoMemory();
28458     }
28459     if (p->error_indicator) {
28460         p->level--;
28461         return NULL;
28462     }
28463     void *_res = NULL;
28464     int _mark = p->mark;
28465     void **_children = PyMem_Malloc(sizeof(void *));
28466     if (!_children) {
28467         p->error_indicator = 1;
28468         PyErr_NoMemory();
28469         p->level--;
28470         return NULL;
28471     }
28472     Py_ssize_t _children_capacity = 1;
28473     Py_ssize_t _n = 0;
28474     { // (',' expression)
28475         if (p->error_indicator) {
28476             p->level--;
28477             return NULL;
28478         }
28479         D(fprintf(stderr, "%*c> _loop1_80[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)"));
28480         void *_tmp_226_var;
28481         while (
28482             (_tmp_226_var = _tmp_226_rule(p))  // ',' expression
28483         )
28484         {
28485             _res = _tmp_226_var;
28486             if (_n == _children_capacity) {
28487                 _children_capacity *= 2;
28488                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28489                 if (!_new_children) {
28490                     PyMem_Free(_children);
28491                     p->error_indicator = 1;
28492                     PyErr_NoMemory();
28493                     p->level--;
28494                     return NULL;
28495                 }
28496                 _children = _new_children;
28497             }
28498             _children[_n++] = _res;
28499             _mark = p->mark;
28500         }
28501         p->mark = _mark;
28502         D(fprintf(stderr, "%*c%s _loop1_80[%d-%d]: %s failed!\n", p->level, ' ',
28503                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' expression)"));
28504     }
28505     if (_n == 0 || p->error_indicator) {
28506         PyMem_Free(_children);
28507         p->level--;
28508         return NULL;
28509     }
28510     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28511     if (!_seq) {
28512         PyMem_Free(_children);
28513         p->error_indicator = 1;
28514         PyErr_NoMemory();
28515         p->level--;
28516         return NULL;
28517     }
28518     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28519     PyMem_Free(_children);
28520     p->level--;
28521     return _seq;
28522 }
28523 
28524 // _loop1_81: (',' star_expression)
28525 static asdl_seq *
_loop1_81_rule(Parser * p)28526 _loop1_81_rule(Parser *p)
28527 {
28528     if (p->level++ == MAXSTACK) {
28529         p->error_indicator = 1;
28530         PyErr_NoMemory();
28531     }
28532     if (p->error_indicator) {
28533         p->level--;
28534         return NULL;
28535     }
28536     void *_res = NULL;
28537     int _mark = p->mark;
28538     void **_children = PyMem_Malloc(sizeof(void *));
28539     if (!_children) {
28540         p->error_indicator = 1;
28541         PyErr_NoMemory();
28542         p->level--;
28543         return NULL;
28544     }
28545     Py_ssize_t _children_capacity = 1;
28546     Py_ssize_t _n = 0;
28547     { // (',' star_expression)
28548         if (p->error_indicator) {
28549             p->level--;
28550             return NULL;
28551         }
28552         D(fprintf(stderr, "%*c> _loop1_81[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)"));
28553         void *_tmp_227_var;
28554         while (
28555             (_tmp_227_var = _tmp_227_rule(p))  // ',' star_expression
28556         )
28557         {
28558             _res = _tmp_227_var;
28559             if (_n == _children_capacity) {
28560                 _children_capacity *= 2;
28561                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28562                 if (!_new_children) {
28563                     PyMem_Free(_children);
28564                     p->error_indicator = 1;
28565                     PyErr_NoMemory();
28566                     p->level--;
28567                     return NULL;
28568                 }
28569                 _children = _new_children;
28570             }
28571             _children[_n++] = _res;
28572             _mark = p->mark;
28573         }
28574         p->mark = _mark;
28575         D(fprintf(stderr, "%*c%s _loop1_81[%d-%d]: %s failed!\n", p->level, ' ',
28576                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_expression)"));
28577     }
28578     if (_n == 0 || p->error_indicator) {
28579         PyMem_Free(_children);
28580         p->level--;
28581         return NULL;
28582     }
28583     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28584     if (!_seq) {
28585         PyMem_Free(_children);
28586         p->error_indicator = 1;
28587         PyErr_NoMemory();
28588         p->level--;
28589         return NULL;
28590     }
28591     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28592     PyMem_Free(_children);
28593     p->level--;
28594     return _seq;
28595 }
28596 
28597 // _loop0_83: ',' star_named_expression
28598 static asdl_seq *
_loop0_83_rule(Parser * p)28599 _loop0_83_rule(Parser *p)
28600 {
28601     if (p->level++ == MAXSTACK) {
28602         p->error_indicator = 1;
28603         PyErr_NoMemory();
28604     }
28605     if (p->error_indicator) {
28606         p->level--;
28607         return NULL;
28608     }
28609     void *_res = NULL;
28610     int _mark = p->mark;
28611     void **_children = PyMem_Malloc(sizeof(void *));
28612     if (!_children) {
28613         p->error_indicator = 1;
28614         PyErr_NoMemory();
28615         p->level--;
28616         return NULL;
28617     }
28618     Py_ssize_t _children_capacity = 1;
28619     Py_ssize_t _n = 0;
28620     { // ',' star_named_expression
28621         if (p->error_indicator) {
28622             p->level--;
28623             return NULL;
28624         }
28625         D(fprintf(stderr, "%*c> _loop0_83[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_named_expression"));
28626         Token * _literal;
28627         expr_ty elem;
28628         while (
28629             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28630             &&
28631             (elem = star_named_expression_rule(p))  // star_named_expression
28632         )
28633         {
28634             _res = elem;
28635             if (_res == NULL && PyErr_Occurred()) {
28636                 p->error_indicator = 1;
28637                 PyMem_Free(_children);
28638                 p->level--;
28639                 return NULL;
28640             }
28641             if (_n == _children_capacity) {
28642                 _children_capacity *= 2;
28643                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28644                 if (!_new_children) {
28645                     PyMem_Free(_children);
28646                     p->error_indicator = 1;
28647                     PyErr_NoMemory();
28648                     p->level--;
28649                     return NULL;
28650                 }
28651                 _children = _new_children;
28652             }
28653             _children[_n++] = _res;
28654             _mark = p->mark;
28655         }
28656         p->mark = _mark;
28657         D(fprintf(stderr, "%*c%s _loop0_83[%d-%d]: %s failed!\n", p->level, ' ',
28658                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_named_expression"));
28659     }
28660     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28661     if (!_seq) {
28662         PyMem_Free(_children);
28663         p->error_indicator = 1;
28664         PyErr_NoMemory();
28665         p->level--;
28666         return NULL;
28667     }
28668     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28669     PyMem_Free(_children);
28670     p->level--;
28671     return _seq;
28672 }
28673 
28674 // _gather_82: star_named_expression _loop0_83
28675 static asdl_seq *
_gather_82_rule(Parser * p)28676 _gather_82_rule(Parser *p)
28677 {
28678     if (p->level++ == MAXSTACK) {
28679         p->error_indicator = 1;
28680         PyErr_NoMemory();
28681     }
28682     if (p->error_indicator) {
28683         p->level--;
28684         return NULL;
28685     }
28686     asdl_seq * _res = NULL;
28687     int _mark = p->mark;
28688     { // star_named_expression _loop0_83
28689         if (p->error_indicator) {
28690             p->level--;
28691             return NULL;
28692         }
28693         D(fprintf(stderr, "%*c> _gather_82[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_83"));
28694         expr_ty elem;
28695         asdl_seq * seq;
28696         if (
28697             (elem = star_named_expression_rule(p))  // star_named_expression
28698             &&
28699             (seq = _loop0_83_rule(p))  // _loop0_83
28700         )
28701         {
28702             D(fprintf(stderr, "%*c+ _gather_82[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_83"));
28703             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28704             goto done;
28705         }
28706         p->mark = _mark;
28707         D(fprintf(stderr, "%*c%s _gather_82[%d-%d]: %s failed!\n", p->level, ' ',
28708                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression _loop0_83"));
28709     }
28710     _res = NULL;
28711   done:
28712     p->level--;
28713     return _res;
28714 }
28715 
28716 // _loop1_84: ('or' conjunction)
28717 static asdl_seq *
_loop1_84_rule(Parser * p)28718 _loop1_84_rule(Parser *p)
28719 {
28720     if (p->level++ == MAXSTACK) {
28721         p->error_indicator = 1;
28722         PyErr_NoMemory();
28723     }
28724     if (p->error_indicator) {
28725         p->level--;
28726         return NULL;
28727     }
28728     void *_res = NULL;
28729     int _mark = p->mark;
28730     void **_children = PyMem_Malloc(sizeof(void *));
28731     if (!_children) {
28732         p->error_indicator = 1;
28733         PyErr_NoMemory();
28734         p->level--;
28735         return NULL;
28736     }
28737     Py_ssize_t _children_capacity = 1;
28738     Py_ssize_t _n = 0;
28739     { // ('or' conjunction)
28740         if (p->error_indicator) {
28741             p->level--;
28742             return NULL;
28743         }
28744         D(fprintf(stderr, "%*c> _loop1_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)"));
28745         void *_tmp_228_var;
28746         while (
28747             (_tmp_228_var = _tmp_228_rule(p))  // 'or' conjunction
28748         )
28749         {
28750             _res = _tmp_228_var;
28751             if (_n == _children_capacity) {
28752                 _children_capacity *= 2;
28753                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28754                 if (!_new_children) {
28755                     PyMem_Free(_children);
28756                     p->error_indicator = 1;
28757                     PyErr_NoMemory();
28758                     p->level--;
28759                     return NULL;
28760                 }
28761                 _children = _new_children;
28762             }
28763             _children[_n++] = _res;
28764             _mark = p->mark;
28765         }
28766         p->mark = _mark;
28767         D(fprintf(stderr, "%*c%s _loop1_84[%d-%d]: %s failed!\n", p->level, ' ',
28768                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('or' conjunction)"));
28769     }
28770     if (_n == 0 || p->error_indicator) {
28771         PyMem_Free(_children);
28772         p->level--;
28773         return NULL;
28774     }
28775     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28776     if (!_seq) {
28777         PyMem_Free(_children);
28778         p->error_indicator = 1;
28779         PyErr_NoMemory();
28780         p->level--;
28781         return NULL;
28782     }
28783     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28784     PyMem_Free(_children);
28785     p->level--;
28786     return _seq;
28787 }
28788 
28789 // _loop1_85: ('and' inversion)
28790 static asdl_seq *
_loop1_85_rule(Parser * p)28791 _loop1_85_rule(Parser *p)
28792 {
28793     if (p->level++ == MAXSTACK) {
28794         p->error_indicator = 1;
28795         PyErr_NoMemory();
28796     }
28797     if (p->error_indicator) {
28798         p->level--;
28799         return NULL;
28800     }
28801     void *_res = NULL;
28802     int _mark = p->mark;
28803     void **_children = PyMem_Malloc(sizeof(void *));
28804     if (!_children) {
28805         p->error_indicator = 1;
28806         PyErr_NoMemory();
28807         p->level--;
28808         return NULL;
28809     }
28810     Py_ssize_t _children_capacity = 1;
28811     Py_ssize_t _n = 0;
28812     { // ('and' inversion)
28813         if (p->error_indicator) {
28814             p->level--;
28815             return NULL;
28816         }
28817         D(fprintf(stderr, "%*c> _loop1_85[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)"));
28818         void *_tmp_229_var;
28819         while (
28820             (_tmp_229_var = _tmp_229_rule(p))  // 'and' inversion
28821         )
28822         {
28823             _res = _tmp_229_var;
28824             if (_n == _children_capacity) {
28825                 _children_capacity *= 2;
28826                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28827                 if (!_new_children) {
28828                     PyMem_Free(_children);
28829                     p->error_indicator = 1;
28830                     PyErr_NoMemory();
28831                     p->level--;
28832                     return NULL;
28833                 }
28834                 _children = _new_children;
28835             }
28836             _children[_n++] = _res;
28837             _mark = p->mark;
28838         }
28839         p->mark = _mark;
28840         D(fprintf(stderr, "%*c%s _loop1_85[%d-%d]: %s failed!\n", p->level, ' ',
28841                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('and' inversion)"));
28842     }
28843     if (_n == 0 || p->error_indicator) {
28844         PyMem_Free(_children);
28845         p->level--;
28846         return NULL;
28847     }
28848     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28849     if (!_seq) {
28850         PyMem_Free(_children);
28851         p->error_indicator = 1;
28852         PyErr_NoMemory();
28853         p->level--;
28854         return NULL;
28855     }
28856     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28857     PyMem_Free(_children);
28858     p->level--;
28859     return _seq;
28860 }
28861 
28862 // _loop1_86: compare_op_bitwise_or_pair
28863 static asdl_seq *
_loop1_86_rule(Parser * p)28864 _loop1_86_rule(Parser *p)
28865 {
28866     if (p->level++ == MAXSTACK) {
28867         p->error_indicator = 1;
28868         PyErr_NoMemory();
28869     }
28870     if (p->error_indicator) {
28871         p->level--;
28872         return NULL;
28873     }
28874     void *_res = NULL;
28875     int _mark = p->mark;
28876     void **_children = PyMem_Malloc(sizeof(void *));
28877     if (!_children) {
28878         p->error_indicator = 1;
28879         PyErr_NoMemory();
28880         p->level--;
28881         return NULL;
28882     }
28883     Py_ssize_t _children_capacity = 1;
28884     Py_ssize_t _n = 0;
28885     { // compare_op_bitwise_or_pair
28886         if (p->error_indicator) {
28887             p->level--;
28888             return NULL;
28889         }
28890         D(fprintf(stderr, "%*c> _loop1_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compare_op_bitwise_or_pair"));
28891         CmpopExprPair* compare_op_bitwise_or_pair_var;
28892         while (
28893             (compare_op_bitwise_or_pair_var = compare_op_bitwise_or_pair_rule(p))  // compare_op_bitwise_or_pair
28894         )
28895         {
28896             _res = compare_op_bitwise_or_pair_var;
28897             if (_n == _children_capacity) {
28898                 _children_capacity *= 2;
28899                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28900                 if (!_new_children) {
28901                     PyMem_Free(_children);
28902                     p->error_indicator = 1;
28903                     PyErr_NoMemory();
28904                     p->level--;
28905                     return NULL;
28906                 }
28907                 _children = _new_children;
28908             }
28909             _children[_n++] = _res;
28910             _mark = p->mark;
28911         }
28912         p->mark = _mark;
28913         D(fprintf(stderr, "%*c%s _loop1_86[%d-%d]: %s failed!\n", p->level, ' ',
28914                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compare_op_bitwise_or_pair"));
28915     }
28916     if (_n == 0 || p->error_indicator) {
28917         PyMem_Free(_children);
28918         p->level--;
28919         return NULL;
28920     }
28921     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28922     if (!_seq) {
28923         PyMem_Free(_children);
28924         p->error_indicator = 1;
28925         PyErr_NoMemory();
28926         p->level--;
28927         return NULL;
28928     }
28929     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28930     PyMem_Free(_children);
28931     p->level--;
28932     return _seq;
28933 }
28934 
28935 // _tmp_87: '!='
28936 static void *
_tmp_87_rule(Parser * p)28937 _tmp_87_rule(Parser *p)
28938 {
28939     if (p->level++ == MAXSTACK) {
28940         p->error_indicator = 1;
28941         PyErr_NoMemory();
28942     }
28943     if (p->error_indicator) {
28944         p->level--;
28945         return NULL;
28946     }
28947     void * _res = NULL;
28948     int _mark = p->mark;
28949     { // '!='
28950         if (p->error_indicator) {
28951             p->level--;
28952             return NULL;
28953         }
28954         D(fprintf(stderr, "%*c> _tmp_87[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!='"));
28955         Token * tok;
28956         if (
28957             (tok = _PyPegen_expect_token(p, 28))  // token='!='
28958         )
28959         {
28960             D(fprintf(stderr, "%*c+ _tmp_87[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!='"));
28961             _res = _PyPegen_check_barry_as_flufl ( p , tok ) ? NULL : tok;
28962             if (_res == NULL && PyErr_Occurred()) {
28963                 p->error_indicator = 1;
28964                 p->level--;
28965                 return NULL;
28966             }
28967             goto done;
28968         }
28969         p->mark = _mark;
28970         D(fprintf(stderr, "%*c%s _tmp_87[%d-%d]: %s failed!\n", p->level, ' ',
28971                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!='"));
28972     }
28973     _res = NULL;
28974   done:
28975     p->level--;
28976     return _res;
28977 }
28978 
28979 // _loop0_89: ',' (slice | starred_expression)
28980 static asdl_seq *
_loop0_89_rule(Parser * p)28981 _loop0_89_rule(Parser *p)
28982 {
28983     if (p->level++ == MAXSTACK) {
28984         p->error_indicator = 1;
28985         PyErr_NoMemory();
28986     }
28987     if (p->error_indicator) {
28988         p->level--;
28989         return NULL;
28990     }
28991     void *_res = NULL;
28992     int _mark = p->mark;
28993     void **_children = PyMem_Malloc(sizeof(void *));
28994     if (!_children) {
28995         p->error_indicator = 1;
28996         PyErr_NoMemory();
28997         p->level--;
28998         return NULL;
28999     }
29000     Py_ssize_t _children_capacity = 1;
29001     Py_ssize_t _n = 0;
29002     { // ',' (slice | starred_expression)
29003         if (p->error_indicator) {
29004             p->level--;
29005             return NULL;
29006         }
29007         D(fprintf(stderr, "%*c> _loop0_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (slice | starred_expression)"));
29008         Token * _literal;
29009         void *elem;
29010         while (
29011             (_literal = _PyPegen_expect_token(p, 12))  // token=','
29012             &&
29013             (elem = _tmp_230_rule(p))  // slice | starred_expression
29014         )
29015         {
29016             _res = elem;
29017             if (_res == NULL && PyErr_Occurred()) {
29018                 p->error_indicator = 1;
29019                 PyMem_Free(_children);
29020                 p->level--;
29021                 return NULL;
29022             }
29023             if (_n == _children_capacity) {
29024                 _children_capacity *= 2;
29025                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29026                 if (!_new_children) {
29027                     PyMem_Free(_children);
29028                     p->error_indicator = 1;
29029                     PyErr_NoMemory();
29030                     p->level--;
29031                     return NULL;
29032                 }
29033                 _children = _new_children;
29034             }
29035             _children[_n++] = _res;
29036             _mark = p->mark;
29037         }
29038         p->mark = _mark;
29039         D(fprintf(stderr, "%*c%s _loop0_89[%d-%d]: %s failed!\n", p->level, ' ',
29040                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (slice | starred_expression)"));
29041     }
29042     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29043     if (!_seq) {
29044         PyMem_Free(_children);
29045         p->error_indicator = 1;
29046         PyErr_NoMemory();
29047         p->level--;
29048         return NULL;
29049     }
29050     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29051     PyMem_Free(_children);
29052     p->level--;
29053     return _seq;
29054 }
29055 
29056 // _gather_88: (slice | starred_expression) _loop0_89
29057 static asdl_seq *
_gather_88_rule(Parser * p)29058 _gather_88_rule(Parser *p)
29059 {
29060     if (p->level++ == MAXSTACK) {
29061         p->error_indicator = 1;
29062         PyErr_NoMemory();
29063     }
29064     if (p->error_indicator) {
29065         p->level--;
29066         return NULL;
29067     }
29068     asdl_seq * _res = NULL;
29069     int _mark = p->mark;
29070     { // (slice | starred_expression) _loop0_89
29071         if (p->error_indicator) {
29072             p->level--;
29073             return NULL;
29074         }
29075         D(fprintf(stderr, "%*c> _gather_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_89"));
29076         void *elem;
29077         asdl_seq * seq;
29078         if (
29079             (elem = _tmp_230_rule(p))  // slice | starred_expression
29080             &&
29081             (seq = _loop0_89_rule(p))  // _loop0_89
29082         )
29083         {
29084             D(fprintf(stderr, "%*c+ _gather_88[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(slice | starred_expression) _loop0_89"));
29085             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29086             goto done;
29087         }
29088         p->mark = _mark;
29089         D(fprintf(stderr, "%*c%s _gather_88[%d-%d]: %s failed!\n", p->level, ' ',
29090                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(slice | starred_expression) _loop0_89"));
29091     }
29092     _res = NULL;
29093   done:
29094     p->level--;
29095     return _res;
29096 }
29097 
29098 // _tmp_90: ':' expression?
29099 static void *
_tmp_90_rule(Parser * p)29100 _tmp_90_rule(Parser *p)
29101 {
29102     if (p->level++ == MAXSTACK) {
29103         p->error_indicator = 1;
29104         PyErr_NoMemory();
29105     }
29106     if (p->error_indicator) {
29107         p->level--;
29108         return NULL;
29109     }
29110     void * _res = NULL;
29111     int _mark = p->mark;
29112     { // ':' expression?
29113         if (p->error_indicator) {
29114             p->level--;
29115             return NULL;
29116         }
29117         D(fprintf(stderr, "%*c> _tmp_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression?"));
29118         Token * _literal;
29119         void *d;
29120         if (
29121             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
29122             &&
29123             (d = expression_rule(p), !p->error_indicator)  // expression?
29124         )
29125         {
29126             D(fprintf(stderr, "%*c+ _tmp_90[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?"));
29127             _res = d;
29128             if (_res == NULL && PyErr_Occurred()) {
29129                 p->error_indicator = 1;
29130                 p->level--;
29131                 return NULL;
29132             }
29133             goto done;
29134         }
29135         p->mark = _mark;
29136         D(fprintf(stderr, "%*c%s _tmp_90[%d-%d]: %s failed!\n", p->level, ' ',
29137                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression?"));
29138     }
29139     _res = NULL;
29140   done:
29141     p->level--;
29142     return _res;
29143 }
29144 
29145 // _tmp_91: tuple | group | genexp
29146 static void *
_tmp_91_rule(Parser * p)29147 _tmp_91_rule(Parser *p)
29148 {
29149     if (p->level++ == MAXSTACK) {
29150         p->error_indicator = 1;
29151         PyErr_NoMemory();
29152     }
29153     if (p->error_indicator) {
29154         p->level--;
29155         return NULL;
29156     }
29157     void * _res = NULL;
29158     int _mark = p->mark;
29159     { // tuple
29160         if (p->error_indicator) {
29161             p->level--;
29162             return NULL;
29163         }
29164         D(fprintf(stderr, "%*c> _tmp_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
29165         expr_ty tuple_var;
29166         if (
29167             (tuple_var = tuple_rule(p))  // tuple
29168         )
29169         {
29170             D(fprintf(stderr, "%*c+ _tmp_91[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
29171             _res = tuple_var;
29172             goto done;
29173         }
29174         p->mark = _mark;
29175         D(fprintf(stderr, "%*c%s _tmp_91[%d-%d]: %s failed!\n", p->level, ' ',
29176                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
29177     }
29178     { // group
29179         if (p->error_indicator) {
29180             p->level--;
29181             return NULL;
29182         }
29183         D(fprintf(stderr, "%*c> _tmp_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group"));
29184         expr_ty group_var;
29185         if (
29186             (group_var = group_rule(p))  // group
29187         )
29188         {
29189             D(fprintf(stderr, "%*c+ _tmp_91[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group"));
29190             _res = group_var;
29191             goto done;
29192         }
29193         p->mark = _mark;
29194         D(fprintf(stderr, "%*c%s _tmp_91[%d-%d]: %s failed!\n", p->level, ' ',
29195                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group"));
29196     }
29197     { // genexp
29198         if (p->error_indicator) {
29199             p->level--;
29200             return NULL;
29201         }
29202         D(fprintf(stderr, "%*c> _tmp_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
29203         expr_ty genexp_var;
29204         if (
29205             (genexp_var = genexp_rule(p))  // genexp
29206         )
29207         {
29208             D(fprintf(stderr, "%*c+ _tmp_91[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
29209             _res = genexp_var;
29210             goto done;
29211         }
29212         p->mark = _mark;
29213         D(fprintf(stderr, "%*c%s _tmp_91[%d-%d]: %s failed!\n", p->level, ' ',
29214                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
29215     }
29216     _res = NULL;
29217   done:
29218     p->level--;
29219     return _res;
29220 }
29221 
29222 // _tmp_92: list | listcomp
29223 static void *
_tmp_92_rule(Parser * p)29224 _tmp_92_rule(Parser *p)
29225 {
29226     if (p->level++ == MAXSTACK) {
29227         p->error_indicator = 1;
29228         PyErr_NoMemory();
29229     }
29230     if (p->error_indicator) {
29231         p->level--;
29232         return NULL;
29233     }
29234     void * _res = NULL;
29235     int _mark = p->mark;
29236     { // list
29237         if (p->error_indicator) {
29238             p->level--;
29239             return NULL;
29240         }
29241         D(fprintf(stderr, "%*c> _tmp_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
29242         expr_ty list_var;
29243         if (
29244             (list_var = list_rule(p))  // list
29245         )
29246         {
29247             D(fprintf(stderr, "%*c+ _tmp_92[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
29248             _res = list_var;
29249             goto done;
29250         }
29251         p->mark = _mark;
29252         D(fprintf(stderr, "%*c%s _tmp_92[%d-%d]: %s failed!\n", p->level, ' ',
29253                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
29254     }
29255     { // listcomp
29256         if (p->error_indicator) {
29257             p->level--;
29258             return NULL;
29259         }
29260         D(fprintf(stderr, "%*c> _tmp_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "listcomp"));
29261         expr_ty listcomp_var;
29262         if (
29263             (listcomp_var = listcomp_rule(p))  // listcomp
29264         )
29265         {
29266             D(fprintf(stderr, "%*c+ _tmp_92[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "listcomp"));
29267             _res = listcomp_var;
29268             goto done;
29269         }
29270         p->mark = _mark;
29271         D(fprintf(stderr, "%*c%s _tmp_92[%d-%d]: %s failed!\n", p->level, ' ',
29272                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "listcomp"));
29273     }
29274     _res = NULL;
29275   done:
29276     p->level--;
29277     return _res;
29278 }
29279 
29280 // _tmp_93: dict | set | dictcomp | setcomp
29281 static void *
_tmp_93_rule(Parser * p)29282 _tmp_93_rule(Parser *p)
29283 {
29284     if (p->level++ == MAXSTACK) {
29285         p->error_indicator = 1;
29286         PyErr_NoMemory();
29287     }
29288     if (p->error_indicator) {
29289         p->level--;
29290         return NULL;
29291     }
29292     void * _res = NULL;
29293     int _mark = p->mark;
29294     { // dict
29295         if (p->error_indicator) {
29296             p->level--;
29297             return NULL;
29298         }
29299         D(fprintf(stderr, "%*c> _tmp_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dict"));
29300         expr_ty dict_var;
29301         if (
29302             (dict_var = dict_rule(p))  // dict
29303         )
29304         {
29305             D(fprintf(stderr, "%*c+ _tmp_93[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dict"));
29306             _res = dict_var;
29307             goto done;
29308         }
29309         p->mark = _mark;
29310         D(fprintf(stderr, "%*c%s _tmp_93[%d-%d]: %s failed!\n", p->level, ' ',
29311                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dict"));
29312     }
29313     { // set
29314         if (p->error_indicator) {
29315             p->level--;
29316             return NULL;
29317         }
29318         D(fprintf(stderr, "%*c> _tmp_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "set"));
29319         expr_ty set_var;
29320         if (
29321             (set_var = set_rule(p))  // set
29322         )
29323         {
29324             D(fprintf(stderr, "%*c+ _tmp_93[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "set"));
29325             _res = set_var;
29326             goto done;
29327         }
29328         p->mark = _mark;
29329         D(fprintf(stderr, "%*c%s _tmp_93[%d-%d]: %s failed!\n", p->level, ' ',
29330                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "set"));
29331     }
29332     { // dictcomp
29333         if (p->error_indicator) {
29334             p->level--;
29335             return NULL;
29336         }
29337         D(fprintf(stderr, "%*c> _tmp_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dictcomp"));
29338         expr_ty dictcomp_var;
29339         if (
29340             (dictcomp_var = dictcomp_rule(p))  // dictcomp
29341         )
29342         {
29343             D(fprintf(stderr, "%*c+ _tmp_93[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dictcomp"));
29344             _res = dictcomp_var;
29345             goto done;
29346         }
29347         p->mark = _mark;
29348         D(fprintf(stderr, "%*c%s _tmp_93[%d-%d]: %s failed!\n", p->level, ' ',
29349                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dictcomp"));
29350     }
29351     { // setcomp
29352         if (p->error_indicator) {
29353             p->level--;
29354             return NULL;
29355         }
29356         D(fprintf(stderr, "%*c> _tmp_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "setcomp"));
29357         expr_ty setcomp_var;
29358         if (
29359             (setcomp_var = setcomp_rule(p))  // setcomp
29360         )
29361         {
29362             D(fprintf(stderr, "%*c+ _tmp_93[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "setcomp"));
29363             _res = setcomp_var;
29364             goto done;
29365         }
29366         p->mark = _mark;
29367         D(fprintf(stderr, "%*c%s _tmp_93[%d-%d]: %s failed!\n", p->level, ' ',
29368                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "setcomp"));
29369     }
29370     _res = NULL;
29371   done:
29372     p->level--;
29373     return _res;
29374 }
29375 
29376 // _tmp_94: yield_expr | named_expression
29377 static void *
_tmp_94_rule(Parser * p)29378 _tmp_94_rule(Parser *p)
29379 {
29380     if (p->level++ == MAXSTACK) {
29381         p->error_indicator = 1;
29382         PyErr_NoMemory();
29383     }
29384     if (p->error_indicator) {
29385         p->level--;
29386         return NULL;
29387     }
29388     void * _res = NULL;
29389     int _mark = p->mark;
29390     { // yield_expr
29391         if (p->error_indicator) {
29392             p->level--;
29393             return NULL;
29394         }
29395         D(fprintf(stderr, "%*c> _tmp_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
29396         expr_ty yield_expr_var;
29397         if (
29398             (yield_expr_var = yield_expr_rule(p))  // yield_expr
29399         )
29400         {
29401             D(fprintf(stderr, "%*c+ _tmp_94[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
29402             _res = yield_expr_var;
29403             goto done;
29404         }
29405         p->mark = _mark;
29406         D(fprintf(stderr, "%*c%s _tmp_94[%d-%d]: %s failed!\n", p->level, ' ',
29407                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
29408     }
29409     { // named_expression
29410         if (p->error_indicator) {
29411             p->level--;
29412             return NULL;
29413         }
29414         D(fprintf(stderr, "%*c> _tmp_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
29415         expr_ty named_expression_var;
29416         if (
29417             (named_expression_var = named_expression_rule(p))  // named_expression
29418         )
29419         {
29420             D(fprintf(stderr, "%*c+ _tmp_94[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
29421             _res = named_expression_var;
29422             goto done;
29423         }
29424         p->mark = _mark;
29425         D(fprintf(stderr, "%*c%s _tmp_94[%d-%d]: %s failed!\n", p->level, ' ',
29426                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
29427     }
29428     _res = NULL;
29429   done:
29430     p->level--;
29431     return _res;
29432 }
29433 
29434 // _loop0_95: lambda_param_no_default
29435 static asdl_seq *
_loop0_95_rule(Parser * p)29436 _loop0_95_rule(Parser *p)
29437 {
29438     if (p->level++ == MAXSTACK) {
29439         p->error_indicator = 1;
29440         PyErr_NoMemory();
29441     }
29442     if (p->error_indicator) {
29443         p->level--;
29444         return NULL;
29445     }
29446     void *_res = NULL;
29447     int _mark = p->mark;
29448     void **_children = PyMem_Malloc(sizeof(void *));
29449     if (!_children) {
29450         p->error_indicator = 1;
29451         PyErr_NoMemory();
29452         p->level--;
29453         return NULL;
29454     }
29455     Py_ssize_t _children_capacity = 1;
29456     Py_ssize_t _n = 0;
29457     { // lambda_param_no_default
29458         if (p->error_indicator) {
29459             p->level--;
29460             return NULL;
29461         }
29462         D(fprintf(stderr, "%*c> _loop0_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
29463         arg_ty lambda_param_no_default_var;
29464         while (
29465             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
29466         )
29467         {
29468             _res = lambda_param_no_default_var;
29469             if (_n == _children_capacity) {
29470                 _children_capacity *= 2;
29471                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29472                 if (!_new_children) {
29473                     PyMem_Free(_children);
29474                     p->error_indicator = 1;
29475                     PyErr_NoMemory();
29476                     p->level--;
29477                     return NULL;
29478                 }
29479                 _children = _new_children;
29480             }
29481             _children[_n++] = _res;
29482             _mark = p->mark;
29483         }
29484         p->mark = _mark;
29485         D(fprintf(stderr, "%*c%s _loop0_95[%d-%d]: %s failed!\n", p->level, ' ',
29486                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
29487     }
29488     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29489     if (!_seq) {
29490         PyMem_Free(_children);
29491         p->error_indicator = 1;
29492         PyErr_NoMemory();
29493         p->level--;
29494         return NULL;
29495     }
29496     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29497     PyMem_Free(_children);
29498     p->level--;
29499     return _seq;
29500 }
29501 
29502 // _loop0_96: lambda_param_with_default
29503 static asdl_seq *
_loop0_96_rule(Parser * p)29504 _loop0_96_rule(Parser *p)
29505 {
29506     if (p->level++ == MAXSTACK) {
29507         p->error_indicator = 1;
29508         PyErr_NoMemory();
29509     }
29510     if (p->error_indicator) {
29511         p->level--;
29512         return NULL;
29513     }
29514     void *_res = NULL;
29515     int _mark = p->mark;
29516     void **_children = PyMem_Malloc(sizeof(void *));
29517     if (!_children) {
29518         p->error_indicator = 1;
29519         PyErr_NoMemory();
29520         p->level--;
29521         return NULL;
29522     }
29523     Py_ssize_t _children_capacity = 1;
29524     Py_ssize_t _n = 0;
29525     { // lambda_param_with_default
29526         if (p->error_indicator) {
29527             p->level--;
29528             return NULL;
29529         }
29530         D(fprintf(stderr, "%*c> _loop0_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
29531         NameDefaultPair* lambda_param_with_default_var;
29532         while (
29533             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
29534         )
29535         {
29536             _res = lambda_param_with_default_var;
29537             if (_n == _children_capacity) {
29538                 _children_capacity *= 2;
29539                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29540                 if (!_new_children) {
29541                     PyMem_Free(_children);
29542                     p->error_indicator = 1;
29543                     PyErr_NoMemory();
29544                     p->level--;
29545                     return NULL;
29546                 }
29547                 _children = _new_children;
29548             }
29549             _children[_n++] = _res;
29550             _mark = p->mark;
29551         }
29552         p->mark = _mark;
29553         D(fprintf(stderr, "%*c%s _loop0_96[%d-%d]: %s failed!\n", p->level, ' ',
29554                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
29555     }
29556     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29557     if (!_seq) {
29558         PyMem_Free(_children);
29559         p->error_indicator = 1;
29560         PyErr_NoMemory();
29561         p->level--;
29562         return NULL;
29563     }
29564     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29565     PyMem_Free(_children);
29566     p->level--;
29567     return _seq;
29568 }
29569 
29570 // _loop0_97: lambda_param_with_default
29571 static asdl_seq *
_loop0_97_rule(Parser * p)29572 _loop0_97_rule(Parser *p)
29573 {
29574     if (p->level++ == MAXSTACK) {
29575         p->error_indicator = 1;
29576         PyErr_NoMemory();
29577     }
29578     if (p->error_indicator) {
29579         p->level--;
29580         return NULL;
29581     }
29582     void *_res = NULL;
29583     int _mark = p->mark;
29584     void **_children = PyMem_Malloc(sizeof(void *));
29585     if (!_children) {
29586         p->error_indicator = 1;
29587         PyErr_NoMemory();
29588         p->level--;
29589         return NULL;
29590     }
29591     Py_ssize_t _children_capacity = 1;
29592     Py_ssize_t _n = 0;
29593     { // lambda_param_with_default
29594         if (p->error_indicator) {
29595             p->level--;
29596             return NULL;
29597         }
29598         D(fprintf(stderr, "%*c> _loop0_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
29599         NameDefaultPair* lambda_param_with_default_var;
29600         while (
29601             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
29602         )
29603         {
29604             _res = lambda_param_with_default_var;
29605             if (_n == _children_capacity) {
29606                 _children_capacity *= 2;
29607                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29608                 if (!_new_children) {
29609                     PyMem_Free(_children);
29610                     p->error_indicator = 1;
29611                     PyErr_NoMemory();
29612                     p->level--;
29613                     return NULL;
29614                 }
29615                 _children = _new_children;
29616             }
29617             _children[_n++] = _res;
29618             _mark = p->mark;
29619         }
29620         p->mark = _mark;
29621         D(fprintf(stderr, "%*c%s _loop0_97[%d-%d]: %s failed!\n", p->level, ' ',
29622                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
29623     }
29624     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29625     if (!_seq) {
29626         PyMem_Free(_children);
29627         p->error_indicator = 1;
29628         PyErr_NoMemory();
29629         p->level--;
29630         return NULL;
29631     }
29632     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29633     PyMem_Free(_children);
29634     p->level--;
29635     return _seq;
29636 }
29637 
29638 // _loop1_98: lambda_param_no_default
29639 static asdl_seq *
_loop1_98_rule(Parser * p)29640 _loop1_98_rule(Parser *p)
29641 {
29642     if (p->level++ == MAXSTACK) {
29643         p->error_indicator = 1;
29644         PyErr_NoMemory();
29645     }
29646     if (p->error_indicator) {
29647         p->level--;
29648         return NULL;
29649     }
29650     void *_res = NULL;
29651     int _mark = p->mark;
29652     void **_children = PyMem_Malloc(sizeof(void *));
29653     if (!_children) {
29654         p->error_indicator = 1;
29655         PyErr_NoMemory();
29656         p->level--;
29657         return NULL;
29658     }
29659     Py_ssize_t _children_capacity = 1;
29660     Py_ssize_t _n = 0;
29661     { // lambda_param_no_default
29662         if (p->error_indicator) {
29663             p->level--;
29664             return NULL;
29665         }
29666         D(fprintf(stderr, "%*c> _loop1_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
29667         arg_ty lambda_param_no_default_var;
29668         while (
29669             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
29670         )
29671         {
29672             _res = lambda_param_no_default_var;
29673             if (_n == _children_capacity) {
29674                 _children_capacity *= 2;
29675                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29676                 if (!_new_children) {
29677                     PyMem_Free(_children);
29678                     p->error_indicator = 1;
29679                     PyErr_NoMemory();
29680                     p->level--;
29681                     return NULL;
29682                 }
29683                 _children = _new_children;
29684             }
29685             _children[_n++] = _res;
29686             _mark = p->mark;
29687         }
29688         p->mark = _mark;
29689         D(fprintf(stderr, "%*c%s _loop1_98[%d-%d]: %s failed!\n", p->level, ' ',
29690                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
29691     }
29692     if (_n == 0 || p->error_indicator) {
29693         PyMem_Free(_children);
29694         p->level--;
29695         return NULL;
29696     }
29697     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29698     if (!_seq) {
29699         PyMem_Free(_children);
29700         p->error_indicator = 1;
29701         PyErr_NoMemory();
29702         p->level--;
29703         return NULL;
29704     }
29705     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29706     PyMem_Free(_children);
29707     p->level--;
29708     return _seq;
29709 }
29710 
29711 // _loop0_99: lambda_param_with_default
29712 static asdl_seq *
_loop0_99_rule(Parser * p)29713 _loop0_99_rule(Parser *p)
29714 {
29715     if (p->level++ == MAXSTACK) {
29716         p->error_indicator = 1;
29717         PyErr_NoMemory();
29718     }
29719     if (p->error_indicator) {
29720         p->level--;
29721         return NULL;
29722     }
29723     void *_res = NULL;
29724     int _mark = p->mark;
29725     void **_children = PyMem_Malloc(sizeof(void *));
29726     if (!_children) {
29727         p->error_indicator = 1;
29728         PyErr_NoMemory();
29729         p->level--;
29730         return NULL;
29731     }
29732     Py_ssize_t _children_capacity = 1;
29733     Py_ssize_t _n = 0;
29734     { // lambda_param_with_default
29735         if (p->error_indicator) {
29736             p->level--;
29737             return NULL;
29738         }
29739         D(fprintf(stderr, "%*c> _loop0_99[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
29740         NameDefaultPair* lambda_param_with_default_var;
29741         while (
29742             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
29743         )
29744         {
29745             _res = lambda_param_with_default_var;
29746             if (_n == _children_capacity) {
29747                 _children_capacity *= 2;
29748                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29749                 if (!_new_children) {
29750                     PyMem_Free(_children);
29751                     p->error_indicator = 1;
29752                     PyErr_NoMemory();
29753                     p->level--;
29754                     return NULL;
29755                 }
29756                 _children = _new_children;
29757             }
29758             _children[_n++] = _res;
29759             _mark = p->mark;
29760         }
29761         p->mark = _mark;
29762         D(fprintf(stderr, "%*c%s _loop0_99[%d-%d]: %s failed!\n", p->level, ' ',
29763                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
29764     }
29765     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29766     if (!_seq) {
29767         PyMem_Free(_children);
29768         p->error_indicator = 1;
29769         PyErr_NoMemory();
29770         p->level--;
29771         return NULL;
29772     }
29773     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29774     PyMem_Free(_children);
29775     p->level--;
29776     return _seq;
29777 }
29778 
29779 // _loop1_100: lambda_param_with_default
29780 static asdl_seq *
_loop1_100_rule(Parser * p)29781 _loop1_100_rule(Parser *p)
29782 {
29783     if (p->level++ == MAXSTACK) {
29784         p->error_indicator = 1;
29785         PyErr_NoMemory();
29786     }
29787     if (p->error_indicator) {
29788         p->level--;
29789         return NULL;
29790     }
29791     void *_res = NULL;
29792     int _mark = p->mark;
29793     void **_children = PyMem_Malloc(sizeof(void *));
29794     if (!_children) {
29795         p->error_indicator = 1;
29796         PyErr_NoMemory();
29797         p->level--;
29798         return NULL;
29799     }
29800     Py_ssize_t _children_capacity = 1;
29801     Py_ssize_t _n = 0;
29802     { // lambda_param_with_default
29803         if (p->error_indicator) {
29804             p->level--;
29805             return NULL;
29806         }
29807         D(fprintf(stderr, "%*c> _loop1_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
29808         NameDefaultPair* lambda_param_with_default_var;
29809         while (
29810             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
29811         )
29812         {
29813             _res = lambda_param_with_default_var;
29814             if (_n == _children_capacity) {
29815                 _children_capacity *= 2;
29816                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29817                 if (!_new_children) {
29818                     PyMem_Free(_children);
29819                     p->error_indicator = 1;
29820                     PyErr_NoMemory();
29821                     p->level--;
29822                     return NULL;
29823                 }
29824                 _children = _new_children;
29825             }
29826             _children[_n++] = _res;
29827             _mark = p->mark;
29828         }
29829         p->mark = _mark;
29830         D(fprintf(stderr, "%*c%s _loop1_100[%d-%d]: %s failed!\n", p->level, ' ',
29831                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
29832     }
29833     if (_n == 0 || p->error_indicator) {
29834         PyMem_Free(_children);
29835         p->level--;
29836         return NULL;
29837     }
29838     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29839     if (!_seq) {
29840         PyMem_Free(_children);
29841         p->error_indicator = 1;
29842         PyErr_NoMemory();
29843         p->level--;
29844         return NULL;
29845     }
29846     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29847     PyMem_Free(_children);
29848     p->level--;
29849     return _seq;
29850 }
29851 
29852 // _loop1_101: lambda_param_no_default
29853 static asdl_seq *
_loop1_101_rule(Parser * p)29854 _loop1_101_rule(Parser *p)
29855 {
29856     if (p->level++ == MAXSTACK) {
29857         p->error_indicator = 1;
29858         PyErr_NoMemory();
29859     }
29860     if (p->error_indicator) {
29861         p->level--;
29862         return NULL;
29863     }
29864     void *_res = NULL;
29865     int _mark = p->mark;
29866     void **_children = PyMem_Malloc(sizeof(void *));
29867     if (!_children) {
29868         p->error_indicator = 1;
29869         PyErr_NoMemory();
29870         p->level--;
29871         return NULL;
29872     }
29873     Py_ssize_t _children_capacity = 1;
29874     Py_ssize_t _n = 0;
29875     { // lambda_param_no_default
29876         if (p->error_indicator) {
29877             p->level--;
29878             return NULL;
29879         }
29880         D(fprintf(stderr, "%*c> _loop1_101[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
29881         arg_ty lambda_param_no_default_var;
29882         while (
29883             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
29884         )
29885         {
29886             _res = lambda_param_no_default_var;
29887             if (_n == _children_capacity) {
29888                 _children_capacity *= 2;
29889                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29890                 if (!_new_children) {
29891                     PyMem_Free(_children);
29892                     p->error_indicator = 1;
29893                     PyErr_NoMemory();
29894                     p->level--;
29895                     return NULL;
29896                 }
29897                 _children = _new_children;
29898             }
29899             _children[_n++] = _res;
29900             _mark = p->mark;
29901         }
29902         p->mark = _mark;
29903         D(fprintf(stderr, "%*c%s _loop1_101[%d-%d]: %s failed!\n", p->level, ' ',
29904                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
29905     }
29906     if (_n == 0 || p->error_indicator) {
29907         PyMem_Free(_children);
29908         p->level--;
29909         return NULL;
29910     }
29911     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29912     if (!_seq) {
29913         PyMem_Free(_children);
29914         p->error_indicator = 1;
29915         PyErr_NoMemory();
29916         p->level--;
29917         return NULL;
29918     }
29919     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29920     PyMem_Free(_children);
29921     p->level--;
29922     return _seq;
29923 }
29924 
29925 // _loop1_102: lambda_param_no_default
29926 static asdl_seq *
_loop1_102_rule(Parser * p)29927 _loop1_102_rule(Parser *p)
29928 {
29929     if (p->level++ == MAXSTACK) {
29930         p->error_indicator = 1;
29931         PyErr_NoMemory();
29932     }
29933     if (p->error_indicator) {
29934         p->level--;
29935         return NULL;
29936     }
29937     void *_res = NULL;
29938     int _mark = p->mark;
29939     void **_children = PyMem_Malloc(sizeof(void *));
29940     if (!_children) {
29941         p->error_indicator = 1;
29942         PyErr_NoMemory();
29943         p->level--;
29944         return NULL;
29945     }
29946     Py_ssize_t _children_capacity = 1;
29947     Py_ssize_t _n = 0;
29948     { // lambda_param_no_default
29949         if (p->error_indicator) {
29950             p->level--;
29951             return NULL;
29952         }
29953         D(fprintf(stderr, "%*c> _loop1_102[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
29954         arg_ty lambda_param_no_default_var;
29955         while (
29956             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
29957         )
29958         {
29959             _res = lambda_param_no_default_var;
29960             if (_n == _children_capacity) {
29961                 _children_capacity *= 2;
29962                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29963                 if (!_new_children) {
29964                     PyMem_Free(_children);
29965                     p->error_indicator = 1;
29966                     PyErr_NoMemory();
29967                     p->level--;
29968                     return NULL;
29969                 }
29970                 _children = _new_children;
29971             }
29972             _children[_n++] = _res;
29973             _mark = p->mark;
29974         }
29975         p->mark = _mark;
29976         D(fprintf(stderr, "%*c%s _loop1_102[%d-%d]: %s failed!\n", p->level, ' ',
29977                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
29978     }
29979     if (_n == 0 || p->error_indicator) {
29980         PyMem_Free(_children);
29981         p->level--;
29982         return NULL;
29983     }
29984     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29985     if (!_seq) {
29986         PyMem_Free(_children);
29987         p->error_indicator = 1;
29988         PyErr_NoMemory();
29989         p->level--;
29990         return NULL;
29991     }
29992     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29993     PyMem_Free(_children);
29994     p->level--;
29995     return _seq;
29996 }
29997 
29998 // _loop0_103: lambda_param_no_default
29999 static asdl_seq *
_loop0_103_rule(Parser * p)30000 _loop0_103_rule(Parser *p)
30001 {
30002     if (p->level++ == MAXSTACK) {
30003         p->error_indicator = 1;
30004         PyErr_NoMemory();
30005     }
30006     if (p->error_indicator) {
30007         p->level--;
30008         return NULL;
30009     }
30010     void *_res = NULL;
30011     int _mark = p->mark;
30012     void **_children = PyMem_Malloc(sizeof(void *));
30013     if (!_children) {
30014         p->error_indicator = 1;
30015         PyErr_NoMemory();
30016         p->level--;
30017         return NULL;
30018     }
30019     Py_ssize_t _children_capacity = 1;
30020     Py_ssize_t _n = 0;
30021     { // lambda_param_no_default
30022         if (p->error_indicator) {
30023             p->level--;
30024             return NULL;
30025         }
30026         D(fprintf(stderr, "%*c> _loop0_103[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
30027         arg_ty lambda_param_no_default_var;
30028         while (
30029             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
30030         )
30031         {
30032             _res = lambda_param_no_default_var;
30033             if (_n == _children_capacity) {
30034                 _children_capacity *= 2;
30035                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30036                 if (!_new_children) {
30037                     PyMem_Free(_children);
30038                     p->error_indicator = 1;
30039                     PyErr_NoMemory();
30040                     p->level--;
30041                     return NULL;
30042                 }
30043                 _children = _new_children;
30044             }
30045             _children[_n++] = _res;
30046             _mark = p->mark;
30047         }
30048         p->mark = _mark;
30049         D(fprintf(stderr, "%*c%s _loop0_103[%d-%d]: %s failed!\n", p->level, ' ',
30050                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
30051     }
30052     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30053     if (!_seq) {
30054         PyMem_Free(_children);
30055         p->error_indicator = 1;
30056         PyErr_NoMemory();
30057         p->level--;
30058         return NULL;
30059     }
30060     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30061     PyMem_Free(_children);
30062     p->level--;
30063     return _seq;
30064 }
30065 
30066 // _loop1_104: lambda_param_with_default
30067 static asdl_seq *
_loop1_104_rule(Parser * p)30068 _loop1_104_rule(Parser *p)
30069 {
30070     if (p->level++ == MAXSTACK) {
30071         p->error_indicator = 1;
30072         PyErr_NoMemory();
30073     }
30074     if (p->error_indicator) {
30075         p->level--;
30076         return NULL;
30077     }
30078     void *_res = NULL;
30079     int _mark = p->mark;
30080     void **_children = PyMem_Malloc(sizeof(void *));
30081     if (!_children) {
30082         p->error_indicator = 1;
30083         PyErr_NoMemory();
30084         p->level--;
30085         return NULL;
30086     }
30087     Py_ssize_t _children_capacity = 1;
30088     Py_ssize_t _n = 0;
30089     { // lambda_param_with_default
30090         if (p->error_indicator) {
30091             p->level--;
30092             return NULL;
30093         }
30094         D(fprintf(stderr, "%*c> _loop1_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
30095         NameDefaultPair* lambda_param_with_default_var;
30096         while (
30097             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
30098         )
30099         {
30100             _res = lambda_param_with_default_var;
30101             if (_n == _children_capacity) {
30102                 _children_capacity *= 2;
30103                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30104                 if (!_new_children) {
30105                     PyMem_Free(_children);
30106                     p->error_indicator = 1;
30107                     PyErr_NoMemory();
30108                     p->level--;
30109                     return NULL;
30110                 }
30111                 _children = _new_children;
30112             }
30113             _children[_n++] = _res;
30114             _mark = p->mark;
30115         }
30116         p->mark = _mark;
30117         D(fprintf(stderr, "%*c%s _loop1_104[%d-%d]: %s failed!\n", p->level, ' ',
30118                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
30119     }
30120     if (_n == 0 || p->error_indicator) {
30121         PyMem_Free(_children);
30122         p->level--;
30123         return NULL;
30124     }
30125     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30126     if (!_seq) {
30127         PyMem_Free(_children);
30128         p->error_indicator = 1;
30129         PyErr_NoMemory();
30130         p->level--;
30131         return NULL;
30132     }
30133     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30134     PyMem_Free(_children);
30135     p->level--;
30136     return _seq;
30137 }
30138 
30139 // _loop0_105: lambda_param_no_default
30140 static asdl_seq *
_loop0_105_rule(Parser * p)30141 _loop0_105_rule(Parser *p)
30142 {
30143     if (p->level++ == MAXSTACK) {
30144         p->error_indicator = 1;
30145         PyErr_NoMemory();
30146     }
30147     if (p->error_indicator) {
30148         p->level--;
30149         return NULL;
30150     }
30151     void *_res = NULL;
30152     int _mark = p->mark;
30153     void **_children = PyMem_Malloc(sizeof(void *));
30154     if (!_children) {
30155         p->error_indicator = 1;
30156         PyErr_NoMemory();
30157         p->level--;
30158         return NULL;
30159     }
30160     Py_ssize_t _children_capacity = 1;
30161     Py_ssize_t _n = 0;
30162     { // lambda_param_no_default
30163         if (p->error_indicator) {
30164             p->level--;
30165             return NULL;
30166         }
30167         D(fprintf(stderr, "%*c> _loop0_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
30168         arg_ty lambda_param_no_default_var;
30169         while (
30170             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
30171         )
30172         {
30173             _res = lambda_param_no_default_var;
30174             if (_n == _children_capacity) {
30175                 _children_capacity *= 2;
30176                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30177                 if (!_new_children) {
30178                     PyMem_Free(_children);
30179                     p->error_indicator = 1;
30180                     PyErr_NoMemory();
30181                     p->level--;
30182                     return NULL;
30183                 }
30184                 _children = _new_children;
30185             }
30186             _children[_n++] = _res;
30187             _mark = p->mark;
30188         }
30189         p->mark = _mark;
30190         D(fprintf(stderr, "%*c%s _loop0_105[%d-%d]: %s failed!\n", p->level, ' ',
30191                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
30192     }
30193     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30194     if (!_seq) {
30195         PyMem_Free(_children);
30196         p->error_indicator = 1;
30197         PyErr_NoMemory();
30198         p->level--;
30199         return NULL;
30200     }
30201     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30202     PyMem_Free(_children);
30203     p->level--;
30204     return _seq;
30205 }
30206 
30207 // _loop1_106: lambda_param_with_default
30208 static asdl_seq *
_loop1_106_rule(Parser * p)30209 _loop1_106_rule(Parser *p)
30210 {
30211     if (p->level++ == MAXSTACK) {
30212         p->error_indicator = 1;
30213         PyErr_NoMemory();
30214     }
30215     if (p->error_indicator) {
30216         p->level--;
30217         return NULL;
30218     }
30219     void *_res = NULL;
30220     int _mark = p->mark;
30221     void **_children = PyMem_Malloc(sizeof(void *));
30222     if (!_children) {
30223         p->error_indicator = 1;
30224         PyErr_NoMemory();
30225         p->level--;
30226         return NULL;
30227     }
30228     Py_ssize_t _children_capacity = 1;
30229     Py_ssize_t _n = 0;
30230     { // lambda_param_with_default
30231         if (p->error_indicator) {
30232             p->level--;
30233             return NULL;
30234         }
30235         D(fprintf(stderr, "%*c> _loop1_106[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
30236         NameDefaultPair* lambda_param_with_default_var;
30237         while (
30238             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
30239         )
30240         {
30241             _res = lambda_param_with_default_var;
30242             if (_n == _children_capacity) {
30243                 _children_capacity *= 2;
30244                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30245                 if (!_new_children) {
30246                     PyMem_Free(_children);
30247                     p->error_indicator = 1;
30248                     PyErr_NoMemory();
30249                     p->level--;
30250                     return NULL;
30251                 }
30252                 _children = _new_children;
30253             }
30254             _children[_n++] = _res;
30255             _mark = p->mark;
30256         }
30257         p->mark = _mark;
30258         D(fprintf(stderr, "%*c%s _loop1_106[%d-%d]: %s failed!\n", p->level, ' ',
30259                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
30260     }
30261     if (_n == 0 || p->error_indicator) {
30262         PyMem_Free(_children);
30263         p->level--;
30264         return NULL;
30265     }
30266     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30267     if (!_seq) {
30268         PyMem_Free(_children);
30269         p->error_indicator = 1;
30270         PyErr_NoMemory();
30271         p->level--;
30272         return NULL;
30273     }
30274     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30275     PyMem_Free(_children);
30276     p->level--;
30277     return _seq;
30278 }
30279 
30280 // _loop0_107: lambda_param_maybe_default
30281 static asdl_seq *
_loop0_107_rule(Parser * p)30282 _loop0_107_rule(Parser *p)
30283 {
30284     if (p->level++ == MAXSTACK) {
30285         p->error_indicator = 1;
30286         PyErr_NoMemory();
30287     }
30288     if (p->error_indicator) {
30289         p->level--;
30290         return NULL;
30291     }
30292     void *_res = NULL;
30293     int _mark = p->mark;
30294     void **_children = PyMem_Malloc(sizeof(void *));
30295     if (!_children) {
30296         p->error_indicator = 1;
30297         PyErr_NoMemory();
30298         p->level--;
30299         return NULL;
30300     }
30301     Py_ssize_t _children_capacity = 1;
30302     Py_ssize_t _n = 0;
30303     { // lambda_param_maybe_default
30304         if (p->error_indicator) {
30305             p->level--;
30306             return NULL;
30307         }
30308         D(fprintf(stderr, "%*c> _loop0_107[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
30309         NameDefaultPair* lambda_param_maybe_default_var;
30310         while (
30311             (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
30312         )
30313         {
30314             _res = lambda_param_maybe_default_var;
30315             if (_n == _children_capacity) {
30316                 _children_capacity *= 2;
30317                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30318                 if (!_new_children) {
30319                     PyMem_Free(_children);
30320                     p->error_indicator = 1;
30321                     PyErr_NoMemory();
30322                     p->level--;
30323                     return NULL;
30324                 }
30325                 _children = _new_children;
30326             }
30327             _children[_n++] = _res;
30328             _mark = p->mark;
30329         }
30330         p->mark = _mark;
30331         D(fprintf(stderr, "%*c%s _loop0_107[%d-%d]: %s failed!\n", p->level, ' ',
30332                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
30333     }
30334     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30335     if (!_seq) {
30336         PyMem_Free(_children);
30337         p->error_indicator = 1;
30338         PyErr_NoMemory();
30339         p->level--;
30340         return NULL;
30341     }
30342     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30343     PyMem_Free(_children);
30344     p->level--;
30345     return _seq;
30346 }
30347 
30348 // _loop1_108: lambda_param_maybe_default
30349 static asdl_seq *
_loop1_108_rule(Parser * p)30350 _loop1_108_rule(Parser *p)
30351 {
30352     if (p->level++ == MAXSTACK) {
30353         p->error_indicator = 1;
30354         PyErr_NoMemory();
30355     }
30356     if (p->error_indicator) {
30357         p->level--;
30358         return NULL;
30359     }
30360     void *_res = NULL;
30361     int _mark = p->mark;
30362     void **_children = PyMem_Malloc(sizeof(void *));
30363     if (!_children) {
30364         p->error_indicator = 1;
30365         PyErr_NoMemory();
30366         p->level--;
30367         return NULL;
30368     }
30369     Py_ssize_t _children_capacity = 1;
30370     Py_ssize_t _n = 0;
30371     { // lambda_param_maybe_default
30372         if (p->error_indicator) {
30373             p->level--;
30374             return NULL;
30375         }
30376         D(fprintf(stderr, "%*c> _loop1_108[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
30377         NameDefaultPair* lambda_param_maybe_default_var;
30378         while (
30379             (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
30380         )
30381         {
30382             _res = lambda_param_maybe_default_var;
30383             if (_n == _children_capacity) {
30384                 _children_capacity *= 2;
30385                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30386                 if (!_new_children) {
30387                     PyMem_Free(_children);
30388                     p->error_indicator = 1;
30389                     PyErr_NoMemory();
30390                     p->level--;
30391                     return NULL;
30392                 }
30393                 _children = _new_children;
30394             }
30395             _children[_n++] = _res;
30396             _mark = p->mark;
30397         }
30398         p->mark = _mark;
30399         D(fprintf(stderr, "%*c%s _loop1_108[%d-%d]: %s failed!\n", p->level, ' ',
30400                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
30401     }
30402     if (_n == 0 || p->error_indicator) {
30403         PyMem_Free(_children);
30404         p->level--;
30405         return NULL;
30406     }
30407     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30408     if (!_seq) {
30409         PyMem_Free(_children);
30410         p->error_indicator = 1;
30411         PyErr_NoMemory();
30412         p->level--;
30413         return NULL;
30414     }
30415     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30416     PyMem_Free(_children);
30417     p->level--;
30418     return _seq;
30419 }
30420 
30421 // _loop1_109: STRING
30422 static asdl_seq *
_loop1_109_rule(Parser * p)30423 _loop1_109_rule(Parser *p)
30424 {
30425     if (p->level++ == MAXSTACK) {
30426         p->error_indicator = 1;
30427         PyErr_NoMemory();
30428     }
30429     if (p->error_indicator) {
30430         p->level--;
30431         return NULL;
30432     }
30433     void *_res = NULL;
30434     int _mark = p->mark;
30435     void **_children = PyMem_Malloc(sizeof(void *));
30436     if (!_children) {
30437         p->error_indicator = 1;
30438         PyErr_NoMemory();
30439         p->level--;
30440         return NULL;
30441     }
30442     Py_ssize_t _children_capacity = 1;
30443     Py_ssize_t _n = 0;
30444     { // STRING
30445         if (p->error_indicator) {
30446             p->level--;
30447             return NULL;
30448         }
30449         D(fprintf(stderr, "%*c> _loop1_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
30450         expr_ty string_var;
30451         while (
30452             (string_var = _PyPegen_string_token(p))  // STRING
30453         )
30454         {
30455             _res = string_var;
30456             if (_n == _children_capacity) {
30457                 _children_capacity *= 2;
30458                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30459                 if (!_new_children) {
30460                     PyMem_Free(_children);
30461                     p->error_indicator = 1;
30462                     PyErr_NoMemory();
30463                     p->level--;
30464                     return NULL;
30465                 }
30466                 _children = _new_children;
30467             }
30468             _children[_n++] = _res;
30469             _mark = p->mark;
30470         }
30471         p->mark = _mark;
30472         D(fprintf(stderr, "%*c%s _loop1_109[%d-%d]: %s failed!\n", p->level, ' ',
30473                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
30474     }
30475     if (_n == 0 || p->error_indicator) {
30476         PyMem_Free(_children);
30477         p->level--;
30478         return NULL;
30479     }
30480     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30481     if (!_seq) {
30482         PyMem_Free(_children);
30483         p->error_indicator = 1;
30484         PyErr_NoMemory();
30485         p->level--;
30486         return NULL;
30487     }
30488     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30489     PyMem_Free(_children);
30490     p->level--;
30491     return _seq;
30492 }
30493 
30494 // _tmp_110: star_named_expression ',' star_named_expressions?
30495 static void *
_tmp_110_rule(Parser * p)30496 _tmp_110_rule(Parser *p)
30497 {
30498     if (p->level++ == MAXSTACK) {
30499         p->error_indicator = 1;
30500         PyErr_NoMemory();
30501     }
30502     if (p->error_indicator) {
30503         p->level--;
30504         return NULL;
30505     }
30506     void * _res = NULL;
30507     int _mark = p->mark;
30508     { // star_named_expression ',' star_named_expressions?
30509         if (p->error_indicator) {
30510             p->level--;
30511             return NULL;
30512         }
30513         D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
30514         Token * _literal;
30515         expr_ty y;
30516         void *z;
30517         if (
30518             (y = star_named_expression_rule(p))  // star_named_expression
30519             &&
30520             (_literal = _PyPegen_expect_token(p, 12))  // token=','
30521             &&
30522             (z = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
30523         )
30524         {
30525             D(fprintf(stderr, "%*c+ _tmp_110[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
30526             _res = _PyPegen_seq_insert_in_front ( p , y , z );
30527             if (_res == NULL && PyErr_Occurred()) {
30528                 p->error_indicator = 1;
30529                 p->level--;
30530                 return NULL;
30531             }
30532             goto done;
30533         }
30534         p->mark = _mark;
30535         D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ',
30536                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
30537     }
30538     _res = NULL;
30539   done:
30540     p->level--;
30541     return _res;
30542 }
30543 
30544 // _loop0_112: ',' double_starred_kvpair
30545 static asdl_seq *
_loop0_112_rule(Parser * p)30546 _loop0_112_rule(Parser *p)
30547 {
30548     if (p->level++ == MAXSTACK) {
30549         p->error_indicator = 1;
30550         PyErr_NoMemory();
30551     }
30552     if (p->error_indicator) {
30553         p->level--;
30554         return NULL;
30555     }
30556     void *_res = NULL;
30557     int _mark = p->mark;
30558     void **_children = PyMem_Malloc(sizeof(void *));
30559     if (!_children) {
30560         p->error_indicator = 1;
30561         PyErr_NoMemory();
30562         p->level--;
30563         return NULL;
30564     }
30565     Py_ssize_t _children_capacity = 1;
30566     Py_ssize_t _n = 0;
30567     { // ',' double_starred_kvpair
30568         if (p->error_indicator) {
30569             p->level--;
30570             return NULL;
30571         }
30572         D(fprintf(stderr, "%*c> _loop0_112[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair"));
30573         Token * _literal;
30574         KeyValuePair* elem;
30575         while (
30576             (_literal = _PyPegen_expect_token(p, 12))  // token=','
30577             &&
30578             (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
30579         )
30580         {
30581             _res = elem;
30582             if (_res == NULL && PyErr_Occurred()) {
30583                 p->error_indicator = 1;
30584                 PyMem_Free(_children);
30585                 p->level--;
30586                 return NULL;
30587             }
30588             if (_n == _children_capacity) {
30589                 _children_capacity *= 2;
30590                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30591                 if (!_new_children) {
30592                     PyMem_Free(_children);
30593                     p->error_indicator = 1;
30594                     PyErr_NoMemory();
30595                     p->level--;
30596                     return NULL;
30597                 }
30598                 _children = _new_children;
30599             }
30600             _children[_n++] = _res;
30601             _mark = p->mark;
30602         }
30603         p->mark = _mark;
30604         D(fprintf(stderr, "%*c%s _loop0_112[%d-%d]: %s failed!\n", p->level, ' ',
30605                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair"));
30606     }
30607     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30608     if (!_seq) {
30609         PyMem_Free(_children);
30610         p->error_indicator = 1;
30611         PyErr_NoMemory();
30612         p->level--;
30613         return NULL;
30614     }
30615     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30616     PyMem_Free(_children);
30617     p->level--;
30618     return _seq;
30619 }
30620 
30621 // _gather_111: double_starred_kvpair _loop0_112
30622 static asdl_seq *
_gather_111_rule(Parser * p)30623 _gather_111_rule(Parser *p)
30624 {
30625     if (p->level++ == MAXSTACK) {
30626         p->error_indicator = 1;
30627         PyErr_NoMemory();
30628     }
30629     if (p->error_indicator) {
30630         p->level--;
30631         return NULL;
30632     }
30633     asdl_seq * _res = NULL;
30634     int _mark = p->mark;
30635     { // double_starred_kvpair _loop0_112
30636         if (p->error_indicator) {
30637             p->level--;
30638             return NULL;
30639         }
30640         D(fprintf(stderr, "%*c> _gather_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_112"));
30641         KeyValuePair* elem;
30642         asdl_seq * seq;
30643         if (
30644             (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
30645             &&
30646             (seq = _loop0_112_rule(p))  // _loop0_112
30647         )
30648         {
30649             D(fprintf(stderr, "%*c+ _gather_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_112"));
30650             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
30651             goto done;
30652         }
30653         p->mark = _mark;
30654         D(fprintf(stderr, "%*c%s _gather_111[%d-%d]: %s failed!\n", p->level, ' ',
30655                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_112"));
30656     }
30657     _res = NULL;
30658   done:
30659     p->level--;
30660     return _res;
30661 }
30662 
30663 // _loop1_113: for_if_clause
30664 static asdl_seq *
_loop1_113_rule(Parser * p)30665 _loop1_113_rule(Parser *p)
30666 {
30667     if (p->level++ == MAXSTACK) {
30668         p->error_indicator = 1;
30669         PyErr_NoMemory();
30670     }
30671     if (p->error_indicator) {
30672         p->level--;
30673         return NULL;
30674     }
30675     void *_res = NULL;
30676     int _mark = p->mark;
30677     void **_children = PyMem_Malloc(sizeof(void *));
30678     if (!_children) {
30679         p->error_indicator = 1;
30680         PyErr_NoMemory();
30681         p->level--;
30682         return NULL;
30683     }
30684     Py_ssize_t _children_capacity = 1;
30685     Py_ssize_t _n = 0;
30686     { // for_if_clause
30687         if (p->error_indicator) {
30688             p->level--;
30689             return NULL;
30690         }
30691         D(fprintf(stderr, "%*c> _loop1_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause"));
30692         comprehension_ty for_if_clause_var;
30693         while (
30694             (for_if_clause_var = for_if_clause_rule(p))  // for_if_clause
30695         )
30696         {
30697             _res = for_if_clause_var;
30698             if (_n == _children_capacity) {
30699                 _children_capacity *= 2;
30700                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30701                 if (!_new_children) {
30702                     PyMem_Free(_children);
30703                     p->error_indicator = 1;
30704                     PyErr_NoMemory();
30705                     p->level--;
30706                     return NULL;
30707                 }
30708                 _children = _new_children;
30709             }
30710             _children[_n++] = _res;
30711             _mark = p->mark;
30712         }
30713         p->mark = _mark;
30714         D(fprintf(stderr, "%*c%s _loop1_113[%d-%d]: %s failed!\n", p->level, ' ',
30715                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause"));
30716     }
30717     if (_n == 0 || p->error_indicator) {
30718         PyMem_Free(_children);
30719         p->level--;
30720         return NULL;
30721     }
30722     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30723     if (!_seq) {
30724         PyMem_Free(_children);
30725         p->error_indicator = 1;
30726         PyErr_NoMemory();
30727         p->level--;
30728         return NULL;
30729     }
30730     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30731     PyMem_Free(_children);
30732     p->level--;
30733     return _seq;
30734 }
30735 
30736 // _loop0_114: ('if' disjunction)
30737 static asdl_seq *
_loop0_114_rule(Parser * p)30738 _loop0_114_rule(Parser *p)
30739 {
30740     if (p->level++ == MAXSTACK) {
30741         p->error_indicator = 1;
30742         PyErr_NoMemory();
30743     }
30744     if (p->error_indicator) {
30745         p->level--;
30746         return NULL;
30747     }
30748     void *_res = NULL;
30749     int _mark = p->mark;
30750     void **_children = PyMem_Malloc(sizeof(void *));
30751     if (!_children) {
30752         p->error_indicator = 1;
30753         PyErr_NoMemory();
30754         p->level--;
30755         return NULL;
30756     }
30757     Py_ssize_t _children_capacity = 1;
30758     Py_ssize_t _n = 0;
30759     { // ('if' disjunction)
30760         if (p->error_indicator) {
30761             p->level--;
30762             return NULL;
30763         }
30764         D(fprintf(stderr, "%*c> _loop0_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
30765         void *_tmp_231_var;
30766         while (
30767             (_tmp_231_var = _tmp_231_rule(p))  // 'if' disjunction
30768         )
30769         {
30770             _res = _tmp_231_var;
30771             if (_n == _children_capacity) {
30772                 _children_capacity *= 2;
30773                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30774                 if (!_new_children) {
30775                     PyMem_Free(_children);
30776                     p->error_indicator = 1;
30777                     PyErr_NoMemory();
30778                     p->level--;
30779                     return NULL;
30780                 }
30781                 _children = _new_children;
30782             }
30783             _children[_n++] = _res;
30784             _mark = p->mark;
30785         }
30786         p->mark = _mark;
30787         D(fprintf(stderr, "%*c%s _loop0_114[%d-%d]: %s failed!\n", p->level, ' ',
30788                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
30789     }
30790     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30791     if (!_seq) {
30792         PyMem_Free(_children);
30793         p->error_indicator = 1;
30794         PyErr_NoMemory();
30795         p->level--;
30796         return NULL;
30797     }
30798     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30799     PyMem_Free(_children);
30800     p->level--;
30801     return _seq;
30802 }
30803 
30804 // _loop0_115: ('if' disjunction)
30805 static asdl_seq *
_loop0_115_rule(Parser * p)30806 _loop0_115_rule(Parser *p)
30807 {
30808     if (p->level++ == MAXSTACK) {
30809         p->error_indicator = 1;
30810         PyErr_NoMemory();
30811     }
30812     if (p->error_indicator) {
30813         p->level--;
30814         return NULL;
30815     }
30816     void *_res = NULL;
30817     int _mark = p->mark;
30818     void **_children = PyMem_Malloc(sizeof(void *));
30819     if (!_children) {
30820         p->error_indicator = 1;
30821         PyErr_NoMemory();
30822         p->level--;
30823         return NULL;
30824     }
30825     Py_ssize_t _children_capacity = 1;
30826     Py_ssize_t _n = 0;
30827     { // ('if' disjunction)
30828         if (p->error_indicator) {
30829             p->level--;
30830             return NULL;
30831         }
30832         D(fprintf(stderr, "%*c> _loop0_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
30833         void *_tmp_232_var;
30834         while (
30835             (_tmp_232_var = _tmp_232_rule(p))  // 'if' disjunction
30836         )
30837         {
30838             _res = _tmp_232_var;
30839             if (_n == _children_capacity) {
30840                 _children_capacity *= 2;
30841                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30842                 if (!_new_children) {
30843                     PyMem_Free(_children);
30844                     p->error_indicator = 1;
30845                     PyErr_NoMemory();
30846                     p->level--;
30847                     return NULL;
30848                 }
30849                 _children = _new_children;
30850             }
30851             _children[_n++] = _res;
30852             _mark = p->mark;
30853         }
30854         p->mark = _mark;
30855         D(fprintf(stderr, "%*c%s _loop0_115[%d-%d]: %s failed!\n", p->level, ' ',
30856                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
30857     }
30858     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30859     if (!_seq) {
30860         PyMem_Free(_children);
30861         p->error_indicator = 1;
30862         PyErr_NoMemory();
30863         p->level--;
30864         return NULL;
30865     }
30866     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30867     PyMem_Free(_children);
30868     p->level--;
30869     return _seq;
30870 }
30871 
30872 // _tmp_116: assignment_expression | expression !':='
30873 static void *
_tmp_116_rule(Parser * p)30874 _tmp_116_rule(Parser *p)
30875 {
30876     if (p->level++ == MAXSTACK) {
30877         p->error_indicator = 1;
30878         PyErr_NoMemory();
30879     }
30880     if (p->error_indicator) {
30881         p->level--;
30882         return NULL;
30883     }
30884     void * _res = NULL;
30885     int _mark = p->mark;
30886     { // assignment_expression
30887         if (p->error_indicator) {
30888             p->level--;
30889             return NULL;
30890         }
30891         D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
30892         expr_ty assignment_expression_var;
30893         if (
30894             (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
30895         )
30896         {
30897             D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
30898             _res = assignment_expression_var;
30899             goto done;
30900         }
30901         p->mark = _mark;
30902         D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ',
30903                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
30904     }
30905     { // expression !':='
30906         if (p->error_indicator) {
30907             p->level--;
30908             return NULL;
30909         }
30910         D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
30911         expr_ty expression_var;
30912         if (
30913             (expression_var = expression_rule(p))  // expression
30914             &&
30915             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
30916         )
30917         {
30918             D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
30919             _res = expression_var;
30920             goto done;
30921         }
30922         p->mark = _mark;
30923         D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ',
30924                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
30925     }
30926     _res = NULL;
30927   done:
30928     p->level--;
30929     return _res;
30930 }
30931 
30932 // _loop0_118: ',' (starred_expression | (assignment_expression | expression !':=') !'=')
30933 static asdl_seq *
_loop0_118_rule(Parser * p)30934 _loop0_118_rule(Parser *p)
30935 {
30936     if (p->level++ == MAXSTACK) {
30937         p->error_indicator = 1;
30938         PyErr_NoMemory();
30939     }
30940     if (p->error_indicator) {
30941         p->level--;
30942         return NULL;
30943     }
30944     void *_res = NULL;
30945     int _mark = p->mark;
30946     void **_children = PyMem_Malloc(sizeof(void *));
30947     if (!_children) {
30948         p->error_indicator = 1;
30949         PyErr_NoMemory();
30950         p->level--;
30951         return NULL;
30952     }
30953     Py_ssize_t _children_capacity = 1;
30954     Py_ssize_t _n = 0;
30955     { // ',' (starred_expression | (assignment_expression | expression !':=') !'=')
30956         if (p->error_indicator) {
30957             p->level--;
30958             return NULL;
30959         }
30960         D(fprintf(stderr, "%*c> _loop0_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
30961         Token * _literal;
30962         void *elem;
30963         while (
30964             (_literal = _PyPegen_expect_token(p, 12))  // token=','
30965             &&
30966             (elem = _tmp_233_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
30967         )
30968         {
30969             _res = elem;
30970             if (_res == NULL && PyErr_Occurred()) {
30971                 p->error_indicator = 1;
30972                 PyMem_Free(_children);
30973                 p->level--;
30974                 return NULL;
30975             }
30976             if (_n == _children_capacity) {
30977                 _children_capacity *= 2;
30978                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30979                 if (!_new_children) {
30980                     PyMem_Free(_children);
30981                     p->error_indicator = 1;
30982                     PyErr_NoMemory();
30983                     p->level--;
30984                     return NULL;
30985                 }
30986                 _children = _new_children;
30987             }
30988             _children[_n++] = _res;
30989             _mark = p->mark;
30990         }
30991         p->mark = _mark;
30992         D(fprintf(stderr, "%*c%s _loop0_118[%d-%d]: %s failed!\n", p->level, ' ',
30993                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
30994     }
30995     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30996     if (!_seq) {
30997         PyMem_Free(_children);
30998         p->error_indicator = 1;
30999         PyErr_NoMemory();
31000         p->level--;
31001         return NULL;
31002     }
31003     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31004     PyMem_Free(_children);
31005     p->level--;
31006     return _seq;
31007 }
31008 
31009 // _gather_117:
31010 //     | (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_118
31011 static asdl_seq *
_gather_117_rule(Parser * p)31012 _gather_117_rule(Parser *p)
31013 {
31014     if (p->level++ == MAXSTACK) {
31015         p->error_indicator = 1;
31016         PyErr_NoMemory();
31017     }
31018     if (p->error_indicator) {
31019         p->level--;
31020         return NULL;
31021     }
31022     asdl_seq * _res = NULL;
31023     int _mark = p->mark;
31024     { // (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_118
31025         if (p->error_indicator) {
31026             p->level--;
31027             return NULL;
31028         }
31029         D(fprintf(stderr, "%*c> _gather_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_118"));
31030         void *elem;
31031         asdl_seq * seq;
31032         if (
31033             (elem = _tmp_233_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
31034             &&
31035             (seq = _loop0_118_rule(p))  // _loop0_118
31036         )
31037         {
31038             D(fprintf(stderr, "%*c+ _gather_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_118"));
31039             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31040             goto done;
31041         }
31042         p->mark = _mark;
31043         D(fprintf(stderr, "%*c%s _gather_117[%d-%d]: %s failed!\n", p->level, ' ',
31044                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_118"));
31045     }
31046     _res = NULL;
31047   done:
31048     p->level--;
31049     return _res;
31050 }
31051 
31052 // _tmp_119: ',' kwargs
31053 static void *
_tmp_119_rule(Parser * p)31054 _tmp_119_rule(Parser *p)
31055 {
31056     if (p->level++ == MAXSTACK) {
31057         p->error_indicator = 1;
31058         PyErr_NoMemory();
31059     }
31060     if (p->error_indicator) {
31061         p->level--;
31062         return NULL;
31063     }
31064     void * _res = NULL;
31065     int _mark = p->mark;
31066     { // ',' kwargs
31067         if (p->error_indicator) {
31068             p->level--;
31069             return NULL;
31070         }
31071         D(fprintf(stderr, "%*c> _tmp_119[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
31072         Token * _literal;
31073         asdl_seq* k;
31074         if (
31075             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31076             &&
31077             (k = kwargs_rule(p))  // kwargs
31078         )
31079         {
31080             D(fprintf(stderr, "%*c+ _tmp_119[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
31081             _res = k;
31082             if (_res == NULL && PyErr_Occurred()) {
31083                 p->error_indicator = 1;
31084                 p->level--;
31085                 return NULL;
31086             }
31087             goto done;
31088         }
31089         p->mark = _mark;
31090         D(fprintf(stderr, "%*c%s _tmp_119[%d-%d]: %s failed!\n", p->level, ' ',
31091                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwargs"));
31092     }
31093     _res = NULL;
31094   done:
31095     p->level--;
31096     return _res;
31097 }
31098 
31099 // _loop0_121: ',' kwarg_or_starred
31100 static asdl_seq *
_loop0_121_rule(Parser * p)31101 _loop0_121_rule(Parser *p)
31102 {
31103     if (p->level++ == MAXSTACK) {
31104         p->error_indicator = 1;
31105         PyErr_NoMemory();
31106     }
31107     if (p->error_indicator) {
31108         p->level--;
31109         return NULL;
31110     }
31111     void *_res = NULL;
31112     int _mark = p->mark;
31113     void **_children = PyMem_Malloc(sizeof(void *));
31114     if (!_children) {
31115         p->error_indicator = 1;
31116         PyErr_NoMemory();
31117         p->level--;
31118         return NULL;
31119     }
31120     Py_ssize_t _children_capacity = 1;
31121     Py_ssize_t _n = 0;
31122     { // ',' kwarg_or_starred
31123         if (p->error_indicator) {
31124             p->level--;
31125             return NULL;
31126         }
31127         D(fprintf(stderr, "%*c> _loop0_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred"));
31128         Token * _literal;
31129         KeywordOrStarred* elem;
31130         while (
31131             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31132             &&
31133             (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
31134         )
31135         {
31136             _res = elem;
31137             if (_res == NULL && PyErr_Occurred()) {
31138                 p->error_indicator = 1;
31139                 PyMem_Free(_children);
31140                 p->level--;
31141                 return NULL;
31142             }
31143             if (_n == _children_capacity) {
31144                 _children_capacity *= 2;
31145                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31146                 if (!_new_children) {
31147                     PyMem_Free(_children);
31148                     p->error_indicator = 1;
31149                     PyErr_NoMemory();
31150                     p->level--;
31151                     return NULL;
31152                 }
31153                 _children = _new_children;
31154             }
31155             _children[_n++] = _res;
31156             _mark = p->mark;
31157         }
31158         p->mark = _mark;
31159         D(fprintf(stderr, "%*c%s _loop0_121[%d-%d]: %s failed!\n", p->level, ' ',
31160                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred"));
31161     }
31162     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31163     if (!_seq) {
31164         PyMem_Free(_children);
31165         p->error_indicator = 1;
31166         PyErr_NoMemory();
31167         p->level--;
31168         return NULL;
31169     }
31170     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31171     PyMem_Free(_children);
31172     p->level--;
31173     return _seq;
31174 }
31175 
31176 // _gather_120: kwarg_or_starred _loop0_121
31177 static asdl_seq *
_gather_120_rule(Parser * p)31178 _gather_120_rule(Parser *p)
31179 {
31180     if (p->level++ == MAXSTACK) {
31181         p->error_indicator = 1;
31182         PyErr_NoMemory();
31183     }
31184     if (p->error_indicator) {
31185         p->level--;
31186         return NULL;
31187     }
31188     asdl_seq * _res = NULL;
31189     int _mark = p->mark;
31190     { // kwarg_or_starred _loop0_121
31191         if (p->error_indicator) {
31192             p->level--;
31193             return NULL;
31194         }
31195         D(fprintf(stderr, "%*c> _gather_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_121"));
31196         KeywordOrStarred* elem;
31197         asdl_seq * seq;
31198         if (
31199             (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
31200             &&
31201             (seq = _loop0_121_rule(p))  // _loop0_121
31202         )
31203         {
31204             D(fprintf(stderr, "%*c+ _gather_120[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_121"));
31205             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31206             goto done;
31207         }
31208         p->mark = _mark;
31209         D(fprintf(stderr, "%*c%s _gather_120[%d-%d]: %s failed!\n", p->level, ' ',
31210                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_121"));
31211     }
31212     _res = NULL;
31213   done:
31214     p->level--;
31215     return _res;
31216 }
31217 
31218 // _loop0_123: ',' kwarg_or_double_starred
31219 static asdl_seq *
_loop0_123_rule(Parser * p)31220 _loop0_123_rule(Parser *p)
31221 {
31222     if (p->level++ == MAXSTACK) {
31223         p->error_indicator = 1;
31224         PyErr_NoMemory();
31225     }
31226     if (p->error_indicator) {
31227         p->level--;
31228         return NULL;
31229     }
31230     void *_res = NULL;
31231     int _mark = p->mark;
31232     void **_children = PyMem_Malloc(sizeof(void *));
31233     if (!_children) {
31234         p->error_indicator = 1;
31235         PyErr_NoMemory();
31236         p->level--;
31237         return NULL;
31238     }
31239     Py_ssize_t _children_capacity = 1;
31240     Py_ssize_t _n = 0;
31241     { // ',' kwarg_or_double_starred
31242         if (p->error_indicator) {
31243             p->level--;
31244             return NULL;
31245         }
31246         D(fprintf(stderr, "%*c> _loop0_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred"));
31247         Token * _literal;
31248         KeywordOrStarred* elem;
31249         while (
31250             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31251             &&
31252             (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
31253         )
31254         {
31255             _res = elem;
31256             if (_res == NULL && PyErr_Occurred()) {
31257                 p->error_indicator = 1;
31258                 PyMem_Free(_children);
31259                 p->level--;
31260                 return NULL;
31261             }
31262             if (_n == _children_capacity) {
31263                 _children_capacity *= 2;
31264                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31265                 if (!_new_children) {
31266                     PyMem_Free(_children);
31267                     p->error_indicator = 1;
31268                     PyErr_NoMemory();
31269                     p->level--;
31270                     return NULL;
31271                 }
31272                 _children = _new_children;
31273             }
31274             _children[_n++] = _res;
31275             _mark = p->mark;
31276         }
31277         p->mark = _mark;
31278         D(fprintf(stderr, "%*c%s _loop0_123[%d-%d]: %s failed!\n", p->level, ' ',
31279                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
31280     }
31281     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31282     if (!_seq) {
31283         PyMem_Free(_children);
31284         p->error_indicator = 1;
31285         PyErr_NoMemory();
31286         p->level--;
31287         return NULL;
31288     }
31289     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31290     PyMem_Free(_children);
31291     p->level--;
31292     return _seq;
31293 }
31294 
31295 // _gather_122: kwarg_or_double_starred _loop0_123
31296 static asdl_seq *
_gather_122_rule(Parser * p)31297 _gather_122_rule(Parser *p)
31298 {
31299     if (p->level++ == MAXSTACK) {
31300         p->error_indicator = 1;
31301         PyErr_NoMemory();
31302     }
31303     if (p->error_indicator) {
31304         p->level--;
31305         return NULL;
31306     }
31307     asdl_seq * _res = NULL;
31308     int _mark = p->mark;
31309     { // kwarg_or_double_starred _loop0_123
31310         if (p->error_indicator) {
31311             p->level--;
31312             return NULL;
31313         }
31314         D(fprintf(stderr, "%*c> _gather_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_123"));
31315         KeywordOrStarred* elem;
31316         asdl_seq * seq;
31317         if (
31318             (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
31319             &&
31320             (seq = _loop0_123_rule(p))  // _loop0_123
31321         )
31322         {
31323             D(fprintf(stderr, "%*c+ _gather_122[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_123"));
31324             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31325             goto done;
31326         }
31327         p->mark = _mark;
31328         D(fprintf(stderr, "%*c%s _gather_122[%d-%d]: %s failed!\n", p->level, ' ',
31329                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_123"));
31330     }
31331     _res = NULL;
31332   done:
31333     p->level--;
31334     return _res;
31335 }
31336 
31337 // _loop0_125: ',' kwarg_or_starred
31338 static asdl_seq *
_loop0_125_rule(Parser * p)31339 _loop0_125_rule(Parser *p)
31340 {
31341     if (p->level++ == MAXSTACK) {
31342         p->error_indicator = 1;
31343         PyErr_NoMemory();
31344     }
31345     if (p->error_indicator) {
31346         p->level--;
31347         return NULL;
31348     }
31349     void *_res = NULL;
31350     int _mark = p->mark;
31351     void **_children = PyMem_Malloc(sizeof(void *));
31352     if (!_children) {
31353         p->error_indicator = 1;
31354         PyErr_NoMemory();
31355         p->level--;
31356         return NULL;
31357     }
31358     Py_ssize_t _children_capacity = 1;
31359     Py_ssize_t _n = 0;
31360     { // ',' kwarg_or_starred
31361         if (p->error_indicator) {
31362             p->level--;
31363             return NULL;
31364         }
31365         D(fprintf(stderr, "%*c> _loop0_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred"));
31366         Token * _literal;
31367         KeywordOrStarred* elem;
31368         while (
31369             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31370             &&
31371             (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
31372         )
31373         {
31374             _res = elem;
31375             if (_res == NULL && PyErr_Occurred()) {
31376                 p->error_indicator = 1;
31377                 PyMem_Free(_children);
31378                 p->level--;
31379                 return NULL;
31380             }
31381             if (_n == _children_capacity) {
31382                 _children_capacity *= 2;
31383                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31384                 if (!_new_children) {
31385                     PyMem_Free(_children);
31386                     p->error_indicator = 1;
31387                     PyErr_NoMemory();
31388                     p->level--;
31389                     return NULL;
31390                 }
31391                 _children = _new_children;
31392             }
31393             _children[_n++] = _res;
31394             _mark = p->mark;
31395         }
31396         p->mark = _mark;
31397         D(fprintf(stderr, "%*c%s _loop0_125[%d-%d]: %s failed!\n", p->level, ' ',
31398                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred"));
31399     }
31400     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31401     if (!_seq) {
31402         PyMem_Free(_children);
31403         p->error_indicator = 1;
31404         PyErr_NoMemory();
31405         p->level--;
31406         return NULL;
31407     }
31408     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31409     PyMem_Free(_children);
31410     p->level--;
31411     return _seq;
31412 }
31413 
31414 // _gather_124: kwarg_or_starred _loop0_125
31415 static asdl_seq *
_gather_124_rule(Parser * p)31416 _gather_124_rule(Parser *p)
31417 {
31418     if (p->level++ == MAXSTACK) {
31419         p->error_indicator = 1;
31420         PyErr_NoMemory();
31421     }
31422     if (p->error_indicator) {
31423         p->level--;
31424         return NULL;
31425     }
31426     asdl_seq * _res = NULL;
31427     int _mark = p->mark;
31428     { // kwarg_or_starred _loop0_125
31429         if (p->error_indicator) {
31430             p->level--;
31431             return NULL;
31432         }
31433         D(fprintf(stderr, "%*c> _gather_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_125"));
31434         KeywordOrStarred* elem;
31435         asdl_seq * seq;
31436         if (
31437             (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
31438             &&
31439             (seq = _loop0_125_rule(p))  // _loop0_125
31440         )
31441         {
31442             D(fprintf(stderr, "%*c+ _gather_124[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_125"));
31443             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31444             goto done;
31445         }
31446         p->mark = _mark;
31447         D(fprintf(stderr, "%*c%s _gather_124[%d-%d]: %s failed!\n", p->level, ' ',
31448                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_125"));
31449     }
31450     _res = NULL;
31451   done:
31452     p->level--;
31453     return _res;
31454 }
31455 
31456 // _loop0_127: ',' kwarg_or_double_starred
31457 static asdl_seq *
_loop0_127_rule(Parser * p)31458 _loop0_127_rule(Parser *p)
31459 {
31460     if (p->level++ == MAXSTACK) {
31461         p->error_indicator = 1;
31462         PyErr_NoMemory();
31463     }
31464     if (p->error_indicator) {
31465         p->level--;
31466         return NULL;
31467     }
31468     void *_res = NULL;
31469     int _mark = p->mark;
31470     void **_children = PyMem_Malloc(sizeof(void *));
31471     if (!_children) {
31472         p->error_indicator = 1;
31473         PyErr_NoMemory();
31474         p->level--;
31475         return NULL;
31476     }
31477     Py_ssize_t _children_capacity = 1;
31478     Py_ssize_t _n = 0;
31479     { // ',' kwarg_or_double_starred
31480         if (p->error_indicator) {
31481             p->level--;
31482             return NULL;
31483         }
31484         D(fprintf(stderr, "%*c> _loop0_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred"));
31485         Token * _literal;
31486         KeywordOrStarred* elem;
31487         while (
31488             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31489             &&
31490             (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
31491         )
31492         {
31493             _res = elem;
31494             if (_res == NULL && PyErr_Occurred()) {
31495                 p->error_indicator = 1;
31496                 PyMem_Free(_children);
31497                 p->level--;
31498                 return NULL;
31499             }
31500             if (_n == _children_capacity) {
31501                 _children_capacity *= 2;
31502                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31503                 if (!_new_children) {
31504                     PyMem_Free(_children);
31505                     p->error_indicator = 1;
31506                     PyErr_NoMemory();
31507                     p->level--;
31508                     return NULL;
31509                 }
31510                 _children = _new_children;
31511             }
31512             _children[_n++] = _res;
31513             _mark = p->mark;
31514         }
31515         p->mark = _mark;
31516         D(fprintf(stderr, "%*c%s _loop0_127[%d-%d]: %s failed!\n", p->level, ' ',
31517                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
31518     }
31519     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31520     if (!_seq) {
31521         PyMem_Free(_children);
31522         p->error_indicator = 1;
31523         PyErr_NoMemory();
31524         p->level--;
31525         return NULL;
31526     }
31527     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31528     PyMem_Free(_children);
31529     p->level--;
31530     return _seq;
31531 }
31532 
31533 // _gather_126: kwarg_or_double_starred _loop0_127
31534 static asdl_seq *
_gather_126_rule(Parser * p)31535 _gather_126_rule(Parser *p)
31536 {
31537     if (p->level++ == MAXSTACK) {
31538         p->error_indicator = 1;
31539         PyErr_NoMemory();
31540     }
31541     if (p->error_indicator) {
31542         p->level--;
31543         return NULL;
31544     }
31545     asdl_seq * _res = NULL;
31546     int _mark = p->mark;
31547     { // kwarg_or_double_starred _loop0_127
31548         if (p->error_indicator) {
31549             p->level--;
31550             return NULL;
31551         }
31552         D(fprintf(stderr, "%*c> _gather_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_127"));
31553         KeywordOrStarred* elem;
31554         asdl_seq * seq;
31555         if (
31556             (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
31557             &&
31558             (seq = _loop0_127_rule(p))  // _loop0_127
31559         )
31560         {
31561             D(fprintf(stderr, "%*c+ _gather_126[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_127"));
31562             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31563             goto done;
31564         }
31565         p->mark = _mark;
31566         D(fprintf(stderr, "%*c%s _gather_126[%d-%d]: %s failed!\n", p->level, ' ',
31567                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_127"));
31568     }
31569     _res = NULL;
31570   done:
31571     p->level--;
31572     return _res;
31573 }
31574 
31575 // _loop0_128: (',' star_target)
31576 static asdl_seq *
_loop0_128_rule(Parser * p)31577 _loop0_128_rule(Parser *p)
31578 {
31579     if (p->level++ == MAXSTACK) {
31580         p->error_indicator = 1;
31581         PyErr_NoMemory();
31582     }
31583     if (p->error_indicator) {
31584         p->level--;
31585         return NULL;
31586     }
31587     void *_res = NULL;
31588     int _mark = p->mark;
31589     void **_children = PyMem_Malloc(sizeof(void *));
31590     if (!_children) {
31591         p->error_indicator = 1;
31592         PyErr_NoMemory();
31593         p->level--;
31594         return NULL;
31595     }
31596     Py_ssize_t _children_capacity = 1;
31597     Py_ssize_t _n = 0;
31598     { // (',' star_target)
31599         if (p->error_indicator) {
31600             p->level--;
31601             return NULL;
31602         }
31603         D(fprintf(stderr, "%*c> _loop0_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
31604         void *_tmp_234_var;
31605         while (
31606             (_tmp_234_var = _tmp_234_rule(p))  // ',' star_target
31607         )
31608         {
31609             _res = _tmp_234_var;
31610             if (_n == _children_capacity) {
31611                 _children_capacity *= 2;
31612                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31613                 if (!_new_children) {
31614                     PyMem_Free(_children);
31615                     p->error_indicator = 1;
31616                     PyErr_NoMemory();
31617                     p->level--;
31618                     return NULL;
31619                 }
31620                 _children = _new_children;
31621             }
31622             _children[_n++] = _res;
31623             _mark = p->mark;
31624         }
31625         p->mark = _mark;
31626         D(fprintf(stderr, "%*c%s _loop0_128[%d-%d]: %s failed!\n", p->level, ' ',
31627                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
31628     }
31629     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31630     if (!_seq) {
31631         PyMem_Free(_children);
31632         p->error_indicator = 1;
31633         PyErr_NoMemory();
31634         p->level--;
31635         return NULL;
31636     }
31637     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31638     PyMem_Free(_children);
31639     p->level--;
31640     return _seq;
31641 }
31642 
31643 // _loop0_130: ',' star_target
31644 static asdl_seq *
_loop0_130_rule(Parser * p)31645 _loop0_130_rule(Parser *p)
31646 {
31647     if (p->level++ == MAXSTACK) {
31648         p->error_indicator = 1;
31649         PyErr_NoMemory();
31650     }
31651     if (p->error_indicator) {
31652         p->level--;
31653         return NULL;
31654     }
31655     void *_res = NULL;
31656     int _mark = p->mark;
31657     void **_children = PyMem_Malloc(sizeof(void *));
31658     if (!_children) {
31659         p->error_indicator = 1;
31660         PyErr_NoMemory();
31661         p->level--;
31662         return NULL;
31663     }
31664     Py_ssize_t _children_capacity = 1;
31665     Py_ssize_t _n = 0;
31666     { // ',' star_target
31667         if (p->error_indicator) {
31668             p->level--;
31669             return NULL;
31670         }
31671         D(fprintf(stderr, "%*c> _loop0_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
31672         Token * _literal;
31673         expr_ty elem;
31674         while (
31675             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31676             &&
31677             (elem = star_target_rule(p))  // star_target
31678         )
31679         {
31680             _res = elem;
31681             if (_res == NULL && PyErr_Occurred()) {
31682                 p->error_indicator = 1;
31683                 PyMem_Free(_children);
31684                 p->level--;
31685                 return NULL;
31686             }
31687             if (_n == _children_capacity) {
31688                 _children_capacity *= 2;
31689                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31690                 if (!_new_children) {
31691                     PyMem_Free(_children);
31692                     p->error_indicator = 1;
31693                     PyErr_NoMemory();
31694                     p->level--;
31695                     return NULL;
31696                 }
31697                 _children = _new_children;
31698             }
31699             _children[_n++] = _res;
31700             _mark = p->mark;
31701         }
31702         p->mark = _mark;
31703         D(fprintf(stderr, "%*c%s _loop0_130[%d-%d]: %s failed!\n", p->level, ' ',
31704                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
31705     }
31706     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31707     if (!_seq) {
31708         PyMem_Free(_children);
31709         p->error_indicator = 1;
31710         PyErr_NoMemory();
31711         p->level--;
31712         return NULL;
31713     }
31714     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31715     PyMem_Free(_children);
31716     p->level--;
31717     return _seq;
31718 }
31719 
31720 // _gather_129: star_target _loop0_130
31721 static asdl_seq *
_gather_129_rule(Parser * p)31722 _gather_129_rule(Parser *p)
31723 {
31724     if (p->level++ == MAXSTACK) {
31725         p->error_indicator = 1;
31726         PyErr_NoMemory();
31727     }
31728     if (p->error_indicator) {
31729         p->level--;
31730         return NULL;
31731     }
31732     asdl_seq * _res = NULL;
31733     int _mark = p->mark;
31734     { // star_target _loop0_130
31735         if (p->error_indicator) {
31736             p->level--;
31737             return NULL;
31738         }
31739         D(fprintf(stderr, "%*c> _gather_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target _loop0_130"));
31740         expr_ty elem;
31741         asdl_seq * seq;
31742         if (
31743             (elem = star_target_rule(p))  // star_target
31744             &&
31745             (seq = _loop0_130_rule(p))  // _loop0_130
31746         )
31747         {
31748             D(fprintf(stderr, "%*c+ _gather_129[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target _loop0_130"));
31749             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31750             goto done;
31751         }
31752         p->mark = _mark;
31753         D(fprintf(stderr, "%*c%s _gather_129[%d-%d]: %s failed!\n", p->level, ' ',
31754                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target _loop0_130"));
31755     }
31756     _res = NULL;
31757   done:
31758     p->level--;
31759     return _res;
31760 }
31761 
31762 // _loop1_131: (',' star_target)
31763 static asdl_seq *
_loop1_131_rule(Parser * p)31764 _loop1_131_rule(Parser *p)
31765 {
31766     if (p->level++ == MAXSTACK) {
31767         p->error_indicator = 1;
31768         PyErr_NoMemory();
31769     }
31770     if (p->error_indicator) {
31771         p->level--;
31772         return NULL;
31773     }
31774     void *_res = NULL;
31775     int _mark = p->mark;
31776     void **_children = PyMem_Malloc(sizeof(void *));
31777     if (!_children) {
31778         p->error_indicator = 1;
31779         PyErr_NoMemory();
31780         p->level--;
31781         return NULL;
31782     }
31783     Py_ssize_t _children_capacity = 1;
31784     Py_ssize_t _n = 0;
31785     { // (',' star_target)
31786         if (p->error_indicator) {
31787             p->level--;
31788             return NULL;
31789         }
31790         D(fprintf(stderr, "%*c> _loop1_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
31791         void *_tmp_235_var;
31792         while (
31793             (_tmp_235_var = _tmp_235_rule(p))  // ',' star_target
31794         )
31795         {
31796             _res = _tmp_235_var;
31797             if (_n == _children_capacity) {
31798                 _children_capacity *= 2;
31799                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31800                 if (!_new_children) {
31801                     PyMem_Free(_children);
31802                     p->error_indicator = 1;
31803                     PyErr_NoMemory();
31804                     p->level--;
31805                     return NULL;
31806                 }
31807                 _children = _new_children;
31808             }
31809             _children[_n++] = _res;
31810             _mark = p->mark;
31811         }
31812         p->mark = _mark;
31813         D(fprintf(stderr, "%*c%s _loop1_131[%d-%d]: %s failed!\n", p->level, ' ',
31814                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
31815     }
31816     if (_n == 0 || p->error_indicator) {
31817         PyMem_Free(_children);
31818         p->level--;
31819         return NULL;
31820     }
31821     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31822     if (!_seq) {
31823         PyMem_Free(_children);
31824         p->error_indicator = 1;
31825         PyErr_NoMemory();
31826         p->level--;
31827         return NULL;
31828     }
31829     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31830     PyMem_Free(_children);
31831     p->level--;
31832     return _seq;
31833 }
31834 
31835 // _tmp_132: !'*' star_target
31836 static void *
_tmp_132_rule(Parser * p)31837 _tmp_132_rule(Parser *p)
31838 {
31839     if (p->level++ == MAXSTACK) {
31840         p->error_indicator = 1;
31841         PyErr_NoMemory();
31842     }
31843     if (p->error_indicator) {
31844         p->level--;
31845         return NULL;
31846     }
31847     void * _res = NULL;
31848     int _mark = p->mark;
31849     { // !'*' star_target
31850         if (p->error_indicator) {
31851             p->level--;
31852             return NULL;
31853         }
31854         D(fprintf(stderr, "%*c> _tmp_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
31855         expr_ty star_target_var;
31856         if (
31857             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16)  // token='*'
31858             &&
31859             (star_target_var = star_target_rule(p))  // star_target
31860         )
31861         {
31862             D(fprintf(stderr, "%*c+ _tmp_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
31863             _res = star_target_var;
31864             goto done;
31865         }
31866         p->mark = _mark;
31867         D(fprintf(stderr, "%*c%s _tmp_132[%d-%d]: %s failed!\n", p->level, ' ',
31868                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!'*' star_target"));
31869     }
31870     _res = NULL;
31871   done:
31872     p->level--;
31873     return _res;
31874 }
31875 
31876 // _loop0_134: ',' del_target
31877 static asdl_seq *
_loop0_134_rule(Parser * p)31878 _loop0_134_rule(Parser *p)
31879 {
31880     if (p->level++ == MAXSTACK) {
31881         p->error_indicator = 1;
31882         PyErr_NoMemory();
31883     }
31884     if (p->error_indicator) {
31885         p->level--;
31886         return NULL;
31887     }
31888     void *_res = NULL;
31889     int _mark = p->mark;
31890     void **_children = PyMem_Malloc(sizeof(void *));
31891     if (!_children) {
31892         p->error_indicator = 1;
31893         PyErr_NoMemory();
31894         p->level--;
31895         return NULL;
31896     }
31897     Py_ssize_t _children_capacity = 1;
31898     Py_ssize_t _n = 0;
31899     { // ',' del_target
31900         if (p->error_indicator) {
31901             p->level--;
31902             return NULL;
31903         }
31904         D(fprintf(stderr, "%*c> _loop0_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' del_target"));
31905         Token * _literal;
31906         expr_ty elem;
31907         while (
31908             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31909             &&
31910             (elem = del_target_rule(p))  // del_target
31911         )
31912         {
31913             _res = elem;
31914             if (_res == NULL && PyErr_Occurred()) {
31915                 p->error_indicator = 1;
31916                 PyMem_Free(_children);
31917                 p->level--;
31918                 return NULL;
31919             }
31920             if (_n == _children_capacity) {
31921                 _children_capacity *= 2;
31922                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31923                 if (!_new_children) {
31924                     PyMem_Free(_children);
31925                     p->error_indicator = 1;
31926                     PyErr_NoMemory();
31927                     p->level--;
31928                     return NULL;
31929                 }
31930                 _children = _new_children;
31931             }
31932             _children[_n++] = _res;
31933             _mark = p->mark;
31934         }
31935         p->mark = _mark;
31936         D(fprintf(stderr, "%*c%s _loop0_134[%d-%d]: %s failed!\n", p->level, ' ',
31937                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' del_target"));
31938     }
31939     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31940     if (!_seq) {
31941         PyMem_Free(_children);
31942         p->error_indicator = 1;
31943         PyErr_NoMemory();
31944         p->level--;
31945         return NULL;
31946     }
31947     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31948     PyMem_Free(_children);
31949     p->level--;
31950     return _seq;
31951 }
31952 
31953 // _gather_133: del_target _loop0_134
31954 static asdl_seq *
_gather_133_rule(Parser * p)31955 _gather_133_rule(Parser *p)
31956 {
31957     if (p->level++ == MAXSTACK) {
31958         p->error_indicator = 1;
31959         PyErr_NoMemory();
31960     }
31961     if (p->error_indicator) {
31962         p->level--;
31963         return NULL;
31964     }
31965     asdl_seq * _res = NULL;
31966     int _mark = p->mark;
31967     { // del_target _loop0_134
31968         if (p->error_indicator) {
31969             p->level--;
31970             return NULL;
31971         }
31972         D(fprintf(stderr, "%*c> _gather_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_target _loop0_134"));
31973         expr_ty elem;
31974         asdl_seq * seq;
31975         if (
31976             (elem = del_target_rule(p))  // del_target
31977             &&
31978             (seq = _loop0_134_rule(p))  // _loop0_134
31979         )
31980         {
31981             D(fprintf(stderr, "%*c+ _gather_133[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_target _loop0_134"));
31982             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31983             goto done;
31984         }
31985         p->mark = _mark;
31986         D(fprintf(stderr, "%*c%s _gather_133[%d-%d]: %s failed!\n", p->level, ' ',
31987                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_target _loop0_134"));
31988     }
31989     _res = NULL;
31990   done:
31991     p->level--;
31992     return _res;
31993 }
31994 
31995 // _loop0_136: ',' expression
31996 static asdl_seq *
_loop0_136_rule(Parser * p)31997 _loop0_136_rule(Parser *p)
31998 {
31999     if (p->level++ == MAXSTACK) {
32000         p->error_indicator = 1;
32001         PyErr_NoMemory();
32002     }
32003     if (p->error_indicator) {
32004         p->level--;
32005         return NULL;
32006     }
32007     void *_res = NULL;
32008     int _mark = p->mark;
32009     void **_children = PyMem_Malloc(sizeof(void *));
32010     if (!_children) {
32011         p->error_indicator = 1;
32012         PyErr_NoMemory();
32013         p->level--;
32014         return NULL;
32015     }
32016     Py_ssize_t _children_capacity = 1;
32017     Py_ssize_t _n = 0;
32018     { // ',' expression
32019         if (p->error_indicator) {
32020             p->level--;
32021             return NULL;
32022         }
32023         D(fprintf(stderr, "%*c> _loop0_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
32024         Token * _literal;
32025         expr_ty elem;
32026         while (
32027             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32028             &&
32029             (elem = expression_rule(p))  // expression
32030         )
32031         {
32032             _res = elem;
32033             if (_res == NULL && PyErr_Occurred()) {
32034                 p->error_indicator = 1;
32035                 PyMem_Free(_children);
32036                 p->level--;
32037                 return NULL;
32038             }
32039             if (_n == _children_capacity) {
32040                 _children_capacity *= 2;
32041                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32042                 if (!_new_children) {
32043                     PyMem_Free(_children);
32044                     p->error_indicator = 1;
32045                     PyErr_NoMemory();
32046                     p->level--;
32047                     return NULL;
32048                 }
32049                 _children = _new_children;
32050             }
32051             _children[_n++] = _res;
32052             _mark = p->mark;
32053         }
32054         p->mark = _mark;
32055         D(fprintf(stderr, "%*c%s _loop0_136[%d-%d]: %s failed!\n", p->level, ' ',
32056                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
32057     }
32058     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32059     if (!_seq) {
32060         PyMem_Free(_children);
32061         p->error_indicator = 1;
32062         PyErr_NoMemory();
32063         p->level--;
32064         return NULL;
32065     }
32066     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32067     PyMem_Free(_children);
32068     p->level--;
32069     return _seq;
32070 }
32071 
32072 // _gather_135: expression _loop0_136
32073 static asdl_seq *
_gather_135_rule(Parser * p)32074 _gather_135_rule(Parser *p)
32075 {
32076     if (p->level++ == MAXSTACK) {
32077         p->error_indicator = 1;
32078         PyErr_NoMemory();
32079     }
32080     if (p->error_indicator) {
32081         p->level--;
32082         return NULL;
32083     }
32084     asdl_seq * _res = NULL;
32085     int _mark = p->mark;
32086     { // expression _loop0_136
32087         if (p->error_indicator) {
32088             p->level--;
32089             return NULL;
32090         }
32091         D(fprintf(stderr, "%*c> _gather_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_136"));
32092         expr_ty elem;
32093         asdl_seq * seq;
32094         if (
32095             (elem = expression_rule(p))  // expression
32096             &&
32097             (seq = _loop0_136_rule(p))  // _loop0_136
32098         )
32099         {
32100             D(fprintf(stderr, "%*c+ _gather_135[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_136"));
32101             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32102             goto done;
32103         }
32104         p->mark = _mark;
32105         D(fprintf(stderr, "%*c%s _gather_135[%d-%d]: %s failed!\n", p->level, ' ',
32106                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_136"));
32107     }
32108     _res = NULL;
32109   done:
32110     p->level--;
32111     return _res;
32112 }
32113 
32114 // _loop0_138: ',' expression
32115 static asdl_seq *
_loop0_138_rule(Parser * p)32116 _loop0_138_rule(Parser *p)
32117 {
32118     if (p->level++ == MAXSTACK) {
32119         p->error_indicator = 1;
32120         PyErr_NoMemory();
32121     }
32122     if (p->error_indicator) {
32123         p->level--;
32124         return NULL;
32125     }
32126     void *_res = NULL;
32127     int _mark = p->mark;
32128     void **_children = PyMem_Malloc(sizeof(void *));
32129     if (!_children) {
32130         p->error_indicator = 1;
32131         PyErr_NoMemory();
32132         p->level--;
32133         return NULL;
32134     }
32135     Py_ssize_t _children_capacity = 1;
32136     Py_ssize_t _n = 0;
32137     { // ',' expression
32138         if (p->error_indicator) {
32139             p->level--;
32140             return NULL;
32141         }
32142         D(fprintf(stderr, "%*c> _loop0_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
32143         Token * _literal;
32144         expr_ty elem;
32145         while (
32146             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32147             &&
32148             (elem = expression_rule(p))  // expression
32149         )
32150         {
32151             _res = elem;
32152             if (_res == NULL && PyErr_Occurred()) {
32153                 p->error_indicator = 1;
32154                 PyMem_Free(_children);
32155                 p->level--;
32156                 return NULL;
32157             }
32158             if (_n == _children_capacity) {
32159                 _children_capacity *= 2;
32160                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32161                 if (!_new_children) {
32162                     PyMem_Free(_children);
32163                     p->error_indicator = 1;
32164                     PyErr_NoMemory();
32165                     p->level--;
32166                     return NULL;
32167                 }
32168                 _children = _new_children;
32169             }
32170             _children[_n++] = _res;
32171             _mark = p->mark;
32172         }
32173         p->mark = _mark;
32174         D(fprintf(stderr, "%*c%s _loop0_138[%d-%d]: %s failed!\n", p->level, ' ',
32175                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
32176     }
32177     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32178     if (!_seq) {
32179         PyMem_Free(_children);
32180         p->error_indicator = 1;
32181         PyErr_NoMemory();
32182         p->level--;
32183         return NULL;
32184     }
32185     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32186     PyMem_Free(_children);
32187     p->level--;
32188     return _seq;
32189 }
32190 
32191 // _gather_137: expression _loop0_138
32192 static asdl_seq *
_gather_137_rule(Parser * p)32193 _gather_137_rule(Parser *p)
32194 {
32195     if (p->level++ == MAXSTACK) {
32196         p->error_indicator = 1;
32197         PyErr_NoMemory();
32198     }
32199     if (p->error_indicator) {
32200         p->level--;
32201         return NULL;
32202     }
32203     asdl_seq * _res = NULL;
32204     int _mark = p->mark;
32205     { // expression _loop0_138
32206         if (p->error_indicator) {
32207             p->level--;
32208             return NULL;
32209         }
32210         D(fprintf(stderr, "%*c> _gather_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_138"));
32211         expr_ty elem;
32212         asdl_seq * seq;
32213         if (
32214             (elem = expression_rule(p))  // expression
32215             &&
32216             (seq = _loop0_138_rule(p))  // _loop0_138
32217         )
32218         {
32219             D(fprintf(stderr, "%*c+ _gather_137[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_138"));
32220             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32221             goto done;
32222         }
32223         p->mark = _mark;
32224         D(fprintf(stderr, "%*c%s _gather_137[%d-%d]: %s failed!\n", p->level, ' ',
32225                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_138"));
32226     }
32227     _res = NULL;
32228   done:
32229     p->level--;
32230     return _res;
32231 }
32232 
32233 // _loop0_140: ',' expression
32234 static asdl_seq *
_loop0_140_rule(Parser * p)32235 _loop0_140_rule(Parser *p)
32236 {
32237     if (p->level++ == MAXSTACK) {
32238         p->error_indicator = 1;
32239         PyErr_NoMemory();
32240     }
32241     if (p->error_indicator) {
32242         p->level--;
32243         return NULL;
32244     }
32245     void *_res = NULL;
32246     int _mark = p->mark;
32247     void **_children = PyMem_Malloc(sizeof(void *));
32248     if (!_children) {
32249         p->error_indicator = 1;
32250         PyErr_NoMemory();
32251         p->level--;
32252         return NULL;
32253     }
32254     Py_ssize_t _children_capacity = 1;
32255     Py_ssize_t _n = 0;
32256     { // ',' expression
32257         if (p->error_indicator) {
32258             p->level--;
32259             return NULL;
32260         }
32261         D(fprintf(stderr, "%*c> _loop0_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
32262         Token * _literal;
32263         expr_ty elem;
32264         while (
32265             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32266             &&
32267             (elem = expression_rule(p))  // expression
32268         )
32269         {
32270             _res = elem;
32271             if (_res == NULL && PyErr_Occurred()) {
32272                 p->error_indicator = 1;
32273                 PyMem_Free(_children);
32274                 p->level--;
32275                 return NULL;
32276             }
32277             if (_n == _children_capacity) {
32278                 _children_capacity *= 2;
32279                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32280                 if (!_new_children) {
32281                     PyMem_Free(_children);
32282                     p->error_indicator = 1;
32283                     PyErr_NoMemory();
32284                     p->level--;
32285                     return NULL;
32286                 }
32287                 _children = _new_children;
32288             }
32289             _children[_n++] = _res;
32290             _mark = p->mark;
32291         }
32292         p->mark = _mark;
32293         D(fprintf(stderr, "%*c%s _loop0_140[%d-%d]: %s failed!\n", p->level, ' ',
32294                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
32295     }
32296     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32297     if (!_seq) {
32298         PyMem_Free(_children);
32299         p->error_indicator = 1;
32300         PyErr_NoMemory();
32301         p->level--;
32302         return NULL;
32303     }
32304     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32305     PyMem_Free(_children);
32306     p->level--;
32307     return _seq;
32308 }
32309 
32310 // _gather_139: expression _loop0_140
32311 static asdl_seq *
_gather_139_rule(Parser * p)32312 _gather_139_rule(Parser *p)
32313 {
32314     if (p->level++ == MAXSTACK) {
32315         p->error_indicator = 1;
32316         PyErr_NoMemory();
32317     }
32318     if (p->error_indicator) {
32319         p->level--;
32320         return NULL;
32321     }
32322     asdl_seq * _res = NULL;
32323     int _mark = p->mark;
32324     { // expression _loop0_140
32325         if (p->error_indicator) {
32326             p->level--;
32327             return NULL;
32328         }
32329         D(fprintf(stderr, "%*c> _gather_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_140"));
32330         expr_ty elem;
32331         asdl_seq * seq;
32332         if (
32333             (elem = expression_rule(p))  // expression
32334             &&
32335             (seq = _loop0_140_rule(p))  // _loop0_140
32336         )
32337         {
32338             D(fprintf(stderr, "%*c+ _gather_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_140"));
32339             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32340             goto done;
32341         }
32342         p->mark = _mark;
32343         D(fprintf(stderr, "%*c%s _gather_139[%d-%d]: %s failed!\n", p->level, ' ',
32344                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_140"));
32345     }
32346     _res = NULL;
32347   done:
32348     p->level--;
32349     return _res;
32350 }
32351 
32352 // _loop0_142: ',' expression
32353 static asdl_seq *
_loop0_142_rule(Parser * p)32354 _loop0_142_rule(Parser *p)
32355 {
32356     if (p->level++ == MAXSTACK) {
32357         p->error_indicator = 1;
32358         PyErr_NoMemory();
32359     }
32360     if (p->error_indicator) {
32361         p->level--;
32362         return NULL;
32363     }
32364     void *_res = NULL;
32365     int _mark = p->mark;
32366     void **_children = PyMem_Malloc(sizeof(void *));
32367     if (!_children) {
32368         p->error_indicator = 1;
32369         PyErr_NoMemory();
32370         p->level--;
32371         return NULL;
32372     }
32373     Py_ssize_t _children_capacity = 1;
32374     Py_ssize_t _n = 0;
32375     { // ',' expression
32376         if (p->error_indicator) {
32377             p->level--;
32378             return NULL;
32379         }
32380         D(fprintf(stderr, "%*c> _loop0_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
32381         Token * _literal;
32382         expr_ty elem;
32383         while (
32384             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32385             &&
32386             (elem = expression_rule(p))  // expression
32387         )
32388         {
32389             _res = elem;
32390             if (_res == NULL && PyErr_Occurred()) {
32391                 p->error_indicator = 1;
32392                 PyMem_Free(_children);
32393                 p->level--;
32394                 return NULL;
32395             }
32396             if (_n == _children_capacity) {
32397                 _children_capacity *= 2;
32398                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32399                 if (!_new_children) {
32400                     PyMem_Free(_children);
32401                     p->error_indicator = 1;
32402                     PyErr_NoMemory();
32403                     p->level--;
32404                     return NULL;
32405                 }
32406                 _children = _new_children;
32407             }
32408             _children[_n++] = _res;
32409             _mark = p->mark;
32410         }
32411         p->mark = _mark;
32412         D(fprintf(stderr, "%*c%s _loop0_142[%d-%d]: %s failed!\n", p->level, ' ',
32413                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
32414     }
32415     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32416     if (!_seq) {
32417         PyMem_Free(_children);
32418         p->error_indicator = 1;
32419         PyErr_NoMemory();
32420         p->level--;
32421         return NULL;
32422     }
32423     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32424     PyMem_Free(_children);
32425     p->level--;
32426     return _seq;
32427 }
32428 
32429 // _gather_141: expression _loop0_142
32430 static asdl_seq *
_gather_141_rule(Parser * p)32431 _gather_141_rule(Parser *p)
32432 {
32433     if (p->level++ == MAXSTACK) {
32434         p->error_indicator = 1;
32435         PyErr_NoMemory();
32436     }
32437     if (p->error_indicator) {
32438         p->level--;
32439         return NULL;
32440     }
32441     asdl_seq * _res = NULL;
32442     int _mark = p->mark;
32443     { // expression _loop0_142
32444         if (p->error_indicator) {
32445             p->level--;
32446             return NULL;
32447         }
32448         D(fprintf(stderr, "%*c> _gather_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_142"));
32449         expr_ty elem;
32450         asdl_seq * seq;
32451         if (
32452             (elem = expression_rule(p))  // expression
32453             &&
32454             (seq = _loop0_142_rule(p))  // _loop0_142
32455         )
32456         {
32457             D(fprintf(stderr, "%*c+ _gather_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_142"));
32458             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32459             goto done;
32460         }
32461         p->mark = _mark;
32462         D(fprintf(stderr, "%*c%s _gather_141[%d-%d]: %s failed!\n", p->level, ' ',
32463                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_142"));
32464     }
32465     _res = NULL;
32466   done:
32467     p->level--;
32468     return _res;
32469 }
32470 
32471 // _tmp_143: NEWLINE INDENT
32472 static void *
_tmp_143_rule(Parser * p)32473 _tmp_143_rule(Parser *p)
32474 {
32475     if (p->level++ == MAXSTACK) {
32476         p->error_indicator = 1;
32477         PyErr_NoMemory();
32478     }
32479     if (p->error_indicator) {
32480         p->level--;
32481         return NULL;
32482     }
32483     void * _res = NULL;
32484     int _mark = p->mark;
32485     { // NEWLINE INDENT
32486         if (p->error_indicator) {
32487             p->level--;
32488             return NULL;
32489         }
32490         D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
32491         Token * indent_var;
32492         Token * newline_var;
32493         if (
32494             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
32495             &&
32496             (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
32497         )
32498         {
32499             D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
32500             _res = _PyPegen_dummy_name(p, newline_var, indent_var);
32501             goto done;
32502         }
32503         p->mark = _mark;
32504         D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ',
32505                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT"));
32506     }
32507     _res = NULL;
32508   done:
32509     p->level--;
32510     return _res;
32511 }
32512 
32513 // _tmp_144: args | expression for_if_clauses
32514 static void *
_tmp_144_rule(Parser * p)32515 _tmp_144_rule(Parser *p)
32516 {
32517     if (p->level++ == MAXSTACK) {
32518         p->error_indicator = 1;
32519         PyErr_NoMemory();
32520     }
32521     if (p->error_indicator) {
32522         p->level--;
32523         return NULL;
32524     }
32525     void * _res = NULL;
32526     int _mark = p->mark;
32527     { // args
32528         if (p->error_indicator) {
32529             p->level--;
32530             return NULL;
32531         }
32532         D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args"));
32533         expr_ty args_var;
32534         if (
32535             (args_var = args_rule(p))  // args
32536         )
32537         {
32538             D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args"));
32539             _res = args_var;
32540             goto done;
32541         }
32542         p->mark = _mark;
32543         D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ',
32544                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args"));
32545     }
32546     { // expression for_if_clauses
32547         if (p->error_indicator) {
32548             p->level--;
32549             return NULL;
32550         }
32551         D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses"));
32552         expr_ty expression_var;
32553         asdl_comprehension_seq* for_if_clauses_var;
32554         if (
32555             (expression_var = expression_rule(p))  // expression
32556             &&
32557             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
32558         )
32559         {
32560             D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses"));
32561             _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
32562             goto done;
32563         }
32564         p->mark = _mark;
32565         D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ',
32566                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses"));
32567     }
32568     _res = NULL;
32569   done:
32570     p->level--;
32571     return _res;
32572 }
32573 
32574 // _tmp_145: 'True' | 'False' | 'None'
32575 static void *
_tmp_145_rule(Parser * p)32576 _tmp_145_rule(Parser *p)
32577 {
32578     if (p->level++ == MAXSTACK) {
32579         p->error_indicator = 1;
32580         PyErr_NoMemory();
32581     }
32582     if (p->error_indicator) {
32583         p->level--;
32584         return NULL;
32585     }
32586     void * _res = NULL;
32587     int _mark = p->mark;
32588     { // 'True'
32589         if (p->error_indicator) {
32590             p->level--;
32591             return NULL;
32592         }
32593         D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
32594         Token * _keyword;
32595         if (
32596             (_keyword = _PyPegen_expect_token(p, 600))  // token='True'
32597         )
32598         {
32599             D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
32600             _res = _keyword;
32601             goto done;
32602         }
32603         p->mark = _mark;
32604         D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ',
32605                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
32606     }
32607     { // 'False'
32608         if (p->error_indicator) {
32609             p->level--;
32610             return NULL;
32611         }
32612         D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
32613         Token * _keyword;
32614         if (
32615             (_keyword = _PyPegen_expect_token(p, 602))  // token='False'
32616         )
32617         {
32618             D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
32619             _res = _keyword;
32620             goto done;
32621         }
32622         p->mark = _mark;
32623         D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ',
32624                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
32625     }
32626     { // 'None'
32627         if (p->error_indicator) {
32628             p->level--;
32629             return NULL;
32630         }
32631         D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
32632         Token * _keyword;
32633         if (
32634             (_keyword = _PyPegen_expect_token(p, 601))  // token='None'
32635         )
32636         {
32637             D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
32638             _res = _keyword;
32639             goto done;
32640         }
32641         p->mark = _mark;
32642         D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ',
32643                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
32644     }
32645     _res = NULL;
32646   done:
32647     p->level--;
32648     return _res;
32649 }
32650 
32651 // _tmp_146: NAME '='
32652 static void *
_tmp_146_rule(Parser * p)32653 _tmp_146_rule(Parser *p)
32654 {
32655     if (p->level++ == MAXSTACK) {
32656         p->error_indicator = 1;
32657         PyErr_NoMemory();
32658     }
32659     if (p->error_indicator) {
32660         p->level--;
32661         return NULL;
32662     }
32663     void * _res = NULL;
32664     int _mark = p->mark;
32665     { // NAME '='
32666         if (p->error_indicator) {
32667             p->level--;
32668             return NULL;
32669         }
32670         D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '='"));
32671         Token * _literal;
32672         expr_ty name_var;
32673         if (
32674             (name_var = _PyPegen_name_token(p))  // NAME
32675             &&
32676             (_literal = _PyPegen_expect_token(p, 22))  // token='='
32677         )
32678         {
32679             D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '='"));
32680             _res = _PyPegen_dummy_name(p, name_var, _literal);
32681             goto done;
32682         }
32683         p->mark = _mark;
32684         D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ',
32685                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '='"));
32686     }
32687     _res = NULL;
32688   done:
32689     p->level--;
32690     return _res;
32691 }
32692 
32693 // _tmp_147: NAME STRING | SOFT_KEYWORD
32694 static void *
_tmp_147_rule(Parser * p)32695 _tmp_147_rule(Parser *p)
32696 {
32697     if (p->level++ == MAXSTACK) {
32698         p->error_indicator = 1;
32699         PyErr_NoMemory();
32700     }
32701     if (p->error_indicator) {
32702         p->level--;
32703         return NULL;
32704     }
32705     void * _res = NULL;
32706     int _mark = p->mark;
32707     { // NAME STRING
32708         if (p->error_indicator) {
32709             p->level--;
32710             return NULL;
32711         }
32712         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
32713         expr_ty name_var;
32714         expr_ty string_var;
32715         if (
32716             (name_var = _PyPegen_name_token(p))  // NAME
32717             &&
32718             (string_var = _PyPegen_string_token(p))  // STRING
32719         )
32720         {
32721             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
32722             _res = _PyPegen_dummy_name(p, name_var, string_var);
32723             goto done;
32724         }
32725         p->mark = _mark;
32726         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
32727                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME STRING"));
32728     }
32729     { // SOFT_KEYWORD
32730         if (p->error_indicator) {
32731             p->level--;
32732             return NULL;
32733         }
32734         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
32735         expr_ty soft_keyword_var;
32736         if (
32737             (soft_keyword_var = _PyPegen_soft_keyword_token(p))  // SOFT_KEYWORD
32738         )
32739         {
32740             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
32741             _res = soft_keyword_var;
32742             goto done;
32743         }
32744         p->mark = _mark;
32745         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
32746                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "SOFT_KEYWORD"));
32747     }
32748     _res = NULL;
32749   done:
32750     p->level--;
32751     return _res;
32752 }
32753 
32754 // _tmp_148: 'else' | ':'
32755 static void *
_tmp_148_rule(Parser * p)32756 _tmp_148_rule(Parser *p)
32757 {
32758     if (p->level++ == MAXSTACK) {
32759         p->error_indicator = 1;
32760         PyErr_NoMemory();
32761     }
32762     if (p->error_indicator) {
32763         p->level--;
32764         return NULL;
32765     }
32766     void * _res = NULL;
32767     int _mark = p->mark;
32768     { // 'else'
32769         if (p->error_indicator) {
32770             p->level--;
32771             return NULL;
32772         }
32773         D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else'"));
32774         Token * _keyword;
32775         if (
32776             (_keyword = _PyPegen_expect_token(p, 642))  // token='else'
32777         )
32778         {
32779             D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else'"));
32780             _res = _keyword;
32781             goto done;
32782         }
32783         p->mark = _mark;
32784         D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
32785                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else'"));
32786     }
32787     { // ':'
32788         if (p->error_indicator) {
32789             p->level--;
32790             return NULL;
32791         }
32792         D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
32793         Token * _literal;
32794         if (
32795             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
32796         )
32797         {
32798             D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
32799             _res = _literal;
32800             goto done;
32801         }
32802         p->mark = _mark;
32803         D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
32804                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
32805     }
32806     _res = NULL;
32807   done:
32808     p->level--;
32809     return _res;
32810 }
32811 
32812 // _tmp_149: '=' | ':='
32813 static void *
_tmp_149_rule(Parser * p)32814 _tmp_149_rule(Parser *p)
32815 {
32816     if (p->level++ == MAXSTACK) {
32817         p->error_indicator = 1;
32818         PyErr_NoMemory();
32819     }
32820     if (p->error_indicator) {
32821         p->level--;
32822         return NULL;
32823     }
32824     void * _res = NULL;
32825     int _mark = p->mark;
32826     { // '='
32827         if (p->error_indicator) {
32828             p->level--;
32829             return NULL;
32830         }
32831         D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
32832         Token * _literal;
32833         if (
32834             (_literal = _PyPegen_expect_token(p, 22))  // token='='
32835         )
32836         {
32837             D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
32838             _res = _literal;
32839             goto done;
32840         }
32841         p->mark = _mark;
32842         D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
32843                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
32844     }
32845     { // ':='
32846         if (p->error_indicator) {
32847             p->level--;
32848             return NULL;
32849         }
32850         D(fprintf(stderr, "%*c> _tmp_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='"));
32851         Token * _literal;
32852         if (
32853             (_literal = _PyPegen_expect_token(p, 53))  // token=':='
32854         )
32855         {
32856             D(fprintf(stderr, "%*c+ _tmp_149[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='"));
32857             _res = _literal;
32858             goto done;
32859         }
32860         p->mark = _mark;
32861         D(fprintf(stderr, "%*c%s _tmp_149[%d-%d]: %s failed!\n", p->level, ' ',
32862                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='"));
32863     }
32864     _res = NULL;
32865   done:
32866     p->level--;
32867     return _res;
32868 }
32869 
32870 // _tmp_150: list | tuple | genexp | 'True' | 'None' | 'False'
32871 static void *
_tmp_150_rule(Parser * p)32872 _tmp_150_rule(Parser *p)
32873 {
32874     if (p->level++ == MAXSTACK) {
32875         p->error_indicator = 1;
32876         PyErr_NoMemory();
32877     }
32878     if (p->error_indicator) {
32879         p->level--;
32880         return NULL;
32881     }
32882     void * _res = NULL;
32883     int _mark = p->mark;
32884     { // list
32885         if (p->error_indicator) {
32886             p->level--;
32887             return NULL;
32888         }
32889         D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
32890         expr_ty list_var;
32891         if (
32892             (list_var = list_rule(p))  // list
32893         )
32894         {
32895             D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
32896             _res = list_var;
32897             goto done;
32898         }
32899         p->mark = _mark;
32900         D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ',
32901                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
32902     }
32903     { // tuple
32904         if (p->error_indicator) {
32905             p->level--;
32906             return NULL;
32907         }
32908         D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
32909         expr_ty tuple_var;
32910         if (
32911             (tuple_var = tuple_rule(p))  // tuple
32912         )
32913         {
32914             D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
32915             _res = tuple_var;
32916             goto done;
32917         }
32918         p->mark = _mark;
32919         D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ',
32920                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
32921     }
32922     { // genexp
32923         if (p->error_indicator) {
32924             p->level--;
32925             return NULL;
32926         }
32927         D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
32928         expr_ty genexp_var;
32929         if (
32930             (genexp_var = genexp_rule(p))  // genexp
32931         )
32932         {
32933             D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
32934             _res = genexp_var;
32935             goto done;
32936         }
32937         p->mark = _mark;
32938         D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ',
32939                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
32940     }
32941     { // 'True'
32942         if (p->error_indicator) {
32943             p->level--;
32944             return NULL;
32945         }
32946         D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
32947         Token * _keyword;
32948         if (
32949             (_keyword = _PyPegen_expect_token(p, 600))  // token='True'
32950         )
32951         {
32952             D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
32953             _res = _keyword;
32954             goto done;
32955         }
32956         p->mark = _mark;
32957         D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ',
32958                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
32959     }
32960     { // 'None'
32961         if (p->error_indicator) {
32962             p->level--;
32963             return NULL;
32964         }
32965         D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
32966         Token * _keyword;
32967         if (
32968             (_keyword = _PyPegen_expect_token(p, 601))  // token='None'
32969         )
32970         {
32971             D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
32972             _res = _keyword;
32973             goto done;
32974         }
32975         p->mark = _mark;
32976         D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ',
32977                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
32978     }
32979     { // 'False'
32980         if (p->error_indicator) {
32981             p->level--;
32982             return NULL;
32983         }
32984         D(fprintf(stderr, "%*c> _tmp_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
32985         Token * _keyword;
32986         if (
32987             (_keyword = _PyPegen_expect_token(p, 602))  // token='False'
32988         )
32989         {
32990             D(fprintf(stderr, "%*c+ _tmp_150[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
32991             _res = _keyword;
32992             goto done;
32993         }
32994         p->mark = _mark;
32995         D(fprintf(stderr, "%*c%s _tmp_150[%d-%d]: %s failed!\n", p->level, ' ',
32996                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
32997     }
32998     _res = NULL;
32999   done:
33000     p->level--;
33001     return _res;
33002 }
33003 
33004 // _tmp_151: '=' | ':='
33005 static void *
_tmp_151_rule(Parser * p)33006 _tmp_151_rule(Parser *p)
33007 {
33008     if (p->level++ == MAXSTACK) {
33009         p->error_indicator = 1;
33010         PyErr_NoMemory();
33011     }
33012     if (p->error_indicator) {
33013         p->level--;
33014         return NULL;
33015     }
33016     void * _res = NULL;
33017     int _mark = p->mark;
33018     { // '='
33019         if (p->error_indicator) {
33020             p->level--;
33021             return NULL;
33022         }
33023         D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
33024         Token * _literal;
33025         if (
33026             (_literal = _PyPegen_expect_token(p, 22))  // token='='
33027         )
33028         {
33029             D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
33030             _res = _literal;
33031             goto done;
33032         }
33033         p->mark = _mark;
33034         D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ',
33035                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
33036     }
33037     { // ':='
33038         if (p->error_indicator) {
33039             p->level--;
33040             return NULL;
33041         }
33042         D(fprintf(stderr, "%*c> _tmp_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='"));
33043         Token * _literal;
33044         if (
33045             (_literal = _PyPegen_expect_token(p, 53))  // token=':='
33046         )
33047         {
33048             D(fprintf(stderr, "%*c+ _tmp_151[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='"));
33049             _res = _literal;
33050             goto done;
33051         }
33052         p->mark = _mark;
33053         D(fprintf(stderr, "%*c%s _tmp_151[%d-%d]: %s failed!\n", p->level, ' ',
33054                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='"));
33055     }
33056     _res = NULL;
33057   done:
33058     p->level--;
33059     return _res;
33060 }
33061 
33062 // _loop0_152: star_named_expressions
33063 static asdl_seq *
_loop0_152_rule(Parser * p)33064 _loop0_152_rule(Parser *p)
33065 {
33066     if (p->level++ == MAXSTACK) {
33067         p->error_indicator = 1;
33068         PyErr_NoMemory();
33069     }
33070     if (p->error_indicator) {
33071         p->level--;
33072         return NULL;
33073     }
33074     void *_res = NULL;
33075     int _mark = p->mark;
33076     void **_children = PyMem_Malloc(sizeof(void *));
33077     if (!_children) {
33078         p->error_indicator = 1;
33079         PyErr_NoMemory();
33080         p->level--;
33081         return NULL;
33082     }
33083     Py_ssize_t _children_capacity = 1;
33084     Py_ssize_t _n = 0;
33085     { // star_named_expressions
33086         if (p->error_indicator) {
33087             p->level--;
33088             return NULL;
33089         }
33090         D(fprintf(stderr, "%*c> _loop0_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions"));
33091         asdl_expr_seq* star_named_expressions_var;
33092         while (
33093             (star_named_expressions_var = star_named_expressions_rule(p))  // star_named_expressions
33094         )
33095         {
33096             _res = star_named_expressions_var;
33097             if (_n == _children_capacity) {
33098                 _children_capacity *= 2;
33099                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33100                 if (!_new_children) {
33101                     PyMem_Free(_children);
33102                     p->error_indicator = 1;
33103                     PyErr_NoMemory();
33104                     p->level--;
33105                     return NULL;
33106                 }
33107                 _children = _new_children;
33108             }
33109             _children[_n++] = _res;
33110             _mark = p->mark;
33111         }
33112         p->mark = _mark;
33113         D(fprintf(stderr, "%*c%s _loop0_152[%d-%d]: %s failed!\n", p->level, ' ',
33114                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expressions"));
33115     }
33116     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33117     if (!_seq) {
33118         PyMem_Free(_children);
33119         p->error_indicator = 1;
33120         PyErr_NoMemory();
33121         p->level--;
33122         return NULL;
33123     }
33124     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33125     PyMem_Free(_children);
33126     p->level--;
33127     return _seq;
33128 }
33129 
33130 // _loop0_153: (star_targets '=')
33131 static asdl_seq *
_loop0_153_rule(Parser * p)33132 _loop0_153_rule(Parser *p)
33133 {
33134     if (p->level++ == MAXSTACK) {
33135         p->error_indicator = 1;
33136         PyErr_NoMemory();
33137     }
33138     if (p->error_indicator) {
33139         p->level--;
33140         return NULL;
33141     }
33142     void *_res = NULL;
33143     int _mark = p->mark;
33144     void **_children = PyMem_Malloc(sizeof(void *));
33145     if (!_children) {
33146         p->error_indicator = 1;
33147         PyErr_NoMemory();
33148         p->level--;
33149         return NULL;
33150     }
33151     Py_ssize_t _children_capacity = 1;
33152     Py_ssize_t _n = 0;
33153     { // (star_targets '=')
33154         if (p->error_indicator) {
33155             p->level--;
33156             return NULL;
33157         }
33158         D(fprintf(stderr, "%*c> _loop0_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
33159         void *_tmp_236_var;
33160         while (
33161             (_tmp_236_var = _tmp_236_rule(p))  // star_targets '='
33162         )
33163         {
33164             _res = _tmp_236_var;
33165             if (_n == _children_capacity) {
33166                 _children_capacity *= 2;
33167                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33168                 if (!_new_children) {
33169                     PyMem_Free(_children);
33170                     p->error_indicator = 1;
33171                     PyErr_NoMemory();
33172                     p->level--;
33173                     return NULL;
33174                 }
33175                 _children = _new_children;
33176             }
33177             _children[_n++] = _res;
33178             _mark = p->mark;
33179         }
33180         p->mark = _mark;
33181         D(fprintf(stderr, "%*c%s _loop0_153[%d-%d]: %s failed!\n", p->level, ' ',
33182                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
33183     }
33184     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33185     if (!_seq) {
33186         PyMem_Free(_children);
33187         p->error_indicator = 1;
33188         PyErr_NoMemory();
33189         p->level--;
33190         return NULL;
33191     }
33192     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33193     PyMem_Free(_children);
33194     p->level--;
33195     return _seq;
33196 }
33197 
33198 // _loop0_154: (star_targets '=')
33199 static asdl_seq *
_loop0_154_rule(Parser * p)33200 _loop0_154_rule(Parser *p)
33201 {
33202     if (p->level++ == MAXSTACK) {
33203         p->error_indicator = 1;
33204         PyErr_NoMemory();
33205     }
33206     if (p->error_indicator) {
33207         p->level--;
33208         return NULL;
33209     }
33210     void *_res = NULL;
33211     int _mark = p->mark;
33212     void **_children = PyMem_Malloc(sizeof(void *));
33213     if (!_children) {
33214         p->error_indicator = 1;
33215         PyErr_NoMemory();
33216         p->level--;
33217         return NULL;
33218     }
33219     Py_ssize_t _children_capacity = 1;
33220     Py_ssize_t _n = 0;
33221     { // (star_targets '=')
33222         if (p->error_indicator) {
33223             p->level--;
33224             return NULL;
33225         }
33226         D(fprintf(stderr, "%*c> _loop0_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
33227         void *_tmp_237_var;
33228         while (
33229             (_tmp_237_var = _tmp_237_rule(p))  // star_targets '='
33230         )
33231         {
33232             _res = _tmp_237_var;
33233             if (_n == _children_capacity) {
33234                 _children_capacity *= 2;
33235                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33236                 if (!_new_children) {
33237                     PyMem_Free(_children);
33238                     p->error_indicator = 1;
33239                     PyErr_NoMemory();
33240                     p->level--;
33241                     return NULL;
33242                 }
33243                 _children = _new_children;
33244             }
33245             _children[_n++] = _res;
33246             _mark = p->mark;
33247         }
33248         p->mark = _mark;
33249         D(fprintf(stderr, "%*c%s _loop0_154[%d-%d]: %s failed!\n", p->level, ' ',
33250                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
33251     }
33252     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33253     if (!_seq) {
33254         PyMem_Free(_children);
33255         p->error_indicator = 1;
33256         PyErr_NoMemory();
33257         p->level--;
33258         return NULL;
33259     }
33260     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33261     PyMem_Free(_children);
33262     p->level--;
33263     return _seq;
33264 }
33265 
33266 // _tmp_155: yield_expr | star_expressions
33267 static void *
_tmp_155_rule(Parser * p)33268 _tmp_155_rule(Parser *p)
33269 {
33270     if (p->level++ == MAXSTACK) {
33271         p->error_indicator = 1;
33272         PyErr_NoMemory();
33273     }
33274     if (p->error_indicator) {
33275         p->level--;
33276         return NULL;
33277     }
33278     void * _res = NULL;
33279     int _mark = p->mark;
33280     { // yield_expr
33281         if (p->error_indicator) {
33282             p->level--;
33283             return NULL;
33284         }
33285         D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
33286         expr_ty yield_expr_var;
33287         if (
33288             (yield_expr_var = yield_expr_rule(p))  // yield_expr
33289         )
33290         {
33291             D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
33292             _res = yield_expr_var;
33293             goto done;
33294         }
33295         p->mark = _mark;
33296         D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
33297                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
33298     }
33299     { // star_expressions
33300         if (p->error_indicator) {
33301             p->level--;
33302             return NULL;
33303         }
33304         D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
33305         expr_ty star_expressions_var;
33306         if (
33307             (star_expressions_var = star_expressions_rule(p))  // star_expressions
33308         )
33309         {
33310             D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
33311             _res = star_expressions_var;
33312             goto done;
33313         }
33314         p->mark = _mark;
33315         D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
33316                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
33317     }
33318     _res = NULL;
33319   done:
33320     p->level--;
33321     return _res;
33322 }
33323 
33324 // _tmp_156: '[' | '(' | '{'
33325 static void *
_tmp_156_rule(Parser * p)33326 _tmp_156_rule(Parser *p)
33327 {
33328     if (p->level++ == MAXSTACK) {
33329         p->error_indicator = 1;
33330         PyErr_NoMemory();
33331     }
33332     if (p->error_indicator) {
33333         p->level--;
33334         return NULL;
33335     }
33336     void * _res = NULL;
33337     int _mark = p->mark;
33338     { // '['
33339         if (p->error_indicator) {
33340             p->level--;
33341             return NULL;
33342         }
33343         D(fprintf(stderr, "%*c> _tmp_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
33344         Token * _literal;
33345         if (
33346             (_literal = _PyPegen_expect_token(p, 9))  // token='['
33347         )
33348         {
33349             D(fprintf(stderr, "%*c+ _tmp_156[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
33350             _res = _literal;
33351             goto done;
33352         }
33353         p->mark = _mark;
33354         D(fprintf(stderr, "%*c%s _tmp_156[%d-%d]: %s failed!\n", p->level, ' ',
33355                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
33356     }
33357     { // '('
33358         if (p->error_indicator) {
33359             p->level--;
33360             return NULL;
33361         }
33362         D(fprintf(stderr, "%*c> _tmp_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
33363         Token * _literal;
33364         if (
33365             (_literal = _PyPegen_expect_token(p, 7))  // token='('
33366         )
33367         {
33368             D(fprintf(stderr, "%*c+ _tmp_156[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
33369             _res = _literal;
33370             goto done;
33371         }
33372         p->mark = _mark;
33373         D(fprintf(stderr, "%*c%s _tmp_156[%d-%d]: %s failed!\n", p->level, ' ',
33374                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
33375     }
33376     { // '{'
33377         if (p->error_indicator) {
33378             p->level--;
33379             return NULL;
33380         }
33381         D(fprintf(stderr, "%*c> _tmp_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
33382         Token * _literal;
33383         if (
33384             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
33385         )
33386         {
33387             D(fprintf(stderr, "%*c+ _tmp_156[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
33388             _res = _literal;
33389             goto done;
33390         }
33391         p->mark = _mark;
33392         D(fprintf(stderr, "%*c%s _tmp_156[%d-%d]: %s failed!\n", p->level, ' ',
33393                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
33394     }
33395     _res = NULL;
33396   done:
33397     p->level--;
33398     return _res;
33399 }
33400 
33401 // _tmp_157: '[' | '{'
33402 static void *
_tmp_157_rule(Parser * p)33403 _tmp_157_rule(Parser *p)
33404 {
33405     if (p->level++ == MAXSTACK) {
33406         p->error_indicator = 1;
33407         PyErr_NoMemory();
33408     }
33409     if (p->error_indicator) {
33410         p->level--;
33411         return NULL;
33412     }
33413     void * _res = NULL;
33414     int _mark = p->mark;
33415     { // '['
33416         if (p->error_indicator) {
33417             p->level--;
33418             return NULL;
33419         }
33420         D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
33421         Token * _literal;
33422         if (
33423             (_literal = _PyPegen_expect_token(p, 9))  // token='['
33424         )
33425         {
33426             D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
33427             _res = _literal;
33428             goto done;
33429         }
33430         p->mark = _mark;
33431         D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ',
33432                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
33433     }
33434     { // '{'
33435         if (p->error_indicator) {
33436             p->level--;
33437             return NULL;
33438         }
33439         D(fprintf(stderr, "%*c> _tmp_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
33440         Token * _literal;
33441         if (
33442             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
33443         )
33444         {
33445             D(fprintf(stderr, "%*c+ _tmp_157[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
33446             _res = _literal;
33447             goto done;
33448         }
33449         p->mark = _mark;
33450         D(fprintf(stderr, "%*c%s _tmp_157[%d-%d]: %s failed!\n", p->level, ' ',
33451                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
33452     }
33453     _res = NULL;
33454   done:
33455     p->level--;
33456     return _res;
33457 }
33458 
33459 // _tmp_158: '[' | '{'
33460 static void *
_tmp_158_rule(Parser * p)33461 _tmp_158_rule(Parser *p)
33462 {
33463     if (p->level++ == MAXSTACK) {
33464         p->error_indicator = 1;
33465         PyErr_NoMemory();
33466     }
33467     if (p->error_indicator) {
33468         p->level--;
33469         return NULL;
33470     }
33471     void * _res = NULL;
33472     int _mark = p->mark;
33473     { // '['
33474         if (p->error_indicator) {
33475             p->level--;
33476             return NULL;
33477         }
33478         D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
33479         Token * _literal;
33480         if (
33481             (_literal = _PyPegen_expect_token(p, 9))  // token='['
33482         )
33483         {
33484             D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
33485             _res = _literal;
33486             goto done;
33487         }
33488         p->mark = _mark;
33489         D(fprintf(stderr, "%*c%s _tmp_158[%d-%d]: %s failed!\n", p->level, ' ',
33490                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
33491     }
33492     { // '{'
33493         if (p->error_indicator) {
33494             p->level--;
33495             return NULL;
33496         }
33497         D(fprintf(stderr, "%*c> _tmp_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
33498         Token * _literal;
33499         if (
33500             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
33501         )
33502         {
33503             D(fprintf(stderr, "%*c+ _tmp_158[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
33504             _res = _literal;
33505             goto done;
33506         }
33507         p->mark = _mark;
33508         D(fprintf(stderr, "%*c%s _tmp_158[%d-%d]: %s failed!\n", p->level, ' ',
33509                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
33510     }
33511     _res = NULL;
33512   done:
33513     p->level--;
33514     return _res;
33515 }
33516 
33517 // _loop0_159: param_no_default
33518 static asdl_seq *
_loop0_159_rule(Parser * p)33519 _loop0_159_rule(Parser *p)
33520 {
33521     if (p->level++ == MAXSTACK) {
33522         p->error_indicator = 1;
33523         PyErr_NoMemory();
33524     }
33525     if (p->error_indicator) {
33526         p->level--;
33527         return NULL;
33528     }
33529     void *_res = NULL;
33530     int _mark = p->mark;
33531     void **_children = PyMem_Malloc(sizeof(void *));
33532     if (!_children) {
33533         p->error_indicator = 1;
33534         PyErr_NoMemory();
33535         p->level--;
33536         return NULL;
33537     }
33538     Py_ssize_t _children_capacity = 1;
33539     Py_ssize_t _n = 0;
33540     { // param_no_default
33541         if (p->error_indicator) {
33542             p->level--;
33543             return NULL;
33544         }
33545         D(fprintf(stderr, "%*c> _loop0_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
33546         arg_ty param_no_default_var;
33547         while (
33548             (param_no_default_var = param_no_default_rule(p))  // param_no_default
33549         )
33550         {
33551             _res = param_no_default_var;
33552             if (_n == _children_capacity) {
33553                 _children_capacity *= 2;
33554                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33555                 if (!_new_children) {
33556                     PyMem_Free(_children);
33557                     p->error_indicator = 1;
33558                     PyErr_NoMemory();
33559                     p->level--;
33560                     return NULL;
33561                 }
33562                 _children = _new_children;
33563             }
33564             _children[_n++] = _res;
33565             _mark = p->mark;
33566         }
33567         p->mark = _mark;
33568         D(fprintf(stderr, "%*c%s _loop0_159[%d-%d]: %s failed!\n", p->level, ' ',
33569                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
33570     }
33571     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33572     if (!_seq) {
33573         PyMem_Free(_children);
33574         p->error_indicator = 1;
33575         PyErr_NoMemory();
33576         p->level--;
33577         return NULL;
33578     }
33579     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33580     PyMem_Free(_children);
33581     p->level--;
33582     return _seq;
33583 }
33584 
33585 // _loop0_160: param_no_default
33586 static asdl_seq *
_loop0_160_rule(Parser * p)33587 _loop0_160_rule(Parser *p)
33588 {
33589     if (p->level++ == MAXSTACK) {
33590         p->error_indicator = 1;
33591         PyErr_NoMemory();
33592     }
33593     if (p->error_indicator) {
33594         p->level--;
33595         return NULL;
33596     }
33597     void *_res = NULL;
33598     int _mark = p->mark;
33599     void **_children = PyMem_Malloc(sizeof(void *));
33600     if (!_children) {
33601         p->error_indicator = 1;
33602         PyErr_NoMemory();
33603         p->level--;
33604         return NULL;
33605     }
33606     Py_ssize_t _children_capacity = 1;
33607     Py_ssize_t _n = 0;
33608     { // param_no_default
33609         if (p->error_indicator) {
33610             p->level--;
33611             return NULL;
33612         }
33613         D(fprintf(stderr, "%*c> _loop0_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
33614         arg_ty param_no_default_var;
33615         while (
33616             (param_no_default_var = param_no_default_rule(p))  // param_no_default
33617         )
33618         {
33619             _res = param_no_default_var;
33620             if (_n == _children_capacity) {
33621                 _children_capacity *= 2;
33622                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33623                 if (!_new_children) {
33624                     PyMem_Free(_children);
33625                     p->error_indicator = 1;
33626                     PyErr_NoMemory();
33627                     p->level--;
33628                     return NULL;
33629                 }
33630                 _children = _new_children;
33631             }
33632             _children[_n++] = _res;
33633             _mark = p->mark;
33634         }
33635         p->mark = _mark;
33636         D(fprintf(stderr, "%*c%s _loop0_160[%d-%d]: %s failed!\n", p->level, ' ',
33637                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
33638     }
33639     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33640     if (!_seq) {
33641         PyMem_Free(_children);
33642         p->error_indicator = 1;
33643         PyErr_NoMemory();
33644         p->level--;
33645         return NULL;
33646     }
33647     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33648     PyMem_Free(_children);
33649     p->level--;
33650     return _seq;
33651 }
33652 
33653 // _loop1_161: param_no_default
33654 static asdl_seq *
_loop1_161_rule(Parser * p)33655 _loop1_161_rule(Parser *p)
33656 {
33657     if (p->level++ == MAXSTACK) {
33658         p->error_indicator = 1;
33659         PyErr_NoMemory();
33660     }
33661     if (p->error_indicator) {
33662         p->level--;
33663         return NULL;
33664     }
33665     void *_res = NULL;
33666     int _mark = p->mark;
33667     void **_children = PyMem_Malloc(sizeof(void *));
33668     if (!_children) {
33669         p->error_indicator = 1;
33670         PyErr_NoMemory();
33671         p->level--;
33672         return NULL;
33673     }
33674     Py_ssize_t _children_capacity = 1;
33675     Py_ssize_t _n = 0;
33676     { // param_no_default
33677         if (p->error_indicator) {
33678             p->level--;
33679             return NULL;
33680         }
33681         D(fprintf(stderr, "%*c> _loop1_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
33682         arg_ty param_no_default_var;
33683         while (
33684             (param_no_default_var = param_no_default_rule(p))  // param_no_default
33685         )
33686         {
33687             _res = param_no_default_var;
33688             if (_n == _children_capacity) {
33689                 _children_capacity *= 2;
33690                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33691                 if (!_new_children) {
33692                     PyMem_Free(_children);
33693                     p->error_indicator = 1;
33694                     PyErr_NoMemory();
33695                     p->level--;
33696                     return NULL;
33697                 }
33698                 _children = _new_children;
33699             }
33700             _children[_n++] = _res;
33701             _mark = p->mark;
33702         }
33703         p->mark = _mark;
33704         D(fprintf(stderr, "%*c%s _loop1_161[%d-%d]: %s failed!\n", p->level, ' ',
33705                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
33706     }
33707     if (_n == 0 || p->error_indicator) {
33708         PyMem_Free(_children);
33709         p->level--;
33710         return NULL;
33711     }
33712     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33713     if (!_seq) {
33714         PyMem_Free(_children);
33715         p->error_indicator = 1;
33716         PyErr_NoMemory();
33717         p->level--;
33718         return NULL;
33719     }
33720     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33721     PyMem_Free(_children);
33722     p->level--;
33723     return _seq;
33724 }
33725 
33726 // _tmp_162: slash_no_default | slash_with_default
33727 static void *
_tmp_162_rule(Parser * p)33728 _tmp_162_rule(Parser *p)
33729 {
33730     if (p->level++ == MAXSTACK) {
33731         p->error_indicator = 1;
33732         PyErr_NoMemory();
33733     }
33734     if (p->error_indicator) {
33735         p->level--;
33736         return NULL;
33737     }
33738     void * _res = NULL;
33739     int _mark = p->mark;
33740     { // slash_no_default
33741         if (p->error_indicator) {
33742             p->level--;
33743             return NULL;
33744         }
33745         D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_no_default"));
33746         asdl_arg_seq* slash_no_default_var;
33747         if (
33748             (slash_no_default_var = slash_no_default_rule(p))  // slash_no_default
33749         )
33750         {
33751             D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_no_default"));
33752             _res = slash_no_default_var;
33753             goto done;
33754         }
33755         p->mark = _mark;
33756         D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ',
33757                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default"));
33758     }
33759     { // slash_with_default
33760         if (p->error_indicator) {
33761             p->level--;
33762             return NULL;
33763         }
33764         D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
33765         SlashWithDefault* slash_with_default_var;
33766         if (
33767             (slash_with_default_var = slash_with_default_rule(p))  // slash_with_default
33768         )
33769         {
33770             D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
33771             _res = slash_with_default_var;
33772             goto done;
33773         }
33774         p->mark = _mark;
33775         D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ',
33776                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
33777     }
33778     _res = NULL;
33779   done:
33780     p->level--;
33781     return _res;
33782 }
33783 
33784 // _loop0_163: param_maybe_default
33785 static asdl_seq *
_loop0_163_rule(Parser * p)33786 _loop0_163_rule(Parser *p)
33787 {
33788     if (p->level++ == MAXSTACK) {
33789         p->error_indicator = 1;
33790         PyErr_NoMemory();
33791     }
33792     if (p->error_indicator) {
33793         p->level--;
33794         return NULL;
33795     }
33796     void *_res = NULL;
33797     int _mark = p->mark;
33798     void **_children = PyMem_Malloc(sizeof(void *));
33799     if (!_children) {
33800         p->error_indicator = 1;
33801         PyErr_NoMemory();
33802         p->level--;
33803         return NULL;
33804     }
33805     Py_ssize_t _children_capacity = 1;
33806     Py_ssize_t _n = 0;
33807     { // param_maybe_default
33808         if (p->error_indicator) {
33809             p->level--;
33810             return NULL;
33811         }
33812         D(fprintf(stderr, "%*c> _loop0_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
33813         NameDefaultPair* param_maybe_default_var;
33814         while (
33815             (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
33816         )
33817         {
33818             _res = param_maybe_default_var;
33819             if (_n == _children_capacity) {
33820                 _children_capacity *= 2;
33821                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33822                 if (!_new_children) {
33823                     PyMem_Free(_children);
33824                     p->error_indicator = 1;
33825                     PyErr_NoMemory();
33826                     p->level--;
33827                     return NULL;
33828                 }
33829                 _children = _new_children;
33830             }
33831             _children[_n++] = _res;
33832             _mark = p->mark;
33833         }
33834         p->mark = _mark;
33835         D(fprintf(stderr, "%*c%s _loop0_163[%d-%d]: %s failed!\n", p->level, ' ',
33836                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
33837     }
33838     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33839     if (!_seq) {
33840         PyMem_Free(_children);
33841         p->error_indicator = 1;
33842         PyErr_NoMemory();
33843         p->level--;
33844         return NULL;
33845     }
33846     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33847     PyMem_Free(_children);
33848     p->level--;
33849     return _seq;
33850 }
33851 
33852 // _tmp_164: slash_no_default | slash_with_default
33853 static void *
_tmp_164_rule(Parser * p)33854 _tmp_164_rule(Parser *p)
33855 {
33856     if (p->level++ == MAXSTACK) {
33857         p->error_indicator = 1;
33858         PyErr_NoMemory();
33859     }
33860     if (p->error_indicator) {
33861         p->level--;
33862         return NULL;
33863     }
33864     void * _res = NULL;
33865     int _mark = p->mark;
33866     { // slash_no_default
33867         if (p->error_indicator) {
33868             p->level--;
33869             return NULL;
33870         }
33871         D(fprintf(stderr, "%*c> _tmp_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_no_default"));
33872         asdl_arg_seq* slash_no_default_var;
33873         if (
33874             (slash_no_default_var = slash_no_default_rule(p))  // slash_no_default
33875         )
33876         {
33877             D(fprintf(stderr, "%*c+ _tmp_164[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_no_default"));
33878             _res = slash_no_default_var;
33879             goto done;
33880         }
33881         p->mark = _mark;
33882         D(fprintf(stderr, "%*c%s _tmp_164[%d-%d]: %s failed!\n", p->level, ' ',
33883                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default"));
33884     }
33885     { // slash_with_default
33886         if (p->error_indicator) {
33887             p->level--;
33888             return NULL;
33889         }
33890         D(fprintf(stderr, "%*c> _tmp_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
33891         SlashWithDefault* slash_with_default_var;
33892         if (
33893             (slash_with_default_var = slash_with_default_rule(p))  // slash_with_default
33894         )
33895         {
33896             D(fprintf(stderr, "%*c+ _tmp_164[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
33897             _res = slash_with_default_var;
33898             goto done;
33899         }
33900         p->mark = _mark;
33901         D(fprintf(stderr, "%*c%s _tmp_164[%d-%d]: %s failed!\n", p->level, ' ',
33902                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
33903     }
33904     _res = NULL;
33905   done:
33906     p->level--;
33907     return _res;
33908 }
33909 
33910 // _loop0_165: param_maybe_default
33911 static asdl_seq *
_loop0_165_rule(Parser * p)33912 _loop0_165_rule(Parser *p)
33913 {
33914     if (p->level++ == MAXSTACK) {
33915         p->error_indicator = 1;
33916         PyErr_NoMemory();
33917     }
33918     if (p->error_indicator) {
33919         p->level--;
33920         return NULL;
33921     }
33922     void *_res = NULL;
33923     int _mark = p->mark;
33924     void **_children = PyMem_Malloc(sizeof(void *));
33925     if (!_children) {
33926         p->error_indicator = 1;
33927         PyErr_NoMemory();
33928         p->level--;
33929         return NULL;
33930     }
33931     Py_ssize_t _children_capacity = 1;
33932     Py_ssize_t _n = 0;
33933     { // param_maybe_default
33934         if (p->error_indicator) {
33935             p->level--;
33936             return NULL;
33937         }
33938         D(fprintf(stderr, "%*c> _loop0_165[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
33939         NameDefaultPair* param_maybe_default_var;
33940         while (
33941             (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
33942         )
33943         {
33944             _res = param_maybe_default_var;
33945             if (_n == _children_capacity) {
33946                 _children_capacity *= 2;
33947                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
33948                 if (!_new_children) {
33949                     PyMem_Free(_children);
33950                     p->error_indicator = 1;
33951                     PyErr_NoMemory();
33952                     p->level--;
33953                     return NULL;
33954                 }
33955                 _children = _new_children;
33956             }
33957             _children[_n++] = _res;
33958             _mark = p->mark;
33959         }
33960         p->mark = _mark;
33961         D(fprintf(stderr, "%*c%s _loop0_165[%d-%d]: %s failed!\n", p->level, ' ',
33962                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
33963     }
33964     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
33965     if (!_seq) {
33966         PyMem_Free(_children);
33967         p->error_indicator = 1;
33968         PyErr_NoMemory();
33969         p->level--;
33970         return NULL;
33971     }
33972     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
33973     PyMem_Free(_children);
33974     p->level--;
33975     return _seq;
33976 }
33977 
33978 // _tmp_166: ',' | param_no_default
33979 static void *
_tmp_166_rule(Parser * p)33980 _tmp_166_rule(Parser *p)
33981 {
33982     if (p->level++ == MAXSTACK) {
33983         p->error_indicator = 1;
33984         PyErr_NoMemory();
33985     }
33986     if (p->error_indicator) {
33987         p->level--;
33988         return NULL;
33989     }
33990     void * _res = NULL;
33991     int _mark = p->mark;
33992     { // ','
33993         if (p->error_indicator) {
33994             p->level--;
33995             return NULL;
33996         }
33997         D(fprintf(stderr, "%*c> _tmp_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
33998         Token * _literal;
33999         if (
34000             (_literal = _PyPegen_expect_token(p, 12))  // token=','
34001         )
34002         {
34003             D(fprintf(stderr, "%*c+ _tmp_166[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
34004             _res = _literal;
34005             goto done;
34006         }
34007         p->mark = _mark;
34008         D(fprintf(stderr, "%*c%s _tmp_166[%d-%d]: %s failed!\n", p->level, ' ',
34009                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
34010     }
34011     { // param_no_default
34012         if (p->error_indicator) {
34013             p->level--;
34014             return NULL;
34015         }
34016         D(fprintf(stderr, "%*c> _tmp_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
34017         arg_ty param_no_default_var;
34018         if (
34019             (param_no_default_var = param_no_default_rule(p))  // param_no_default
34020         )
34021         {
34022             D(fprintf(stderr, "%*c+ _tmp_166[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default"));
34023             _res = param_no_default_var;
34024             goto done;
34025         }
34026         p->mark = _mark;
34027         D(fprintf(stderr, "%*c%s _tmp_166[%d-%d]: %s failed!\n", p->level, ' ',
34028                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
34029     }
34030     _res = NULL;
34031   done:
34032     p->level--;
34033     return _res;
34034 }
34035 
34036 // _loop0_167: param_maybe_default
34037 static asdl_seq *
_loop0_167_rule(Parser * p)34038 _loop0_167_rule(Parser *p)
34039 {
34040     if (p->level++ == MAXSTACK) {
34041         p->error_indicator = 1;
34042         PyErr_NoMemory();
34043     }
34044     if (p->error_indicator) {
34045         p->level--;
34046         return NULL;
34047     }
34048     void *_res = NULL;
34049     int _mark = p->mark;
34050     void **_children = PyMem_Malloc(sizeof(void *));
34051     if (!_children) {
34052         p->error_indicator = 1;
34053         PyErr_NoMemory();
34054         p->level--;
34055         return NULL;
34056     }
34057     Py_ssize_t _children_capacity = 1;
34058     Py_ssize_t _n = 0;
34059     { // param_maybe_default
34060         if (p->error_indicator) {
34061             p->level--;
34062             return NULL;
34063         }
34064         D(fprintf(stderr, "%*c> _loop0_167[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
34065         NameDefaultPair* param_maybe_default_var;
34066         while (
34067             (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
34068         )
34069         {
34070             _res = param_maybe_default_var;
34071             if (_n == _children_capacity) {
34072                 _children_capacity *= 2;
34073                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34074                 if (!_new_children) {
34075                     PyMem_Free(_children);
34076                     p->error_indicator = 1;
34077                     PyErr_NoMemory();
34078                     p->level--;
34079                     return NULL;
34080                 }
34081                 _children = _new_children;
34082             }
34083             _children[_n++] = _res;
34084             _mark = p->mark;
34085         }
34086         p->mark = _mark;
34087         D(fprintf(stderr, "%*c%s _loop0_167[%d-%d]: %s failed!\n", p->level, ' ',
34088                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
34089     }
34090     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34091     if (!_seq) {
34092         PyMem_Free(_children);
34093         p->error_indicator = 1;
34094         PyErr_NoMemory();
34095         p->level--;
34096         return NULL;
34097     }
34098     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34099     PyMem_Free(_children);
34100     p->level--;
34101     return _seq;
34102 }
34103 
34104 // _loop1_168: param_maybe_default
34105 static asdl_seq *
_loop1_168_rule(Parser * p)34106 _loop1_168_rule(Parser *p)
34107 {
34108     if (p->level++ == MAXSTACK) {
34109         p->error_indicator = 1;
34110         PyErr_NoMemory();
34111     }
34112     if (p->error_indicator) {
34113         p->level--;
34114         return NULL;
34115     }
34116     void *_res = NULL;
34117     int _mark = p->mark;
34118     void **_children = PyMem_Malloc(sizeof(void *));
34119     if (!_children) {
34120         p->error_indicator = 1;
34121         PyErr_NoMemory();
34122         p->level--;
34123         return NULL;
34124     }
34125     Py_ssize_t _children_capacity = 1;
34126     Py_ssize_t _n = 0;
34127     { // param_maybe_default
34128         if (p->error_indicator) {
34129             p->level--;
34130             return NULL;
34131         }
34132         D(fprintf(stderr, "%*c> _loop1_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
34133         NameDefaultPair* param_maybe_default_var;
34134         while (
34135             (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
34136         )
34137         {
34138             _res = param_maybe_default_var;
34139             if (_n == _children_capacity) {
34140                 _children_capacity *= 2;
34141                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34142                 if (!_new_children) {
34143                     PyMem_Free(_children);
34144                     p->error_indicator = 1;
34145                     PyErr_NoMemory();
34146                     p->level--;
34147                     return NULL;
34148                 }
34149                 _children = _new_children;
34150             }
34151             _children[_n++] = _res;
34152             _mark = p->mark;
34153         }
34154         p->mark = _mark;
34155         D(fprintf(stderr, "%*c%s _loop1_168[%d-%d]: %s failed!\n", p->level, ' ',
34156                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
34157     }
34158     if (_n == 0 || p->error_indicator) {
34159         PyMem_Free(_children);
34160         p->level--;
34161         return NULL;
34162     }
34163     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34164     if (!_seq) {
34165         PyMem_Free(_children);
34166         p->error_indicator = 1;
34167         PyErr_NoMemory();
34168         p->level--;
34169         return NULL;
34170     }
34171     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34172     PyMem_Free(_children);
34173     p->level--;
34174     return _seq;
34175 }
34176 
34177 // _tmp_169: ')' | ','
34178 static void *
_tmp_169_rule(Parser * p)34179 _tmp_169_rule(Parser *p)
34180 {
34181     if (p->level++ == MAXSTACK) {
34182         p->error_indicator = 1;
34183         PyErr_NoMemory();
34184     }
34185     if (p->error_indicator) {
34186         p->level--;
34187         return NULL;
34188     }
34189     void * _res = NULL;
34190     int _mark = p->mark;
34191     { // ')'
34192         if (p->error_indicator) {
34193             p->level--;
34194             return NULL;
34195         }
34196         D(fprintf(stderr, "%*c> _tmp_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
34197         Token * _literal;
34198         if (
34199             (_literal = _PyPegen_expect_token(p, 8))  // token=')'
34200         )
34201         {
34202             D(fprintf(stderr, "%*c+ _tmp_169[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
34203             _res = _literal;
34204             goto done;
34205         }
34206         p->mark = _mark;
34207         D(fprintf(stderr, "%*c%s _tmp_169[%d-%d]: %s failed!\n", p->level, ' ',
34208                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
34209     }
34210     { // ','
34211         if (p->error_indicator) {
34212             p->level--;
34213             return NULL;
34214         }
34215         D(fprintf(stderr, "%*c> _tmp_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
34216         Token * _literal;
34217         if (
34218             (_literal = _PyPegen_expect_token(p, 12))  // token=','
34219         )
34220         {
34221             D(fprintf(stderr, "%*c+ _tmp_169[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
34222             _res = _literal;
34223             goto done;
34224         }
34225         p->mark = _mark;
34226         D(fprintf(stderr, "%*c%s _tmp_169[%d-%d]: %s failed!\n", p->level, ' ',
34227                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
34228     }
34229     _res = NULL;
34230   done:
34231     p->level--;
34232     return _res;
34233 }
34234 
34235 // _tmp_170: ')' | ',' (')' | '**')
34236 static void *
_tmp_170_rule(Parser * p)34237 _tmp_170_rule(Parser *p)
34238 {
34239     if (p->level++ == MAXSTACK) {
34240         p->error_indicator = 1;
34241         PyErr_NoMemory();
34242     }
34243     if (p->error_indicator) {
34244         p->level--;
34245         return NULL;
34246     }
34247     void * _res = NULL;
34248     int _mark = p->mark;
34249     { // ')'
34250         if (p->error_indicator) {
34251             p->level--;
34252             return NULL;
34253         }
34254         D(fprintf(stderr, "%*c> _tmp_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
34255         Token * _literal;
34256         if (
34257             (_literal = _PyPegen_expect_token(p, 8))  // token=')'
34258         )
34259         {
34260             D(fprintf(stderr, "%*c+ _tmp_170[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
34261             _res = _literal;
34262             goto done;
34263         }
34264         p->mark = _mark;
34265         D(fprintf(stderr, "%*c%s _tmp_170[%d-%d]: %s failed!\n", p->level, ' ',
34266                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
34267     }
34268     { // ',' (')' | '**')
34269         if (p->error_indicator) {
34270             p->level--;
34271             return NULL;
34272         }
34273         D(fprintf(stderr, "%*c> _tmp_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
34274         Token * _literal;
34275         void *_tmp_238_var;
34276         if (
34277             (_literal = _PyPegen_expect_token(p, 12))  // token=','
34278             &&
34279             (_tmp_238_var = _tmp_238_rule(p))  // ')' | '**'
34280         )
34281         {
34282             D(fprintf(stderr, "%*c+ _tmp_170[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
34283             _res = _PyPegen_dummy_name(p, _literal, _tmp_238_var);
34284             goto done;
34285         }
34286         p->mark = _mark;
34287         D(fprintf(stderr, "%*c%s _tmp_170[%d-%d]: %s failed!\n", p->level, ' ',
34288                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (')' | '**')"));
34289     }
34290     _res = NULL;
34291   done:
34292     p->level--;
34293     return _res;
34294 }
34295 
34296 // _tmp_171: param_no_default | ','
34297 static void *
_tmp_171_rule(Parser * p)34298 _tmp_171_rule(Parser *p)
34299 {
34300     if (p->level++ == MAXSTACK) {
34301         p->error_indicator = 1;
34302         PyErr_NoMemory();
34303     }
34304     if (p->error_indicator) {
34305         p->level--;
34306         return NULL;
34307     }
34308     void * _res = NULL;
34309     int _mark = p->mark;
34310     { // param_no_default
34311         if (p->error_indicator) {
34312             p->level--;
34313             return NULL;
34314         }
34315         D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
34316         arg_ty param_no_default_var;
34317         if (
34318             (param_no_default_var = param_no_default_rule(p))  // param_no_default
34319         )
34320         {
34321             D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default"));
34322             _res = param_no_default_var;
34323             goto done;
34324         }
34325         p->mark = _mark;
34326         D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ',
34327                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
34328     }
34329     { // ','
34330         if (p->error_indicator) {
34331             p->level--;
34332             return NULL;
34333         }
34334         D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
34335         Token * _literal;
34336         if (
34337             (_literal = _PyPegen_expect_token(p, 12))  // token=','
34338         )
34339         {
34340             D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
34341             _res = _literal;
34342             goto done;
34343         }
34344         p->mark = _mark;
34345         D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ',
34346                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
34347     }
34348     _res = NULL;
34349   done:
34350     p->level--;
34351     return _res;
34352 }
34353 
34354 // _loop0_172: param_maybe_default
34355 static asdl_seq *
_loop0_172_rule(Parser * p)34356 _loop0_172_rule(Parser *p)
34357 {
34358     if (p->level++ == MAXSTACK) {
34359         p->error_indicator = 1;
34360         PyErr_NoMemory();
34361     }
34362     if (p->error_indicator) {
34363         p->level--;
34364         return NULL;
34365     }
34366     void *_res = NULL;
34367     int _mark = p->mark;
34368     void **_children = PyMem_Malloc(sizeof(void *));
34369     if (!_children) {
34370         p->error_indicator = 1;
34371         PyErr_NoMemory();
34372         p->level--;
34373         return NULL;
34374     }
34375     Py_ssize_t _children_capacity = 1;
34376     Py_ssize_t _n = 0;
34377     { // param_maybe_default
34378         if (p->error_indicator) {
34379             p->level--;
34380             return NULL;
34381         }
34382         D(fprintf(stderr, "%*c> _loop0_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
34383         NameDefaultPair* param_maybe_default_var;
34384         while (
34385             (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
34386         )
34387         {
34388             _res = param_maybe_default_var;
34389             if (_n == _children_capacity) {
34390                 _children_capacity *= 2;
34391                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34392                 if (!_new_children) {
34393                     PyMem_Free(_children);
34394                     p->error_indicator = 1;
34395                     PyErr_NoMemory();
34396                     p->level--;
34397                     return NULL;
34398                 }
34399                 _children = _new_children;
34400             }
34401             _children[_n++] = _res;
34402             _mark = p->mark;
34403         }
34404         p->mark = _mark;
34405         D(fprintf(stderr, "%*c%s _loop0_172[%d-%d]: %s failed!\n", p->level, ' ',
34406                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
34407     }
34408     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34409     if (!_seq) {
34410         PyMem_Free(_children);
34411         p->error_indicator = 1;
34412         PyErr_NoMemory();
34413         p->level--;
34414         return NULL;
34415     }
34416     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34417     PyMem_Free(_children);
34418     p->level--;
34419     return _seq;
34420 }
34421 
34422 // _tmp_173: param_no_default | ','
34423 static void *
_tmp_173_rule(Parser * p)34424 _tmp_173_rule(Parser *p)
34425 {
34426     if (p->level++ == MAXSTACK) {
34427         p->error_indicator = 1;
34428         PyErr_NoMemory();
34429     }
34430     if (p->error_indicator) {
34431         p->level--;
34432         return NULL;
34433     }
34434     void * _res = NULL;
34435     int _mark = p->mark;
34436     { // param_no_default
34437         if (p->error_indicator) {
34438             p->level--;
34439             return NULL;
34440         }
34441         D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
34442         arg_ty param_no_default_var;
34443         if (
34444             (param_no_default_var = param_no_default_rule(p))  // param_no_default
34445         )
34446         {
34447             D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default"));
34448             _res = param_no_default_var;
34449             goto done;
34450         }
34451         p->mark = _mark;
34452         D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ',
34453                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
34454     }
34455     { // ','
34456         if (p->error_indicator) {
34457             p->level--;
34458             return NULL;
34459         }
34460         D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
34461         Token * _literal;
34462         if (
34463             (_literal = _PyPegen_expect_token(p, 12))  // token=','
34464         )
34465         {
34466             D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
34467             _res = _literal;
34468             goto done;
34469         }
34470         p->mark = _mark;
34471         D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ',
34472                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
34473     }
34474     _res = NULL;
34475   done:
34476     p->level--;
34477     return _res;
34478 }
34479 
34480 // _tmp_174: '*' | '**' | '/'
34481 static void *
_tmp_174_rule(Parser * p)34482 _tmp_174_rule(Parser *p)
34483 {
34484     if (p->level++ == MAXSTACK) {
34485         p->error_indicator = 1;
34486         PyErr_NoMemory();
34487     }
34488     if (p->error_indicator) {
34489         p->level--;
34490         return NULL;
34491     }
34492     void * _res = NULL;
34493     int _mark = p->mark;
34494     { // '*'
34495         if (p->error_indicator) {
34496             p->level--;
34497             return NULL;
34498         }
34499         D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
34500         Token * _literal;
34501         if (
34502             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
34503         )
34504         {
34505             D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
34506             _res = _literal;
34507             goto done;
34508         }
34509         p->mark = _mark;
34510         D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ',
34511                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
34512     }
34513     { // '**'
34514         if (p->error_indicator) {
34515             p->level--;
34516             return NULL;
34517         }
34518         D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
34519         Token * _literal;
34520         if (
34521             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
34522         )
34523         {
34524             D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
34525             _res = _literal;
34526             goto done;
34527         }
34528         p->mark = _mark;
34529         D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ',
34530                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
34531     }
34532     { // '/'
34533         if (p->error_indicator) {
34534             p->level--;
34535             return NULL;
34536         }
34537         D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/'"));
34538         Token * _literal;
34539         if (
34540             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
34541         )
34542         {
34543             D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/'"));
34544             _res = _literal;
34545             goto done;
34546         }
34547         p->mark = _mark;
34548         D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ',
34549                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/'"));
34550     }
34551     _res = NULL;
34552   done:
34553     p->level--;
34554     return _res;
34555 }
34556 
34557 // _loop1_175: param_with_default
34558 static asdl_seq *
_loop1_175_rule(Parser * p)34559 _loop1_175_rule(Parser *p)
34560 {
34561     if (p->level++ == MAXSTACK) {
34562         p->error_indicator = 1;
34563         PyErr_NoMemory();
34564     }
34565     if (p->error_indicator) {
34566         p->level--;
34567         return NULL;
34568     }
34569     void *_res = NULL;
34570     int _mark = p->mark;
34571     void **_children = PyMem_Malloc(sizeof(void *));
34572     if (!_children) {
34573         p->error_indicator = 1;
34574         PyErr_NoMemory();
34575         p->level--;
34576         return NULL;
34577     }
34578     Py_ssize_t _children_capacity = 1;
34579     Py_ssize_t _n = 0;
34580     { // param_with_default
34581         if (p->error_indicator) {
34582             p->level--;
34583             return NULL;
34584         }
34585         D(fprintf(stderr, "%*c> _loop1_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
34586         NameDefaultPair* param_with_default_var;
34587         while (
34588             (param_with_default_var = param_with_default_rule(p))  // param_with_default
34589         )
34590         {
34591             _res = param_with_default_var;
34592             if (_n == _children_capacity) {
34593                 _children_capacity *= 2;
34594                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34595                 if (!_new_children) {
34596                     PyMem_Free(_children);
34597                     p->error_indicator = 1;
34598                     PyErr_NoMemory();
34599                     p->level--;
34600                     return NULL;
34601                 }
34602                 _children = _new_children;
34603             }
34604             _children[_n++] = _res;
34605             _mark = p->mark;
34606         }
34607         p->mark = _mark;
34608         D(fprintf(stderr, "%*c%s _loop1_175[%d-%d]: %s failed!\n", p->level, ' ',
34609                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
34610     }
34611     if (_n == 0 || p->error_indicator) {
34612         PyMem_Free(_children);
34613         p->level--;
34614         return NULL;
34615     }
34616     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34617     if (!_seq) {
34618         PyMem_Free(_children);
34619         p->error_indicator = 1;
34620         PyErr_NoMemory();
34621         p->level--;
34622         return NULL;
34623     }
34624     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34625     PyMem_Free(_children);
34626     p->level--;
34627     return _seq;
34628 }
34629 
34630 // _loop0_176: lambda_param_no_default
34631 static asdl_seq *
_loop0_176_rule(Parser * p)34632 _loop0_176_rule(Parser *p)
34633 {
34634     if (p->level++ == MAXSTACK) {
34635         p->error_indicator = 1;
34636         PyErr_NoMemory();
34637     }
34638     if (p->error_indicator) {
34639         p->level--;
34640         return NULL;
34641     }
34642     void *_res = NULL;
34643     int _mark = p->mark;
34644     void **_children = PyMem_Malloc(sizeof(void *));
34645     if (!_children) {
34646         p->error_indicator = 1;
34647         PyErr_NoMemory();
34648         p->level--;
34649         return NULL;
34650     }
34651     Py_ssize_t _children_capacity = 1;
34652     Py_ssize_t _n = 0;
34653     { // lambda_param_no_default
34654         if (p->error_indicator) {
34655             p->level--;
34656             return NULL;
34657         }
34658         D(fprintf(stderr, "%*c> _loop0_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
34659         arg_ty lambda_param_no_default_var;
34660         while (
34661             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
34662         )
34663         {
34664             _res = lambda_param_no_default_var;
34665             if (_n == _children_capacity) {
34666                 _children_capacity *= 2;
34667                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34668                 if (!_new_children) {
34669                     PyMem_Free(_children);
34670                     p->error_indicator = 1;
34671                     PyErr_NoMemory();
34672                     p->level--;
34673                     return NULL;
34674                 }
34675                 _children = _new_children;
34676             }
34677             _children[_n++] = _res;
34678             _mark = p->mark;
34679         }
34680         p->mark = _mark;
34681         D(fprintf(stderr, "%*c%s _loop0_176[%d-%d]: %s failed!\n", p->level, ' ',
34682                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
34683     }
34684     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34685     if (!_seq) {
34686         PyMem_Free(_children);
34687         p->error_indicator = 1;
34688         PyErr_NoMemory();
34689         p->level--;
34690         return NULL;
34691     }
34692     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34693     PyMem_Free(_children);
34694     p->level--;
34695     return _seq;
34696 }
34697 
34698 // _loop0_177: lambda_param_no_default
34699 static asdl_seq *
_loop0_177_rule(Parser * p)34700 _loop0_177_rule(Parser *p)
34701 {
34702     if (p->level++ == MAXSTACK) {
34703         p->error_indicator = 1;
34704         PyErr_NoMemory();
34705     }
34706     if (p->error_indicator) {
34707         p->level--;
34708         return NULL;
34709     }
34710     void *_res = NULL;
34711     int _mark = p->mark;
34712     void **_children = PyMem_Malloc(sizeof(void *));
34713     if (!_children) {
34714         p->error_indicator = 1;
34715         PyErr_NoMemory();
34716         p->level--;
34717         return NULL;
34718     }
34719     Py_ssize_t _children_capacity = 1;
34720     Py_ssize_t _n = 0;
34721     { // lambda_param_no_default
34722         if (p->error_indicator) {
34723             p->level--;
34724             return NULL;
34725         }
34726         D(fprintf(stderr, "%*c> _loop0_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
34727         arg_ty lambda_param_no_default_var;
34728         while (
34729             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
34730         )
34731         {
34732             _res = lambda_param_no_default_var;
34733             if (_n == _children_capacity) {
34734                 _children_capacity *= 2;
34735                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34736                 if (!_new_children) {
34737                     PyMem_Free(_children);
34738                     p->error_indicator = 1;
34739                     PyErr_NoMemory();
34740                     p->level--;
34741                     return NULL;
34742                 }
34743                 _children = _new_children;
34744             }
34745             _children[_n++] = _res;
34746             _mark = p->mark;
34747         }
34748         p->mark = _mark;
34749         D(fprintf(stderr, "%*c%s _loop0_177[%d-%d]: %s failed!\n", p->level, ' ',
34750                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
34751     }
34752     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34753     if (!_seq) {
34754         PyMem_Free(_children);
34755         p->error_indicator = 1;
34756         PyErr_NoMemory();
34757         p->level--;
34758         return NULL;
34759     }
34760     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34761     PyMem_Free(_children);
34762     p->level--;
34763     return _seq;
34764 }
34765 
34766 // _loop0_179: ',' lambda_param
34767 static asdl_seq *
_loop0_179_rule(Parser * p)34768 _loop0_179_rule(Parser *p)
34769 {
34770     if (p->level++ == MAXSTACK) {
34771         p->error_indicator = 1;
34772         PyErr_NoMemory();
34773     }
34774     if (p->error_indicator) {
34775         p->level--;
34776         return NULL;
34777     }
34778     void *_res = NULL;
34779     int _mark = p->mark;
34780     void **_children = PyMem_Malloc(sizeof(void *));
34781     if (!_children) {
34782         p->error_indicator = 1;
34783         PyErr_NoMemory();
34784         p->level--;
34785         return NULL;
34786     }
34787     Py_ssize_t _children_capacity = 1;
34788     Py_ssize_t _n = 0;
34789     { // ',' lambda_param
34790         if (p->error_indicator) {
34791             p->level--;
34792             return NULL;
34793         }
34794         D(fprintf(stderr, "%*c> _loop0_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' lambda_param"));
34795         Token * _literal;
34796         arg_ty elem;
34797         while (
34798             (_literal = _PyPegen_expect_token(p, 12))  // token=','
34799             &&
34800             (elem = lambda_param_rule(p))  // lambda_param
34801         )
34802         {
34803             _res = elem;
34804             if (_res == NULL && PyErr_Occurred()) {
34805                 p->error_indicator = 1;
34806                 PyMem_Free(_children);
34807                 p->level--;
34808                 return NULL;
34809             }
34810             if (_n == _children_capacity) {
34811                 _children_capacity *= 2;
34812                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34813                 if (!_new_children) {
34814                     PyMem_Free(_children);
34815                     p->error_indicator = 1;
34816                     PyErr_NoMemory();
34817                     p->level--;
34818                     return NULL;
34819                 }
34820                 _children = _new_children;
34821             }
34822             _children[_n++] = _res;
34823             _mark = p->mark;
34824         }
34825         p->mark = _mark;
34826         D(fprintf(stderr, "%*c%s _loop0_179[%d-%d]: %s failed!\n", p->level, ' ',
34827                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' lambda_param"));
34828     }
34829     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34830     if (!_seq) {
34831         PyMem_Free(_children);
34832         p->error_indicator = 1;
34833         PyErr_NoMemory();
34834         p->level--;
34835         return NULL;
34836     }
34837     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
34838     PyMem_Free(_children);
34839     p->level--;
34840     return _seq;
34841 }
34842 
34843 // _gather_178: lambda_param _loop0_179
34844 static asdl_seq *
_gather_178_rule(Parser * p)34845 _gather_178_rule(Parser *p)
34846 {
34847     if (p->level++ == MAXSTACK) {
34848         p->error_indicator = 1;
34849         PyErr_NoMemory();
34850     }
34851     if (p->error_indicator) {
34852         p->level--;
34853         return NULL;
34854     }
34855     asdl_seq * _res = NULL;
34856     int _mark = p->mark;
34857     { // lambda_param _loop0_179
34858         if (p->error_indicator) {
34859             p->level--;
34860             return NULL;
34861         }
34862         D(fprintf(stderr, "%*c> _gather_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_179"));
34863         arg_ty elem;
34864         asdl_seq * seq;
34865         if (
34866             (elem = lambda_param_rule(p))  // lambda_param
34867             &&
34868             (seq = _loop0_179_rule(p))  // _loop0_179
34869         )
34870         {
34871             D(fprintf(stderr, "%*c+ _gather_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_179"));
34872             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
34873             goto done;
34874         }
34875         p->mark = _mark;
34876         D(fprintf(stderr, "%*c%s _gather_178[%d-%d]: %s failed!\n", p->level, ' ',
34877                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param _loop0_179"));
34878     }
34879     _res = NULL;
34880   done:
34881     p->level--;
34882     return _res;
34883 }
34884 
34885 // _tmp_180: lambda_slash_no_default | lambda_slash_with_default
34886 static void *
_tmp_180_rule(Parser * p)34887 _tmp_180_rule(Parser *p)
34888 {
34889     if (p->level++ == MAXSTACK) {
34890         p->error_indicator = 1;
34891         PyErr_NoMemory();
34892     }
34893     if (p->error_indicator) {
34894         p->level--;
34895         return NULL;
34896     }
34897     void * _res = NULL;
34898     int _mark = p->mark;
34899     { // lambda_slash_no_default
34900         if (p->error_indicator) {
34901             p->level--;
34902             return NULL;
34903         }
34904         D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default"));
34905         asdl_arg_seq* lambda_slash_no_default_var;
34906         if (
34907             (lambda_slash_no_default_var = lambda_slash_no_default_rule(p))  // lambda_slash_no_default
34908         )
34909         {
34910             D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default"));
34911             _res = lambda_slash_no_default_var;
34912             goto done;
34913         }
34914         p->mark = _mark;
34915         D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ',
34916                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default"));
34917     }
34918     { // lambda_slash_with_default
34919         if (p->error_indicator) {
34920             p->level--;
34921             return NULL;
34922         }
34923         D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
34924         SlashWithDefault* lambda_slash_with_default_var;
34925         if (
34926             (lambda_slash_with_default_var = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
34927         )
34928         {
34929             D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
34930             _res = lambda_slash_with_default_var;
34931             goto done;
34932         }
34933         p->mark = _mark;
34934         D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ',
34935                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
34936     }
34937     _res = NULL;
34938   done:
34939     p->level--;
34940     return _res;
34941 }
34942 
34943 // _loop0_181: lambda_param_maybe_default
34944 static asdl_seq *
_loop0_181_rule(Parser * p)34945 _loop0_181_rule(Parser *p)
34946 {
34947     if (p->level++ == MAXSTACK) {
34948         p->error_indicator = 1;
34949         PyErr_NoMemory();
34950     }
34951     if (p->error_indicator) {
34952         p->level--;
34953         return NULL;
34954     }
34955     void *_res = NULL;
34956     int _mark = p->mark;
34957     void **_children = PyMem_Malloc(sizeof(void *));
34958     if (!_children) {
34959         p->error_indicator = 1;
34960         PyErr_NoMemory();
34961         p->level--;
34962         return NULL;
34963     }
34964     Py_ssize_t _children_capacity = 1;
34965     Py_ssize_t _n = 0;
34966     { // lambda_param_maybe_default
34967         if (p->error_indicator) {
34968             p->level--;
34969             return NULL;
34970         }
34971         D(fprintf(stderr, "%*c> _loop0_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
34972         NameDefaultPair* lambda_param_maybe_default_var;
34973         while (
34974             (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
34975         )
34976         {
34977             _res = lambda_param_maybe_default_var;
34978             if (_n == _children_capacity) {
34979                 _children_capacity *= 2;
34980                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
34981                 if (!_new_children) {
34982                     PyMem_Free(_children);
34983                     p->error_indicator = 1;
34984                     PyErr_NoMemory();
34985                     p->level--;
34986                     return NULL;
34987                 }
34988                 _children = _new_children;
34989             }
34990             _children[_n++] = _res;
34991             _mark = p->mark;
34992         }
34993         p->mark = _mark;
34994         D(fprintf(stderr, "%*c%s _loop0_181[%d-%d]: %s failed!\n", p->level, ' ',
34995                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
34996     }
34997     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
34998     if (!_seq) {
34999         PyMem_Free(_children);
35000         p->error_indicator = 1;
35001         PyErr_NoMemory();
35002         p->level--;
35003         return NULL;
35004     }
35005     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35006     PyMem_Free(_children);
35007     p->level--;
35008     return _seq;
35009 }
35010 
35011 // _tmp_182: lambda_slash_no_default | lambda_slash_with_default
35012 static void *
_tmp_182_rule(Parser * p)35013 _tmp_182_rule(Parser *p)
35014 {
35015     if (p->level++ == MAXSTACK) {
35016         p->error_indicator = 1;
35017         PyErr_NoMemory();
35018     }
35019     if (p->error_indicator) {
35020         p->level--;
35021         return NULL;
35022     }
35023     void * _res = NULL;
35024     int _mark = p->mark;
35025     { // lambda_slash_no_default
35026         if (p->error_indicator) {
35027             p->level--;
35028             return NULL;
35029         }
35030         D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default"));
35031         asdl_arg_seq* lambda_slash_no_default_var;
35032         if (
35033             (lambda_slash_no_default_var = lambda_slash_no_default_rule(p))  // lambda_slash_no_default
35034         )
35035         {
35036             D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_no_default"));
35037             _res = lambda_slash_no_default_var;
35038             goto done;
35039         }
35040         p->mark = _mark;
35041         D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ',
35042                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default"));
35043     }
35044     { // lambda_slash_with_default
35045         if (p->error_indicator) {
35046             p->level--;
35047             return NULL;
35048         }
35049         D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
35050         SlashWithDefault* lambda_slash_with_default_var;
35051         if (
35052             (lambda_slash_with_default_var = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
35053         )
35054         {
35055             D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
35056             _res = lambda_slash_with_default_var;
35057             goto done;
35058         }
35059         p->mark = _mark;
35060         D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ',
35061                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
35062     }
35063     _res = NULL;
35064   done:
35065     p->level--;
35066     return _res;
35067 }
35068 
35069 // _loop0_183: lambda_param_maybe_default
35070 static asdl_seq *
_loop0_183_rule(Parser * p)35071 _loop0_183_rule(Parser *p)
35072 {
35073     if (p->level++ == MAXSTACK) {
35074         p->error_indicator = 1;
35075         PyErr_NoMemory();
35076     }
35077     if (p->error_indicator) {
35078         p->level--;
35079         return NULL;
35080     }
35081     void *_res = NULL;
35082     int _mark = p->mark;
35083     void **_children = PyMem_Malloc(sizeof(void *));
35084     if (!_children) {
35085         p->error_indicator = 1;
35086         PyErr_NoMemory();
35087         p->level--;
35088         return NULL;
35089     }
35090     Py_ssize_t _children_capacity = 1;
35091     Py_ssize_t _n = 0;
35092     { // lambda_param_maybe_default
35093         if (p->error_indicator) {
35094             p->level--;
35095             return NULL;
35096         }
35097         D(fprintf(stderr, "%*c> _loop0_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
35098         NameDefaultPair* lambda_param_maybe_default_var;
35099         while (
35100             (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
35101         )
35102         {
35103             _res = lambda_param_maybe_default_var;
35104             if (_n == _children_capacity) {
35105                 _children_capacity *= 2;
35106                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35107                 if (!_new_children) {
35108                     PyMem_Free(_children);
35109                     p->error_indicator = 1;
35110                     PyErr_NoMemory();
35111                     p->level--;
35112                     return NULL;
35113                 }
35114                 _children = _new_children;
35115             }
35116             _children[_n++] = _res;
35117             _mark = p->mark;
35118         }
35119         p->mark = _mark;
35120         D(fprintf(stderr, "%*c%s _loop0_183[%d-%d]: %s failed!\n", p->level, ' ',
35121                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
35122     }
35123     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35124     if (!_seq) {
35125         PyMem_Free(_children);
35126         p->error_indicator = 1;
35127         PyErr_NoMemory();
35128         p->level--;
35129         return NULL;
35130     }
35131     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35132     PyMem_Free(_children);
35133     p->level--;
35134     return _seq;
35135 }
35136 
35137 // _tmp_184: ',' | lambda_param_no_default
35138 static void *
_tmp_184_rule(Parser * p)35139 _tmp_184_rule(Parser *p)
35140 {
35141     if (p->level++ == MAXSTACK) {
35142         p->error_indicator = 1;
35143         PyErr_NoMemory();
35144     }
35145     if (p->error_indicator) {
35146         p->level--;
35147         return NULL;
35148     }
35149     void * _res = NULL;
35150     int _mark = p->mark;
35151     { // ','
35152         if (p->error_indicator) {
35153             p->level--;
35154             return NULL;
35155         }
35156         D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35157         Token * _literal;
35158         if (
35159             (_literal = _PyPegen_expect_token(p, 12))  // token=','
35160         )
35161         {
35162             D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35163             _res = _literal;
35164             goto done;
35165         }
35166         p->mark = _mark;
35167         D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ',
35168                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35169     }
35170     { // lambda_param_no_default
35171         if (p->error_indicator) {
35172             p->level--;
35173             return NULL;
35174         }
35175         D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35176         arg_ty lambda_param_no_default_var;
35177         if (
35178             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
35179         )
35180         {
35181             D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35182             _res = lambda_param_no_default_var;
35183             goto done;
35184         }
35185         p->mark = _mark;
35186         D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ',
35187                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
35188     }
35189     _res = NULL;
35190   done:
35191     p->level--;
35192     return _res;
35193 }
35194 
35195 // _loop0_185: lambda_param_maybe_default
35196 static asdl_seq *
_loop0_185_rule(Parser * p)35197 _loop0_185_rule(Parser *p)
35198 {
35199     if (p->level++ == MAXSTACK) {
35200         p->error_indicator = 1;
35201         PyErr_NoMemory();
35202     }
35203     if (p->error_indicator) {
35204         p->level--;
35205         return NULL;
35206     }
35207     void *_res = NULL;
35208     int _mark = p->mark;
35209     void **_children = PyMem_Malloc(sizeof(void *));
35210     if (!_children) {
35211         p->error_indicator = 1;
35212         PyErr_NoMemory();
35213         p->level--;
35214         return NULL;
35215     }
35216     Py_ssize_t _children_capacity = 1;
35217     Py_ssize_t _n = 0;
35218     { // lambda_param_maybe_default
35219         if (p->error_indicator) {
35220             p->level--;
35221             return NULL;
35222         }
35223         D(fprintf(stderr, "%*c> _loop0_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
35224         NameDefaultPair* lambda_param_maybe_default_var;
35225         while (
35226             (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
35227         )
35228         {
35229             _res = lambda_param_maybe_default_var;
35230             if (_n == _children_capacity) {
35231                 _children_capacity *= 2;
35232                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35233                 if (!_new_children) {
35234                     PyMem_Free(_children);
35235                     p->error_indicator = 1;
35236                     PyErr_NoMemory();
35237                     p->level--;
35238                     return NULL;
35239                 }
35240                 _children = _new_children;
35241             }
35242             _children[_n++] = _res;
35243             _mark = p->mark;
35244         }
35245         p->mark = _mark;
35246         D(fprintf(stderr, "%*c%s _loop0_185[%d-%d]: %s failed!\n", p->level, ' ',
35247                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
35248     }
35249     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35250     if (!_seq) {
35251         PyMem_Free(_children);
35252         p->error_indicator = 1;
35253         PyErr_NoMemory();
35254         p->level--;
35255         return NULL;
35256     }
35257     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35258     PyMem_Free(_children);
35259     p->level--;
35260     return _seq;
35261 }
35262 
35263 // _loop1_186: lambda_param_maybe_default
35264 static asdl_seq *
_loop1_186_rule(Parser * p)35265 _loop1_186_rule(Parser *p)
35266 {
35267     if (p->level++ == MAXSTACK) {
35268         p->error_indicator = 1;
35269         PyErr_NoMemory();
35270     }
35271     if (p->error_indicator) {
35272         p->level--;
35273         return NULL;
35274     }
35275     void *_res = NULL;
35276     int _mark = p->mark;
35277     void **_children = PyMem_Malloc(sizeof(void *));
35278     if (!_children) {
35279         p->error_indicator = 1;
35280         PyErr_NoMemory();
35281         p->level--;
35282         return NULL;
35283     }
35284     Py_ssize_t _children_capacity = 1;
35285     Py_ssize_t _n = 0;
35286     { // lambda_param_maybe_default
35287         if (p->error_indicator) {
35288             p->level--;
35289             return NULL;
35290         }
35291         D(fprintf(stderr, "%*c> _loop1_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
35292         NameDefaultPair* lambda_param_maybe_default_var;
35293         while (
35294             (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
35295         )
35296         {
35297             _res = lambda_param_maybe_default_var;
35298             if (_n == _children_capacity) {
35299                 _children_capacity *= 2;
35300                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35301                 if (!_new_children) {
35302                     PyMem_Free(_children);
35303                     p->error_indicator = 1;
35304                     PyErr_NoMemory();
35305                     p->level--;
35306                     return NULL;
35307                 }
35308                 _children = _new_children;
35309             }
35310             _children[_n++] = _res;
35311             _mark = p->mark;
35312         }
35313         p->mark = _mark;
35314         D(fprintf(stderr, "%*c%s _loop1_186[%d-%d]: %s failed!\n", p->level, ' ',
35315                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
35316     }
35317     if (_n == 0 || p->error_indicator) {
35318         PyMem_Free(_children);
35319         p->level--;
35320         return NULL;
35321     }
35322     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35323     if (!_seq) {
35324         PyMem_Free(_children);
35325         p->error_indicator = 1;
35326         PyErr_NoMemory();
35327         p->level--;
35328         return NULL;
35329     }
35330     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35331     PyMem_Free(_children);
35332     p->level--;
35333     return _seq;
35334 }
35335 
35336 // _loop1_187: lambda_param_with_default
35337 static asdl_seq *
_loop1_187_rule(Parser * p)35338 _loop1_187_rule(Parser *p)
35339 {
35340     if (p->level++ == MAXSTACK) {
35341         p->error_indicator = 1;
35342         PyErr_NoMemory();
35343     }
35344     if (p->error_indicator) {
35345         p->level--;
35346         return NULL;
35347     }
35348     void *_res = NULL;
35349     int _mark = p->mark;
35350     void **_children = PyMem_Malloc(sizeof(void *));
35351     if (!_children) {
35352         p->error_indicator = 1;
35353         PyErr_NoMemory();
35354         p->level--;
35355         return NULL;
35356     }
35357     Py_ssize_t _children_capacity = 1;
35358     Py_ssize_t _n = 0;
35359     { // lambda_param_with_default
35360         if (p->error_indicator) {
35361             p->level--;
35362             return NULL;
35363         }
35364         D(fprintf(stderr, "%*c> _loop1_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
35365         NameDefaultPair* lambda_param_with_default_var;
35366         while (
35367             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
35368         )
35369         {
35370             _res = lambda_param_with_default_var;
35371             if (_n == _children_capacity) {
35372                 _children_capacity *= 2;
35373                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35374                 if (!_new_children) {
35375                     PyMem_Free(_children);
35376                     p->error_indicator = 1;
35377                     PyErr_NoMemory();
35378                     p->level--;
35379                     return NULL;
35380                 }
35381                 _children = _new_children;
35382             }
35383             _children[_n++] = _res;
35384             _mark = p->mark;
35385         }
35386         p->mark = _mark;
35387         D(fprintf(stderr, "%*c%s _loop1_187[%d-%d]: %s failed!\n", p->level, ' ',
35388                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
35389     }
35390     if (_n == 0 || p->error_indicator) {
35391         PyMem_Free(_children);
35392         p->level--;
35393         return NULL;
35394     }
35395     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35396     if (!_seq) {
35397         PyMem_Free(_children);
35398         p->error_indicator = 1;
35399         PyErr_NoMemory();
35400         p->level--;
35401         return NULL;
35402     }
35403     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35404     PyMem_Free(_children);
35405     p->level--;
35406     return _seq;
35407 }
35408 
35409 // _tmp_188: ':' | ',' (':' | '**')
35410 static void *
_tmp_188_rule(Parser * p)35411 _tmp_188_rule(Parser *p)
35412 {
35413     if (p->level++ == MAXSTACK) {
35414         p->error_indicator = 1;
35415         PyErr_NoMemory();
35416     }
35417     if (p->error_indicator) {
35418         p->level--;
35419         return NULL;
35420     }
35421     void * _res = NULL;
35422     int _mark = p->mark;
35423     { // ':'
35424         if (p->error_indicator) {
35425             p->level--;
35426             return NULL;
35427         }
35428         D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
35429         Token * _literal;
35430         if (
35431             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
35432         )
35433         {
35434             D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
35435             _res = _literal;
35436             goto done;
35437         }
35438         p->mark = _mark;
35439         D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ',
35440                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
35441     }
35442     { // ',' (':' | '**')
35443         if (p->error_indicator) {
35444             p->level--;
35445             return NULL;
35446         }
35447         D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
35448         Token * _literal;
35449         void *_tmp_239_var;
35450         if (
35451             (_literal = _PyPegen_expect_token(p, 12))  // token=','
35452             &&
35453             (_tmp_239_var = _tmp_239_rule(p))  // ':' | '**'
35454         )
35455         {
35456             D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
35457             _res = _PyPegen_dummy_name(p, _literal, _tmp_239_var);
35458             goto done;
35459         }
35460         p->mark = _mark;
35461         D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ',
35462                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (':' | '**')"));
35463     }
35464     _res = NULL;
35465   done:
35466     p->level--;
35467     return _res;
35468 }
35469 
35470 // _tmp_189: lambda_param_no_default | ','
35471 static void *
_tmp_189_rule(Parser * p)35472 _tmp_189_rule(Parser *p)
35473 {
35474     if (p->level++ == MAXSTACK) {
35475         p->error_indicator = 1;
35476         PyErr_NoMemory();
35477     }
35478     if (p->error_indicator) {
35479         p->level--;
35480         return NULL;
35481     }
35482     void * _res = NULL;
35483     int _mark = p->mark;
35484     { // lambda_param_no_default
35485         if (p->error_indicator) {
35486             p->level--;
35487             return NULL;
35488         }
35489         D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35490         arg_ty lambda_param_no_default_var;
35491         if (
35492             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
35493         )
35494         {
35495             D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35496             _res = lambda_param_no_default_var;
35497             goto done;
35498         }
35499         p->mark = _mark;
35500         D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ',
35501                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
35502     }
35503     { // ','
35504         if (p->error_indicator) {
35505             p->level--;
35506             return NULL;
35507         }
35508         D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35509         Token * _literal;
35510         if (
35511             (_literal = _PyPegen_expect_token(p, 12))  // token=','
35512         )
35513         {
35514             D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35515             _res = _literal;
35516             goto done;
35517         }
35518         p->mark = _mark;
35519         D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ',
35520                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35521     }
35522     _res = NULL;
35523   done:
35524     p->level--;
35525     return _res;
35526 }
35527 
35528 // _loop0_190: lambda_param_maybe_default
35529 static asdl_seq *
_loop0_190_rule(Parser * p)35530 _loop0_190_rule(Parser *p)
35531 {
35532     if (p->level++ == MAXSTACK) {
35533         p->error_indicator = 1;
35534         PyErr_NoMemory();
35535     }
35536     if (p->error_indicator) {
35537         p->level--;
35538         return NULL;
35539     }
35540     void *_res = NULL;
35541     int _mark = p->mark;
35542     void **_children = PyMem_Malloc(sizeof(void *));
35543     if (!_children) {
35544         p->error_indicator = 1;
35545         PyErr_NoMemory();
35546         p->level--;
35547         return NULL;
35548     }
35549     Py_ssize_t _children_capacity = 1;
35550     Py_ssize_t _n = 0;
35551     { // lambda_param_maybe_default
35552         if (p->error_indicator) {
35553             p->level--;
35554             return NULL;
35555         }
35556         D(fprintf(stderr, "%*c> _loop0_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
35557         NameDefaultPair* lambda_param_maybe_default_var;
35558         while (
35559             (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
35560         )
35561         {
35562             _res = lambda_param_maybe_default_var;
35563             if (_n == _children_capacity) {
35564                 _children_capacity *= 2;
35565                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35566                 if (!_new_children) {
35567                     PyMem_Free(_children);
35568                     p->error_indicator = 1;
35569                     PyErr_NoMemory();
35570                     p->level--;
35571                     return NULL;
35572                 }
35573                 _children = _new_children;
35574             }
35575             _children[_n++] = _res;
35576             _mark = p->mark;
35577         }
35578         p->mark = _mark;
35579         D(fprintf(stderr, "%*c%s _loop0_190[%d-%d]: %s failed!\n", p->level, ' ',
35580                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
35581     }
35582     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35583     if (!_seq) {
35584         PyMem_Free(_children);
35585         p->error_indicator = 1;
35586         PyErr_NoMemory();
35587         p->level--;
35588         return NULL;
35589     }
35590     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35591     PyMem_Free(_children);
35592     p->level--;
35593     return _seq;
35594 }
35595 
35596 // _tmp_191: lambda_param_no_default | ','
35597 static void *
_tmp_191_rule(Parser * p)35598 _tmp_191_rule(Parser *p)
35599 {
35600     if (p->level++ == MAXSTACK) {
35601         p->error_indicator = 1;
35602         PyErr_NoMemory();
35603     }
35604     if (p->error_indicator) {
35605         p->level--;
35606         return NULL;
35607     }
35608     void * _res = NULL;
35609     int _mark = p->mark;
35610     { // lambda_param_no_default
35611         if (p->error_indicator) {
35612             p->level--;
35613             return NULL;
35614         }
35615         D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35616         arg_ty lambda_param_no_default_var;
35617         if (
35618             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
35619         )
35620         {
35621             D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
35622             _res = lambda_param_no_default_var;
35623             goto done;
35624         }
35625         p->mark = _mark;
35626         D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ',
35627                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
35628     }
35629     { // ','
35630         if (p->error_indicator) {
35631             p->level--;
35632             return NULL;
35633         }
35634         D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35635         Token * _literal;
35636         if (
35637             (_literal = _PyPegen_expect_token(p, 12))  // token=','
35638         )
35639         {
35640             D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35641             _res = _literal;
35642             goto done;
35643         }
35644         p->mark = _mark;
35645         D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ',
35646                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35647     }
35648     _res = NULL;
35649   done:
35650     p->level--;
35651     return _res;
35652 }
35653 
35654 // _tmp_192: '*' | '**' | '/'
35655 static void *
_tmp_192_rule(Parser * p)35656 _tmp_192_rule(Parser *p)
35657 {
35658     if (p->level++ == MAXSTACK) {
35659         p->error_indicator = 1;
35660         PyErr_NoMemory();
35661     }
35662     if (p->error_indicator) {
35663         p->level--;
35664         return NULL;
35665     }
35666     void * _res = NULL;
35667     int _mark = p->mark;
35668     { // '*'
35669         if (p->error_indicator) {
35670             p->level--;
35671             return NULL;
35672         }
35673         D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
35674         Token * _literal;
35675         if (
35676             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
35677         )
35678         {
35679             D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
35680             _res = _literal;
35681             goto done;
35682         }
35683         p->mark = _mark;
35684         D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ',
35685                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
35686     }
35687     { // '**'
35688         if (p->error_indicator) {
35689             p->level--;
35690             return NULL;
35691         }
35692         D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
35693         Token * _literal;
35694         if (
35695             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
35696         )
35697         {
35698             D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
35699             _res = _literal;
35700             goto done;
35701         }
35702         p->mark = _mark;
35703         D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ',
35704                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
35705     }
35706     { // '/'
35707         if (p->error_indicator) {
35708             p->level--;
35709             return NULL;
35710         }
35711         D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/'"));
35712         Token * _literal;
35713         if (
35714             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
35715         )
35716         {
35717             D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/'"));
35718             _res = _literal;
35719             goto done;
35720         }
35721         p->mark = _mark;
35722         D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ',
35723                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/'"));
35724     }
35725     _res = NULL;
35726   done:
35727     p->level--;
35728     return _res;
35729 }
35730 
35731 // _tmp_193: ',' | ')' | ':'
35732 static void *
_tmp_193_rule(Parser * p)35733 _tmp_193_rule(Parser *p)
35734 {
35735     if (p->level++ == MAXSTACK) {
35736         p->error_indicator = 1;
35737         PyErr_NoMemory();
35738     }
35739     if (p->error_indicator) {
35740         p->level--;
35741         return NULL;
35742     }
35743     void * _res = NULL;
35744     int _mark = p->mark;
35745     { // ','
35746         if (p->error_indicator) {
35747             p->level--;
35748             return NULL;
35749         }
35750         D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
35751         Token * _literal;
35752         if (
35753             (_literal = _PyPegen_expect_token(p, 12))  // token=','
35754         )
35755         {
35756             D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
35757             _res = _literal;
35758             goto done;
35759         }
35760         p->mark = _mark;
35761         D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ',
35762                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
35763     }
35764     { // ')'
35765         if (p->error_indicator) {
35766             p->level--;
35767             return NULL;
35768         }
35769         D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
35770         Token * _literal;
35771         if (
35772             (_literal = _PyPegen_expect_token(p, 8))  // token=')'
35773         )
35774         {
35775             D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
35776             _res = _literal;
35777             goto done;
35778         }
35779         p->mark = _mark;
35780         D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ',
35781                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
35782     }
35783     { // ':'
35784         if (p->error_indicator) {
35785             p->level--;
35786             return NULL;
35787         }
35788         D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
35789         Token * _literal;
35790         if (
35791             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
35792         )
35793         {
35794             D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
35795             _res = _literal;
35796             goto done;
35797         }
35798         p->mark = _mark;
35799         D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ',
35800                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
35801     }
35802     _res = NULL;
35803   done:
35804     p->level--;
35805     return _res;
35806 }
35807 
35808 // _loop0_195: ',' (expression ['as' star_target])
35809 static asdl_seq *
_loop0_195_rule(Parser * p)35810 _loop0_195_rule(Parser *p)
35811 {
35812     if (p->level++ == MAXSTACK) {
35813         p->error_indicator = 1;
35814         PyErr_NoMemory();
35815     }
35816     if (p->error_indicator) {
35817         p->level--;
35818         return NULL;
35819     }
35820     void *_res = NULL;
35821     int _mark = p->mark;
35822     void **_children = PyMem_Malloc(sizeof(void *));
35823     if (!_children) {
35824         p->error_indicator = 1;
35825         PyErr_NoMemory();
35826         p->level--;
35827         return NULL;
35828     }
35829     Py_ssize_t _children_capacity = 1;
35830     Py_ssize_t _n = 0;
35831     { // ',' (expression ['as' star_target])
35832         if (p->error_indicator) {
35833             p->level--;
35834             return NULL;
35835         }
35836         D(fprintf(stderr, "%*c> _loop0_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])"));
35837         Token * _literal;
35838         void *elem;
35839         while (
35840             (_literal = _PyPegen_expect_token(p, 12))  // token=','
35841             &&
35842             (elem = _tmp_240_rule(p))  // expression ['as' star_target]
35843         )
35844         {
35845             _res = elem;
35846             if (_res == NULL && PyErr_Occurred()) {
35847                 p->error_indicator = 1;
35848                 PyMem_Free(_children);
35849                 p->level--;
35850                 return NULL;
35851             }
35852             if (_n == _children_capacity) {
35853                 _children_capacity *= 2;
35854                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35855                 if (!_new_children) {
35856                     PyMem_Free(_children);
35857                     p->error_indicator = 1;
35858                     PyErr_NoMemory();
35859                     p->level--;
35860                     return NULL;
35861                 }
35862                 _children = _new_children;
35863             }
35864             _children[_n++] = _res;
35865             _mark = p->mark;
35866         }
35867         p->mark = _mark;
35868         D(fprintf(stderr, "%*c%s _loop0_195[%d-%d]: %s failed!\n", p->level, ' ',
35869                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])"));
35870     }
35871     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35872     if (!_seq) {
35873         PyMem_Free(_children);
35874         p->error_indicator = 1;
35875         PyErr_NoMemory();
35876         p->level--;
35877         return NULL;
35878     }
35879     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35880     PyMem_Free(_children);
35881     p->level--;
35882     return _seq;
35883 }
35884 
35885 // _gather_194: (expression ['as' star_target]) _loop0_195
35886 static asdl_seq *
_gather_194_rule(Parser * p)35887 _gather_194_rule(Parser *p)
35888 {
35889     if (p->level++ == MAXSTACK) {
35890         p->error_indicator = 1;
35891         PyErr_NoMemory();
35892     }
35893     if (p->error_indicator) {
35894         p->level--;
35895         return NULL;
35896     }
35897     asdl_seq * _res = NULL;
35898     int _mark = p->mark;
35899     { // (expression ['as' star_target]) _loop0_195
35900         if (p->error_indicator) {
35901             p->level--;
35902             return NULL;
35903         }
35904         D(fprintf(stderr, "%*c> _gather_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_195"));
35905         void *elem;
35906         asdl_seq * seq;
35907         if (
35908             (elem = _tmp_240_rule(p))  // expression ['as' star_target]
35909             &&
35910             (seq = _loop0_195_rule(p))  // _loop0_195
35911         )
35912         {
35913             D(fprintf(stderr, "%*c+ _gather_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_195"));
35914             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
35915             goto done;
35916         }
35917         p->mark = _mark;
35918         D(fprintf(stderr, "%*c%s _gather_194[%d-%d]: %s failed!\n", p->level, ' ',
35919                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_195"));
35920     }
35921     _res = NULL;
35922   done:
35923     p->level--;
35924     return _res;
35925 }
35926 
35927 // _loop0_197: ',' (expressions ['as' star_target])
35928 static asdl_seq *
_loop0_197_rule(Parser * p)35929 _loop0_197_rule(Parser *p)
35930 {
35931     if (p->level++ == MAXSTACK) {
35932         p->error_indicator = 1;
35933         PyErr_NoMemory();
35934     }
35935     if (p->error_indicator) {
35936         p->level--;
35937         return NULL;
35938     }
35939     void *_res = NULL;
35940     int _mark = p->mark;
35941     void **_children = PyMem_Malloc(sizeof(void *));
35942     if (!_children) {
35943         p->error_indicator = 1;
35944         PyErr_NoMemory();
35945         p->level--;
35946         return NULL;
35947     }
35948     Py_ssize_t _children_capacity = 1;
35949     Py_ssize_t _n = 0;
35950     { // ',' (expressions ['as' star_target])
35951         if (p->error_indicator) {
35952             p->level--;
35953             return NULL;
35954         }
35955         D(fprintf(stderr, "%*c> _loop0_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])"));
35956         Token * _literal;
35957         void *elem;
35958         while (
35959             (_literal = _PyPegen_expect_token(p, 12))  // token=','
35960             &&
35961             (elem = _tmp_241_rule(p))  // expressions ['as' star_target]
35962         )
35963         {
35964             _res = elem;
35965             if (_res == NULL && PyErr_Occurred()) {
35966                 p->error_indicator = 1;
35967                 PyMem_Free(_children);
35968                 p->level--;
35969                 return NULL;
35970             }
35971             if (_n == _children_capacity) {
35972                 _children_capacity *= 2;
35973                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
35974                 if (!_new_children) {
35975                     PyMem_Free(_children);
35976                     p->error_indicator = 1;
35977                     PyErr_NoMemory();
35978                     p->level--;
35979                     return NULL;
35980                 }
35981                 _children = _new_children;
35982             }
35983             _children[_n++] = _res;
35984             _mark = p->mark;
35985         }
35986         p->mark = _mark;
35987         D(fprintf(stderr, "%*c%s _loop0_197[%d-%d]: %s failed!\n", p->level, ' ',
35988                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])"));
35989     }
35990     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
35991     if (!_seq) {
35992         PyMem_Free(_children);
35993         p->error_indicator = 1;
35994         PyErr_NoMemory();
35995         p->level--;
35996         return NULL;
35997     }
35998     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
35999     PyMem_Free(_children);
36000     p->level--;
36001     return _seq;
36002 }
36003 
36004 // _gather_196: (expressions ['as' star_target]) _loop0_197
36005 static asdl_seq *
_gather_196_rule(Parser * p)36006 _gather_196_rule(Parser *p)
36007 {
36008     if (p->level++ == MAXSTACK) {
36009         p->error_indicator = 1;
36010         PyErr_NoMemory();
36011     }
36012     if (p->error_indicator) {
36013         p->level--;
36014         return NULL;
36015     }
36016     asdl_seq * _res = NULL;
36017     int _mark = p->mark;
36018     { // (expressions ['as' star_target]) _loop0_197
36019         if (p->error_indicator) {
36020             p->level--;
36021             return NULL;
36022         }
36023         D(fprintf(stderr, "%*c> _gather_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_197"));
36024         void *elem;
36025         asdl_seq * seq;
36026         if (
36027             (elem = _tmp_241_rule(p))  // expressions ['as' star_target]
36028             &&
36029             (seq = _loop0_197_rule(p))  // _loop0_197
36030         )
36031         {
36032             D(fprintf(stderr, "%*c+ _gather_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_197"));
36033             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
36034             goto done;
36035         }
36036         p->mark = _mark;
36037         D(fprintf(stderr, "%*c%s _gather_196[%d-%d]: %s failed!\n", p->level, ' ',
36038                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_197"));
36039     }
36040     _res = NULL;
36041   done:
36042     p->level--;
36043     return _res;
36044 }
36045 
36046 // _loop0_199: ',' (expression ['as' star_target])
36047 static asdl_seq *
_loop0_199_rule(Parser * p)36048 _loop0_199_rule(Parser *p)
36049 {
36050     if (p->level++ == MAXSTACK) {
36051         p->error_indicator = 1;
36052         PyErr_NoMemory();
36053     }
36054     if (p->error_indicator) {
36055         p->level--;
36056         return NULL;
36057     }
36058     void *_res = NULL;
36059     int _mark = p->mark;
36060     void **_children = PyMem_Malloc(sizeof(void *));
36061     if (!_children) {
36062         p->error_indicator = 1;
36063         PyErr_NoMemory();
36064         p->level--;
36065         return NULL;
36066     }
36067     Py_ssize_t _children_capacity = 1;
36068     Py_ssize_t _n = 0;
36069     { // ',' (expression ['as' star_target])
36070         if (p->error_indicator) {
36071             p->level--;
36072             return NULL;
36073         }
36074         D(fprintf(stderr, "%*c> _loop0_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])"));
36075         Token * _literal;
36076         void *elem;
36077         while (
36078             (_literal = _PyPegen_expect_token(p, 12))  // token=','
36079             &&
36080             (elem = _tmp_242_rule(p))  // expression ['as' star_target]
36081         )
36082         {
36083             _res = elem;
36084             if (_res == NULL && PyErr_Occurred()) {
36085                 p->error_indicator = 1;
36086                 PyMem_Free(_children);
36087                 p->level--;
36088                 return NULL;
36089             }
36090             if (_n == _children_capacity) {
36091                 _children_capacity *= 2;
36092                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
36093                 if (!_new_children) {
36094                     PyMem_Free(_children);
36095                     p->error_indicator = 1;
36096                     PyErr_NoMemory();
36097                     p->level--;
36098                     return NULL;
36099                 }
36100                 _children = _new_children;
36101             }
36102             _children[_n++] = _res;
36103             _mark = p->mark;
36104         }
36105         p->mark = _mark;
36106         D(fprintf(stderr, "%*c%s _loop0_199[%d-%d]: %s failed!\n", p->level, ' ',
36107                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])"));
36108     }
36109     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
36110     if (!_seq) {
36111         PyMem_Free(_children);
36112         p->error_indicator = 1;
36113         PyErr_NoMemory();
36114         p->level--;
36115         return NULL;
36116     }
36117     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
36118     PyMem_Free(_children);
36119     p->level--;
36120     return _seq;
36121 }
36122 
36123 // _gather_198: (expression ['as' star_target]) _loop0_199
36124 static asdl_seq *
_gather_198_rule(Parser * p)36125 _gather_198_rule(Parser *p)
36126 {
36127     if (p->level++ == MAXSTACK) {
36128         p->error_indicator = 1;
36129         PyErr_NoMemory();
36130     }
36131     if (p->error_indicator) {
36132         p->level--;
36133         return NULL;
36134     }
36135     asdl_seq * _res = NULL;
36136     int _mark = p->mark;
36137     { // (expression ['as' star_target]) _loop0_199
36138         if (p->error_indicator) {
36139             p->level--;
36140             return NULL;
36141         }
36142         D(fprintf(stderr, "%*c> _gather_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_199"));
36143         void *elem;
36144         asdl_seq * seq;
36145         if (
36146             (elem = _tmp_242_rule(p))  // expression ['as' star_target]
36147             &&
36148             (seq = _loop0_199_rule(p))  // _loop0_199
36149         )
36150         {
36151             D(fprintf(stderr, "%*c+ _gather_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_199"));
36152             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
36153             goto done;
36154         }
36155         p->mark = _mark;
36156         D(fprintf(stderr, "%*c%s _gather_198[%d-%d]: %s failed!\n", p->level, ' ',
36157                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_199"));
36158     }
36159     _res = NULL;
36160   done:
36161     p->level--;
36162     return _res;
36163 }
36164 
36165 // _loop0_201: ',' (expressions ['as' star_target])
36166 static asdl_seq *
_loop0_201_rule(Parser * p)36167 _loop0_201_rule(Parser *p)
36168 {
36169     if (p->level++ == MAXSTACK) {
36170         p->error_indicator = 1;
36171         PyErr_NoMemory();
36172     }
36173     if (p->error_indicator) {
36174         p->level--;
36175         return NULL;
36176     }
36177     void *_res = NULL;
36178     int _mark = p->mark;
36179     void **_children = PyMem_Malloc(sizeof(void *));
36180     if (!_children) {
36181         p->error_indicator = 1;
36182         PyErr_NoMemory();
36183         p->level--;
36184         return NULL;
36185     }
36186     Py_ssize_t _children_capacity = 1;
36187     Py_ssize_t _n = 0;
36188     { // ',' (expressions ['as' star_target])
36189         if (p->error_indicator) {
36190             p->level--;
36191             return NULL;
36192         }
36193         D(fprintf(stderr, "%*c> _loop0_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])"));
36194         Token * _literal;
36195         void *elem;
36196         while (
36197             (_literal = _PyPegen_expect_token(p, 12))  // token=','
36198             &&
36199             (elem = _tmp_243_rule(p))  // expressions ['as' star_target]
36200         )
36201         {
36202             _res = elem;
36203             if (_res == NULL && PyErr_Occurred()) {
36204                 p->error_indicator = 1;
36205                 PyMem_Free(_children);
36206                 p->level--;
36207                 return NULL;
36208             }
36209             if (_n == _children_capacity) {
36210                 _children_capacity *= 2;
36211                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
36212                 if (!_new_children) {
36213                     PyMem_Free(_children);
36214                     p->error_indicator = 1;
36215                     PyErr_NoMemory();
36216                     p->level--;
36217                     return NULL;
36218                 }
36219                 _children = _new_children;
36220             }
36221             _children[_n++] = _res;
36222             _mark = p->mark;
36223         }
36224         p->mark = _mark;
36225         D(fprintf(stderr, "%*c%s _loop0_201[%d-%d]: %s failed!\n", p->level, ' ',
36226                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])"));
36227     }
36228     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
36229     if (!_seq) {
36230         PyMem_Free(_children);
36231         p->error_indicator = 1;
36232         PyErr_NoMemory();
36233         p->level--;
36234         return NULL;
36235     }
36236     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
36237     PyMem_Free(_children);
36238     p->level--;
36239     return _seq;
36240 }
36241 
36242 // _gather_200: (expressions ['as' star_target]) _loop0_201
36243 static asdl_seq *
_gather_200_rule(Parser * p)36244 _gather_200_rule(Parser *p)
36245 {
36246     if (p->level++ == MAXSTACK) {
36247         p->error_indicator = 1;
36248         PyErr_NoMemory();
36249     }
36250     if (p->error_indicator) {
36251         p->level--;
36252         return NULL;
36253     }
36254     asdl_seq * _res = NULL;
36255     int _mark = p->mark;
36256     { // (expressions ['as' star_target]) _loop0_201
36257         if (p->error_indicator) {
36258             p->level--;
36259             return NULL;
36260         }
36261         D(fprintf(stderr, "%*c> _gather_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_201"));
36262         void *elem;
36263         asdl_seq * seq;
36264         if (
36265             (elem = _tmp_243_rule(p))  // expressions ['as' star_target]
36266             &&
36267             (seq = _loop0_201_rule(p))  // _loop0_201
36268         )
36269         {
36270             D(fprintf(stderr, "%*c+ _gather_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_201"));
36271             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
36272             goto done;
36273         }
36274         p->mark = _mark;
36275         D(fprintf(stderr, "%*c%s _gather_200[%d-%d]: %s failed!\n", p->level, ' ',
36276                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_201"));
36277     }
36278     _res = NULL;
36279   done:
36280     p->level--;
36281     return _res;
36282 }
36283 
36284 // _tmp_202: 'except' | 'finally'
36285 static void *
_tmp_202_rule(Parser * p)36286 _tmp_202_rule(Parser *p)
36287 {
36288     if (p->level++ == MAXSTACK) {
36289         p->error_indicator = 1;
36290         PyErr_NoMemory();
36291     }
36292     if (p->error_indicator) {
36293         p->level--;
36294         return NULL;
36295     }
36296     void * _res = NULL;
36297     int _mark = p->mark;
36298     { // 'except'
36299         if (p->error_indicator) {
36300             p->level--;
36301             return NULL;
36302         }
36303         D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'"));
36304         Token * _keyword;
36305         if (
36306             (_keyword = _PyPegen_expect_token(p, 634))  // token='except'
36307         )
36308         {
36309             D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'"));
36310             _res = _keyword;
36311             goto done;
36312         }
36313         p->mark = _mark;
36314         D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ',
36315                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except'"));
36316     }
36317     { // 'finally'
36318         if (p->error_indicator) {
36319             p->level--;
36320             return NULL;
36321         }
36322         D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'"));
36323         Token * _keyword;
36324         if (
36325             (_keyword = _PyPegen_expect_token(p, 630))  // token='finally'
36326         )
36327         {
36328             D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'"));
36329             _res = _keyword;
36330             goto done;
36331         }
36332         p->mark = _mark;
36333         D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ',
36334                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally'"));
36335     }
36336     _res = NULL;
36337   done:
36338     p->level--;
36339     return _res;
36340 }
36341 
36342 // _loop0_203: block
36343 static asdl_seq *
_loop0_203_rule(Parser * p)36344 _loop0_203_rule(Parser *p)
36345 {
36346     if (p->level++ == MAXSTACK) {
36347         p->error_indicator = 1;
36348         PyErr_NoMemory();
36349     }
36350     if (p->error_indicator) {
36351         p->level--;
36352         return NULL;
36353     }
36354     void *_res = NULL;
36355     int _mark = p->mark;
36356     void **_children = PyMem_Malloc(sizeof(void *));
36357     if (!_children) {
36358         p->error_indicator = 1;
36359         PyErr_NoMemory();
36360         p->level--;
36361         return NULL;
36362     }
36363     Py_ssize_t _children_capacity = 1;
36364     Py_ssize_t _n = 0;
36365     { // block
36366         if (p->error_indicator) {
36367             p->level--;
36368             return NULL;
36369         }
36370         D(fprintf(stderr, "%*c> _loop0_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "block"));
36371         asdl_stmt_seq* block_var;
36372         while (
36373             (block_var = block_rule(p))  // block
36374         )
36375         {
36376             _res = block_var;
36377             if (_n == _children_capacity) {
36378                 _children_capacity *= 2;
36379                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
36380                 if (!_new_children) {
36381                     PyMem_Free(_children);
36382                     p->error_indicator = 1;
36383                     PyErr_NoMemory();
36384                     p->level--;
36385                     return NULL;
36386                 }
36387                 _children = _new_children;
36388             }
36389             _children[_n++] = _res;
36390             _mark = p->mark;
36391         }
36392         p->mark = _mark;
36393         D(fprintf(stderr, "%*c%s _loop0_203[%d-%d]: %s failed!\n", p->level, ' ',
36394                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "block"));
36395     }
36396     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
36397     if (!_seq) {
36398         PyMem_Free(_children);
36399         p->error_indicator = 1;
36400         PyErr_NoMemory();
36401         p->level--;
36402         return NULL;
36403     }
36404     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
36405     PyMem_Free(_children);
36406     p->level--;
36407     return _seq;
36408 }
36409 
36410 // _loop1_204: except_block
36411 static asdl_seq *
_loop1_204_rule(Parser * p)36412 _loop1_204_rule(Parser *p)
36413 {
36414     if (p->level++ == MAXSTACK) {
36415         p->error_indicator = 1;
36416         PyErr_NoMemory();
36417     }
36418     if (p->error_indicator) {
36419         p->level--;
36420         return NULL;
36421     }
36422     void *_res = NULL;
36423     int _mark = p->mark;
36424     void **_children = PyMem_Malloc(sizeof(void *));
36425     if (!_children) {
36426         p->error_indicator = 1;
36427         PyErr_NoMemory();
36428         p->level--;
36429         return NULL;
36430     }
36431     Py_ssize_t _children_capacity = 1;
36432     Py_ssize_t _n = 0;
36433     { // except_block
36434         if (p->error_indicator) {
36435             p->level--;
36436             return NULL;
36437         }
36438         D(fprintf(stderr, "%*c> _loop1_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block"));
36439         excepthandler_ty except_block_var;
36440         while (
36441             (except_block_var = except_block_rule(p))  // except_block
36442         )
36443         {
36444             _res = except_block_var;
36445             if (_n == _children_capacity) {
36446                 _children_capacity *= 2;
36447                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
36448                 if (!_new_children) {
36449                     PyMem_Free(_children);
36450                     p->error_indicator = 1;
36451                     PyErr_NoMemory();
36452                     p->level--;
36453                     return NULL;
36454                 }
36455                 _children = _new_children;
36456             }
36457             _children[_n++] = _res;
36458             _mark = p->mark;
36459         }
36460         p->mark = _mark;
36461         D(fprintf(stderr, "%*c%s _loop1_204[%d-%d]: %s failed!\n", p->level, ' ',
36462                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_block"));
36463     }
36464     if (_n == 0 || p->error_indicator) {
36465         PyMem_Free(_children);
36466         p->level--;
36467         return NULL;
36468     }
36469     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
36470     if (!_seq) {
36471         PyMem_Free(_children);
36472         p->error_indicator = 1;
36473         PyErr_NoMemory();
36474         p->level--;
36475         return NULL;
36476     }
36477     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
36478     PyMem_Free(_children);
36479     p->level--;
36480     return _seq;
36481 }
36482 
36483 // _tmp_205: 'as' NAME
36484 static void *
_tmp_205_rule(Parser * p)36485 _tmp_205_rule(Parser *p)
36486 {
36487     if (p->level++ == MAXSTACK) {
36488         p->error_indicator = 1;
36489         PyErr_NoMemory();
36490     }
36491     if (p->error_indicator) {
36492         p->level--;
36493         return NULL;
36494     }
36495     void * _res = NULL;
36496     int _mark = p->mark;
36497     { // 'as' NAME
36498         if (p->error_indicator) {
36499             p->level--;
36500             return NULL;
36501         }
36502         D(fprintf(stderr, "%*c> _tmp_205[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
36503         Token * _keyword;
36504         expr_ty name_var;
36505         if (
36506             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
36507             &&
36508             (name_var = _PyPegen_name_token(p))  // NAME
36509         )
36510         {
36511             D(fprintf(stderr, "%*c+ _tmp_205[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
36512             _res = _PyPegen_dummy_name(p, _keyword, name_var);
36513             goto done;
36514         }
36515         p->mark = _mark;
36516         D(fprintf(stderr, "%*c%s _tmp_205[%d-%d]: %s failed!\n", p->level, ' ',
36517                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
36518     }
36519     _res = NULL;
36520   done:
36521     p->level--;
36522     return _res;
36523 }
36524 
36525 // _loop0_206: block
36526 static asdl_seq *
_loop0_206_rule(Parser * p)36527 _loop0_206_rule(Parser *p)
36528 {
36529     if (p->level++ == MAXSTACK) {
36530         p->error_indicator = 1;
36531         PyErr_NoMemory();
36532     }
36533     if (p->error_indicator) {
36534         p->level--;
36535         return NULL;
36536     }
36537     void *_res = NULL;
36538     int _mark = p->mark;
36539     void **_children = PyMem_Malloc(sizeof(void *));
36540     if (!_children) {
36541         p->error_indicator = 1;
36542         PyErr_NoMemory();
36543         p->level--;
36544         return NULL;
36545     }
36546     Py_ssize_t _children_capacity = 1;
36547     Py_ssize_t _n = 0;
36548     { // block
36549         if (p->error_indicator) {
36550             p->level--;
36551             return NULL;
36552         }
36553         D(fprintf(stderr, "%*c> _loop0_206[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "block"));
36554         asdl_stmt_seq* block_var;
36555         while (
36556             (block_var = block_rule(p))  // block
36557         )
36558         {
36559             _res = block_var;
36560             if (_n == _children_capacity) {
36561                 _children_capacity *= 2;
36562                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
36563                 if (!_new_children) {
36564                     PyMem_Free(_children);
36565                     p->error_indicator = 1;
36566                     PyErr_NoMemory();
36567                     p->level--;
36568                     return NULL;
36569                 }
36570                 _children = _new_children;
36571             }
36572             _children[_n++] = _res;
36573             _mark = p->mark;
36574         }
36575         p->mark = _mark;
36576         D(fprintf(stderr, "%*c%s _loop0_206[%d-%d]: %s failed!\n", p->level, ' ',
36577                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "block"));
36578     }
36579     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
36580     if (!_seq) {
36581         PyMem_Free(_children);
36582         p->error_indicator = 1;
36583         PyErr_NoMemory();
36584         p->level--;
36585         return NULL;
36586     }
36587     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
36588     PyMem_Free(_children);
36589     p->level--;
36590     return _seq;
36591 }
36592 
36593 // _loop1_207: except_star_block
36594 static asdl_seq *
_loop1_207_rule(Parser * p)36595 _loop1_207_rule(Parser *p)
36596 {
36597     if (p->level++ == MAXSTACK) {
36598         p->error_indicator = 1;
36599         PyErr_NoMemory();
36600     }
36601     if (p->error_indicator) {
36602         p->level--;
36603         return NULL;
36604     }
36605     void *_res = NULL;
36606     int _mark = p->mark;
36607     void **_children = PyMem_Malloc(sizeof(void *));
36608     if (!_children) {
36609         p->error_indicator = 1;
36610         PyErr_NoMemory();
36611         p->level--;
36612         return NULL;
36613     }
36614     Py_ssize_t _children_capacity = 1;
36615     Py_ssize_t _n = 0;
36616     { // except_star_block
36617         if (p->error_indicator) {
36618             p->level--;
36619             return NULL;
36620         }
36621         D(fprintf(stderr, "%*c> _loop1_207[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_star_block"));
36622         excepthandler_ty except_star_block_var;
36623         while (
36624             (except_star_block_var = except_star_block_rule(p))  // except_star_block
36625         )
36626         {
36627             _res = except_star_block_var;
36628             if (_n == _children_capacity) {
36629                 _children_capacity *= 2;
36630                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
36631                 if (!_new_children) {
36632                     PyMem_Free(_children);
36633                     p->error_indicator = 1;
36634                     PyErr_NoMemory();
36635                     p->level--;
36636                     return NULL;
36637                 }
36638                 _children = _new_children;
36639             }
36640             _children[_n++] = _res;
36641             _mark = p->mark;
36642         }
36643         p->mark = _mark;
36644         D(fprintf(stderr, "%*c%s _loop1_207[%d-%d]: %s failed!\n", p->level, ' ',
36645                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_star_block"));
36646     }
36647     if (_n == 0 || p->error_indicator) {
36648         PyMem_Free(_children);
36649         p->level--;
36650         return NULL;
36651     }
36652     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
36653     if (!_seq) {
36654         PyMem_Free(_children);
36655         p->error_indicator = 1;
36656         PyErr_NoMemory();
36657         p->level--;
36658         return NULL;
36659     }
36660     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
36661     PyMem_Free(_children);
36662     p->level--;
36663     return _seq;
36664 }
36665 
36666 // _tmp_208: expression ['as' NAME]
36667 static void *
_tmp_208_rule(Parser * p)36668 _tmp_208_rule(Parser *p)
36669 {
36670     if (p->level++ == MAXSTACK) {
36671         p->error_indicator = 1;
36672         PyErr_NoMemory();
36673     }
36674     if (p->error_indicator) {
36675         p->level--;
36676         return NULL;
36677     }
36678     void * _res = NULL;
36679     int _mark = p->mark;
36680     { // expression ['as' NAME]
36681         if (p->error_indicator) {
36682             p->level--;
36683             return NULL;
36684         }
36685         D(fprintf(stderr, "%*c> _tmp_208[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' NAME]"));
36686         void *_opt_var;
36687         UNUSED(_opt_var); // Silence compiler warnings
36688         expr_ty expression_var;
36689         if (
36690             (expression_var = expression_rule(p))  // expression
36691             &&
36692             (_opt_var = _tmp_244_rule(p), !p->error_indicator)  // ['as' NAME]
36693         )
36694         {
36695             D(fprintf(stderr, "%*c+ _tmp_208[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' NAME]"));
36696             _res = _PyPegen_dummy_name(p, expression_var, _opt_var);
36697             goto done;
36698         }
36699         p->mark = _mark;
36700         D(fprintf(stderr, "%*c%s _tmp_208[%d-%d]: %s failed!\n", p->level, ' ',
36701                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' NAME]"));
36702     }
36703     _res = NULL;
36704   done:
36705     p->level--;
36706     return _res;
36707 }
36708 
36709 // _tmp_209: 'as' NAME
36710 static void *
_tmp_209_rule(Parser * p)36711 _tmp_209_rule(Parser *p)
36712 {
36713     if (p->level++ == MAXSTACK) {
36714         p->error_indicator = 1;
36715         PyErr_NoMemory();
36716     }
36717     if (p->error_indicator) {
36718         p->level--;
36719         return NULL;
36720     }
36721     void * _res = NULL;
36722     int _mark = p->mark;
36723     { // 'as' NAME
36724         if (p->error_indicator) {
36725             p->level--;
36726             return NULL;
36727         }
36728         D(fprintf(stderr, "%*c> _tmp_209[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
36729         Token * _keyword;
36730         expr_ty name_var;
36731         if (
36732             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
36733             &&
36734             (name_var = _PyPegen_name_token(p))  // NAME
36735         )
36736         {
36737             D(fprintf(stderr, "%*c+ _tmp_209[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
36738             _res = _PyPegen_dummy_name(p, _keyword, name_var);
36739             goto done;
36740         }
36741         p->mark = _mark;
36742         D(fprintf(stderr, "%*c%s _tmp_209[%d-%d]: %s failed!\n", p->level, ' ',
36743                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
36744     }
36745     _res = NULL;
36746   done:
36747     p->level--;
36748     return _res;
36749 }
36750 
36751 // _tmp_210: 'as' NAME
36752 static void *
_tmp_210_rule(Parser * p)36753 _tmp_210_rule(Parser *p)
36754 {
36755     if (p->level++ == MAXSTACK) {
36756         p->error_indicator = 1;
36757         PyErr_NoMemory();
36758     }
36759     if (p->error_indicator) {
36760         p->level--;
36761         return NULL;
36762     }
36763     void * _res = NULL;
36764     int _mark = p->mark;
36765     { // 'as' NAME
36766         if (p->error_indicator) {
36767             p->level--;
36768             return NULL;
36769         }
36770         D(fprintf(stderr, "%*c> _tmp_210[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
36771         Token * _keyword;
36772         expr_ty name_var;
36773         if (
36774             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
36775             &&
36776             (name_var = _PyPegen_name_token(p))  // NAME
36777         )
36778         {
36779             D(fprintf(stderr, "%*c+ _tmp_210[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
36780             _res = _PyPegen_dummy_name(p, _keyword, name_var);
36781             goto done;
36782         }
36783         p->mark = _mark;
36784         D(fprintf(stderr, "%*c%s _tmp_210[%d-%d]: %s failed!\n", p->level, ' ',
36785                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
36786     }
36787     _res = NULL;
36788   done:
36789     p->level--;
36790     return _res;
36791 }
36792 
36793 // _tmp_211: NEWLINE | ':'
36794 static void *
_tmp_211_rule(Parser * p)36795 _tmp_211_rule(Parser *p)
36796 {
36797     if (p->level++ == MAXSTACK) {
36798         p->error_indicator = 1;
36799         PyErr_NoMemory();
36800     }
36801     if (p->error_indicator) {
36802         p->level--;
36803         return NULL;
36804     }
36805     void * _res = NULL;
36806     int _mark = p->mark;
36807     { // NEWLINE
36808         if (p->error_indicator) {
36809             p->level--;
36810             return NULL;
36811         }
36812         D(fprintf(stderr, "%*c> _tmp_211[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
36813         Token * newline_var;
36814         if (
36815             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
36816         )
36817         {
36818             D(fprintf(stderr, "%*c+ _tmp_211[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
36819             _res = newline_var;
36820             goto done;
36821         }
36822         p->mark = _mark;
36823         D(fprintf(stderr, "%*c%s _tmp_211[%d-%d]: %s failed!\n", p->level, ' ',
36824                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
36825     }
36826     { // ':'
36827         if (p->error_indicator) {
36828             p->level--;
36829             return NULL;
36830         }
36831         D(fprintf(stderr, "%*c> _tmp_211[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
36832         Token * _literal;
36833         if (
36834             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
36835         )
36836         {
36837             D(fprintf(stderr, "%*c+ _tmp_211[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
36838             _res = _literal;
36839             goto done;
36840         }
36841         p->mark = _mark;
36842         D(fprintf(stderr, "%*c%s _tmp_211[%d-%d]: %s failed!\n", p->level, ' ',
36843                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
36844     }
36845     _res = NULL;
36846   done:
36847     p->level--;
36848     return _res;
36849 }
36850 
36851 // _tmp_212: 'as' NAME
36852 static void *
_tmp_212_rule(Parser * p)36853 _tmp_212_rule(Parser *p)
36854 {
36855     if (p->level++ == MAXSTACK) {
36856         p->error_indicator = 1;
36857         PyErr_NoMemory();
36858     }
36859     if (p->error_indicator) {
36860         p->level--;
36861         return NULL;
36862     }
36863     void * _res = NULL;
36864     int _mark = p->mark;
36865     { // 'as' NAME
36866         if (p->error_indicator) {
36867             p->level--;
36868             return NULL;
36869         }
36870         D(fprintf(stderr, "%*c> _tmp_212[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
36871         Token * _keyword;
36872         expr_ty name_var;
36873         if (
36874             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
36875             &&
36876             (name_var = _PyPegen_name_token(p))  // NAME
36877         )
36878         {
36879             D(fprintf(stderr, "%*c+ _tmp_212[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
36880             _res = _PyPegen_dummy_name(p, _keyword, name_var);
36881             goto done;
36882         }
36883         p->mark = _mark;
36884         D(fprintf(stderr, "%*c%s _tmp_212[%d-%d]: %s failed!\n", p->level, ' ',
36885                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
36886     }
36887     _res = NULL;
36888   done:
36889     p->level--;
36890     return _res;
36891 }
36892 
36893 // _tmp_213: 'as' NAME
36894 static void *
_tmp_213_rule(Parser * p)36895 _tmp_213_rule(Parser *p)
36896 {
36897     if (p->level++ == MAXSTACK) {
36898         p->error_indicator = 1;
36899         PyErr_NoMemory();
36900     }
36901     if (p->error_indicator) {
36902         p->level--;
36903         return NULL;
36904     }
36905     void * _res = NULL;
36906     int _mark = p->mark;
36907     { // 'as' NAME
36908         if (p->error_indicator) {
36909             p->level--;
36910             return NULL;
36911         }
36912         D(fprintf(stderr, "%*c> _tmp_213[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
36913         Token * _keyword;
36914         expr_ty name_var;
36915         if (
36916             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
36917             &&
36918             (name_var = _PyPegen_name_token(p))  // NAME
36919         )
36920         {
36921             D(fprintf(stderr, "%*c+ _tmp_213[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
36922             _res = _PyPegen_dummy_name(p, _keyword, name_var);
36923             goto done;
36924         }
36925         p->mark = _mark;
36926         D(fprintf(stderr, "%*c%s _tmp_213[%d-%d]: %s failed!\n", p->level, ' ',
36927                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
36928     }
36929     _res = NULL;
36930   done:
36931     p->level--;
36932     return _res;
36933 }
36934 
36935 // _tmp_214: positional_patterns ','
36936 static void *
_tmp_214_rule(Parser * p)36937 _tmp_214_rule(Parser *p)
36938 {
36939     if (p->level++ == MAXSTACK) {
36940         p->error_indicator = 1;
36941         PyErr_NoMemory();
36942     }
36943     if (p->error_indicator) {
36944         p->level--;
36945         return NULL;
36946     }
36947     void * _res = NULL;
36948     int _mark = p->mark;
36949     { // positional_patterns ','
36950         if (p->error_indicator) {
36951             p->level--;
36952             return NULL;
36953         }
36954         D(fprintf(stderr, "%*c> _tmp_214[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
36955         Token * _literal;
36956         asdl_pattern_seq* positional_patterns_var;
36957         if (
36958             (positional_patterns_var = positional_patterns_rule(p))  // positional_patterns
36959             &&
36960             (_literal = _PyPegen_expect_token(p, 12))  // token=','
36961         )
36962         {
36963             D(fprintf(stderr, "%*c+ _tmp_214[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
36964             _res = _PyPegen_dummy_name(p, positional_patterns_var, _literal);
36965             goto done;
36966         }
36967         p->mark = _mark;
36968         D(fprintf(stderr, "%*c%s _tmp_214[%d-%d]: %s failed!\n", p->level, ' ',
36969                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "positional_patterns ','"));
36970     }
36971     _res = NULL;
36972   done:
36973     p->level--;
36974     return _res;
36975 }
36976 
36977 // _tmp_215: '->' expression
36978 static void *
_tmp_215_rule(Parser * p)36979 _tmp_215_rule(Parser *p)
36980 {
36981     if (p->level++ == MAXSTACK) {
36982         p->error_indicator = 1;
36983         PyErr_NoMemory();
36984     }
36985     if (p->error_indicator) {
36986         p->level--;
36987         return NULL;
36988     }
36989     void * _res = NULL;
36990     int _mark = p->mark;
36991     { // '->' expression
36992         if (p->error_indicator) {
36993             p->level--;
36994             return NULL;
36995         }
36996         D(fprintf(stderr, "%*c> _tmp_215[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
36997         Token * _literal;
36998         expr_ty expression_var;
36999         if (
37000             (_literal = _PyPegen_expect_token(p, 51))  // token='->'
37001             &&
37002             (expression_var = expression_rule(p))  // expression
37003         )
37004         {
37005             D(fprintf(stderr, "%*c+ _tmp_215[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
37006             _res = _PyPegen_dummy_name(p, _literal, expression_var);
37007             goto done;
37008         }
37009         p->mark = _mark;
37010         D(fprintf(stderr, "%*c%s _tmp_215[%d-%d]: %s failed!\n", p->level, ' ',
37011                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
37012     }
37013     _res = NULL;
37014   done:
37015     p->level--;
37016     return _res;
37017 }
37018 
37019 // _tmp_216: '(' arguments? ')'
37020 static void *
_tmp_216_rule(Parser * p)37021 _tmp_216_rule(Parser *p)
37022 {
37023     if (p->level++ == MAXSTACK) {
37024         p->error_indicator = 1;
37025         PyErr_NoMemory();
37026     }
37027     if (p->error_indicator) {
37028         p->level--;
37029         return NULL;
37030     }
37031     void * _res = NULL;
37032     int _mark = p->mark;
37033     { // '(' arguments? ')'
37034         if (p->error_indicator) {
37035             p->level--;
37036             return NULL;
37037         }
37038         D(fprintf(stderr, "%*c> _tmp_216[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
37039         Token * _literal;
37040         Token * _literal_1;
37041         void *_opt_var;
37042         UNUSED(_opt_var); // Silence compiler warnings
37043         if (
37044             (_literal = _PyPegen_expect_token(p, 7))  // token='('
37045             &&
37046             (_opt_var = arguments_rule(p), !p->error_indicator)  // arguments?
37047             &&
37048             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
37049         )
37050         {
37051             D(fprintf(stderr, "%*c+ _tmp_216[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
37052             _res = _PyPegen_dummy_name(p, _literal, _opt_var, _literal_1);
37053             goto done;
37054         }
37055         p->mark = _mark;
37056         D(fprintf(stderr, "%*c%s _tmp_216[%d-%d]: %s failed!\n", p->level, ' ',
37057                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'"));
37058     }
37059     _res = NULL;
37060   done:
37061     p->level--;
37062     return _res;
37063 }
37064 
37065 // _tmp_217: '(' arguments? ')'
37066 static void *
_tmp_217_rule(Parser * p)37067 _tmp_217_rule(Parser *p)
37068 {
37069     if (p->level++ == MAXSTACK) {
37070         p->error_indicator = 1;
37071         PyErr_NoMemory();
37072     }
37073     if (p->error_indicator) {
37074         p->level--;
37075         return NULL;
37076     }
37077     void * _res = NULL;
37078     int _mark = p->mark;
37079     { // '(' arguments? ')'
37080         if (p->error_indicator) {
37081             p->level--;
37082             return NULL;
37083         }
37084         D(fprintf(stderr, "%*c> _tmp_217[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
37085         Token * _literal;
37086         Token * _literal_1;
37087         void *_opt_var;
37088         UNUSED(_opt_var); // Silence compiler warnings
37089         if (
37090             (_literal = _PyPegen_expect_token(p, 7))  // token='('
37091             &&
37092             (_opt_var = arguments_rule(p), !p->error_indicator)  // arguments?
37093             &&
37094             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
37095         )
37096         {
37097             D(fprintf(stderr, "%*c+ _tmp_217[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
37098             _res = _PyPegen_dummy_name(p, _literal, _opt_var, _literal_1);
37099             goto done;
37100         }
37101         p->mark = _mark;
37102         D(fprintf(stderr, "%*c%s _tmp_217[%d-%d]: %s failed!\n", p->level, ' ',
37103                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'"));
37104     }
37105     _res = NULL;
37106   done:
37107     p->level--;
37108     return _res;
37109 }
37110 
37111 // _loop0_219: ',' double_starred_kvpair
37112 static asdl_seq *
_loop0_219_rule(Parser * p)37113 _loop0_219_rule(Parser *p)
37114 {
37115     if (p->level++ == MAXSTACK) {
37116         p->error_indicator = 1;
37117         PyErr_NoMemory();
37118     }
37119     if (p->error_indicator) {
37120         p->level--;
37121         return NULL;
37122     }
37123     void *_res = NULL;
37124     int _mark = p->mark;
37125     void **_children = PyMem_Malloc(sizeof(void *));
37126     if (!_children) {
37127         p->error_indicator = 1;
37128         PyErr_NoMemory();
37129         p->level--;
37130         return NULL;
37131     }
37132     Py_ssize_t _children_capacity = 1;
37133     Py_ssize_t _n = 0;
37134     { // ',' double_starred_kvpair
37135         if (p->error_indicator) {
37136             p->level--;
37137             return NULL;
37138         }
37139         D(fprintf(stderr, "%*c> _loop0_219[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair"));
37140         Token * _literal;
37141         KeyValuePair* elem;
37142         while (
37143             (_literal = _PyPegen_expect_token(p, 12))  // token=','
37144             &&
37145             (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
37146         )
37147         {
37148             _res = elem;
37149             if (_res == NULL && PyErr_Occurred()) {
37150                 p->error_indicator = 1;
37151                 PyMem_Free(_children);
37152                 p->level--;
37153                 return NULL;
37154             }
37155             if (_n == _children_capacity) {
37156                 _children_capacity *= 2;
37157                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
37158                 if (!_new_children) {
37159                     PyMem_Free(_children);
37160                     p->error_indicator = 1;
37161                     PyErr_NoMemory();
37162                     p->level--;
37163                     return NULL;
37164                 }
37165                 _children = _new_children;
37166             }
37167             _children[_n++] = _res;
37168             _mark = p->mark;
37169         }
37170         p->mark = _mark;
37171         D(fprintf(stderr, "%*c%s _loop0_219[%d-%d]: %s failed!\n", p->level, ' ',
37172                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair"));
37173     }
37174     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
37175     if (!_seq) {
37176         PyMem_Free(_children);
37177         p->error_indicator = 1;
37178         PyErr_NoMemory();
37179         p->level--;
37180         return NULL;
37181     }
37182     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
37183     PyMem_Free(_children);
37184     p->level--;
37185     return _seq;
37186 }
37187 
37188 // _gather_218: double_starred_kvpair _loop0_219
37189 static asdl_seq *
_gather_218_rule(Parser * p)37190 _gather_218_rule(Parser *p)
37191 {
37192     if (p->level++ == MAXSTACK) {
37193         p->error_indicator = 1;
37194         PyErr_NoMemory();
37195     }
37196     if (p->error_indicator) {
37197         p->level--;
37198         return NULL;
37199     }
37200     asdl_seq * _res = NULL;
37201     int _mark = p->mark;
37202     { // double_starred_kvpair _loop0_219
37203         if (p->error_indicator) {
37204             p->level--;
37205             return NULL;
37206         }
37207         D(fprintf(stderr, "%*c> _gather_218[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_219"));
37208         KeyValuePair* elem;
37209         asdl_seq * seq;
37210         if (
37211             (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
37212             &&
37213             (seq = _loop0_219_rule(p))  // _loop0_219
37214         )
37215         {
37216             D(fprintf(stderr, "%*c+ _gather_218[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_219"));
37217             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
37218             goto done;
37219         }
37220         p->mark = _mark;
37221         D(fprintf(stderr, "%*c%s _gather_218[%d-%d]: %s failed!\n", p->level, ' ',
37222                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_219"));
37223     }
37224     _res = NULL;
37225   done:
37226     p->level--;
37227     return _res;
37228 }
37229 
37230 // _tmp_220: '}' | ','
37231 static void *
_tmp_220_rule(Parser * p)37232 _tmp_220_rule(Parser *p)
37233 {
37234     if (p->level++ == MAXSTACK) {
37235         p->error_indicator = 1;
37236         PyErr_NoMemory();
37237     }
37238     if (p->error_indicator) {
37239         p->level--;
37240         return NULL;
37241     }
37242     void * _res = NULL;
37243     int _mark = p->mark;
37244     { // '}'
37245         if (p->error_indicator) {
37246             p->level--;
37247             return NULL;
37248         }
37249         D(fprintf(stderr, "%*c> _tmp_220[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
37250         Token * _literal;
37251         if (
37252             (_literal = _PyPegen_expect_token(p, 26))  // token='}'
37253         )
37254         {
37255             D(fprintf(stderr, "%*c+ _tmp_220[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
37256             _res = _literal;
37257             goto done;
37258         }
37259         p->mark = _mark;
37260         D(fprintf(stderr, "%*c%s _tmp_220[%d-%d]: %s failed!\n", p->level, ' ',
37261                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
37262     }
37263     { // ','
37264         if (p->error_indicator) {
37265             p->level--;
37266             return NULL;
37267         }
37268         D(fprintf(stderr, "%*c> _tmp_220[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
37269         Token * _literal;
37270         if (
37271             (_literal = _PyPegen_expect_token(p, 12))  // token=','
37272         )
37273         {
37274             D(fprintf(stderr, "%*c+ _tmp_220[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
37275             _res = _literal;
37276             goto done;
37277         }
37278         p->mark = _mark;
37279         D(fprintf(stderr, "%*c%s _tmp_220[%d-%d]: %s failed!\n", p->level, ' ',
37280                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
37281     }
37282     _res = NULL;
37283   done:
37284     p->level--;
37285     return _res;
37286 }
37287 
37288 // _tmp_221: '}' | ','
37289 static void *
_tmp_221_rule(Parser * p)37290 _tmp_221_rule(Parser *p)
37291 {
37292     if (p->level++ == MAXSTACK) {
37293         p->error_indicator = 1;
37294         PyErr_NoMemory();
37295     }
37296     if (p->error_indicator) {
37297         p->level--;
37298         return NULL;
37299     }
37300     void * _res = NULL;
37301     int _mark = p->mark;
37302     { // '}'
37303         if (p->error_indicator) {
37304             p->level--;
37305             return NULL;
37306         }
37307         D(fprintf(stderr, "%*c> _tmp_221[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
37308         Token * _literal;
37309         if (
37310             (_literal = _PyPegen_expect_token(p, 26))  // token='}'
37311         )
37312         {
37313             D(fprintf(stderr, "%*c+ _tmp_221[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
37314             _res = _literal;
37315             goto done;
37316         }
37317         p->mark = _mark;
37318         D(fprintf(stderr, "%*c%s _tmp_221[%d-%d]: %s failed!\n", p->level, ' ',
37319                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
37320     }
37321     { // ','
37322         if (p->error_indicator) {
37323             p->level--;
37324             return NULL;
37325         }
37326         D(fprintf(stderr, "%*c> _tmp_221[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
37327         Token * _literal;
37328         if (
37329             (_literal = _PyPegen_expect_token(p, 12))  // token=','
37330         )
37331         {
37332             D(fprintf(stderr, "%*c+ _tmp_221[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
37333             _res = _literal;
37334             goto done;
37335         }
37336         p->mark = _mark;
37337         D(fprintf(stderr, "%*c%s _tmp_221[%d-%d]: %s failed!\n", p->level, ' ',
37338                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
37339     }
37340     _res = NULL;
37341   done:
37342     p->level--;
37343     return _res;
37344 }
37345 
37346 // _tmp_222: star_targets '='
37347 static void *
_tmp_222_rule(Parser * p)37348 _tmp_222_rule(Parser *p)
37349 {
37350     if (p->level++ == MAXSTACK) {
37351         p->error_indicator = 1;
37352         PyErr_NoMemory();
37353     }
37354     if (p->error_indicator) {
37355         p->level--;
37356         return NULL;
37357     }
37358     void * _res = NULL;
37359     int _mark = p->mark;
37360     { // star_targets '='
37361         if (p->error_indicator) {
37362             p->level--;
37363             return NULL;
37364         }
37365         D(fprintf(stderr, "%*c> _tmp_222[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
37366         Token * _literal;
37367         expr_ty z;
37368         if (
37369             (z = star_targets_rule(p))  // star_targets
37370             &&
37371             (_literal = _PyPegen_expect_token(p, 22))  // token='='
37372         )
37373         {
37374             D(fprintf(stderr, "%*c+ _tmp_222[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
37375             _res = z;
37376             if (_res == NULL && PyErr_Occurred()) {
37377                 p->error_indicator = 1;
37378                 p->level--;
37379                 return NULL;
37380             }
37381             goto done;
37382         }
37383         p->mark = _mark;
37384         D(fprintf(stderr, "%*c%s _tmp_222[%d-%d]: %s failed!\n", p->level, ' ',
37385                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
37386     }
37387     _res = NULL;
37388   done:
37389     p->level--;
37390     return _res;
37391 }
37392 
37393 // _tmp_223: '.' | '...'
37394 static void *
_tmp_223_rule(Parser * p)37395 _tmp_223_rule(Parser *p)
37396 {
37397     if (p->level++ == MAXSTACK) {
37398         p->error_indicator = 1;
37399         PyErr_NoMemory();
37400     }
37401     if (p->error_indicator) {
37402         p->level--;
37403         return NULL;
37404     }
37405     void * _res = NULL;
37406     int _mark = p->mark;
37407     { // '.'
37408         if (p->error_indicator) {
37409             p->level--;
37410             return NULL;
37411         }
37412         D(fprintf(stderr, "%*c> _tmp_223[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
37413         Token * _literal;
37414         if (
37415             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
37416         )
37417         {
37418             D(fprintf(stderr, "%*c+ _tmp_223[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
37419             _res = _literal;
37420             goto done;
37421         }
37422         p->mark = _mark;
37423         D(fprintf(stderr, "%*c%s _tmp_223[%d-%d]: %s failed!\n", p->level, ' ',
37424                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
37425     }
37426     { // '...'
37427         if (p->error_indicator) {
37428             p->level--;
37429             return NULL;
37430         }
37431         D(fprintf(stderr, "%*c> _tmp_223[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
37432         Token * _literal;
37433         if (
37434             (_literal = _PyPegen_expect_token(p, 52))  // token='...'
37435         )
37436         {
37437             D(fprintf(stderr, "%*c+ _tmp_223[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
37438             _res = _literal;
37439             goto done;
37440         }
37441         p->mark = _mark;
37442         D(fprintf(stderr, "%*c%s _tmp_223[%d-%d]: %s failed!\n", p->level, ' ',
37443                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
37444     }
37445     _res = NULL;
37446   done:
37447     p->level--;
37448     return _res;
37449 }
37450 
37451 // _tmp_224: '.' | '...'
37452 static void *
_tmp_224_rule(Parser * p)37453 _tmp_224_rule(Parser *p)
37454 {
37455     if (p->level++ == MAXSTACK) {
37456         p->error_indicator = 1;
37457         PyErr_NoMemory();
37458     }
37459     if (p->error_indicator) {
37460         p->level--;
37461         return NULL;
37462     }
37463     void * _res = NULL;
37464     int _mark = p->mark;
37465     { // '.'
37466         if (p->error_indicator) {
37467             p->level--;
37468             return NULL;
37469         }
37470         D(fprintf(stderr, "%*c> _tmp_224[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
37471         Token * _literal;
37472         if (
37473             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
37474         )
37475         {
37476             D(fprintf(stderr, "%*c+ _tmp_224[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
37477             _res = _literal;
37478             goto done;
37479         }
37480         p->mark = _mark;
37481         D(fprintf(stderr, "%*c%s _tmp_224[%d-%d]: %s failed!\n", p->level, ' ',
37482                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
37483     }
37484     { // '...'
37485         if (p->error_indicator) {
37486             p->level--;
37487             return NULL;
37488         }
37489         D(fprintf(stderr, "%*c> _tmp_224[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
37490         Token * _literal;
37491         if (
37492             (_literal = _PyPegen_expect_token(p, 52))  // token='...'
37493         )
37494         {
37495             D(fprintf(stderr, "%*c+ _tmp_224[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
37496             _res = _literal;
37497             goto done;
37498         }
37499         p->mark = _mark;
37500         D(fprintf(stderr, "%*c%s _tmp_224[%d-%d]: %s failed!\n", p->level, ' ',
37501                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
37502     }
37503     _res = NULL;
37504   done:
37505     p->level--;
37506     return _res;
37507 }
37508 
37509 // _tmp_225: '@' named_expression NEWLINE
37510 static void *
_tmp_225_rule(Parser * p)37511 _tmp_225_rule(Parser *p)
37512 {
37513     if (p->level++ == MAXSTACK) {
37514         p->error_indicator = 1;
37515         PyErr_NoMemory();
37516     }
37517     if (p->error_indicator) {
37518         p->level--;
37519         return NULL;
37520     }
37521     void * _res = NULL;
37522     int _mark = p->mark;
37523     { // '@' named_expression NEWLINE
37524         if (p->error_indicator) {
37525             p->level--;
37526             return NULL;
37527         }
37528         D(fprintf(stderr, "%*c> _tmp_225[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
37529         Token * _literal;
37530         expr_ty f;
37531         Token * newline_var;
37532         if (
37533             (_literal = _PyPegen_expect_token(p, 49))  // token='@'
37534             &&
37535             (f = named_expression_rule(p))  // named_expression
37536             &&
37537             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
37538         )
37539         {
37540             D(fprintf(stderr, "%*c+ _tmp_225[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
37541             _res = f;
37542             if (_res == NULL && PyErr_Occurred()) {
37543                 p->error_indicator = 1;
37544                 p->level--;
37545                 return NULL;
37546             }
37547             goto done;
37548         }
37549         p->mark = _mark;
37550         D(fprintf(stderr, "%*c%s _tmp_225[%d-%d]: %s failed!\n", p->level, ' ',
37551                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE"));
37552     }
37553     _res = NULL;
37554   done:
37555     p->level--;
37556     return _res;
37557 }
37558 
37559 // _tmp_226: ',' expression
37560 static void *
_tmp_226_rule(Parser * p)37561 _tmp_226_rule(Parser *p)
37562 {
37563     if (p->level++ == MAXSTACK) {
37564         p->error_indicator = 1;
37565         PyErr_NoMemory();
37566     }
37567     if (p->error_indicator) {
37568         p->level--;
37569         return NULL;
37570     }
37571     void * _res = NULL;
37572     int _mark = p->mark;
37573     { // ',' expression
37574         if (p->error_indicator) {
37575             p->level--;
37576             return NULL;
37577         }
37578         D(fprintf(stderr, "%*c> _tmp_226[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
37579         Token * _literal;
37580         expr_ty c;
37581         if (
37582             (_literal = _PyPegen_expect_token(p, 12))  // token=','
37583             &&
37584             (c = expression_rule(p))  // expression
37585         )
37586         {
37587             D(fprintf(stderr, "%*c+ _tmp_226[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression"));
37588             _res = c;
37589             if (_res == NULL && PyErr_Occurred()) {
37590                 p->error_indicator = 1;
37591                 p->level--;
37592                 return NULL;
37593             }
37594             goto done;
37595         }
37596         p->mark = _mark;
37597         D(fprintf(stderr, "%*c%s _tmp_226[%d-%d]: %s failed!\n", p->level, ' ',
37598                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
37599     }
37600     _res = NULL;
37601   done:
37602     p->level--;
37603     return _res;
37604 }
37605 
37606 // _tmp_227: ',' star_expression
37607 static void *
_tmp_227_rule(Parser * p)37608 _tmp_227_rule(Parser *p)
37609 {
37610     if (p->level++ == MAXSTACK) {
37611         p->error_indicator = 1;
37612         PyErr_NoMemory();
37613     }
37614     if (p->error_indicator) {
37615         p->level--;
37616         return NULL;
37617     }
37618     void * _res = NULL;
37619     int _mark = p->mark;
37620     { // ',' star_expression
37621         if (p->error_indicator) {
37622             p->level--;
37623             return NULL;
37624         }
37625         D(fprintf(stderr, "%*c> _tmp_227[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
37626         Token * _literal;
37627         expr_ty c;
37628         if (
37629             (_literal = _PyPegen_expect_token(p, 12))  // token=','
37630             &&
37631             (c = star_expression_rule(p))  // star_expression
37632         )
37633         {
37634             D(fprintf(stderr, "%*c+ _tmp_227[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
37635             _res = c;
37636             if (_res == NULL && PyErr_Occurred()) {
37637                 p->error_indicator = 1;
37638                 p->level--;
37639                 return NULL;
37640             }
37641             goto done;
37642         }
37643         p->mark = _mark;
37644         D(fprintf(stderr, "%*c%s _tmp_227[%d-%d]: %s failed!\n", p->level, ' ',
37645                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression"));
37646     }
37647     _res = NULL;
37648   done:
37649     p->level--;
37650     return _res;
37651 }
37652 
37653 // _tmp_228: 'or' conjunction
37654 static void *
_tmp_228_rule(Parser * p)37655 _tmp_228_rule(Parser *p)
37656 {
37657     if (p->level++ == MAXSTACK) {
37658         p->error_indicator = 1;
37659         PyErr_NoMemory();
37660     }
37661     if (p->error_indicator) {
37662         p->level--;
37663         return NULL;
37664     }
37665     void * _res = NULL;
37666     int _mark = p->mark;
37667     { // 'or' conjunction
37668         if (p->error_indicator) {
37669             p->level--;
37670             return NULL;
37671         }
37672         D(fprintf(stderr, "%*c> _tmp_228[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
37673         Token * _keyword;
37674         expr_ty c;
37675         if (
37676             (_keyword = _PyPegen_expect_token(p, 574))  // token='or'
37677             &&
37678             (c = conjunction_rule(p))  // conjunction
37679         )
37680         {
37681             D(fprintf(stderr, "%*c+ _tmp_228[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
37682             _res = c;
37683             if (_res == NULL && PyErr_Occurred()) {
37684                 p->error_indicator = 1;
37685                 p->level--;
37686                 return NULL;
37687             }
37688             goto done;
37689         }
37690         p->mark = _mark;
37691         D(fprintf(stderr, "%*c%s _tmp_228[%d-%d]: %s failed!\n", p->level, ' ',
37692                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction"));
37693     }
37694     _res = NULL;
37695   done:
37696     p->level--;
37697     return _res;
37698 }
37699 
37700 // _tmp_229: 'and' inversion
37701 static void *
_tmp_229_rule(Parser * p)37702 _tmp_229_rule(Parser *p)
37703 {
37704     if (p->level++ == MAXSTACK) {
37705         p->error_indicator = 1;
37706         PyErr_NoMemory();
37707     }
37708     if (p->error_indicator) {
37709         p->level--;
37710         return NULL;
37711     }
37712     void * _res = NULL;
37713     int _mark = p->mark;
37714     { // 'and' inversion
37715         if (p->error_indicator) {
37716             p->level--;
37717             return NULL;
37718         }
37719         D(fprintf(stderr, "%*c> _tmp_229[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
37720         Token * _keyword;
37721         expr_ty c;
37722         if (
37723             (_keyword = _PyPegen_expect_token(p, 575))  // token='and'
37724             &&
37725             (c = inversion_rule(p))  // inversion
37726         )
37727         {
37728             D(fprintf(stderr, "%*c+ _tmp_229[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
37729             _res = c;
37730             if (_res == NULL && PyErr_Occurred()) {
37731                 p->error_indicator = 1;
37732                 p->level--;
37733                 return NULL;
37734             }
37735             goto done;
37736         }
37737         p->mark = _mark;
37738         D(fprintf(stderr, "%*c%s _tmp_229[%d-%d]: %s failed!\n", p->level, ' ',
37739                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion"));
37740     }
37741     _res = NULL;
37742   done:
37743     p->level--;
37744     return _res;
37745 }
37746 
37747 // _tmp_230: slice | starred_expression
37748 static void *
_tmp_230_rule(Parser * p)37749 _tmp_230_rule(Parser *p)
37750 {
37751     if (p->level++ == MAXSTACK) {
37752         p->error_indicator = 1;
37753         PyErr_NoMemory();
37754     }
37755     if (p->error_indicator) {
37756         p->level--;
37757         return NULL;
37758     }
37759     void * _res = NULL;
37760     int _mark = p->mark;
37761     { // slice
37762         if (p->error_indicator) {
37763             p->level--;
37764             return NULL;
37765         }
37766         D(fprintf(stderr, "%*c> _tmp_230[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice"));
37767         expr_ty slice_var;
37768         if (
37769             (slice_var = slice_rule(p))  // slice
37770         )
37771         {
37772             D(fprintf(stderr, "%*c+ _tmp_230[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice"));
37773             _res = slice_var;
37774             goto done;
37775         }
37776         p->mark = _mark;
37777         D(fprintf(stderr, "%*c%s _tmp_230[%d-%d]: %s failed!\n", p->level, ' ',
37778                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice"));
37779     }
37780     { // starred_expression
37781         if (p->error_indicator) {
37782             p->level--;
37783             return NULL;
37784         }
37785         D(fprintf(stderr, "%*c> _tmp_230[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37786         expr_ty starred_expression_var;
37787         if (
37788             (starred_expression_var = starred_expression_rule(p))  // starred_expression
37789         )
37790         {
37791             D(fprintf(stderr, "%*c+ _tmp_230[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37792             _res = starred_expression_var;
37793             goto done;
37794         }
37795         p->mark = _mark;
37796         D(fprintf(stderr, "%*c%s _tmp_230[%d-%d]: %s failed!\n", p->level, ' ',
37797                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
37798     }
37799     _res = NULL;
37800   done:
37801     p->level--;
37802     return _res;
37803 }
37804 
37805 // _tmp_231: 'if' disjunction
37806 static void *
_tmp_231_rule(Parser * p)37807 _tmp_231_rule(Parser *p)
37808 {
37809     if (p->level++ == MAXSTACK) {
37810         p->error_indicator = 1;
37811         PyErr_NoMemory();
37812     }
37813     if (p->error_indicator) {
37814         p->level--;
37815         return NULL;
37816     }
37817     void * _res = NULL;
37818     int _mark = p->mark;
37819     { // 'if' disjunction
37820         if (p->error_indicator) {
37821             p->level--;
37822             return NULL;
37823         }
37824         D(fprintf(stderr, "%*c> _tmp_231[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
37825         Token * _keyword;
37826         expr_ty z;
37827         if (
37828             (_keyword = _PyPegen_expect_token(p, 639))  // token='if'
37829             &&
37830             (z = disjunction_rule(p))  // disjunction
37831         )
37832         {
37833             D(fprintf(stderr, "%*c+ _tmp_231[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
37834             _res = z;
37835             if (_res == NULL && PyErr_Occurred()) {
37836                 p->error_indicator = 1;
37837                 p->level--;
37838                 return NULL;
37839             }
37840             goto done;
37841         }
37842         p->mark = _mark;
37843         D(fprintf(stderr, "%*c%s _tmp_231[%d-%d]: %s failed!\n", p->level, ' ',
37844                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
37845     }
37846     _res = NULL;
37847   done:
37848     p->level--;
37849     return _res;
37850 }
37851 
37852 // _tmp_232: 'if' disjunction
37853 static void *
_tmp_232_rule(Parser * p)37854 _tmp_232_rule(Parser *p)
37855 {
37856     if (p->level++ == MAXSTACK) {
37857         p->error_indicator = 1;
37858         PyErr_NoMemory();
37859     }
37860     if (p->error_indicator) {
37861         p->level--;
37862         return NULL;
37863     }
37864     void * _res = NULL;
37865     int _mark = p->mark;
37866     { // 'if' disjunction
37867         if (p->error_indicator) {
37868             p->level--;
37869             return NULL;
37870         }
37871         D(fprintf(stderr, "%*c> _tmp_232[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
37872         Token * _keyword;
37873         expr_ty z;
37874         if (
37875             (_keyword = _PyPegen_expect_token(p, 639))  // token='if'
37876             &&
37877             (z = disjunction_rule(p))  // disjunction
37878         )
37879         {
37880             D(fprintf(stderr, "%*c+ _tmp_232[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
37881             _res = z;
37882             if (_res == NULL && PyErr_Occurred()) {
37883                 p->error_indicator = 1;
37884                 p->level--;
37885                 return NULL;
37886             }
37887             goto done;
37888         }
37889         p->mark = _mark;
37890         D(fprintf(stderr, "%*c%s _tmp_232[%d-%d]: %s failed!\n", p->level, ' ',
37891                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
37892     }
37893     _res = NULL;
37894   done:
37895     p->level--;
37896     return _res;
37897 }
37898 
37899 // _tmp_233: starred_expression | (assignment_expression | expression !':=') !'='
37900 static void *
_tmp_233_rule(Parser * p)37901 _tmp_233_rule(Parser *p)
37902 {
37903     if (p->level++ == MAXSTACK) {
37904         p->error_indicator = 1;
37905         PyErr_NoMemory();
37906     }
37907     if (p->error_indicator) {
37908         p->level--;
37909         return NULL;
37910     }
37911     void * _res = NULL;
37912     int _mark = p->mark;
37913     { // starred_expression
37914         if (p->error_indicator) {
37915             p->level--;
37916             return NULL;
37917         }
37918         D(fprintf(stderr, "%*c> _tmp_233[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37919         expr_ty starred_expression_var;
37920         if (
37921             (starred_expression_var = starred_expression_rule(p))  // starred_expression
37922         )
37923         {
37924             D(fprintf(stderr, "%*c+ _tmp_233[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
37925             _res = starred_expression_var;
37926             goto done;
37927         }
37928         p->mark = _mark;
37929         D(fprintf(stderr, "%*c%s _tmp_233[%d-%d]: %s failed!\n", p->level, ' ',
37930                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
37931     }
37932     { // (assignment_expression | expression !':=') !'='
37933         if (p->error_indicator) {
37934             p->level--;
37935             return NULL;
37936         }
37937         D(fprintf(stderr, "%*c> _tmp_233[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37938         void *_tmp_245_var;
37939         if (
37940             (_tmp_245_var = _tmp_245_rule(p))  // assignment_expression | expression !':='
37941             &&
37942             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
37943         )
37944         {
37945             D(fprintf(stderr, "%*c+ _tmp_233[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37946             _res = _tmp_245_var;
37947             goto done;
37948         }
37949         p->mark = _mark;
37950         D(fprintf(stderr, "%*c%s _tmp_233[%d-%d]: %s failed!\n", p->level, ' ',
37951                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
37952     }
37953     _res = NULL;
37954   done:
37955     p->level--;
37956     return _res;
37957 }
37958 
37959 // _tmp_234: ',' star_target
37960 static void *
_tmp_234_rule(Parser * p)37961 _tmp_234_rule(Parser *p)
37962 {
37963     if (p->level++ == MAXSTACK) {
37964         p->error_indicator = 1;
37965         PyErr_NoMemory();
37966     }
37967     if (p->error_indicator) {
37968         p->level--;
37969         return NULL;
37970     }
37971     void * _res = NULL;
37972     int _mark = p->mark;
37973     { // ',' star_target
37974         if (p->error_indicator) {
37975             p->level--;
37976             return NULL;
37977         }
37978         D(fprintf(stderr, "%*c> _tmp_234[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
37979         Token * _literal;
37980         expr_ty c;
37981         if (
37982             (_literal = _PyPegen_expect_token(p, 12))  // token=','
37983             &&
37984             (c = star_target_rule(p))  // star_target
37985         )
37986         {
37987             D(fprintf(stderr, "%*c+ _tmp_234[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target"));
37988             _res = c;
37989             if (_res == NULL && PyErr_Occurred()) {
37990                 p->error_indicator = 1;
37991                 p->level--;
37992                 return NULL;
37993             }
37994             goto done;
37995         }
37996         p->mark = _mark;
37997         D(fprintf(stderr, "%*c%s _tmp_234[%d-%d]: %s failed!\n", p->level, ' ',
37998                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
37999     }
38000     _res = NULL;
38001   done:
38002     p->level--;
38003     return _res;
38004 }
38005 
38006 // _tmp_235: ',' star_target
38007 static void *
_tmp_235_rule(Parser * p)38008 _tmp_235_rule(Parser *p)
38009 {
38010     if (p->level++ == MAXSTACK) {
38011         p->error_indicator = 1;
38012         PyErr_NoMemory();
38013     }
38014     if (p->error_indicator) {
38015         p->level--;
38016         return NULL;
38017     }
38018     void * _res = NULL;
38019     int _mark = p->mark;
38020     { // ',' star_target
38021         if (p->error_indicator) {
38022             p->level--;
38023             return NULL;
38024         }
38025         D(fprintf(stderr, "%*c> _tmp_235[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
38026         Token * _literal;
38027         expr_ty c;
38028         if (
38029             (_literal = _PyPegen_expect_token(p, 12))  // token=','
38030             &&
38031             (c = star_target_rule(p))  // star_target
38032         )
38033         {
38034             D(fprintf(stderr, "%*c+ _tmp_235[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target"));
38035             _res = c;
38036             if (_res == NULL && PyErr_Occurred()) {
38037                 p->error_indicator = 1;
38038                 p->level--;
38039                 return NULL;
38040             }
38041             goto done;
38042         }
38043         p->mark = _mark;
38044         D(fprintf(stderr, "%*c%s _tmp_235[%d-%d]: %s failed!\n", p->level, ' ',
38045                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
38046     }
38047     _res = NULL;
38048   done:
38049     p->level--;
38050     return _res;
38051 }
38052 
38053 // _tmp_236: star_targets '='
38054 static void *
_tmp_236_rule(Parser * p)38055 _tmp_236_rule(Parser *p)
38056 {
38057     if (p->level++ == MAXSTACK) {
38058         p->error_indicator = 1;
38059         PyErr_NoMemory();
38060     }
38061     if (p->error_indicator) {
38062         p->level--;
38063         return NULL;
38064     }
38065     void * _res = NULL;
38066     int _mark = p->mark;
38067     { // star_targets '='
38068         if (p->error_indicator) {
38069             p->level--;
38070             return NULL;
38071         }
38072         D(fprintf(stderr, "%*c> _tmp_236[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
38073         Token * _literal;
38074         expr_ty star_targets_var;
38075         if (
38076             (star_targets_var = star_targets_rule(p))  // star_targets
38077             &&
38078             (_literal = _PyPegen_expect_token(p, 22))  // token='='
38079         )
38080         {
38081             D(fprintf(stderr, "%*c+ _tmp_236[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
38082             _res = _PyPegen_dummy_name(p, star_targets_var, _literal);
38083             goto done;
38084         }
38085         p->mark = _mark;
38086         D(fprintf(stderr, "%*c%s _tmp_236[%d-%d]: %s failed!\n", p->level, ' ',
38087                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
38088     }
38089     _res = NULL;
38090   done:
38091     p->level--;
38092     return _res;
38093 }
38094 
38095 // _tmp_237: star_targets '='
38096 static void *
_tmp_237_rule(Parser * p)38097 _tmp_237_rule(Parser *p)
38098 {
38099     if (p->level++ == MAXSTACK) {
38100         p->error_indicator = 1;
38101         PyErr_NoMemory();
38102     }
38103     if (p->error_indicator) {
38104         p->level--;
38105         return NULL;
38106     }
38107     void * _res = NULL;
38108     int _mark = p->mark;
38109     { // star_targets '='
38110         if (p->error_indicator) {
38111             p->level--;
38112             return NULL;
38113         }
38114         D(fprintf(stderr, "%*c> _tmp_237[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
38115         Token * _literal;
38116         expr_ty star_targets_var;
38117         if (
38118             (star_targets_var = star_targets_rule(p))  // star_targets
38119             &&
38120             (_literal = _PyPegen_expect_token(p, 22))  // token='='
38121         )
38122         {
38123             D(fprintf(stderr, "%*c+ _tmp_237[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
38124             _res = _PyPegen_dummy_name(p, star_targets_var, _literal);
38125             goto done;
38126         }
38127         p->mark = _mark;
38128         D(fprintf(stderr, "%*c%s _tmp_237[%d-%d]: %s failed!\n", p->level, ' ',
38129                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
38130     }
38131     _res = NULL;
38132   done:
38133     p->level--;
38134     return _res;
38135 }
38136 
38137 // _tmp_238: ')' | '**'
38138 static void *
_tmp_238_rule(Parser * p)38139 _tmp_238_rule(Parser *p)
38140 {
38141     if (p->level++ == MAXSTACK) {
38142         p->error_indicator = 1;
38143         PyErr_NoMemory();
38144     }
38145     if (p->error_indicator) {
38146         p->level--;
38147         return NULL;
38148     }
38149     void * _res = NULL;
38150     int _mark = p->mark;
38151     { // ')'
38152         if (p->error_indicator) {
38153             p->level--;
38154             return NULL;
38155         }
38156         D(fprintf(stderr, "%*c> _tmp_238[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
38157         Token * _literal;
38158         if (
38159             (_literal = _PyPegen_expect_token(p, 8))  // token=')'
38160         )
38161         {
38162             D(fprintf(stderr, "%*c+ _tmp_238[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
38163             _res = _literal;
38164             goto done;
38165         }
38166         p->mark = _mark;
38167         D(fprintf(stderr, "%*c%s _tmp_238[%d-%d]: %s failed!\n", p->level, ' ',
38168                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
38169     }
38170     { // '**'
38171         if (p->error_indicator) {
38172             p->level--;
38173             return NULL;
38174         }
38175         D(fprintf(stderr, "%*c> _tmp_238[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
38176         Token * _literal;
38177         if (
38178             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
38179         )
38180         {
38181             D(fprintf(stderr, "%*c+ _tmp_238[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
38182             _res = _literal;
38183             goto done;
38184         }
38185         p->mark = _mark;
38186         D(fprintf(stderr, "%*c%s _tmp_238[%d-%d]: %s failed!\n", p->level, ' ',
38187                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
38188     }
38189     _res = NULL;
38190   done:
38191     p->level--;
38192     return _res;
38193 }
38194 
38195 // _tmp_239: ':' | '**'
38196 static void *
_tmp_239_rule(Parser * p)38197 _tmp_239_rule(Parser *p)
38198 {
38199     if (p->level++ == MAXSTACK) {
38200         p->error_indicator = 1;
38201         PyErr_NoMemory();
38202     }
38203     if (p->error_indicator) {
38204         p->level--;
38205         return NULL;
38206     }
38207     void * _res = NULL;
38208     int _mark = p->mark;
38209     { // ':'
38210         if (p->error_indicator) {
38211             p->level--;
38212             return NULL;
38213         }
38214         D(fprintf(stderr, "%*c> _tmp_239[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
38215         Token * _literal;
38216         if (
38217             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
38218         )
38219         {
38220             D(fprintf(stderr, "%*c+ _tmp_239[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
38221             _res = _literal;
38222             goto done;
38223         }
38224         p->mark = _mark;
38225         D(fprintf(stderr, "%*c%s _tmp_239[%d-%d]: %s failed!\n", p->level, ' ',
38226                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
38227     }
38228     { // '**'
38229         if (p->error_indicator) {
38230             p->level--;
38231             return NULL;
38232         }
38233         D(fprintf(stderr, "%*c> _tmp_239[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
38234         Token * _literal;
38235         if (
38236             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
38237         )
38238         {
38239             D(fprintf(stderr, "%*c+ _tmp_239[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
38240             _res = _literal;
38241             goto done;
38242         }
38243         p->mark = _mark;
38244         D(fprintf(stderr, "%*c%s _tmp_239[%d-%d]: %s failed!\n", p->level, ' ',
38245                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
38246     }
38247     _res = NULL;
38248   done:
38249     p->level--;
38250     return _res;
38251 }
38252 
38253 // _tmp_240: expression ['as' star_target]
38254 static void *
_tmp_240_rule(Parser * p)38255 _tmp_240_rule(Parser *p)
38256 {
38257     if (p->level++ == MAXSTACK) {
38258         p->error_indicator = 1;
38259         PyErr_NoMemory();
38260     }
38261     if (p->error_indicator) {
38262         p->level--;
38263         return NULL;
38264     }
38265     void * _res = NULL;
38266     int _mark = p->mark;
38267     { // expression ['as' star_target]
38268         if (p->error_indicator) {
38269             p->level--;
38270             return NULL;
38271         }
38272         D(fprintf(stderr, "%*c> _tmp_240[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
38273         void *_opt_var;
38274         UNUSED(_opt_var); // Silence compiler warnings
38275         expr_ty expression_var;
38276         if (
38277             (expression_var = expression_rule(p))  // expression
38278             &&
38279             (_opt_var = _tmp_246_rule(p), !p->error_indicator)  // ['as' star_target]
38280         )
38281         {
38282             D(fprintf(stderr, "%*c+ _tmp_240[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
38283             _res = _PyPegen_dummy_name(p, expression_var, _opt_var);
38284             goto done;
38285         }
38286         p->mark = _mark;
38287         D(fprintf(stderr, "%*c%s _tmp_240[%d-%d]: %s failed!\n", p->level, ' ',
38288                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]"));
38289     }
38290     _res = NULL;
38291   done:
38292     p->level--;
38293     return _res;
38294 }
38295 
38296 // _tmp_241: expressions ['as' star_target]
38297 static void *
_tmp_241_rule(Parser * p)38298 _tmp_241_rule(Parser *p)
38299 {
38300     if (p->level++ == MAXSTACK) {
38301         p->error_indicator = 1;
38302         PyErr_NoMemory();
38303     }
38304     if (p->error_indicator) {
38305         p->level--;
38306         return NULL;
38307     }
38308     void * _res = NULL;
38309     int _mark = p->mark;
38310     { // expressions ['as' star_target]
38311         if (p->error_indicator) {
38312             p->level--;
38313             return NULL;
38314         }
38315         D(fprintf(stderr, "%*c> _tmp_241[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
38316         void *_opt_var;
38317         UNUSED(_opt_var); // Silence compiler warnings
38318         expr_ty expressions_var;
38319         if (
38320             (expressions_var = expressions_rule(p))  // expressions
38321             &&
38322             (_opt_var = _tmp_247_rule(p), !p->error_indicator)  // ['as' star_target]
38323         )
38324         {
38325             D(fprintf(stderr, "%*c+ _tmp_241[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
38326             _res = _PyPegen_dummy_name(p, expressions_var, _opt_var);
38327             goto done;
38328         }
38329         p->mark = _mark;
38330         D(fprintf(stderr, "%*c%s _tmp_241[%d-%d]: %s failed!\n", p->level, ' ',
38331                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]"));
38332     }
38333     _res = NULL;
38334   done:
38335     p->level--;
38336     return _res;
38337 }
38338 
38339 // _tmp_242: expression ['as' star_target]
38340 static void *
_tmp_242_rule(Parser * p)38341 _tmp_242_rule(Parser *p)
38342 {
38343     if (p->level++ == MAXSTACK) {
38344         p->error_indicator = 1;
38345         PyErr_NoMemory();
38346     }
38347     if (p->error_indicator) {
38348         p->level--;
38349         return NULL;
38350     }
38351     void * _res = NULL;
38352     int _mark = p->mark;
38353     { // expression ['as' star_target]
38354         if (p->error_indicator) {
38355             p->level--;
38356             return NULL;
38357         }
38358         D(fprintf(stderr, "%*c> _tmp_242[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
38359         void *_opt_var;
38360         UNUSED(_opt_var); // Silence compiler warnings
38361         expr_ty expression_var;
38362         if (
38363             (expression_var = expression_rule(p))  // expression
38364             &&
38365             (_opt_var = _tmp_248_rule(p), !p->error_indicator)  // ['as' star_target]
38366         )
38367         {
38368             D(fprintf(stderr, "%*c+ _tmp_242[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
38369             _res = _PyPegen_dummy_name(p, expression_var, _opt_var);
38370             goto done;
38371         }
38372         p->mark = _mark;
38373         D(fprintf(stderr, "%*c%s _tmp_242[%d-%d]: %s failed!\n", p->level, ' ',
38374                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]"));
38375     }
38376     _res = NULL;
38377   done:
38378     p->level--;
38379     return _res;
38380 }
38381 
38382 // _tmp_243: expressions ['as' star_target]
38383 static void *
_tmp_243_rule(Parser * p)38384 _tmp_243_rule(Parser *p)
38385 {
38386     if (p->level++ == MAXSTACK) {
38387         p->error_indicator = 1;
38388         PyErr_NoMemory();
38389     }
38390     if (p->error_indicator) {
38391         p->level--;
38392         return NULL;
38393     }
38394     void * _res = NULL;
38395     int _mark = p->mark;
38396     { // expressions ['as' star_target]
38397         if (p->error_indicator) {
38398             p->level--;
38399             return NULL;
38400         }
38401         D(fprintf(stderr, "%*c> _tmp_243[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
38402         void *_opt_var;
38403         UNUSED(_opt_var); // Silence compiler warnings
38404         expr_ty expressions_var;
38405         if (
38406             (expressions_var = expressions_rule(p))  // expressions
38407             &&
38408             (_opt_var = _tmp_249_rule(p), !p->error_indicator)  // ['as' star_target]
38409         )
38410         {
38411             D(fprintf(stderr, "%*c+ _tmp_243[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
38412             _res = _PyPegen_dummy_name(p, expressions_var, _opt_var);
38413             goto done;
38414         }
38415         p->mark = _mark;
38416         D(fprintf(stderr, "%*c%s _tmp_243[%d-%d]: %s failed!\n", p->level, ' ',
38417                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]"));
38418     }
38419     _res = NULL;
38420   done:
38421     p->level--;
38422     return _res;
38423 }
38424 
38425 // _tmp_244: 'as' NAME
38426 static void *
_tmp_244_rule(Parser * p)38427 _tmp_244_rule(Parser *p)
38428 {
38429     if (p->level++ == MAXSTACK) {
38430         p->error_indicator = 1;
38431         PyErr_NoMemory();
38432     }
38433     if (p->error_indicator) {
38434         p->level--;
38435         return NULL;
38436     }
38437     void * _res = NULL;
38438     int _mark = p->mark;
38439     { // 'as' NAME
38440         if (p->error_indicator) {
38441             p->level--;
38442             return NULL;
38443         }
38444         D(fprintf(stderr, "%*c> _tmp_244[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
38445         Token * _keyword;
38446         expr_ty name_var;
38447         if (
38448             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
38449             &&
38450             (name_var = _PyPegen_name_token(p))  // NAME
38451         )
38452         {
38453             D(fprintf(stderr, "%*c+ _tmp_244[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
38454             _res = _PyPegen_dummy_name(p, _keyword, name_var);
38455             goto done;
38456         }
38457         p->mark = _mark;
38458         D(fprintf(stderr, "%*c%s _tmp_244[%d-%d]: %s failed!\n", p->level, ' ',
38459                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
38460     }
38461     _res = NULL;
38462   done:
38463     p->level--;
38464     return _res;
38465 }
38466 
38467 // _tmp_245: assignment_expression | expression !':='
38468 static void *
_tmp_245_rule(Parser * p)38469 _tmp_245_rule(Parser *p)
38470 {
38471     if (p->level++ == MAXSTACK) {
38472         p->error_indicator = 1;
38473         PyErr_NoMemory();
38474     }
38475     if (p->error_indicator) {
38476         p->level--;
38477         return NULL;
38478     }
38479     void * _res = NULL;
38480     int _mark = p->mark;
38481     { // assignment_expression
38482         if (p->error_indicator) {
38483             p->level--;
38484             return NULL;
38485         }
38486         D(fprintf(stderr, "%*c> _tmp_245[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
38487         expr_ty assignment_expression_var;
38488         if (
38489             (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
38490         )
38491         {
38492             D(fprintf(stderr, "%*c+ _tmp_245[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
38493             _res = assignment_expression_var;
38494             goto done;
38495         }
38496         p->mark = _mark;
38497         D(fprintf(stderr, "%*c%s _tmp_245[%d-%d]: %s failed!\n", p->level, ' ',
38498                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
38499     }
38500     { // expression !':='
38501         if (p->error_indicator) {
38502             p->level--;
38503             return NULL;
38504         }
38505         D(fprintf(stderr, "%*c> _tmp_245[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
38506         expr_ty expression_var;
38507         if (
38508             (expression_var = expression_rule(p))  // expression
38509             &&
38510             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
38511         )
38512         {
38513             D(fprintf(stderr, "%*c+ _tmp_245[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
38514             _res = expression_var;
38515             goto done;
38516         }
38517         p->mark = _mark;
38518         D(fprintf(stderr, "%*c%s _tmp_245[%d-%d]: %s failed!\n", p->level, ' ',
38519                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
38520     }
38521     _res = NULL;
38522   done:
38523     p->level--;
38524     return _res;
38525 }
38526 
38527 // _tmp_246: 'as' star_target
38528 static void *
_tmp_246_rule(Parser * p)38529 _tmp_246_rule(Parser *p)
38530 {
38531     if (p->level++ == MAXSTACK) {
38532         p->error_indicator = 1;
38533         PyErr_NoMemory();
38534     }
38535     if (p->error_indicator) {
38536         p->level--;
38537         return NULL;
38538     }
38539     void * _res = NULL;
38540     int _mark = p->mark;
38541     { // 'as' star_target
38542         if (p->error_indicator) {
38543             p->level--;
38544             return NULL;
38545         }
38546         D(fprintf(stderr, "%*c> _tmp_246[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
38547         Token * _keyword;
38548         expr_ty star_target_var;
38549         if (
38550             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
38551             &&
38552             (star_target_var = star_target_rule(p))  // star_target
38553         )
38554         {
38555             D(fprintf(stderr, "%*c+ _tmp_246[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
38556             _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
38557             goto done;
38558         }
38559         p->mark = _mark;
38560         D(fprintf(stderr, "%*c%s _tmp_246[%d-%d]: %s failed!\n", p->level, ' ',
38561                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
38562     }
38563     _res = NULL;
38564   done:
38565     p->level--;
38566     return _res;
38567 }
38568 
38569 // _tmp_247: 'as' star_target
38570 static void *
_tmp_247_rule(Parser * p)38571 _tmp_247_rule(Parser *p)
38572 {
38573     if (p->level++ == MAXSTACK) {
38574         p->error_indicator = 1;
38575         PyErr_NoMemory();
38576     }
38577     if (p->error_indicator) {
38578         p->level--;
38579         return NULL;
38580     }
38581     void * _res = NULL;
38582     int _mark = p->mark;
38583     { // 'as' star_target
38584         if (p->error_indicator) {
38585             p->level--;
38586             return NULL;
38587         }
38588         D(fprintf(stderr, "%*c> _tmp_247[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
38589         Token * _keyword;
38590         expr_ty star_target_var;
38591         if (
38592             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
38593             &&
38594             (star_target_var = star_target_rule(p))  // star_target
38595         )
38596         {
38597             D(fprintf(stderr, "%*c+ _tmp_247[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
38598             _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
38599             goto done;
38600         }
38601         p->mark = _mark;
38602         D(fprintf(stderr, "%*c%s _tmp_247[%d-%d]: %s failed!\n", p->level, ' ',
38603                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
38604     }
38605     _res = NULL;
38606   done:
38607     p->level--;
38608     return _res;
38609 }
38610 
38611 // _tmp_248: 'as' star_target
38612 static void *
_tmp_248_rule(Parser * p)38613 _tmp_248_rule(Parser *p)
38614 {
38615     if (p->level++ == MAXSTACK) {
38616         p->error_indicator = 1;
38617         PyErr_NoMemory();
38618     }
38619     if (p->error_indicator) {
38620         p->level--;
38621         return NULL;
38622     }
38623     void * _res = NULL;
38624     int _mark = p->mark;
38625     { // 'as' star_target
38626         if (p->error_indicator) {
38627             p->level--;
38628             return NULL;
38629         }
38630         D(fprintf(stderr, "%*c> _tmp_248[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
38631         Token * _keyword;
38632         expr_ty star_target_var;
38633         if (
38634             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
38635             &&
38636             (star_target_var = star_target_rule(p))  // star_target
38637         )
38638         {
38639             D(fprintf(stderr, "%*c+ _tmp_248[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
38640             _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
38641             goto done;
38642         }
38643         p->mark = _mark;
38644         D(fprintf(stderr, "%*c%s _tmp_248[%d-%d]: %s failed!\n", p->level, ' ',
38645                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
38646     }
38647     _res = NULL;
38648   done:
38649     p->level--;
38650     return _res;
38651 }
38652 
38653 // _tmp_249: 'as' star_target
38654 static void *
_tmp_249_rule(Parser * p)38655 _tmp_249_rule(Parser *p)
38656 {
38657     if (p->level++ == MAXSTACK) {
38658         p->error_indicator = 1;
38659         PyErr_NoMemory();
38660     }
38661     if (p->error_indicator) {
38662         p->level--;
38663         return NULL;
38664     }
38665     void * _res = NULL;
38666     int _mark = p->mark;
38667     { // 'as' star_target
38668         if (p->error_indicator) {
38669             p->level--;
38670             return NULL;
38671         }
38672         D(fprintf(stderr, "%*c> _tmp_249[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
38673         Token * _keyword;
38674         expr_ty star_target_var;
38675         if (
38676             (_keyword = _PyPegen_expect_token(p, 637))  // token='as'
38677             &&
38678             (star_target_var = star_target_rule(p))  // star_target
38679         )
38680         {
38681             D(fprintf(stderr, "%*c+ _tmp_249[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
38682             _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
38683             goto done;
38684         }
38685         p->mark = _mark;
38686         D(fprintf(stderr, "%*c%s _tmp_249[%d-%d]: %s failed!\n", p->level, ' ',
38687                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
38688     }
38689     _res = NULL;
38690   done:
38691     p->level--;
38692     return _res;
38693 }
38694 
38695 void *
_PyPegen_parse(Parser * p)38696 _PyPegen_parse(Parser *p)
38697 {
38698     // Initialize keywords
38699     p->keywords = reserved_keywords;
38700     p->n_keyword_lists = n_keyword_lists;
38701     p->soft_keywords = soft_keywords;
38702 
38703     // Run parser
38704     void *result = NULL;
38705     if (p->start_rule == Py_file_input) {
38706         result = file_rule(p);
38707     } else if (p->start_rule == Py_single_input) {
38708         result = interactive_rule(p);
38709     } else if (p->start_rule == Py_eval_input) {
38710         result = eval_rule(p);
38711     } else if (p->start_rule == Py_func_type_input) {
38712         result = func_type_rule(p);
38713     } else if (p->start_rule == Py_fstring_input) {
38714         result = fstring_rule(p);
38715     }
38716 
38717     return result;
38718 }
38719