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 static const int n_keyword_lists = 9;
10 static KeywordToken *reserved_keywords[] = {
11     (KeywordToken[]) {{NULL, -1}},
12     (KeywordToken[]) {{NULL, -1}},
13     (KeywordToken[]) {
14         {"if", 627},
15         {"as", 625},
16         {"in", 634},
17         {"or", 571},
18         {"is", 579},
19         {NULL, -1},
20     },
21     (KeywordToken[]) {
22         {"del", 600},
23         {"def", 635},
24         {"for", 633},
25         {"try", 612},
26         {"and", 572},
27         {"not", 578},
28         {NULL, -1},
29     },
30     (KeywordToken[]) {
31         {"from", 569},
32         {"pass", 504},
33         {"with", 609},
34         {"elif", 629},
35         {"else", 630},
36         {"None", 598},
37         {"True", 597},
38         {NULL, -1},
39     },
40     (KeywordToken[]) {
41         {"raise", 522},
42         {"yield", 570},
43         {"break", 508},
44         {"class", 636},
45         {"while", 632},
46         {"False", 599},
47         {NULL, -1},
48     },
49     (KeywordToken[]) {
50         {"return", 519},
51         {"import", 531},
52         {"assert", 526},
53         {"global", 523},
54         {"except", 623},
55         {"lambda", 583},
56         {NULL, -1},
57     },
58     (KeywordToken[]) {
59         {"finally", 620},
60         {NULL, -1},
61     },
62     (KeywordToken[]) {
63         {"continue", 509},
64         {"nonlocal", 524},
65         {NULL, -1},
66     },
67 };
68 static char *soft_keywords[] = {
69     "_",
70     "case",
71     "match",
72     NULL,
73 };
74 #define file_type 1000
75 #define interactive_type 1001
76 #define eval_type 1002
77 #define func_type_type 1003
78 #define fstring_type 1004
79 #define statements_type 1005
80 #define statement_type 1006
81 #define statement_newline_type 1007
82 #define simple_stmts_type 1008
83 #define simple_stmt_type 1009
84 #define compound_stmt_type 1010
85 #define assignment_type 1011
86 #define annotated_rhs_type 1012
87 #define augassign_type 1013
88 #define return_stmt_type 1014
89 #define raise_stmt_type 1015
90 #define global_stmt_type 1016
91 #define nonlocal_stmt_type 1017
92 #define del_stmt_type 1018
93 #define yield_stmt_type 1019
94 #define assert_stmt_type 1020
95 #define import_stmt_type 1021
96 #define import_name_type 1022
97 #define import_from_type 1023
98 #define import_from_targets_type 1024
99 #define import_from_as_names_type 1025
100 #define import_from_as_name_type 1026
101 #define dotted_as_names_type 1027
102 #define dotted_as_name_type 1028
103 #define dotted_name_type 1029  // Left-recursive
104 #define block_type 1030
105 #define decorators_type 1031
106 #define class_def_type 1032
107 #define class_def_raw_type 1033
108 #define function_def_type 1034
109 #define function_def_raw_type 1035
110 #define params_type 1036
111 #define parameters_type 1037
112 #define slash_no_default_type 1038
113 #define slash_with_default_type 1039
114 #define star_etc_type 1040
115 #define kwds_type 1041
116 #define param_no_default_type 1042
117 #define param_with_default_type 1043
118 #define param_maybe_default_type 1044
119 #define param_type 1045
120 #define annotation_type 1046
121 #define default_type 1047
122 #define if_stmt_type 1048
123 #define elif_stmt_type 1049
124 #define else_block_type 1050
125 #define while_stmt_type 1051
126 #define for_stmt_type 1052
127 #define with_stmt_type 1053
128 #define with_item_type 1054
129 #define try_stmt_type 1055
130 #define except_block_type 1056
131 #define finally_block_type 1057
132 #define match_stmt_type 1058
133 #define subject_expr_type 1059
134 #define case_block_type 1060
135 #define guard_type 1061
136 #define patterns_type 1062
137 #define pattern_type 1063
138 #define as_pattern_type 1064
139 #define or_pattern_type 1065
140 #define closed_pattern_type 1066
141 #define literal_pattern_type 1067
142 #define literal_expr_type 1068
143 #define complex_number_type 1069
144 #define signed_number_type 1070
145 #define signed_real_number_type 1071
146 #define real_number_type 1072
147 #define imaginary_number_type 1073
148 #define capture_pattern_type 1074
149 #define pattern_capture_target_type 1075
150 #define wildcard_pattern_type 1076
151 #define value_pattern_type 1077
152 #define attr_type 1078  // Left-recursive
153 #define name_or_attr_type 1079  // Left-recursive
154 #define group_pattern_type 1080
155 #define sequence_pattern_type 1081
156 #define open_sequence_pattern_type 1082
157 #define maybe_sequence_pattern_type 1083
158 #define maybe_star_pattern_type 1084
159 #define star_pattern_type 1085
160 #define mapping_pattern_type 1086
161 #define items_pattern_type 1087
162 #define key_value_pattern_type 1088
163 #define double_star_pattern_type 1089
164 #define class_pattern_type 1090
165 #define positional_patterns_type 1091
166 #define keyword_patterns_type 1092
167 #define keyword_pattern_type 1093
168 #define expressions_type 1094
169 #define expression_type 1095
170 #define yield_expr_type 1096
171 #define star_expressions_type 1097
172 #define star_expression_type 1098
173 #define star_named_expressions_type 1099
174 #define star_named_expression_type 1100
175 #define assignment_expression_type 1101
176 #define named_expression_type 1102
177 #define disjunction_type 1103
178 #define conjunction_type 1104
179 #define inversion_type 1105
180 #define comparison_type 1106
181 #define compare_op_bitwise_or_pair_type 1107
182 #define eq_bitwise_or_type 1108
183 #define noteq_bitwise_or_type 1109
184 #define lte_bitwise_or_type 1110
185 #define lt_bitwise_or_type 1111
186 #define gte_bitwise_or_type 1112
187 #define gt_bitwise_or_type 1113
188 #define notin_bitwise_or_type 1114
189 #define in_bitwise_or_type 1115
190 #define isnot_bitwise_or_type 1116
191 #define is_bitwise_or_type 1117
192 #define bitwise_or_type 1118  // Left-recursive
193 #define bitwise_xor_type 1119  // Left-recursive
194 #define bitwise_and_type 1120  // Left-recursive
195 #define shift_expr_type 1121  // Left-recursive
196 #define sum_type 1122  // Left-recursive
197 #define term_type 1123  // Left-recursive
198 #define factor_type 1124
199 #define power_type 1125
200 #define await_primary_type 1126
201 #define primary_type 1127  // Left-recursive
202 #define slices_type 1128
203 #define slice_type 1129
204 #define atom_type 1130
205 #define group_type 1131
206 #define lambdef_type 1132
207 #define lambda_params_type 1133
208 #define lambda_parameters_type 1134
209 #define lambda_slash_no_default_type 1135
210 #define lambda_slash_with_default_type 1136
211 #define lambda_star_etc_type 1137
212 #define lambda_kwds_type 1138
213 #define lambda_param_no_default_type 1139
214 #define lambda_param_with_default_type 1140
215 #define lambda_param_maybe_default_type 1141
216 #define lambda_param_type 1142
217 #define strings_type 1143
218 #define list_type 1144
219 #define tuple_type 1145
220 #define set_type 1146
221 #define dict_type 1147
222 #define double_starred_kvpairs_type 1148
223 #define double_starred_kvpair_type 1149
224 #define kvpair_type 1150
225 #define for_if_clauses_type 1151
226 #define for_if_clause_type 1152
227 #define listcomp_type 1153
228 #define setcomp_type 1154
229 #define genexp_type 1155
230 #define dictcomp_type 1156
231 #define arguments_type 1157
232 #define args_type 1158
233 #define kwargs_type 1159
234 #define starred_expression_type 1160
235 #define kwarg_or_starred_type 1161
236 #define kwarg_or_double_starred_type 1162
237 #define star_targets_type 1163
238 #define star_targets_list_seq_type 1164
239 #define star_targets_tuple_seq_type 1165
240 #define star_target_type 1166
241 #define target_with_star_atom_type 1167
242 #define star_atom_type 1168
243 #define single_target_type 1169
244 #define single_subscript_attribute_target_type 1170
245 #define t_primary_type 1171  // Left-recursive
246 #define t_lookahead_type 1172
247 #define del_targets_type 1173
248 #define del_target_type 1174
249 #define del_t_atom_type 1175
250 #define type_expressions_type 1176
251 #define func_type_comment_type 1177
252 #define invalid_arguments_type 1178
253 #define invalid_kwarg_type 1179
254 #define expression_without_invalid_type 1180
255 #define invalid_legacy_expression_type 1181
256 #define invalid_expression_type 1182
257 #define invalid_named_expression_type 1183
258 #define invalid_assignment_type 1184
259 #define invalid_ann_assign_target_type 1185
260 #define invalid_del_stmt_type 1186
261 #define invalid_block_type 1187
262 #define invalid_comprehension_type 1188
263 #define invalid_dict_comprehension_type 1189
264 #define invalid_parameters_type 1190
265 #define invalid_parameters_helper_type 1191
266 #define invalid_lambda_parameters_type 1192
267 #define invalid_lambda_parameters_helper_type 1193
268 #define invalid_star_etc_type 1194
269 #define invalid_lambda_star_etc_type 1195
270 #define invalid_double_type_comments_type 1196
271 #define invalid_with_item_type 1197
272 #define invalid_for_target_type 1198
273 #define invalid_group_type 1199
274 #define invalid_import_from_targets_type 1200
275 #define invalid_with_stmt_type 1201
276 #define invalid_with_stmt_indent_type 1202
277 #define invalid_try_stmt_type 1203
278 #define invalid_except_stmt_type 1204
279 #define invalid_finally_stmt_type 1205
280 #define invalid_except_stmt_indent_type 1206
281 #define invalid_match_stmt_type 1207
282 #define invalid_case_block_type 1208
283 #define invalid_as_pattern_type 1209
284 #define invalid_class_pattern_type 1210
285 #define invalid_class_argument_pattern_type 1211
286 #define invalid_if_stmt_type 1212
287 #define invalid_elif_stmt_type 1213
288 #define invalid_else_stmt_type 1214
289 #define invalid_while_stmt_type 1215
290 #define invalid_for_stmt_type 1216
291 #define invalid_def_raw_type 1217
292 #define invalid_class_def_raw_type 1218
293 #define invalid_double_starred_kvpairs_type 1219
294 #define invalid_kvpair_type 1220
295 #define _loop0_1_type 1221
296 #define _loop0_2_type 1222
297 #define _loop1_3_type 1223
298 #define _loop0_5_type 1224
299 #define _gather_4_type 1225
300 #define _tmp_6_type 1226
301 #define _tmp_7_type 1227
302 #define _tmp_8_type 1228
303 #define _tmp_9_type 1229
304 #define _tmp_10_type 1230
305 #define _tmp_11_type 1231
306 #define _tmp_12_type 1232
307 #define _tmp_13_type 1233
308 #define _loop1_14_type 1234
309 #define _tmp_15_type 1235
310 #define _tmp_16_type 1236
311 #define _tmp_17_type 1237
312 #define _loop0_19_type 1238
313 #define _gather_18_type 1239
314 #define _loop0_21_type 1240
315 #define _gather_20_type 1241
316 #define _tmp_22_type 1242
317 #define _tmp_23_type 1243
318 #define _loop0_24_type 1244
319 #define _loop1_25_type 1245
320 #define _loop0_27_type 1246
321 #define _gather_26_type 1247
322 #define _tmp_28_type 1248
323 #define _loop0_30_type 1249
324 #define _gather_29_type 1250
325 #define _tmp_31_type 1251
326 #define _loop1_32_type 1252
327 #define _tmp_33_type 1253
328 #define _tmp_34_type 1254
329 #define _tmp_35_type 1255
330 #define _loop0_36_type 1256
331 #define _loop0_37_type 1257
332 #define _loop0_38_type 1258
333 #define _loop1_39_type 1259
334 #define _loop0_40_type 1260
335 #define _loop1_41_type 1261
336 #define _loop1_42_type 1262
337 #define _loop1_43_type 1263
338 #define _loop0_44_type 1264
339 #define _loop1_45_type 1265
340 #define _loop0_46_type 1266
341 #define _loop1_47_type 1267
342 #define _loop0_48_type 1268
343 #define _loop1_49_type 1269
344 #define _loop0_51_type 1270
345 #define _gather_50_type 1271
346 #define _loop0_53_type 1272
347 #define _gather_52_type 1273
348 #define _loop0_55_type 1274
349 #define _gather_54_type 1275
350 #define _loop0_57_type 1276
351 #define _gather_56_type 1277
352 #define _tmp_58_type 1278
353 #define _loop1_59_type 1279
354 #define _tmp_60_type 1280
355 #define _loop1_61_type 1281
356 #define _loop0_63_type 1282
357 #define _gather_62_type 1283
358 #define _tmp_64_type 1284
359 #define _tmp_65_type 1285
360 #define _tmp_66_type 1286
361 #define _tmp_67_type 1287
362 #define _loop0_69_type 1288
363 #define _gather_68_type 1289
364 #define _loop0_71_type 1290
365 #define _gather_70_type 1291
366 #define _tmp_72_type 1292
367 #define _loop0_74_type 1293
368 #define _gather_73_type 1294
369 #define _loop0_76_type 1295
370 #define _gather_75_type 1296
371 #define _loop1_77_type 1297
372 #define _loop1_78_type 1298
373 #define _loop0_80_type 1299
374 #define _gather_79_type 1300
375 #define _loop1_81_type 1301
376 #define _loop1_82_type 1302
377 #define _loop1_83_type 1303
378 #define _tmp_84_type 1304
379 #define _loop0_86_type 1305
380 #define _gather_85_type 1306
381 #define _tmp_87_type 1307
382 #define _tmp_88_type 1308
383 #define _tmp_89_type 1309
384 #define _tmp_90_type 1310
385 #define _tmp_91_type 1311
386 #define _loop0_92_type 1312
387 #define _loop0_93_type 1313
388 #define _loop0_94_type 1314
389 #define _loop1_95_type 1315
390 #define _loop0_96_type 1316
391 #define _loop1_97_type 1317
392 #define _loop1_98_type 1318
393 #define _loop1_99_type 1319
394 #define _loop0_100_type 1320
395 #define _loop1_101_type 1321
396 #define _loop0_102_type 1322
397 #define _loop1_103_type 1323
398 #define _loop0_104_type 1324
399 #define _loop1_105_type 1325
400 #define _loop1_106_type 1326
401 #define _tmp_107_type 1327
402 #define _loop0_109_type 1328
403 #define _gather_108_type 1329
404 #define _loop1_110_type 1330
405 #define _loop0_111_type 1331
406 #define _loop0_112_type 1332
407 #define _tmp_113_type 1333
408 #define _loop0_115_type 1334
409 #define _gather_114_type 1335
410 #define _tmp_116_type 1336
411 #define _loop0_118_type 1337
412 #define _gather_117_type 1338
413 #define _loop0_120_type 1339
414 #define _gather_119_type 1340
415 #define _loop0_122_type 1341
416 #define _gather_121_type 1342
417 #define _loop0_124_type 1343
418 #define _gather_123_type 1344
419 #define _loop0_125_type 1345
420 #define _loop0_127_type 1346
421 #define _gather_126_type 1347
422 #define _loop1_128_type 1348
423 #define _tmp_129_type 1349
424 #define _loop0_131_type 1350
425 #define _gather_130_type 1351
426 #define _loop0_133_type 1352
427 #define _gather_132_type 1353
428 #define _loop0_135_type 1354
429 #define _gather_134_type 1355
430 #define _loop0_137_type 1356
431 #define _gather_136_type 1357
432 #define _loop0_139_type 1358
433 #define _gather_138_type 1359
434 #define _tmp_140_type 1360
435 #define _tmp_141_type 1361
436 #define _tmp_142_type 1362
437 #define _tmp_143_type 1363
438 #define _tmp_144_type 1364
439 #define _tmp_145_type 1365
440 #define _tmp_146_type 1366
441 #define _tmp_147_type 1367
442 #define _tmp_148_type 1368
443 #define _loop0_149_type 1369
444 #define _loop0_150_type 1370
445 #define _loop0_151_type 1371
446 #define _tmp_152_type 1372
447 #define _tmp_153_type 1373
448 #define _tmp_154_type 1374
449 #define _tmp_155_type 1375
450 #define _loop0_156_type 1376
451 #define _loop0_157_type 1377
452 #define _loop1_158_type 1378
453 #define _loop1_159_type 1379
454 #define _loop0_160_type 1380
455 #define _loop0_161_type 1381
456 #define _loop0_163_type 1382
457 #define _gather_162_type 1383
458 #define _loop1_164_type 1384
459 #define _tmp_165_type 1385
460 #define _tmp_166_type 1386
461 #define _tmp_167_type 1387
462 #define _loop0_169_type 1388
463 #define _gather_168_type 1389
464 #define _loop0_171_type 1390
465 #define _gather_170_type 1391
466 #define _loop0_173_type 1392
467 #define _gather_172_type 1393
468 #define _loop0_175_type 1394
469 #define _gather_174_type 1395
470 #define _tmp_176_type 1396
471 #define _tmp_177_type 1397
472 #define _tmp_178_type 1398
473 #define _tmp_179_type 1399
474 #define _tmp_180_type 1400
475 #define _tmp_181_type 1401
476 #define _tmp_182_type 1402
477 #define _loop0_184_type 1403
478 #define _gather_183_type 1404
479 #define _tmp_185_type 1405
480 #define _tmp_186_type 1406
481 #define _tmp_187_type 1407
482 #define _tmp_188_type 1408
483 #define _tmp_189_type 1409
484 #define _tmp_190_type 1410
485 #define _tmp_191_type 1411
486 #define _tmp_192_type 1412
487 #define _tmp_193_type 1413
488 #define _tmp_194_type 1414
489 #define _tmp_195_type 1415
490 #define _tmp_196_type 1416
491 #define _tmp_197_type 1417
492 #define _tmp_198_type 1418
493 #define _tmp_199_type 1419
494 #define _tmp_200_type 1420
495 #define _tmp_201_type 1421
496 #define _tmp_202_type 1422
497 #define _tmp_203_type 1423
498 #define _tmp_204_type 1424
499 #define _tmp_205_type 1425
500 #define _tmp_206_type 1426
501 #define _tmp_207_type 1427
502 #define _tmp_208_type 1428
503 #define _tmp_209_type 1429
504 #define _tmp_210_type 1430
505 #define _tmp_211_type 1431
506 
507 static mod_ty file_rule(Parser *p);
508 static mod_ty interactive_rule(Parser *p);
509 static mod_ty eval_rule(Parser *p);
510 static mod_ty func_type_rule(Parser *p);
511 static expr_ty fstring_rule(Parser *p);
512 static asdl_stmt_seq* statements_rule(Parser *p);
513 static asdl_stmt_seq* statement_rule(Parser *p);
514 static asdl_stmt_seq* statement_newline_rule(Parser *p);
515 static asdl_stmt_seq* simple_stmts_rule(Parser *p);
516 static stmt_ty simple_stmt_rule(Parser *p);
517 static stmt_ty compound_stmt_rule(Parser *p);
518 static stmt_ty assignment_rule(Parser *p);
519 static expr_ty annotated_rhs_rule(Parser *p);
520 static AugOperator* augassign_rule(Parser *p);
521 static stmt_ty return_stmt_rule(Parser *p);
522 static stmt_ty raise_stmt_rule(Parser *p);
523 static stmt_ty global_stmt_rule(Parser *p);
524 static stmt_ty nonlocal_stmt_rule(Parser *p);
525 static stmt_ty del_stmt_rule(Parser *p);
526 static stmt_ty yield_stmt_rule(Parser *p);
527 static stmt_ty assert_stmt_rule(Parser *p);
528 static stmt_ty import_stmt_rule(Parser *p);
529 static stmt_ty import_name_rule(Parser *p);
530 static stmt_ty import_from_rule(Parser *p);
531 static asdl_alias_seq* import_from_targets_rule(Parser *p);
532 static asdl_alias_seq* import_from_as_names_rule(Parser *p);
533 static alias_ty import_from_as_name_rule(Parser *p);
534 static asdl_alias_seq* dotted_as_names_rule(Parser *p);
535 static alias_ty dotted_as_name_rule(Parser *p);
536 static expr_ty dotted_name_rule(Parser *p);
537 static asdl_stmt_seq* block_rule(Parser *p);
538 static asdl_expr_seq* decorators_rule(Parser *p);
539 static stmt_ty class_def_rule(Parser *p);
540 static stmt_ty class_def_raw_rule(Parser *p);
541 static stmt_ty function_def_rule(Parser *p);
542 static stmt_ty function_def_raw_rule(Parser *p);
543 static arguments_ty params_rule(Parser *p);
544 static arguments_ty parameters_rule(Parser *p);
545 static asdl_arg_seq* slash_no_default_rule(Parser *p);
546 static SlashWithDefault* slash_with_default_rule(Parser *p);
547 static StarEtc* star_etc_rule(Parser *p);
548 static arg_ty kwds_rule(Parser *p);
549 static arg_ty param_no_default_rule(Parser *p);
550 static NameDefaultPair* param_with_default_rule(Parser *p);
551 static NameDefaultPair* param_maybe_default_rule(Parser *p);
552 static arg_ty param_rule(Parser *p);
553 static expr_ty annotation_rule(Parser *p);
554 static expr_ty default_rule(Parser *p);
555 static stmt_ty if_stmt_rule(Parser *p);
556 static stmt_ty elif_stmt_rule(Parser *p);
557 static asdl_stmt_seq* else_block_rule(Parser *p);
558 static stmt_ty while_stmt_rule(Parser *p);
559 static stmt_ty for_stmt_rule(Parser *p);
560 static stmt_ty with_stmt_rule(Parser *p);
561 static withitem_ty with_item_rule(Parser *p);
562 static stmt_ty try_stmt_rule(Parser *p);
563 static excepthandler_ty except_block_rule(Parser *p);
564 static asdl_stmt_seq* finally_block_rule(Parser *p);
565 static stmt_ty match_stmt_rule(Parser *p);
566 static expr_ty subject_expr_rule(Parser *p);
567 static match_case_ty case_block_rule(Parser *p);
568 static expr_ty guard_rule(Parser *p);
569 static pattern_ty patterns_rule(Parser *p);
570 static pattern_ty pattern_rule(Parser *p);
571 static pattern_ty as_pattern_rule(Parser *p);
572 static pattern_ty or_pattern_rule(Parser *p);
573 static pattern_ty closed_pattern_rule(Parser *p);
574 static pattern_ty literal_pattern_rule(Parser *p);
575 static expr_ty literal_expr_rule(Parser *p);
576 static expr_ty complex_number_rule(Parser *p);
577 static expr_ty signed_number_rule(Parser *p);
578 static expr_ty signed_real_number_rule(Parser *p);
579 static expr_ty real_number_rule(Parser *p);
580 static expr_ty imaginary_number_rule(Parser *p);
581 static pattern_ty capture_pattern_rule(Parser *p);
582 static expr_ty pattern_capture_target_rule(Parser *p);
583 static pattern_ty wildcard_pattern_rule(Parser *p);
584 static pattern_ty value_pattern_rule(Parser *p);
585 static expr_ty attr_rule(Parser *p);
586 static expr_ty name_or_attr_rule(Parser *p);
587 static pattern_ty group_pattern_rule(Parser *p);
588 static pattern_ty sequence_pattern_rule(Parser *p);
589 static asdl_seq* open_sequence_pattern_rule(Parser *p);
590 static asdl_seq* maybe_sequence_pattern_rule(Parser *p);
591 static pattern_ty maybe_star_pattern_rule(Parser *p);
592 static pattern_ty star_pattern_rule(Parser *p);
593 static pattern_ty mapping_pattern_rule(Parser *p);
594 static asdl_seq* items_pattern_rule(Parser *p);
595 static KeyPatternPair* key_value_pattern_rule(Parser *p);
596 static expr_ty double_star_pattern_rule(Parser *p);
597 static pattern_ty class_pattern_rule(Parser *p);
598 static asdl_pattern_seq* positional_patterns_rule(Parser *p);
599 static asdl_seq* keyword_patterns_rule(Parser *p);
600 static KeyPatternPair* keyword_pattern_rule(Parser *p);
601 static expr_ty expressions_rule(Parser *p);
602 static expr_ty expression_rule(Parser *p);
603 static expr_ty yield_expr_rule(Parser *p);
604 static expr_ty star_expressions_rule(Parser *p);
605 static expr_ty star_expression_rule(Parser *p);
606 static asdl_expr_seq* star_named_expressions_rule(Parser *p);
607 static expr_ty star_named_expression_rule(Parser *p);
608 static expr_ty assignment_expression_rule(Parser *p);
609 static expr_ty named_expression_rule(Parser *p);
610 static expr_ty disjunction_rule(Parser *p);
611 static expr_ty conjunction_rule(Parser *p);
612 static expr_ty inversion_rule(Parser *p);
613 static expr_ty comparison_rule(Parser *p);
614 static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
615 static CmpopExprPair* eq_bitwise_or_rule(Parser *p);
616 static CmpopExprPair* noteq_bitwise_or_rule(Parser *p);
617 static CmpopExprPair* lte_bitwise_or_rule(Parser *p);
618 static CmpopExprPair* lt_bitwise_or_rule(Parser *p);
619 static CmpopExprPair* gte_bitwise_or_rule(Parser *p);
620 static CmpopExprPair* gt_bitwise_or_rule(Parser *p);
621 static CmpopExprPair* notin_bitwise_or_rule(Parser *p);
622 static CmpopExprPair* in_bitwise_or_rule(Parser *p);
623 static CmpopExprPair* isnot_bitwise_or_rule(Parser *p);
624 static CmpopExprPair* is_bitwise_or_rule(Parser *p);
625 static expr_ty bitwise_or_rule(Parser *p);
626 static expr_ty bitwise_xor_rule(Parser *p);
627 static expr_ty bitwise_and_rule(Parser *p);
628 static expr_ty shift_expr_rule(Parser *p);
629 static expr_ty sum_rule(Parser *p);
630 static expr_ty term_rule(Parser *p);
631 static expr_ty factor_rule(Parser *p);
632 static expr_ty power_rule(Parser *p);
633 static expr_ty await_primary_rule(Parser *p);
634 static expr_ty primary_rule(Parser *p);
635 static expr_ty slices_rule(Parser *p);
636 static expr_ty slice_rule(Parser *p);
637 static expr_ty atom_rule(Parser *p);
638 static expr_ty group_rule(Parser *p);
639 static expr_ty lambdef_rule(Parser *p);
640 static arguments_ty lambda_params_rule(Parser *p);
641 static arguments_ty lambda_parameters_rule(Parser *p);
642 static asdl_arg_seq* lambda_slash_no_default_rule(Parser *p);
643 static SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
644 static StarEtc* lambda_star_etc_rule(Parser *p);
645 static arg_ty lambda_kwds_rule(Parser *p);
646 static arg_ty lambda_param_no_default_rule(Parser *p);
647 static NameDefaultPair* lambda_param_with_default_rule(Parser *p);
648 static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
649 static arg_ty lambda_param_rule(Parser *p);
650 static expr_ty strings_rule(Parser *p);
651 static expr_ty list_rule(Parser *p);
652 static expr_ty tuple_rule(Parser *p);
653 static expr_ty set_rule(Parser *p);
654 static expr_ty dict_rule(Parser *p);
655 static asdl_seq* double_starred_kvpairs_rule(Parser *p);
656 static KeyValuePair* double_starred_kvpair_rule(Parser *p);
657 static KeyValuePair* kvpair_rule(Parser *p);
658 static asdl_comprehension_seq* for_if_clauses_rule(Parser *p);
659 static comprehension_ty for_if_clause_rule(Parser *p);
660 static expr_ty listcomp_rule(Parser *p);
661 static expr_ty setcomp_rule(Parser *p);
662 static expr_ty genexp_rule(Parser *p);
663 static expr_ty dictcomp_rule(Parser *p);
664 static expr_ty arguments_rule(Parser *p);
665 static expr_ty args_rule(Parser *p);
666 static asdl_seq* kwargs_rule(Parser *p);
667 static expr_ty starred_expression_rule(Parser *p);
668 static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
669 static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
670 static expr_ty star_targets_rule(Parser *p);
671 static asdl_expr_seq* star_targets_list_seq_rule(Parser *p);
672 static asdl_expr_seq* star_targets_tuple_seq_rule(Parser *p);
673 static expr_ty star_target_rule(Parser *p);
674 static expr_ty target_with_star_atom_rule(Parser *p);
675 static expr_ty star_atom_rule(Parser *p);
676 static expr_ty single_target_rule(Parser *p);
677 static expr_ty single_subscript_attribute_target_rule(Parser *p);
678 static expr_ty t_primary_rule(Parser *p);
679 static void *t_lookahead_rule(Parser *p);
680 static asdl_expr_seq* del_targets_rule(Parser *p);
681 static expr_ty del_target_rule(Parser *p);
682 static expr_ty del_t_atom_rule(Parser *p);
683 static asdl_expr_seq* type_expressions_rule(Parser *p);
684 static Token* func_type_comment_rule(Parser *p);
685 static void *invalid_arguments_rule(Parser *p);
686 static void *invalid_kwarg_rule(Parser *p);
687 static expr_ty expression_without_invalid_rule(Parser *p);
688 static void *invalid_legacy_expression_rule(Parser *p);
689 static void *invalid_expression_rule(Parser *p);
690 static void *invalid_named_expression_rule(Parser *p);
691 static void *invalid_assignment_rule(Parser *p);
692 static expr_ty invalid_ann_assign_target_rule(Parser *p);
693 static void *invalid_del_stmt_rule(Parser *p);
694 static void *invalid_block_rule(Parser *p);
695 static void *invalid_comprehension_rule(Parser *p);
696 static void *invalid_dict_comprehension_rule(Parser *p);
697 static void *invalid_parameters_rule(Parser *p);
698 static void *invalid_parameters_helper_rule(Parser *p);
699 static void *invalid_lambda_parameters_rule(Parser *p);
700 static void *invalid_lambda_parameters_helper_rule(Parser *p);
701 static void *invalid_star_etc_rule(Parser *p);
702 static void *invalid_lambda_star_etc_rule(Parser *p);
703 static void *invalid_double_type_comments_rule(Parser *p);
704 static void *invalid_with_item_rule(Parser *p);
705 static void *invalid_for_target_rule(Parser *p);
706 static void *invalid_group_rule(Parser *p);
707 static void *invalid_import_from_targets_rule(Parser *p);
708 static void *invalid_with_stmt_rule(Parser *p);
709 static void *invalid_with_stmt_indent_rule(Parser *p);
710 static void *invalid_try_stmt_rule(Parser *p);
711 static void *invalid_except_stmt_rule(Parser *p);
712 static void *invalid_finally_stmt_rule(Parser *p);
713 static void *invalid_except_stmt_indent_rule(Parser *p);
714 static void *invalid_match_stmt_rule(Parser *p);
715 static void *invalid_case_block_rule(Parser *p);
716 static void *invalid_as_pattern_rule(Parser *p);
717 static void *invalid_class_pattern_rule(Parser *p);
718 static asdl_pattern_seq* invalid_class_argument_pattern_rule(Parser *p);
719 static void *invalid_if_stmt_rule(Parser *p);
720 static void *invalid_elif_stmt_rule(Parser *p);
721 static void *invalid_else_stmt_rule(Parser *p);
722 static void *invalid_while_stmt_rule(Parser *p);
723 static void *invalid_for_stmt_rule(Parser *p);
724 static void *invalid_def_raw_rule(Parser *p);
725 static void *invalid_class_def_raw_rule(Parser *p);
726 static void *invalid_double_starred_kvpairs_rule(Parser *p);
727 static void *invalid_kvpair_rule(Parser *p);
728 static asdl_seq *_loop0_1_rule(Parser *p);
729 static asdl_seq *_loop0_2_rule(Parser *p);
730 static asdl_seq *_loop1_3_rule(Parser *p);
731 static asdl_seq *_loop0_5_rule(Parser *p);
732 static asdl_seq *_gather_4_rule(Parser *p);
733 static void *_tmp_6_rule(Parser *p);
734 static void *_tmp_7_rule(Parser *p);
735 static void *_tmp_8_rule(Parser *p);
736 static void *_tmp_9_rule(Parser *p);
737 static void *_tmp_10_rule(Parser *p);
738 static void *_tmp_11_rule(Parser *p);
739 static void *_tmp_12_rule(Parser *p);
740 static void *_tmp_13_rule(Parser *p);
741 static asdl_seq *_loop1_14_rule(Parser *p);
742 static void *_tmp_15_rule(Parser *p);
743 static void *_tmp_16_rule(Parser *p);
744 static void *_tmp_17_rule(Parser *p);
745 static asdl_seq *_loop0_19_rule(Parser *p);
746 static asdl_seq *_gather_18_rule(Parser *p);
747 static asdl_seq *_loop0_21_rule(Parser *p);
748 static asdl_seq *_gather_20_rule(Parser *p);
749 static void *_tmp_22_rule(Parser *p);
750 static void *_tmp_23_rule(Parser *p);
751 static asdl_seq *_loop0_24_rule(Parser *p);
752 static asdl_seq *_loop1_25_rule(Parser *p);
753 static asdl_seq *_loop0_27_rule(Parser *p);
754 static asdl_seq *_gather_26_rule(Parser *p);
755 static void *_tmp_28_rule(Parser *p);
756 static asdl_seq *_loop0_30_rule(Parser *p);
757 static asdl_seq *_gather_29_rule(Parser *p);
758 static void *_tmp_31_rule(Parser *p);
759 static asdl_seq *_loop1_32_rule(Parser *p);
760 static void *_tmp_33_rule(Parser *p);
761 static void *_tmp_34_rule(Parser *p);
762 static void *_tmp_35_rule(Parser *p);
763 static asdl_seq *_loop0_36_rule(Parser *p);
764 static asdl_seq *_loop0_37_rule(Parser *p);
765 static asdl_seq *_loop0_38_rule(Parser *p);
766 static asdl_seq *_loop1_39_rule(Parser *p);
767 static asdl_seq *_loop0_40_rule(Parser *p);
768 static asdl_seq *_loop1_41_rule(Parser *p);
769 static asdl_seq *_loop1_42_rule(Parser *p);
770 static asdl_seq *_loop1_43_rule(Parser *p);
771 static asdl_seq *_loop0_44_rule(Parser *p);
772 static asdl_seq *_loop1_45_rule(Parser *p);
773 static asdl_seq *_loop0_46_rule(Parser *p);
774 static asdl_seq *_loop1_47_rule(Parser *p);
775 static asdl_seq *_loop0_48_rule(Parser *p);
776 static asdl_seq *_loop1_49_rule(Parser *p);
777 static asdl_seq *_loop0_51_rule(Parser *p);
778 static asdl_seq *_gather_50_rule(Parser *p);
779 static asdl_seq *_loop0_53_rule(Parser *p);
780 static asdl_seq *_gather_52_rule(Parser *p);
781 static asdl_seq *_loop0_55_rule(Parser *p);
782 static asdl_seq *_gather_54_rule(Parser *p);
783 static asdl_seq *_loop0_57_rule(Parser *p);
784 static asdl_seq *_gather_56_rule(Parser *p);
785 static void *_tmp_58_rule(Parser *p);
786 static asdl_seq *_loop1_59_rule(Parser *p);
787 static void *_tmp_60_rule(Parser *p);
788 static asdl_seq *_loop1_61_rule(Parser *p);
789 static asdl_seq *_loop0_63_rule(Parser *p);
790 static asdl_seq *_gather_62_rule(Parser *p);
791 static void *_tmp_64_rule(Parser *p);
792 static void *_tmp_65_rule(Parser *p);
793 static void *_tmp_66_rule(Parser *p);
794 static void *_tmp_67_rule(Parser *p);
795 static asdl_seq *_loop0_69_rule(Parser *p);
796 static asdl_seq *_gather_68_rule(Parser *p);
797 static asdl_seq *_loop0_71_rule(Parser *p);
798 static asdl_seq *_gather_70_rule(Parser *p);
799 static void *_tmp_72_rule(Parser *p);
800 static asdl_seq *_loop0_74_rule(Parser *p);
801 static asdl_seq *_gather_73_rule(Parser *p);
802 static asdl_seq *_loop0_76_rule(Parser *p);
803 static asdl_seq *_gather_75_rule(Parser *p);
804 static asdl_seq *_loop1_77_rule(Parser *p);
805 static asdl_seq *_loop1_78_rule(Parser *p);
806 static asdl_seq *_loop0_80_rule(Parser *p);
807 static asdl_seq *_gather_79_rule(Parser *p);
808 static asdl_seq *_loop1_81_rule(Parser *p);
809 static asdl_seq *_loop1_82_rule(Parser *p);
810 static asdl_seq *_loop1_83_rule(Parser *p);
811 static void *_tmp_84_rule(Parser *p);
812 static asdl_seq *_loop0_86_rule(Parser *p);
813 static asdl_seq *_gather_85_rule(Parser *p);
814 static void *_tmp_87_rule(Parser *p);
815 static void *_tmp_88_rule(Parser *p);
816 static void *_tmp_89_rule(Parser *p);
817 static void *_tmp_90_rule(Parser *p);
818 static void *_tmp_91_rule(Parser *p);
819 static asdl_seq *_loop0_92_rule(Parser *p);
820 static asdl_seq *_loop0_93_rule(Parser *p);
821 static asdl_seq *_loop0_94_rule(Parser *p);
822 static asdl_seq *_loop1_95_rule(Parser *p);
823 static asdl_seq *_loop0_96_rule(Parser *p);
824 static asdl_seq *_loop1_97_rule(Parser *p);
825 static asdl_seq *_loop1_98_rule(Parser *p);
826 static asdl_seq *_loop1_99_rule(Parser *p);
827 static asdl_seq *_loop0_100_rule(Parser *p);
828 static asdl_seq *_loop1_101_rule(Parser *p);
829 static asdl_seq *_loop0_102_rule(Parser *p);
830 static asdl_seq *_loop1_103_rule(Parser *p);
831 static asdl_seq *_loop0_104_rule(Parser *p);
832 static asdl_seq *_loop1_105_rule(Parser *p);
833 static asdl_seq *_loop1_106_rule(Parser *p);
834 static void *_tmp_107_rule(Parser *p);
835 static asdl_seq *_loop0_109_rule(Parser *p);
836 static asdl_seq *_gather_108_rule(Parser *p);
837 static asdl_seq *_loop1_110_rule(Parser *p);
838 static asdl_seq *_loop0_111_rule(Parser *p);
839 static asdl_seq *_loop0_112_rule(Parser *p);
840 static void *_tmp_113_rule(Parser *p);
841 static asdl_seq *_loop0_115_rule(Parser *p);
842 static asdl_seq *_gather_114_rule(Parser *p);
843 static void *_tmp_116_rule(Parser *p);
844 static asdl_seq *_loop0_118_rule(Parser *p);
845 static asdl_seq *_gather_117_rule(Parser *p);
846 static asdl_seq *_loop0_120_rule(Parser *p);
847 static asdl_seq *_gather_119_rule(Parser *p);
848 static asdl_seq *_loop0_122_rule(Parser *p);
849 static asdl_seq *_gather_121_rule(Parser *p);
850 static asdl_seq *_loop0_124_rule(Parser *p);
851 static asdl_seq *_gather_123_rule(Parser *p);
852 static asdl_seq *_loop0_125_rule(Parser *p);
853 static asdl_seq *_loop0_127_rule(Parser *p);
854 static asdl_seq *_gather_126_rule(Parser *p);
855 static asdl_seq *_loop1_128_rule(Parser *p);
856 static void *_tmp_129_rule(Parser *p);
857 static asdl_seq *_loop0_131_rule(Parser *p);
858 static asdl_seq *_gather_130_rule(Parser *p);
859 static asdl_seq *_loop0_133_rule(Parser *p);
860 static asdl_seq *_gather_132_rule(Parser *p);
861 static asdl_seq *_loop0_135_rule(Parser *p);
862 static asdl_seq *_gather_134_rule(Parser *p);
863 static asdl_seq *_loop0_137_rule(Parser *p);
864 static asdl_seq *_gather_136_rule(Parser *p);
865 static asdl_seq *_loop0_139_rule(Parser *p);
866 static asdl_seq *_gather_138_rule(Parser *p);
867 static void *_tmp_140_rule(Parser *p);
868 static void *_tmp_141_rule(Parser *p);
869 static void *_tmp_142_rule(Parser *p);
870 static void *_tmp_143_rule(Parser *p);
871 static void *_tmp_144_rule(Parser *p);
872 static void *_tmp_145_rule(Parser *p);
873 static void *_tmp_146_rule(Parser *p);
874 static void *_tmp_147_rule(Parser *p);
875 static void *_tmp_148_rule(Parser *p);
876 static asdl_seq *_loop0_149_rule(Parser *p);
877 static asdl_seq *_loop0_150_rule(Parser *p);
878 static asdl_seq *_loop0_151_rule(Parser *p);
879 static void *_tmp_152_rule(Parser *p);
880 static void *_tmp_153_rule(Parser *p);
881 static void *_tmp_154_rule(Parser *p);
882 static void *_tmp_155_rule(Parser *p);
883 static asdl_seq *_loop0_156_rule(Parser *p);
884 static asdl_seq *_loop0_157_rule(Parser *p);
885 static asdl_seq *_loop1_158_rule(Parser *p);
886 static asdl_seq *_loop1_159_rule(Parser *p);
887 static asdl_seq *_loop0_160_rule(Parser *p);
888 static asdl_seq *_loop0_161_rule(Parser *p);
889 static asdl_seq *_loop0_163_rule(Parser *p);
890 static asdl_seq *_gather_162_rule(Parser *p);
891 static asdl_seq *_loop1_164_rule(Parser *p);
892 static void *_tmp_165_rule(Parser *p);
893 static void *_tmp_166_rule(Parser *p);
894 static void *_tmp_167_rule(Parser *p);
895 static asdl_seq *_loop0_169_rule(Parser *p);
896 static asdl_seq *_gather_168_rule(Parser *p);
897 static asdl_seq *_loop0_171_rule(Parser *p);
898 static asdl_seq *_gather_170_rule(Parser *p);
899 static asdl_seq *_loop0_173_rule(Parser *p);
900 static asdl_seq *_gather_172_rule(Parser *p);
901 static asdl_seq *_loop0_175_rule(Parser *p);
902 static asdl_seq *_gather_174_rule(Parser *p);
903 static void *_tmp_176_rule(Parser *p);
904 static void *_tmp_177_rule(Parser *p);
905 static void *_tmp_178_rule(Parser *p);
906 static void *_tmp_179_rule(Parser *p);
907 static void *_tmp_180_rule(Parser *p);
908 static void *_tmp_181_rule(Parser *p);
909 static void *_tmp_182_rule(Parser *p);
910 static asdl_seq *_loop0_184_rule(Parser *p);
911 static asdl_seq *_gather_183_rule(Parser *p);
912 static void *_tmp_185_rule(Parser *p);
913 static void *_tmp_186_rule(Parser *p);
914 static void *_tmp_187_rule(Parser *p);
915 static void *_tmp_188_rule(Parser *p);
916 static void *_tmp_189_rule(Parser *p);
917 static void *_tmp_190_rule(Parser *p);
918 static void *_tmp_191_rule(Parser *p);
919 static void *_tmp_192_rule(Parser *p);
920 static void *_tmp_193_rule(Parser *p);
921 static void *_tmp_194_rule(Parser *p);
922 static void *_tmp_195_rule(Parser *p);
923 static void *_tmp_196_rule(Parser *p);
924 static void *_tmp_197_rule(Parser *p);
925 static void *_tmp_198_rule(Parser *p);
926 static void *_tmp_199_rule(Parser *p);
927 static void *_tmp_200_rule(Parser *p);
928 static void *_tmp_201_rule(Parser *p);
929 static void *_tmp_202_rule(Parser *p);
930 static void *_tmp_203_rule(Parser *p);
931 static void *_tmp_204_rule(Parser *p);
932 static void *_tmp_205_rule(Parser *p);
933 static void *_tmp_206_rule(Parser *p);
934 static void *_tmp_207_rule(Parser *p);
935 static void *_tmp_208_rule(Parser *p);
936 static void *_tmp_209_rule(Parser *p);
937 static void *_tmp_210_rule(Parser *p);
938 static void *_tmp_211_rule(Parser *p);
939 
940 
941 // file: statements? $
942 static mod_ty
file_rule(Parser * p)943 file_rule(Parser *p)
944 {
945     D(p->level++);
946     if (p->error_indicator) {
947         D(p->level--);
948         return NULL;
949     }
950     mod_ty _res = NULL;
951     int _mark = p->mark;
952     { // statements? $
953         if (p->error_indicator) {
954             D(p->level--);
955             return NULL;
956         }
957         D(fprintf(stderr, "%*c> file[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statements? $"));
958         void *a;
959         Token * endmarker_var;
960         if (
961             (a = statements_rule(p), !p->error_indicator)  // statements?
962             &&
963             (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
964         )
965         {
966             D(fprintf(stderr, "%*c+ file[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statements? $"));
967             _res = _PyPegen_make_module ( p , a );
968             if (_res == NULL && PyErr_Occurred()) {
969                 p->error_indicator = 1;
970                 D(p->level--);
971                 return NULL;
972             }
973             goto done;
974         }
975         p->mark = _mark;
976         D(fprintf(stderr, "%*c%s file[%d-%d]: %s failed!\n", p->level, ' ',
977                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statements? $"));
978     }
979     _res = NULL;
980   done:
981     D(p->level--);
982     return _res;
983 }
984 
985 // interactive: statement_newline
986 static mod_ty
interactive_rule(Parser * p)987 interactive_rule(Parser *p)
988 {
989     D(p->level++);
990     if (p->error_indicator) {
991         D(p->level--);
992         return NULL;
993     }
994     mod_ty _res = NULL;
995     int _mark = p->mark;
996     { // statement_newline
997         if (p->error_indicator) {
998             D(p->level--);
999             return NULL;
1000         }
1001         D(fprintf(stderr, "%*c> interactive[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement_newline"));
1002         asdl_stmt_seq* a;
1003         if (
1004             (a = statement_newline_rule(p))  // statement_newline
1005         )
1006         {
1007             D(fprintf(stderr, "%*c+ interactive[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement_newline"));
1008             _res = _PyAST_Interactive ( a , p -> arena );
1009             if (_res == NULL && PyErr_Occurred()) {
1010                 p->error_indicator = 1;
1011                 D(p->level--);
1012                 return NULL;
1013             }
1014             goto done;
1015         }
1016         p->mark = _mark;
1017         D(fprintf(stderr, "%*c%s interactive[%d-%d]: %s failed!\n", p->level, ' ',
1018                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement_newline"));
1019     }
1020     _res = NULL;
1021   done:
1022     D(p->level--);
1023     return _res;
1024 }
1025 
1026 // eval: expressions NEWLINE* $
1027 static mod_ty
eval_rule(Parser * p)1028 eval_rule(Parser *p)
1029 {
1030     D(p->level++);
1031     if (p->error_indicator) {
1032         D(p->level--);
1033         return NULL;
1034     }
1035     mod_ty _res = NULL;
1036     int _mark = p->mark;
1037     { // expressions NEWLINE* $
1038         if (p->error_indicator) {
1039             D(p->level--);
1040             return NULL;
1041         }
1042         D(fprintf(stderr, "%*c> eval[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1043         asdl_seq * _loop0_1_var;
1044         expr_ty a;
1045         Token * endmarker_var;
1046         if (
1047             (a = expressions_rule(p))  // expressions
1048             &&
1049             (_loop0_1_var = _loop0_1_rule(p))  // NEWLINE*
1050             &&
1051             (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1052         )
1053         {
1054             D(fprintf(stderr, "%*c+ eval[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1055             _res = _PyAST_Expression ( a , p -> arena );
1056             if (_res == NULL && PyErr_Occurred()) {
1057                 p->error_indicator = 1;
1058                 D(p->level--);
1059                 return NULL;
1060             }
1061             goto done;
1062         }
1063         p->mark = _mark;
1064         D(fprintf(stderr, "%*c%s eval[%d-%d]: %s failed!\n", p->level, ' ',
1065                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions NEWLINE* $"));
1066     }
1067     _res = NULL;
1068   done:
1069     D(p->level--);
1070     return _res;
1071 }
1072 
1073 // func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
1074 static mod_ty
func_type_rule(Parser * p)1075 func_type_rule(Parser *p)
1076 {
1077     D(p->level++);
1078     if (p->error_indicator) {
1079         D(p->level--);
1080         return NULL;
1081     }
1082     mod_ty _res = NULL;
1083     int _mark = p->mark;
1084     { // '(' type_expressions? ')' '->' expression NEWLINE* $
1085         if (p->error_indicator) {
1086             D(p->level--);
1087             return NULL;
1088         }
1089         D(fprintf(stderr, "%*c> func_type[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1090         Token * _literal;
1091         Token * _literal_1;
1092         Token * _literal_2;
1093         asdl_seq * _loop0_2_var;
1094         void *a;
1095         expr_ty b;
1096         Token * endmarker_var;
1097         if (
1098             (_literal = _PyPegen_expect_token(p, 7))  // token='('
1099             &&
1100             (a = type_expressions_rule(p), !p->error_indicator)  // type_expressions?
1101             &&
1102             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
1103             &&
1104             (_literal_2 = _PyPegen_expect_token(p, 51))  // token='->'
1105             &&
1106             (b = expression_rule(p))  // expression
1107             &&
1108             (_loop0_2_var = _loop0_2_rule(p))  // NEWLINE*
1109             &&
1110             (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1111         )
1112         {
1113             D(fprintf(stderr, "%*c+ func_type[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1114             _res = _PyAST_FunctionType ( a , b , p -> arena );
1115             if (_res == NULL && PyErr_Occurred()) {
1116                 p->error_indicator = 1;
1117                 D(p->level--);
1118                 return NULL;
1119             }
1120             goto done;
1121         }
1122         p->mark = _mark;
1123         D(fprintf(stderr, "%*c%s func_type[%d-%d]: %s failed!\n", p->level, ' ',
1124                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1125     }
1126     _res = NULL;
1127   done:
1128     D(p->level--);
1129     return _res;
1130 }
1131 
1132 // fstring: star_expressions
1133 static expr_ty
fstring_rule(Parser * p)1134 fstring_rule(Parser *p)
1135 {
1136     D(p->level++);
1137     if (p->error_indicator) {
1138         D(p->level--);
1139         return NULL;
1140     }
1141     expr_ty _res = NULL;
1142     int _mark = p->mark;
1143     { // star_expressions
1144         if (p->error_indicator) {
1145             D(p->level--);
1146             return NULL;
1147         }
1148         D(fprintf(stderr, "%*c> fstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1149         expr_ty star_expressions_var;
1150         if (
1151             (star_expressions_var = star_expressions_rule(p))  // star_expressions
1152         )
1153         {
1154             D(fprintf(stderr, "%*c+ fstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1155             _res = star_expressions_var;
1156             goto done;
1157         }
1158         p->mark = _mark;
1159         D(fprintf(stderr, "%*c%s fstring[%d-%d]: %s failed!\n", p->level, ' ',
1160                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
1161     }
1162     _res = NULL;
1163   done:
1164     D(p->level--);
1165     return _res;
1166 }
1167 
1168 // statements: statement+
1169 static asdl_stmt_seq*
statements_rule(Parser * p)1170 statements_rule(Parser *p)
1171 {
1172     D(p->level++);
1173     if (p->error_indicator) {
1174         D(p->level--);
1175         return NULL;
1176     }
1177     asdl_stmt_seq* _res = NULL;
1178     int _mark = p->mark;
1179     { // statement+
1180         if (p->error_indicator) {
1181             D(p->level--);
1182             return NULL;
1183         }
1184         D(fprintf(stderr, "%*c> statements[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement+"));
1185         asdl_seq * a;
1186         if (
1187             (a = _loop1_3_rule(p))  // statement+
1188         )
1189         {
1190             D(fprintf(stderr, "%*c+ statements[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement+"));
1191             _res = ( asdl_stmt_seq* ) _PyPegen_seq_flatten ( p , a );
1192             if (_res == NULL && PyErr_Occurred()) {
1193                 p->error_indicator = 1;
1194                 D(p->level--);
1195                 return NULL;
1196             }
1197             goto done;
1198         }
1199         p->mark = _mark;
1200         D(fprintf(stderr, "%*c%s statements[%d-%d]: %s failed!\n", p->level, ' ',
1201                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement+"));
1202     }
1203     _res = NULL;
1204   done:
1205     D(p->level--);
1206     return _res;
1207 }
1208 
1209 // statement: compound_stmt | simple_stmts
1210 static asdl_stmt_seq*
statement_rule(Parser * p)1211 statement_rule(Parser *p)
1212 {
1213     D(p->level++);
1214     if (p->error_indicator) {
1215         D(p->level--);
1216         return NULL;
1217     }
1218     asdl_stmt_seq* _res = NULL;
1219     int _mark = p->mark;
1220     { // compound_stmt
1221         if (p->error_indicator) {
1222             D(p->level--);
1223             return NULL;
1224         }
1225         D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1226         stmt_ty a;
1227         if (
1228             (a = compound_stmt_rule(p))  // compound_stmt
1229         )
1230         {
1231             D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1232             _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a );
1233             if (_res == NULL && PyErr_Occurred()) {
1234                 p->error_indicator = 1;
1235                 D(p->level--);
1236                 return NULL;
1237             }
1238             goto done;
1239         }
1240         p->mark = _mark;
1241         D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1242                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt"));
1243     }
1244     { // simple_stmts
1245         if (p->error_indicator) {
1246             D(p->level--);
1247             return NULL;
1248         }
1249         D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1250         asdl_stmt_seq* a;
1251         if (
1252             (a = (asdl_stmt_seq*)simple_stmts_rule(p))  // simple_stmts
1253         )
1254         {
1255             D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1256             _res = a;
1257             if (_res == NULL && PyErr_Occurred()) {
1258                 p->error_indicator = 1;
1259                 D(p->level--);
1260                 return NULL;
1261             }
1262             goto done;
1263         }
1264         p->mark = _mark;
1265         D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1266                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1267     }
1268     _res = NULL;
1269   done:
1270     D(p->level--);
1271     return _res;
1272 }
1273 
1274 // statement_newline: compound_stmt NEWLINE | simple_stmts | NEWLINE | $
1275 static asdl_stmt_seq*
statement_newline_rule(Parser * p)1276 statement_newline_rule(Parser *p)
1277 {
1278     D(p->level++);
1279     if (p->error_indicator) {
1280         D(p->level--);
1281         return NULL;
1282     }
1283     asdl_stmt_seq* _res = NULL;
1284     int _mark = p->mark;
1285     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1286         p->error_indicator = 1;
1287         D(p->level--);
1288         return NULL;
1289     }
1290     int _start_lineno = p->tokens[_mark]->lineno;
1291     UNUSED(_start_lineno); // Only used by EXTRA macro
1292     int _start_col_offset = p->tokens[_mark]->col_offset;
1293     UNUSED(_start_col_offset); // Only used by EXTRA macro
1294     { // compound_stmt NEWLINE
1295         if (p->error_indicator) {
1296             D(p->level--);
1297             return NULL;
1298         }
1299         D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt NEWLINE"));
1300         stmt_ty a;
1301         Token * newline_var;
1302         if (
1303             (a = compound_stmt_rule(p))  // compound_stmt
1304             &&
1305             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1306         )
1307         {
1308             D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt NEWLINE"));
1309             _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a );
1310             if (_res == NULL && PyErr_Occurred()) {
1311                 p->error_indicator = 1;
1312                 D(p->level--);
1313                 return NULL;
1314             }
1315             goto done;
1316         }
1317         p->mark = _mark;
1318         D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1319                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt NEWLINE"));
1320     }
1321     { // simple_stmts
1322         if (p->error_indicator) {
1323             D(p->level--);
1324             return NULL;
1325         }
1326         D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1327         asdl_stmt_seq* simple_stmts_var;
1328         if (
1329             (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
1330         )
1331         {
1332             D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1333             _res = simple_stmts_var;
1334             goto done;
1335         }
1336         p->mark = _mark;
1337         D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1338                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1339     }
1340     { // NEWLINE
1341         if (p->error_indicator) {
1342             D(p->level--);
1343             return NULL;
1344         }
1345         D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
1346         Token * newline_var;
1347         if (
1348             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1349         )
1350         {
1351             D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
1352             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1353             if (_token == NULL) {
1354                 D(p->level--);
1355                 return NULL;
1356             }
1357             int _end_lineno = _token->end_lineno;
1358             UNUSED(_end_lineno); // Only used by EXTRA macro
1359             int _end_col_offset = _token->end_col_offset;
1360             UNUSED(_end_col_offset); // Only used by EXTRA macro
1361             _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , CHECK ( stmt_ty , _PyAST_Pass ( EXTRA ) ) );
1362             if (_res == NULL && PyErr_Occurred()) {
1363                 p->error_indicator = 1;
1364                 D(p->level--);
1365                 return NULL;
1366             }
1367             goto done;
1368         }
1369         p->mark = _mark;
1370         D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1371                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
1372     }
1373     { // $
1374         if (p->error_indicator) {
1375             D(p->level--);
1376             return NULL;
1377         }
1378         D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "$"));
1379         Token * endmarker_var;
1380         if (
1381             (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1382         )
1383         {
1384             D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "$"));
1385             _res = _PyPegen_interactive_exit ( p );
1386             if (_res == NULL && PyErr_Occurred()) {
1387                 p->error_indicator = 1;
1388                 D(p->level--);
1389                 return NULL;
1390             }
1391             goto done;
1392         }
1393         p->mark = _mark;
1394         D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1395                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "$"));
1396     }
1397     _res = NULL;
1398   done:
1399     D(p->level--);
1400     return _res;
1401 }
1402 
1403 // simple_stmts: simple_stmt !';' NEWLINE | ';'.simple_stmt+ ';'? NEWLINE
1404 static asdl_stmt_seq*
simple_stmts_rule(Parser * p)1405 simple_stmts_rule(Parser *p)
1406 {
1407     D(p->level++);
1408     if (p->error_indicator) {
1409         D(p->level--);
1410         return NULL;
1411     }
1412     asdl_stmt_seq* _res = NULL;
1413     int _mark = p->mark;
1414     { // simple_stmt !';' NEWLINE
1415         if (p->error_indicator) {
1416             D(p->level--);
1417             return NULL;
1418         }
1419         D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1420         stmt_ty a;
1421         Token * newline_var;
1422         if (
1423             (a = simple_stmt_rule(p))  // simple_stmt
1424             &&
1425             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13)  // token=';'
1426             &&
1427             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1428         )
1429         {
1430             D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1431             _res = ( asdl_stmt_seq* ) _PyPegen_singleton_seq ( p , a );
1432             if (_res == NULL && PyErr_Occurred()) {
1433                 p->error_indicator = 1;
1434                 D(p->level--);
1435                 return NULL;
1436             }
1437             goto done;
1438         }
1439         p->mark = _mark;
1440         D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1441                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt !';' NEWLINE"));
1442     }
1443     { // ';'.simple_stmt+ ';'? NEWLINE
1444         if (p->error_indicator) {
1445             D(p->level--);
1446             return NULL;
1447         }
1448         D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1449         void *_opt_var;
1450         UNUSED(_opt_var); // Silence compiler warnings
1451         asdl_stmt_seq* a;
1452         Token * newline_var;
1453         if (
1454             (a = (asdl_stmt_seq*)_gather_4_rule(p))  // ';'.simple_stmt+
1455             &&
1456             (_opt_var = _PyPegen_expect_token(p, 13), !p->error_indicator)  // ';'?
1457             &&
1458             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1459         )
1460         {
1461             D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1462             _res = a;
1463             if (_res == NULL && PyErr_Occurred()) {
1464                 p->error_indicator = 1;
1465                 D(p->level--);
1466                 return NULL;
1467             }
1468             goto done;
1469         }
1470         p->mark = _mark;
1471         D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1472                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1473     }
1474     _res = NULL;
1475   done:
1476     D(p->level--);
1477     return _res;
1478 }
1479 
1480 // simple_stmt:
1481 //     | assignment
1482 //     | star_expressions
1483 //     | &'return' return_stmt
1484 //     | &('import' | 'from') import_stmt
1485 //     | &'raise' raise_stmt
1486 //     | 'pass'
1487 //     | &'del' del_stmt
1488 //     | &'yield' yield_stmt
1489 //     | &'assert' assert_stmt
1490 //     | 'break'
1491 //     | 'continue'
1492 //     | &'global' global_stmt
1493 //     | &'nonlocal' nonlocal_stmt
1494 static stmt_ty
simple_stmt_rule(Parser * p)1495 simple_stmt_rule(Parser *p)
1496 {
1497     D(p->level++);
1498     if (p->error_indicator) {
1499         D(p->level--);
1500         return NULL;
1501     }
1502     stmt_ty _res = NULL;
1503     if (_PyPegen_is_memoized(p, simple_stmt_type, &_res)) {
1504         D(p->level--);
1505         return _res;
1506     }
1507     int _mark = p->mark;
1508     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1509         p->error_indicator = 1;
1510         D(p->level--);
1511         return NULL;
1512     }
1513     int _start_lineno = p->tokens[_mark]->lineno;
1514     UNUSED(_start_lineno); // Only used by EXTRA macro
1515     int _start_col_offset = p->tokens[_mark]->col_offset;
1516     UNUSED(_start_col_offset); // Only used by EXTRA macro
1517     { // assignment
1518         if (p->error_indicator) {
1519             D(p->level--);
1520             return NULL;
1521         }
1522         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment"));
1523         stmt_ty assignment_var;
1524         if (
1525             (assignment_var = assignment_rule(p))  // assignment
1526         )
1527         {
1528             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment"));
1529             _res = assignment_var;
1530             goto done;
1531         }
1532         p->mark = _mark;
1533         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1534                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment"));
1535     }
1536     { // star_expressions
1537         if (p->error_indicator) {
1538             D(p->level--);
1539             return NULL;
1540         }
1541         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1542         expr_ty e;
1543         if (
1544             (e = star_expressions_rule(p))  // star_expressions
1545         )
1546         {
1547             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1548             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1549             if (_token == NULL) {
1550                 D(p->level--);
1551                 return NULL;
1552             }
1553             int _end_lineno = _token->end_lineno;
1554             UNUSED(_end_lineno); // Only used by EXTRA macro
1555             int _end_col_offset = _token->end_col_offset;
1556             UNUSED(_end_col_offset); // Only used by EXTRA macro
1557             _res = _PyAST_Expr ( e , EXTRA );
1558             if (_res == NULL && PyErr_Occurred()) {
1559                 p->error_indicator = 1;
1560                 D(p->level--);
1561                 return NULL;
1562             }
1563             goto done;
1564         }
1565         p->mark = _mark;
1566         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1567                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
1568     }
1569     { // &'return' return_stmt
1570         if (p->error_indicator) {
1571             D(p->level--);
1572             return NULL;
1573         }
1574         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1575         stmt_ty return_stmt_var;
1576         if (
1577             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 519)  // token='return'
1578             &&
1579             (return_stmt_var = return_stmt_rule(p))  // return_stmt
1580         )
1581         {
1582             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1583             _res = return_stmt_var;
1584             goto done;
1585         }
1586         p->mark = _mark;
1587         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1588                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'return' return_stmt"));
1589     }
1590     { // &('import' | 'from') import_stmt
1591         if (p->error_indicator) {
1592             D(p->level--);
1593             return NULL;
1594         }
1595         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1596         stmt_ty import_stmt_var;
1597         if (
1598             _PyPegen_lookahead(1, _tmp_6_rule, p)
1599             &&
1600             (import_stmt_var = import_stmt_rule(p))  // import_stmt
1601         )
1602         {
1603             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1604             _res = import_stmt_var;
1605             goto done;
1606         }
1607         p->mark = _mark;
1608         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1609                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('import' | 'from') import_stmt"));
1610     }
1611     { // &'raise' raise_stmt
1612         if (p->error_indicator) {
1613             D(p->level--);
1614             return NULL;
1615         }
1616         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1617         stmt_ty raise_stmt_var;
1618         if (
1619             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 522)  // token='raise'
1620             &&
1621             (raise_stmt_var = raise_stmt_rule(p))  // raise_stmt
1622         )
1623         {
1624             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1625             _res = raise_stmt_var;
1626             goto done;
1627         }
1628         p->mark = _mark;
1629         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1630                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'raise' raise_stmt"));
1631     }
1632     { // 'pass'
1633         if (p->error_indicator) {
1634             D(p->level--);
1635             return NULL;
1636         }
1637         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'pass'"));
1638         Token * _keyword;
1639         if (
1640             (_keyword = _PyPegen_expect_token(p, 504))  // token='pass'
1641         )
1642         {
1643             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'pass'"));
1644             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1645             if (_token == NULL) {
1646                 D(p->level--);
1647                 return NULL;
1648             }
1649             int _end_lineno = _token->end_lineno;
1650             UNUSED(_end_lineno); // Only used by EXTRA macro
1651             int _end_col_offset = _token->end_col_offset;
1652             UNUSED(_end_col_offset); // Only used by EXTRA macro
1653             _res = _PyAST_Pass ( EXTRA );
1654             if (_res == NULL && PyErr_Occurred()) {
1655                 p->error_indicator = 1;
1656                 D(p->level--);
1657                 return NULL;
1658             }
1659             goto done;
1660         }
1661         p->mark = _mark;
1662         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1663                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'pass'"));
1664     }
1665     { // &'del' del_stmt
1666         if (p->error_indicator) {
1667             D(p->level--);
1668             return NULL;
1669         }
1670         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1671         stmt_ty del_stmt_var;
1672         if (
1673             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 600)  // token='del'
1674             &&
1675             (del_stmt_var = del_stmt_rule(p))  // del_stmt
1676         )
1677         {
1678             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1679             _res = del_stmt_var;
1680             goto done;
1681         }
1682         p->mark = _mark;
1683         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1684                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'del' del_stmt"));
1685     }
1686     { // &'yield' yield_stmt
1687         if (p->error_indicator) {
1688             D(p->level--);
1689             return NULL;
1690         }
1691         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1692         stmt_ty yield_stmt_var;
1693         if (
1694             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 570)  // token='yield'
1695             &&
1696             (yield_stmt_var = yield_stmt_rule(p))  // yield_stmt
1697         )
1698         {
1699             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1700             _res = yield_stmt_var;
1701             goto done;
1702         }
1703         p->mark = _mark;
1704         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1705                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'yield' yield_stmt"));
1706     }
1707     { // &'assert' assert_stmt
1708         if (p->error_indicator) {
1709             D(p->level--);
1710             return NULL;
1711         }
1712         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1713         stmt_ty assert_stmt_var;
1714         if (
1715             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 526)  // token='assert'
1716             &&
1717             (assert_stmt_var = assert_stmt_rule(p))  // assert_stmt
1718         )
1719         {
1720             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1721             _res = assert_stmt_var;
1722             goto done;
1723         }
1724         p->mark = _mark;
1725         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1726                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'assert' assert_stmt"));
1727     }
1728     { // 'break'
1729         if (p->error_indicator) {
1730             D(p->level--);
1731             return NULL;
1732         }
1733         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'break'"));
1734         Token * _keyword;
1735         if (
1736             (_keyword = _PyPegen_expect_token(p, 508))  // token='break'
1737         )
1738         {
1739             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'break'"));
1740             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1741             if (_token == NULL) {
1742                 D(p->level--);
1743                 return NULL;
1744             }
1745             int _end_lineno = _token->end_lineno;
1746             UNUSED(_end_lineno); // Only used by EXTRA macro
1747             int _end_col_offset = _token->end_col_offset;
1748             UNUSED(_end_col_offset); // Only used by EXTRA macro
1749             _res = _PyAST_Break ( EXTRA );
1750             if (_res == NULL && PyErr_Occurred()) {
1751                 p->error_indicator = 1;
1752                 D(p->level--);
1753                 return NULL;
1754             }
1755             goto done;
1756         }
1757         p->mark = _mark;
1758         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1759                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'break'"));
1760     }
1761     { // 'continue'
1762         if (p->error_indicator) {
1763             D(p->level--);
1764             return NULL;
1765         }
1766         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'continue'"));
1767         Token * _keyword;
1768         if (
1769             (_keyword = _PyPegen_expect_token(p, 509))  // token='continue'
1770         )
1771         {
1772             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'continue'"));
1773             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1774             if (_token == NULL) {
1775                 D(p->level--);
1776                 return NULL;
1777             }
1778             int _end_lineno = _token->end_lineno;
1779             UNUSED(_end_lineno); // Only used by EXTRA macro
1780             int _end_col_offset = _token->end_col_offset;
1781             UNUSED(_end_col_offset); // Only used by EXTRA macro
1782             _res = _PyAST_Continue ( EXTRA );
1783             if (_res == NULL && PyErr_Occurred()) {
1784                 p->error_indicator = 1;
1785                 D(p->level--);
1786                 return NULL;
1787             }
1788             goto done;
1789         }
1790         p->mark = _mark;
1791         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1792                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'continue'"));
1793     }
1794     { // &'global' global_stmt
1795         if (p->error_indicator) {
1796             D(p->level--);
1797             return NULL;
1798         }
1799         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
1800         stmt_ty global_stmt_var;
1801         if (
1802             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 523)  // token='global'
1803             &&
1804             (global_stmt_var = global_stmt_rule(p))  // global_stmt
1805         )
1806         {
1807             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
1808             _res = global_stmt_var;
1809             goto done;
1810         }
1811         p->mark = _mark;
1812         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1813                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'global' global_stmt"));
1814     }
1815     { // &'nonlocal' nonlocal_stmt
1816         if (p->error_indicator) {
1817             D(p->level--);
1818             return NULL;
1819         }
1820         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1821         stmt_ty nonlocal_stmt_var;
1822         if (
1823             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 524)  // token='nonlocal'
1824             &&
1825             (nonlocal_stmt_var = nonlocal_stmt_rule(p))  // nonlocal_stmt
1826         )
1827         {
1828             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1829             _res = nonlocal_stmt_var;
1830             goto done;
1831         }
1832         p->mark = _mark;
1833         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1834                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
1835     }
1836     _res = NULL;
1837   done:
1838     _PyPegen_insert_memo(p, _mark, simple_stmt_type, _res);
1839     D(p->level--);
1840     return _res;
1841 }
1842 
1843 // compound_stmt:
1844 //     | &('def' | '@' | ASYNC) function_def
1845 //     | &'if' if_stmt
1846 //     | &('class' | '@') class_def
1847 //     | &('with' | ASYNC) with_stmt
1848 //     | &('for' | ASYNC) for_stmt
1849 //     | &'try' try_stmt
1850 //     | &'while' while_stmt
1851 //     | match_stmt
1852 static stmt_ty
compound_stmt_rule(Parser * p)1853 compound_stmt_rule(Parser *p)
1854 {
1855     D(p->level++);
1856     if (p->error_indicator) {
1857         D(p->level--);
1858         return NULL;
1859     }
1860     stmt_ty _res = NULL;
1861     int _mark = p->mark;
1862     { // &('def' | '@' | ASYNC) function_def
1863         if (p->error_indicator) {
1864             D(p->level--);
1865             return NULL;
1866         }
1867         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | ASYNC) function_def"));
1868         stmt_ty function_def_var;
1869         if (
1870             _PyPegen_lookahead(1, _tmp_7_rule, p)
1871             &&
1872             (function_def_var = function_def_rule(p))  // function_def
1873         )
1874         {
1875             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | ASYNC) function_def"));
1876             _res = function_def_var;
1877             goto done;
1878         }
1879         p->mark = _mark;
1880         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1881                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('def' | '@' | ASYNC) function_def"));
1882     }
1883     { // &'if' if_stmt
1884         if (p->error_indicator) {
1885             D(p->level--);
1886             return NULL;
1887         }
1888         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
1889         stmt_ty if_stmt_var;
1890         if (
1891             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 627)  // token='if'
1892             &&
1893             (if_stmt_var = if_stmt_rule(p))  // if_stmt
1894         )
1895         {
1896             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
1897             _res = if_stmt_var;
1898             goto done;
1899         }
1900         p->mark = _mark;
1901         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1902                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'if' if_stmt"));
1903     }
1904     { // &('class' | '@') class_def
1905         if (p->error_indicator) {
1906             D(p->level--);
1907             return NULL;
1908         }
1909         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
1910         stmt_ty class_def_var;
1911         if (
1912             _PyPegen_lookahead(1, _tmp_8_rule, p)
1913             &&
1914             (class_def_var = class_def_rule(p))  // class_def
1915         )
1916         {
1917             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
1918             _res = class_def_var;
1919             goto done;
1920         }
1921         p->mark = _mark;
1922         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1923                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('class' | '@') class_def"));
1924     }
1925     { // &('with' | ASYNC) with_stmt
1926         if (p->error_indicator) {
1927             D(p->level--);
1928             return NULL;
1929         }
1930         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('with' | ASYNC) with_stmt"));
1931         stmt_ty with_stmt_var;
1932         if (
1933             _PyPegen_lookahead(1, _tmp_9_rule, p)
1934             &&
1935             (with_stmt_var = with_stmt_rule(p))  // with_stmt
1936         )
1937         {
1938             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('with' | ASYNC) with_stmt"));
1939             _res = with_stmt_var;
1940             goto done;
1941         }
1942         p->mark = _mark;
1943         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1944                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('with' | ASYNC) with_stmt"));
1945     }
1946     { // &('for' | ASYNC) for_stmt
1947         if (p->error_indicator) {
1948             D(p->level--);
1949             return NULL;
1950         }
1951         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('for' | ASYNC) for_stmt"));
1952         stmt_ty for_stmt_var;
1953         if (
1954             _PyPegen_lookahead(1, _tmp_10_rule, p)
1955             &&
1956             (for_stmt_var = for_stmt_rule(p))  // for_stmt
1957         )
1958         {
1959             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('for' | ASYNC) for_stmt"));
1960             _res = for_stmt_var;
1961             goto done;
1962         }
1963         p->mark = _mark;
1964         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1965                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('for' | ASYNC) for_stmt"));
1966     }
1967     { // &'try' try_stmt
1968         if (p->error_indicator) {
1969             D(p->level--);
1970             return NULL;
1971         }
1972         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
1973         stmt_ty try_stmt_var;
1974         if (
1975             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 612)  // token='try'
1976             &&
1977             (try_stmt_var = try_stmt_rule(p))  // try_stmt
1978         )
1979         {
1980             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
1981             _res = try_stmt_var;
1982             goto done;
1983         }
1984         p->mark = _mark;
1985         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1986                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'try' try_stmt"));
1987     }
1988     { // &'while' while_stmt
1989         if (p->error_indicator) {
1990             D(p->level--);
1991             return NULL;
1992         }
1993         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
1994         stmt_ty while_stmt_var;
1995         if (
1996             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 632)  // token='while'
1997             &&
1998             (while_stmt_var = while_stmt_rule(p))  // while_stmt
1999         )
2000         {
2001             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
2002             _res = while_stmt_var;
2003             goto done;
2004         }
2005         p->mark = _mark;
2006         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2007                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'while' while_stmt"));
2008     }
2009     { // match_stmt
2010         if (p->error_indicator) {
2011             D(p->level--);
2012             return NULL;
2013         }
2014         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2015         stmt_ty match_stmt_var;
2016         if (
2017             (match_stmt_var = match_stmt_rule(p))  // match_stmt
2018         )
2019         {
2020             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2021             _res = match_stmt_var;
2022             goto done;
2023         }
2024         p->mark = _mark;
2025         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2026                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "match_stmt"));
2027     }
2028     _res = NULL;
2029   done:
2030     D(p->level--);
2031     return _res;
2032 }
2033 
2034 // assignment:
2035 //     | NAME ':' expression ['=' annotated_rhs]
2036 //     | ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
2037 //     | ((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?
2038 //     | single_target augassign ~ (yield_expr | star_expressions)
2039 //     | invalid_assignment
2040 static stmt_ty
assignment_rule(Parser * p)2041 assignment_rule(Parser *p)
2042 {
2043     D(p->level++);
2044     if (p->error_indicator) {
2045         D(p->level--);
2046         return NULL;
2047     }
2048     stmt_ty _res = NULL;
2049     int _mark = p->mark;
2050     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2051         p->error_indicator = 1;
2052         D(p->level--);
2053         return NULL;
2054     }
2055     int _start_lineno = p->tokens[_mark]->lineno;
2056     UNUSED(_start_lineno); // Only used by EXTRA macro
2057     int _start_col_offset = p->tokens[_mark]->col_offset;
2058     UNUSED(_start_col_offset); // Only used by EXTRA macro
2059     { // NAME ':' expression ['=' annotated_rhs]
2060         if (p->error_indicator) {
2061             D(p->level--);
2062             return NULL;
2063         }
2064         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2065         Token * _literal;
2066         expr_ty a;
2067         expr_ty b;
2068         void *c;
2069         if (
2070             (a = _PyPegen_name_token(p))  // NAME
2071             &&
2072             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2073             &&
2074             (b = expression_rule(p))  // expression
2075             &&
2076             (c = _tmp_11_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2077         )
2078         {
2079             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2080             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2081             if (_token == NULL) {
2082                 D(p->level--);
2083                 return NULL;
2084             }
2085             int _end_lineno = _token->end_lineno;
2086             UNUSED(_end_lineno); // Only used by EXTRA macro
2087             int _end_col_offset = _token->end_col_offset;
2088             UNUSED(_end_col_offset); // Only used by EXTRA macro
2089             _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 ) );
2090             if (_res == NULL && PyErr_Occurred()) {
2091                 p->error_indicator = 1;
2092                 D(p->level--);
2093                 return NULL;
2094             }
2095             goto done;
2096         }
2097         p->mark = _mark;
2098         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2099                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2100     }
2101     { // ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
2102         if (p->error_indicator) {
2103             D(p->level--);
2104             return NULL;
2105         }
2106         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2107         Token * _literal;
2108         void *a;
2109         expr_ty b;
2110         void *c;
2111         if (
2112             (a = _tmp_12_rule(p))  // '(' single_target ')' | single_subscript_attribute_target
2113             &&
2114             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2115             &&
2116             (b = expression_rule(p))  // expression
2117             &&
2118             (c = _tmp_13_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2119         )
2120         {
2121             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2122             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2123             if (_token == NULL) {
2124                 D(p->level--);
2125                 return NULL;
2126             }
2127             int _end_lineno = _token->end_lineno;
2128             UNUSED(_end_lineno); // Only used by EXTRA macro
2129             int _end_col_offset = _token->end_col_offset;
2130             UNUSED(_end_col_offset); // Only used by EXTRA macro
2131             _res = CHECK_VERSION ( stmt_ty , 6 , "Variable annotations syntax is" , _PyAST_AnnAssign ( a , b , c , 0 , EXTRA ) );
2132             if (_res == NULL && PyErr_Occurred()) {
2133                 p->error_indicator = 1;
2134                 D(p->level--);
2135                 return NULL;
2136             }
2137             goto done;
2138         }
2139         p->mark = _mark;
2140         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2141                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2142     }
2143     { // ((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?
2144         if (p->error_indicator) {
2145             D(p->level--);
2146             return NULL;
2147         }
2148         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?"));
2149         asdl_expr_seq* a;
2150         void *b;
2151         void *tc;
2152         if (
2153             (a = (asdl_expr_seq*)_loop1_14_rule(p))  // ((star_targets '='))+
2154             &&
2155             (b = _tmp_15_rule(p))  // yield_expr | star_expressions
2156             &&
2157             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
2158             &&
2159             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
2160         )
2161         {
2162             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?"));
2163             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2164             if (_token == NULL) {
2165                 D(p->level--);
2166                 return NULL;
2167             }
2168             int _end_lineno = _token->end_lineno;
2169             UNUSED(_end_lineno); // Only used by EXTRA macro
2170             int _end_col_offset = _token->end_col_offset;
2171             UNUSED(_end_col_offset); // Only used by EXTRA macro
2172             _res = _PyAST_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
2173             if (_res == NULL && PyErr_Occurred()) {
2174                 p->error_indicator = 1;
2175                 D(p->level--);
2176                 return NULL;
2177             }
2178             goto done;
2179         }
2180         p->mark = _mark;
2181         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2182                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?"));
2183     }
2184     { // single_target augassign ~ (yield_expr | star_expressions)
2185         if (p->error_indicator) {
2186             D(p->level--);
2187             return NULL;
2188         }
2189         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ (yield_expr | star_expressions)"));
2190         int _cut_var = 0;
2191         expr_ty a;
2192         AugOperator* b;
2193         void *c;
2194         if (
2195             (a = single_target_rule(p))  // single_target
2196             &&
2197             (b = augassign_rule(p))  // augassign
2198             &&
2199             (_cut_var = 1)
2200             &&
2201             (c = _tmp_16_rule(p))  // yield_expr | star_expressions
2202         )
2203         {
2204             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ (yield_expr | star_expressions)"));
2205             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2206             if (_token == NULL) {
2207                 D(p->level--);
2208                 return NULL;
2209             }
2210             int _end_lineno = _token->end_lineno;
2211             UNUSED(_end_lineno); // Only used by EXTRA macro
2212             int _end_col_offset = _token->end_col_offset;
2213             UNUSED(_end_col_offset); // Only used by EXTRA macro
2214             _res = _PyAST_AugAssign ( a , b -> kind , c , EXTRA );
2215             if (_res == NULL && PyErr_Occurred()) {
2216                 p->error_indicator = 1;
2217                 D(p->level--);
2218                 return NULL;
2219             }
2220             goto done;
2221         }
2222         p->mark = _mark;
2223         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2224                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_target augassign ~ (yield_expr | star_expressions)"));
2225         if (_cut_var) {
2226             D(p->level--);
2227             return NULL;
2228         }
2229     }
2230     if (p->call_invalid_rules) { // invalid_assignment
2231         if (p->error_indicator) {
2232             D(p->level--);
2233             return NULL;
2234         }
2235         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2236         void *invalid_assignment_var;
2237         if (
2238             (invalid_assignment_var = invalid_assignment_rule(p))  // invalid_assignment
2239         )
2240         {
2241             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2242             _res = invalid_assignment_var;
2243             goto done;
2244         }
2245         p->mark = _mark;
2246         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2247                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_assignment"));
2248     }
2249     _res = NULL;
2250   done:
2251     D(p->level--);
2252     return _res;
2253 }
2254 
2255 // annotated_rhs: yield_expr | star_expressions
2256 static expr_ty
annotated_rhs_rule(Parser * p)2257 annotated_rhs_rule(Parser *p)
2258 {
2259     D(p->level++);
2260     if (p->error_indicator) {
2261         D(p->level--);
2262         return NULL;
2263     }
2264     expr_ty _res = NULL;
2265     int _mark = p->mark;
2266     { // yield_expr
2267         if (p->error_indicator) {
2268             D(p->level--);
2269             return NULL;
2270         }
2271         D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
2272         expr_ty yield_expr_var;
2273         if (
2274             (yield_expr_var = yield_expr_rule(p))  // yield_expr
2275         )
2276         {
2277             D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
2278             _res = yield_expr_var;
2279             goto done;
2280         }
2281         p->mark = _mark;
2282         D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
2283                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
2284     }
2285     { // star_expressions
2286         if (p->error_indicator) {
2287             D(p->level--);
2288             return NULL;
2289         }
2290         D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
2291         expr_ty star_expressions_var;
2292         if (
2293             (star_expressions_var = star_expressions_rule(p))  // star_expressions
2294         )
2295         {
2296             D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
2297             _res = star_expressions_var;
2298             goto done;
2299         }
2300         p->mark = _mark;
2301         D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
2302                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
2303     }
2304     _res = NULL;
2305   done:
2306     D(p->level--);
2307     return _res;
2308 }
2309 
2310 // augassign:
2311 //     | '+='
2312 //     | '-='
2313 //     | '*='
2314 //     | '@='
2315 //     | '/='
2316 //     | '%='
2317 //     | '&='
2318 //     | '|='
2319 //     | '^='
2320 //     | '<<='
2321 //     | '>>='
2322 //     | '**='
2323 //     | '//='
2324 static AugOperator*
augassign_rule(Parser * p)2325 augassign_rule(Parser *p)
2326 {
2327     D(p->level++);
2328     if (p->error_indicator) {
2329         D(p->level--);
2330         return NULL;
2331     }
2332     AugOperator* _res = NULL;
2333     int _mark = p->mark;
2334     { // '+='
2335         if (p->error_indicator) {
2336             D(p->level--);
2337             return NULL;
2338         }
2339         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+='"));
2340         Token * _literal;
2341         if (
2342             (_literal = _PyPegen_expect_token(p, 36))  // token='+='
2343         )
2344         {
2345             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+='"));
2346             _res = _PyPegen_augoperator ( p , Add );
2347             if (_res == NULL && PyErr_Occurred()) {
2348                 p->error_indicator = 1;
2349                 D(p->level--);
2350                 return NULL;
2351             }
2352             goto done;
2353         }
2354         p->mark = _mark;
2355         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2356                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+='"));
2357     }
2358     { // '-='
2359         if (p->error_indicator) {
2360             D(p->level--);
2361             return NULL;
2362         }
2363         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-='"));
2364         Token * _literal;
2365         if (
2366             (_literal = _PyPegen_expect_token(p, 37))  // token='-='
2367         )
2368         {
2369             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-='"));
2370             _res = _PyPegen_augoperator ( p , Sub );
2371             if (_res == NULL && PyErr_Occurred()) {
2372                 p->error_indicator = 1;
2373                 D(p->level--);
2374                 return NULL;
2375             }
2376             goto done;
2377         }
2378         p->mark = _mark;
2379         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2380                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-='"));
2381     }
2382     { // '*='
2383         if (p->error_indicator) {
2384             D(p->level--);
2385             return NULL;
2386         }
2387         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*='"));
2388         Token * _literal;
2389         if (
2390             (_literal = _PyPegen_expect_token(p, 38))  // token='*='
2391         )
2392         {
2393             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*='"));
2394             _res = _PyPegen_augoperator ( p , Mult );
2395             if (_res == NULL && PyErr_Occurred()) {
2396                 p->error_indicator = 1;
2397                 D(p->level--);
2398                 return NULL;
2399             }
2400             goto done;
2401         }
2402         p->mark = _mark;
2403         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2404                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*='"));
2405     }
2406     { // '@='
2407         if (p->error_indicator) {
2408             D(p->level--);
2409             return NULL;
2410         }
2411         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@='"));
2412         Token * _literal;
2413         if (
2414             (_literal = _PyPegen_expect_token(p, 50))  // token='@='
2415         )
2416         {
2417             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@='"));
2418             _res = CHECK_VERSION ( AugOperator* , 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
2419             if (_res == NULL && PyErr_Occurred()) {
2420                 p->error_indicator = 1;
2421                 D(p->level--);
2422                 return NULL;
2423             }
2424             goto done;
2425         }
2426         p->mark = _mark;
2427         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2428                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@='"));
2429     }
2430     { // '/='
2431         if (p->error_indicator) {
2432             D(p->level--);
2433             return NULL;
2434         }
2435         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/='"));
2436         Token * _literal;
2437         if (
2438             (_literal = _PyPegen_expect_token(p, 39))  // token='/='
2439         )
2440         {
2441             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/='"));
2442             _res = _PyPegen_augoperator ( p , Div );
2443             if (_res == NULL && PyErr_Occurred()) {
2444                 p->error_indicator = 1;
2445                 D(p->level--);
2446                 return NULL;
2447             }
2448             goto done;
2449         }
2450         p->mark = _mark;
2451         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2452                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/='"));
2453     }
2454     { // '%='
2455         if (p->error_indicator) {
2456             D(p->level--);
2457             return NULL;
2458         }
2459         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'%='"));
2460         Token * _literal;
2461         if (
2462             (_literal = _PyPegen_expect_token(p, 40))  // token='%='
2463         )
2464         {
2465             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'%='"));
2466             _res = _PyPegen_augoperator ( p , Mod );
2467             if (_res == NULL && PyErr_Occurred()) {
2468                 p->error_indicator = 1;
2469                 D(p->level--);
2470                 return NULL;
2471             }
2472             goto done;
2473         }
2474         p->mark = _mark;
2475         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2476                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'%='"));
2477     }
2478     { // '&='
2479         if (p->error_indicator) {
2480             D(p->level--);
2481             return NULL;
2482         }
2483         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'&='"));
2484         Token * _literal;
2485         if (
2486             (_literal = _PyPegen_expect_token(p, 41))  // token='&='
2487         )
2488         {
2489             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'&='"));
2490             _res = _PyPegen_augoperator ( p , BitAnd );
2491             if (_res == NULL && PyErr_Occurred()) {
2492                 p->error_indicator = 1;
2493                 D(p->level--);
2494                 return NULL;
2495             }
2496             goto done;
2497         }
2498         p->mark = _mark;
2499         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2500                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'&='"));
2501     }
2502     { // '|='
2503         if (p->error_indicator) {
2504             D(p->level--);
2505             return NULL;
2506         }
2507         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|='"));
2508         Token * _literal;
2509         if (
2510             (_literal = _PyPegen_expect_token(p, 42))  // token='|='
2511         )
2512         {
2513             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|='"));
2514             _res = _PyPegen_augoperator ( p , BitOr );
2515             if (_res == NULL && PyErr_Occurred()) {
2516                 p->error_indicator = 1;
2517                 D(p->level--);
2518                 return NULL;
2519             }
2520             goto done;
2521         }
2522         p->mark = _mark;
2523         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2524                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|='"));
2525     }
2526     { // '^='
2527         if (p->error_indicator) {
2528             D(p->level--);
2529             return NULL;
2530         }
2531         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'^='"));
2532         Token * _literal;
2533         if (
2534             (_literal = _PyPegen_expect_token(p, 43))  // token='^='
2535         )
2536         {
2537             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'^='"));
2538             _res = _PyPegen_augoperator ( p , BitXor );
2539             if (_res == NULL && PyErr_Occurred()) {
2540                 p->error_indicator = 1;
2541                 D(p->level--);
2542                 return NULL;
2543             }
2544             goto done;
2545         }
2546         p->mark = _mark;
2547         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2548                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'^='"));
2549     }
2550     { // '<<='
2551         if (p->error_indicator) {
2552             D(p->level--);
2553             return NULL;
2554         }
2555         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<<='"));
2556         Token * _literal;
2557         if (
2558             (_literal = _PyPegen_expect_token(p, 44))  // token='<<='
2559         )
2560         {
2561             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<<='"));
2562             _res = _PyPegen_augoperator ( p , LShift );
2563             if (_res == NULL && PyErr_Occurred()) {
2564                 p->error_indicator = 1;
2565                 D(p->level--);
2566                 return NULL;
2567             }
2568             goto done;
2569         }
2570         p->mark = _mark;
2571         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2572                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<<='"));
2573     }
2574     { // '>>='
2575         if (p->error_indicator) {
2576             D(p->level--);
2577             return NULL;
2578         }
2579         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>>='"));
2580         Token * _literal;
2581         if (
2582             (_literal = _PyPegen_expect_token(p, 45))  // token='>>='
2583         )
2584         {
2585             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>>='"));
2586             _res = _PyPegen_augoperator ( p , RShift );
2587             if (_res == NULL && PyErr_Occurred()) {
2588                 p->error_indicator = 1;
2589                 D(p->level--);
2590                 return NULL;
2591             }
2592             goto done;
2593         }
2594         p->mark = _mark;
2595         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2596                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>>='"));
2597     }
2598     { // '**='
2599         if (p->error_indicator) {
2600             D(p->level--);
2601             return NULL;
2602         }
2603         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**='"));
2604         Token * _literal;
2605         if (
2606             (_literal = _PyPegen_expect_token(p, 46))  // token='**='
2607         )
2608         {
2609             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**='"));
2610             _res = _PyPegen_augoperator ( p , Pow );
2611             if (_res == NULL && PyErr_Occurred()) {
2612                 p->error_indicator = 1;
2613                 D(p->level--);
2614                 return NULL;
2615             }
2616             goto done;
2617         }
2618         p->mark = _mark;
2619         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2620                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**='"));
2621     }
2622     { // '//='
2623         if (p->error_indicator) {
2624             D(p->level--);
2625             return NULL;
2626         }
2627         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'//='"));
2628         Token * _literal;
2629         if (
2630             (_literal = _PyPegen_expect_token(p, 48))  // token='//='
2631         )
2632         {
2633             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'//='"));
2634             _res = _PyPegen_augoperator ( p , FloorDiv );
2635             if (_res == NULL && PyErr_Occurred()) {
2636                 p->error_indicator = 1;
2637                 D(p->level--);
2638                 return NULL;
2639             }
2640             goto done;
2641         }
2642         p->mark = _mark;
2643         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2644                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'//='"));
2645     }
2646     _res = NULL;
2647   done:
2648     D(p->level--);
2649     return _res;
2650 }
2651 
2652 // return_stmt: 'return' star_expressions?
2653 static stmt_ty
return_stmt_rule(Parser * p)2654 return_stmt_rule(Parser *p)
2655 {
2656     D(p->level++);
2657     if (p->error_indicator) {
2658         D(p->level--);
2659         return NULL;
2660     }
2661     stmt_ty _res = NULL;
2662     int _mark = p->mark;
2663     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2664         p->error_indicator = 1;
2665         D(p->level--);
2666         return NULL;
2667     }
2668     int _start_lineno = p->tokens[_mark]->lineno;
2669     UNUSED(_start_lineno); // Only used by EXTRA macro
2670     int _start_col_offset = p->tokens[_mark]->col_offset;
2671     UNUSED(_start_col_offset); // Only used by EXTRA macro
2672     { // 'return' star_expressions?
2673         if (p->error_indicator) {
2674             D(p->level--);
2675             return NULL;
2676         }
2677         D(fprintf(stderr, "%*c> return_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
2678         Token * _keyword;
2679         void *a;
2680         if (
2681             (_keyword = _PyPegen_expect_token(p, 519))  // token='return'
2682             &&
2683             (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
2684         )
2685         {
2686             D(fprintf(stderr, "%*c+ return_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
2687             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2688             if (_token == NULL) {
2689                 D(p->level--);
2690                 return NULL;
2691             }
2692             int _end_lineno = _token->end_lineno;
2693             UNUSED(_end_lineno); // Only used by EXTRA macro
2694             int _end_col_offset = _token->end_col_offset;
2695             UNUSED(_end_col_offset); // Only used by EXTRA macro
2696             _res = _PyAST_Return ( a , EXTRA );
2697             if (_res == NULL && PyErr_Occurred()) {
2698                 p->error_indicator = 1;
2699                 D(p->level--);
2700                 return NULL;
2701             }
2702             goto done;
2703         }
2704         p->mark = _mark;
2705         D(fprintf(stderr, "%*c%s return_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2706                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'return' star_expressions?"));
2707     }
2708     _res = NULL;
2709   done:
2710     D(p->level--);
2711     return _res;
2712 }
2713 
2714 // raise_stmt: 'raise' expression ['from' expression] | 'raise'
2715 static stmt_ty
raise_stmt_rule(Parser * p)2716 raise_stmt_rule(Parser *p)
2717 {
2718     D(p->level++);
2719     if (p->error_indicator) {
2720         D(p->level--);
2721         return NULL;
2722     }
2723     stmt_ty _res = NULL;
2724     int _mark = p->mark;
2725     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2726         p->error_indicator = 1;
2727         D(p->level--);
2728         return NULL;
2729     }
2730     int _start_lineno = p->tokens[_mark]->lineno;
2731     UNUSED(_start_lineno); // Only used by EXTRA macro
2732     int _start_col_offset = p->tokens[_mark]->col_offset;
2733     UNUSED(_start_col_offset); // Only used by EXTRA macro
2734     { // 'raise' expression ['from' expression]
2735         if (p->error_indicator) {
2736             D(p->level--);
2737             return NULL;
2738         }
2739         D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression ['from' expression]"));
2740         Token * _keyword;
2741         expr_ty a;
2742         void *b;
2743         if (
2744             (_keyword = _PyPegen_expect_token(p, 522))  // token='raise'
2745             &&
2746             (a = expression_rule(p))  // expression
2747             &&
2748             (b = _tmp_17_rule(p), !p->error_indicator)  // ['from' expression]
2749         )
2750         {
2751             D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression ['from' expression]"));
2752             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2753             if (_token == NULL) {
2754                 D(p->level--);
2755                 return NULL;
2756             }
2757             int _end_lineno = _token->end_lineno;
2758             UNUSED(_end_lineno); // Only used by EXTRA macro
2759             int _end_col_offset = _token->end_col_offset;
2760             UNUSED(_end_col_offset); // Only used by EXTRA macro
2761             _res = _PyAST_Raise ( a , b , EXTRA );
2762             if (_res == NULL && PyErr_Occurred()) {
2763                 p->error_indicator = 1;
2764                 D(p->level--);
2765                 return NULL;
2766             }
2767             goto done;
2768         }
2769         p->mark = _mark;
2770         D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2771                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression ['from' expression]"));
2772     }
2773     { // 'raise'
2774         if (p->error_indicator) {
2775             D(p->level--);
2776             return NULL;
2777         }
2778         D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise'"));
2779         Token * _keyword;
2780         if (
2781             (_keyword = _PyPegen_expect_token(p, 522))  // token='raise'
2782         )
2783         {
2784             D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise'"));
2785             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2786             if (_token == NULL) {
2787                 D(p->level--);
2788                 return NULL;
2789             }
2790             int _end_lineno = _token->end_lineno;
2791             UNUSED(_end_lineno); // Only used by EXTRA macro
2792             int _end_col_offset = _token->end_col_offset;
2793             UNUSED(_end_col_offset); // Only used by EXTRA macro
2794             _res = _PyAST_Raise ( NULL , NULL , EXTRA );
2795             if (_res == NULL && PyErr_Occurred()) {
2796                 p->error_indicator = 1;
2797                 D(p->level--);
2798                 return NULL;
2799             }
2800             goto done;
2801         }
2802         p->mark = _mark;
2803         D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2804                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise'"));
2805     }
2806     _res = NULL;
2807   done:
2808     D(p->level--);
2809     return _res;
2810 }
2811 
2812 // global_stmt: 'global' ','.NAME+
2813 static stmt_ty
global_stmt_rule(Parser * p)2814 global_stmt_rule(Parser *p)
2815 {
2816     D(p->level++);
2817     if (p->error_indicator) {
2818         D(p->level--);
2819         return NULL;
2820     }
2821     stmt_ty _res = NULL;
2822     int _mark = p->mark;
2823     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2824         p->error_indicator = 1;
2825         D(p->level--);
2826         return NULL;
2827     }
2828     int _start_lineno = p->tokens[_mark]->lineno;
2829     UNUSED(_start_lineno); // Only used by EXTRA macro
2830     int _start_col_offset = p->tokens[_mark]->col_offset;
2831     UNUSED(_start_col_offset); // Only used by EXTRA macro
2832     { // 'global' ','.NAME+
2833         if (p->error_indicator) {
2834             D(p->level--);
2835             return NULL;
2836         }
2837         D(fprintf(stderr, "%*c> global_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
2838         Token * _keyword;
2839         asdl_expr_seq* a;
2840         if (
2841             (_keyword = _PyPegen_expect_token(p, 523))  // token='global'
2842             &&
2843             (a = (asdl_expr_seq*)_gather_18_rule(p))  // ','.NAME+
2844         )
2845         {
2846             D(fprintf(stderr, "%*c+ global_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
2847             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2848             if (_token == NULL) {
2849                 D(p->level--);
2850                 return NULL;
2851             }
2852             int _end_lineno = _token->end_lineno;
2853             UNUSED(_end_lineno); // Only used by EXTRA macro
2854             int _end_col_offset = _token->end_col_offset;
2855             UNUSED(_end_col_offset); // Only used by EXTRA macro
2856             _res = _PyAST_Global ( CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2857             if (_res == NULL && PyErr_Occurred()) {
2858                 p->error_indicator = 1;
2859                 D(p->level--);
2860                 return NULL;
2861             }
2862             goto done;
2863         }
2864         p->mark = _mark;
2865         D(fprintf(stderr, "%*c%s global_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2866                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'global' ','.NAME+"));
2867     }
2868     _res = NULL;
2869   done:
2870     D(p->level--);
2871     return _res;
2872 }
2873 
2874 // nonlocal_stmt: 'nonlocal' ','.NAME+
2875 static stmt_ty
nonlocal_stmt_rule(Parser * p)2876 nonlocal_stmt_rule(Parser *p)
2877 {
2878     D(p->level++);
2879     if (p->error_indicator) {
2880         D(p->level--);
2881         return NULL;
2882     }
2883     stmt_ty _res = NULL;
2884     int _mark = p->mark;
2885     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2886         p->error_indicator = 1;
2887         D(p->level--);
2888         return NULL;
2889     }
2890     int _start_lineno = p->tokens[_mark]->lineno;
2891     UNUSED(_start_lineno); // Only used by EXTRA macro
2892     int _start_col_offset = p->tokens[_mark]->col_offset;
2893     UNUSED(_start_col_offset); // Only used by EXTRA macro
2894     { // 'nonlocal' ','.NAME+
2895         if (p->error_indicator) {
2896             D(p->level--);
2897             return NULL;
2898         }
2899         D(fprintf(stderr, "%*c> nonlocal_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
2900         Token * _keyword;
2901         asdl_expr_seq* a;
2902         if (
2903             (_keyword = _PyPegen_expect_token(p, 524))  // token='nonlocal'
2904             &&
2905             (a = (asdl_expr_seq*)_gather_20_rule(p))  // ','.NAME+
2906         )
2907         {
2908             D(fprintf(stderr, "%*c+ nonlocal_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
2909             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2910             if (_token == NULL) {
2911                 D(p->level--);
2912                 return NULL;
2913             }
2914             int _end_lineno = _token->end_lineno;
2915             UNUSED(_end_lineno); // Only used by EXTRA macro
2916             int _end_col_offset = _token->end_col_offset;
2917             UNUSED(_end_col_offset); // Only used by EXTRA macro
2918             _res = _PyAST_Nonlocal ( CHECK ( asdl_identifier_seq* , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2919             if (_res == NULL && PyErr_Occurred()) {
2920                 p->error_indicator = 1;
2921                 D(p->level--);
2922                 return NULL;
2923             }
2924             goto done;
2925         }
2926         p->mark = _mark;
2927         D(fprintf(stderr, "%*c%s nonlocal_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2928                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'nonlocal' ','.NAME+"));
2929     }
2930     _res = NULL;
2931   done:
2932     D(p->level--);
2933     return _res;
2934 }
2935 
2936 // del_stmt: 'del' del_targets &(';' | NEWLINE) | invalid_del_stmt
2937 static stmt_ty
del_stmt_rule(Parser * p)2938 del_stmt_rule(Parser *p)
2939 {
2940     D(p->level++);
2941     if (p->error_indicator) {
2942         D(p->level--);
2943         return NULL;
2944     }
2945     stmt_ty _res = NULL;
2946     int _mark = p->mark;
2947     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2948         p->error_indicator = 1;
2949         D(p->level--);
2950         return NULL;
2951     }
2952     int _start_lineno = p->tokens[_mark]->lineno;
2953     UNUSED(_start_lineno); // Only used by EXTRA macro
2954     int _start_col_offset = p->tokens[_mark]->col_offset;
2955     UNUSED(_start_col_offset); // Only used by EXTRA macro
2956     { // 'del' del_targets &(';' | NEWLINE)
2957         if (p->error_indicator) {
2958             D(p->level--);
2959             return NULL;
2960         }
2961         D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
2962         Token * _keyword;
2963         asdl_expr_seq* a;
2964         if (
2965             (_keyword = _PyPegen_expect_token(p, 600))  // token='del'
2966             &&
2967             (a = del_targets_rule(p))  // del_targets
2968             &&
2969             _PyPegen_lookahead(1, _tmp_22_rule, p)
2970         )
2971         {
2972             D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
2973             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2974             if (_token == NULL) {
2975                 D(p->level--);
2976                 return NULL;
2977             }
2978             int _end_lineno = _token->end_lineno;
2979             UNUSED(_end_lineno); // Only used by EXTRA macro
2980             int _end_col_offset = _token->end_col_offset;
2981             UNUSED(_end_col_offset); // Only used by EXTRA macro
2982             _res = _PyAST_Delete ( a , EXTRA );
2983             if (_res == NULL && PyErr_Occurred()) {
2984                 p->error_indicator = 1;
2985                 D(p->level--);
2986                 return NULL;
2987             }
2988             goto done;
2989         }
2990         p->mark = _mark;
2991         D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2992                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
2993     }
2994     if (p->call_invalid_rules) { // invalid_del_stmt
2995         if (p->error_indicator) {
2996             D(p->level--);
2997             return NULL;
2998         }
2999         D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3000         void *invalid_del_stmt_var;
3001         if (
3002             (invalid_del_stmt_var = invalid_del_stmt_rule(p))  // invalid_del_stmt
3003         )
3004         {
3005             D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3006             _res = invalid_del_stmt_var;
3007             goto done;
3008         }
3009         p->mark = _mark;
3010         D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3011                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_del_stmt"));
3012     }
3013     _res = NULL;
3014   done:
3015     D(p->level--);
3016     return _res;
3017 }
3018 
3019 // yield_stmt: yield_expr
3020 static stmt_ty
yield_stmt_rule(Parser * p)3021 yield_stmt_rule(Parser *p)
3022 {
3023     D(p->level++);
3024     if (p->error_indicator) {
3025         D(p->level--);
3026         return NULL;
3027     }
3028     stmt_ty _res = NULL;
3029     int _mark = p->mark;
3030     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3031         p->error_indicator = 1;
3032         D(p->level--);
3033         return NULL;
3034     }
3035     int _start_lineno = p->tokens[_mark]->lineno;
3036     UNUSED(_start_lineno); // Only used by EXTRA macro
3037     int _start_col_offset = p->tokens[_mark]->col_offset;
3038     UNUSED(_start_col_offset); // Only used by EXTRA macro
3039     { // yield_expr
3040         if (p->error_indicator) {
3041             D(p->level--);
3042             return NULL;
3043         }
3044         D(fprintf(stderr, "%*c> yield_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3045         expr_ty y;
3046         if (
3047             (y = yield_expr_rule(p))  // yield_expr
3048         )
3049         {
3050             D(fprintf(stderr, "%*c+ yield_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
3051             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3052             if (_token == NULL) {
3053                 D(p->level--);
3054                 return NULL;
3055             }
3056             int _end_lineno = _token->end_lineno;
3057             UNUSED(_end_lineno); // Only used by EXTRA macro
3058             int _end_col_offset = _token->end_col_offset;
3059             UNUSED(_end_col_offset); // Only used by EXTRA macro
3060             _res = _PyAST_Expr ( y , EXTRA );
3061             if (_res == NULL && PyErr_Occurred()) {
3062                 p->error_indicator = 1;
3063                 D(p->level--);
3064                 return NULL;
3065             }
3066             goto done;
3067         }
3068         p->mark = _mark;
3069         D(fprintf(stderr, "%*c%s yield_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3070                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
3071     }
3072     _res = NULL;
3073   done:
3074     D(p->level--);
3075     return _res;
3076 }
3077 
3078 // assert_stmt: 'assert' expression [',' expression]
3079 static stmt_ty
assert_stmt_rule(Parser * p)3080 assert_stmt_rule(Parser *p)
3081 {
3082     D(p->level++);
3083     if (p->error_indicator) {
3084         D(p->level--);
3085         return NULL;
3086     }
3087     stmt_ty _res = NULL;
3088     int _mark = p->mark;
3089     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3090         p->error_indicator = 1;
3091         D(p->level--);
3092         return NULL;
3093     }
3094     int _start_lineno = p->tokens[_mark]->lineno;
3095     UNUSED(_start_lineno); // Only used by EXTRA macro
3096     int _start_col_offset = p->tokens[_mark]->col_offset;
3097     UNUSED(_start_col_offset); // Only used by EXTRA macro
3098     { // 'assert' expression [',' expression]
3099         if (p->error_indicator) {
3100             D(p->level--);
3101             return NULL;
3102         }
3103         D(fprintf(stderr, "%*c> assert_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3104         Token * _keyword;
3105         expr_ty a;
3106         void *b;
3107         if (
3108             (_keyword = _PyPegen_expect_token(p, 526))  // token='assert'
3109             &&
3110             (a = expression_rule(p))  // expression
3111             &&
3112             (b = _tmp_23_rule(p), !p->error_indicator)  // [',' expression]
3113         )
3114         {
3115             D(fprintf(stderr, "%*c+ assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3116             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3117             if (_token == NULL) {
3118                 D(p->level--);
3119                 return NULL;
3120             }
3121             int _end_lineno = _token->end_lineno;
3122             UNUSED(_end_lineno); // Only used by EXTRA macro
3123             int _end_col_offset = _token->end_col_offset;
3124             UNUSED(_end_col_offset); // Only used by EXTRA macro
3125             _res = _PyAST_Assert ( a , b , EXTRA );
3126             if (_res == NULL && PyErr_Occurred()) {
3127                 p->error_indicator = 1;
3128                 D(p->level--);
3129                 return NULL;
3130             }
3131             goto done;
3132         }
3133         p->mark = _mark;
3134         D(fprintf(stderr, "%*c%s assert_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3135                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'assert' expression [',' expression]"));
3136     }
3137     _res = NULL;
3138   done:
3139     D(p->level--);
3140     return _res;
3141 }
3142 
3143 // import_stmt: import_name | import_from
3144 static stmt_ty
import_stmt_rule(Parser * p)3145 import_stmt_rule(Parser *p)
3146 {
3147     D(p->level++);
3148     if (p->error_indicator) {
3149         D(p->level--);
3150         return NULL;
3151     }
3152     stmt_ty _res = NULL;
3153     int _mark = p->mark;
3154     { // import_name
3155         if (p->error_indicator) {
3156             D(p->level--);
3157             return NULL;
3158         }
3159         D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_name"));
3160         stmt_ty import_name_var;
3161         if (
3162             (import_name_var = import_name_rule(p))  // import_name
3163         )
3164         {
3165             D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_name"));
3166             _res = import_name_var;
3167             goto done;
3168         }
3169         p->mark = _mark;
3170         D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3171                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_name"));
3172     }
3173     { // import_from
3174         if (p->error_indicator) {
3175             D(p->level--);
3176             return NULL;
3177         }
3178         D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from"));
3179         stmt_ty import_from_var;
3180         if (
3181             (import_from_var = import_from_rule(p))  // import_from
3182         )
3183         {
3184             D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from"));
3185             _res = import_from_var;
3186             goto done;
3187         }
3188         p->mark = _mark;
3189         D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3190                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from"));
3191     }
3192     _res = NULL;
3193   done:
3194     D(p->level--);
3195     return _res;
3196 }
3197 
3198 // import_name: 'import' dotted_as_names
3199 static stmt_ty
import_name_rule(Parser * p)3200 import_name_rule(Parser *p)
3201 {
3202     D(p->level++);
3203     if (p->error_indicator) {
3204         D(p->level--);
3205         return NULL;
3206     }
3207     stmt_ty _res = NULL;
3208     int _mark = p->mark;
3209     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3210         p->error_indicator = 1;
3211         D(p->level--);
3212         return NULL;
3213     }
3214     int _start_lineno = p->tokens[_mark]->lineno;
3215     UNUSED(_start_lineno); // Only used by EXTRA macro
3216     int _start_col_offset = p->tokens[_mark]->col_offset;
3217     UNUSED(_start_col_offset); // Only used by EXTRA macro
3218     { // 'import' dotted_as_names
3219         if (p->error_indicator) {
3220             D(p->level--);
3221             return NULL;
3222         }
3223         D(fprintf(stderr, "%*c> import_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3224         Token * _keyword;
3225         asdl_alias_seq* a;
3226         if (
3227             (_keyword = _PyPegen_expect_token(p, 531))  // token='import'
3228             &&
3229             (a = dotted_as_names_rule(p))  // dotted_as_names
3230         )
3231         {
3232             D(fprintf(stderr, "%*c+ import_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3233             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3234             if (_token == NULL) {
3235                 D(p->level--);
3236                 return NULL;
3237             }
3238             int _end_lineno = _token->end_lineno;
3239             UNUSED(_end_lineno); // Only used by EXTRA macro
3240             int _end_col_offset = _token->end_col_offset;
3241             UNUSED(_end_col_offset); // Only used by EXTRA macro
3242             _res = _PyAST_Import ( a , EXTRA );
3243             if (_res == NULL && PyErr_Occurred()) {
3244                 p->error_indicator = 1;
3245                 D(p->level--);
3246                 return NULL;
3247             }
3248             goto done;
3249         }
3250         p->mark = _mark;
3251         D(fprintf(stderr, "%*c%s import_name[%d-%d]: %s failed!\n", p->level, ' ',
3252                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' dotted_as_names"));
3253     }
3254     _res = NULL;
3255   done:
3256     D(p->level--);
3257     return _res;
3258 }
3259 
3260 // import_from:
3261 //     | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3262 //     | 'from' (('.' | '...'))+ 'import' import_from_targets
3263 static stmt_ty
import_from_rule(Parser * p)3264 import_from_rule(Parser *p)
3265 {
3266     D(p->level++);
3267     if (p->error_indicator) {
3268         D(p->level--);
3269         return NULL;
3270     }
3271     stmt_ty _res = NULL;
3272     int _mark = p->mark;
3273     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3274         p->error_indicator = 1;
3275         D(p->level--);
3276         return NULL;
3277     }
3278     int _start_lineno = p->tokens[_mark]->lineno;
3279     UNUSED(_start_lineno); // Only used by EXTRA macro
3280     int _start_col_offset = p->tokens[_mark]->col_offset;
3281     UNUSED(_start_col_offset); // Only used by EXTRA macro
3282     { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3283         if (p->error_indicator) {
3284             D(p->level--);
3285             return NULL;
3286         }
3287         D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3288         Token * _keyword;
3289         Token * _keyword_1;
3290         asdl_seq * a;
3291         expr_ty b;
3292         asdl_alias_seq* c;
3293         if (
3294             (_keyword = _PyPegen_expect_token(p, 569))  // token='from'
3295             &&
3296             (a = _loop0_24_rule(p))  // (('.' | '...'))*
3297             &&
3298             (b = dotted_name_rule(p))  // dotted_name
3299             &&
3300             (_keyword_1 = _PyPegen_expect_token(p, 531))  // token='import'
3301             &&
3302             (c = import_from_targets_rule(p))  // import_from_targets
3303         )
3304         {
3305             D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3306             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3307             if (_token == NULL) {
3308                 D(p->level--);
3309                 return NULL;
3310             }
3311             int _end_lineno = _token->end_lineno;
3312             UNUSED(_end_lineno); // Only used by EXTRA macro
3313             int _end_col_offset = _token->end_col_offset;
3314             UNUSED(_end_col_offset); // Only used by EXTRA macro
3315             _res = _PyAST_ImportFrom ( b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
3316             if (_res == NULL && PyErr_Occurred()) {
3317                 p->error_indicator = 1;
3318                 D(p->level--);
3319                 return NULL;
3320             }
3321             goto done;
3322         }
3323         p->mark = _mark;
3324         D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3325                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3326     }
3327     { // 'from' (('.' | '...'))+ 'import' import_from_targets
3328         if (p->error_indicator) {
3329             D(p->level--);
3330             return NULL;
3331         }
3332         D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3333         Token * _keyword;
3334         Token * _keyword_1;
3335         asdl_seq * a;
3336         asdl_alias_seq* b;
3337         if (
3338             (_keyword = _PyPegen_expect_token(p, 569))  // token='from'
3339             &&
3340             (a = _loop1_25_rule(p))  // (('.' | '...'))+
3341             &&
3342             (_keyword_1 = _PyPegen_expect_token(p, 531))  // token='import'
3343             &&
3344             (b = import_from_targets_rule(p))  // import_from_targets
3345         )
3346         {
3347             D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3348             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3349             if (_token == NULL) {
3350                 D(p->level--);
3351                 return NULL;
3352             }
3353             int _end_lineno = _token->end_lineno;
3354             UNUSED(_end_lineno); // Only used by EXTRA macro
3355             int _end_col_offset = _token->end_col_offset;
3356             UNUSED(_end_col_offset); // Only used by EXTRA macro
3357             _res = _PyAST_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
3358             if (_res == NULL && PyErr_Occurred()) {
3359                 p->error_indicator = 1;
3360                 D(p->level--);
3361                 return NULL;
3362             }
3363             goto done;
3364         }
3365         p->mark = _mark;
3366         D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3367                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3368     }
3369     _res = NULL;
3370   done:
3371     D(p->level--);
3372     return _res;
3373 }
3374 
3375 // import_from_targets:
3376 //     | '(' import_from_as_names ','? ')'
3377 //     | import_from_as_names !','
3378 //     | '*'
3379 //     | invalid_import_from_targets
3380 static asdl_alias_seq*
import_from_targets_rule(Parser * p)3381 import_from_targets_rule(Parser *p)
3382 {
3383     D(p->level++);
3384     if (p->error_indicator) {
3385         D(p->level--);
3386         return NULL;
3387     }
3388     asdl_alias_seq* _res = NULL;
3389     int _mark = p->mark;
3390     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3391         p->error_indicator = 1;
3392         D(p->level--);
3393         return NULL;
3394     }
3395     int _start_lineno = p->tokens[_mark]->lineno;
3396     UNUSED(_start_lineno); // Only used by EXTRA macro
3397     int _start_col_offset = p->tokens[_mark]->col_offset;
3398     UNUSED(_start_col_offset); // Only used by EXTRA macro
3399     { // '(' import_from_as_names ','? ')'
3400         if (p->error_indicator) {
3401             D(p->level--);
3402             return NULL;
3403         }
3404         D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3405         Token * _literal;
3406         Token * _literal_1;
3407         void *_opt_var;
3408         UNUSED(_opt_var); // Silence compiler warnings
3409         asdl_alias_seq* a;
3410         if (
3411             (_literal = _PyPegen_expect_token(p, 7))  // token='('
3412             &&
3413             (a = import_from_as_names_rule(p))  // import_from_as_names
3414             &&
3415             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
3416             &&
3417             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
3418         )
3419         {
3420             D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3421             _res = a;
3422             if (_res == NULL && PyErr_Occurred()) {
3423                 p->error_indicator = 1;
3424                 D(p->level--);
3425                 return NULL;
3426             }
3427             goto done;
3428         }
3429         p->mark = _mark;
3430         D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3431                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3432     }
3433     { // import_from_as_names !','
3434         if (p->error_indicator) {
3435             D(p->level--);
3436             return NULL;
3437         }
3438         D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3439         asdl_alias_seq* import_from_as_names_var;
3440         if (
3441             (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
3442             &&
3443             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
3444         )
3445         {
3446             D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3447             _res = import_from_as_names_var;
3448             goto done;
3449         }
3450         p->mark = _mark;
3451         D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3452                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names !','"));
3453     }
3454     { // '*'
3455         if (p->error_indicator) {
3456             D(p->level--);
3457             return NULL;
3458         }
3459         D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
3460         Token * _literal;
3461         if (
3462             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
3463         )
3464         {
3465             D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
3466             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3467             if (_token == NULL) {
3468                 D(p->level--);
3469                 return NULL;
3470             }
3471             int _end_lineno = _token->end_lineno;
3472             UNUSED(_end_lineno); // Only used by EXTRA macro
3473             int _end_col_offset = _token->end_col_offset;
3474             UNUSED(_end_col_offset); // Only used by EXTRA macro
3475             _res = ( asdl_alias_seq* ) _PyPegen_singleton_seq ( p , CHECK ( alias_ty , _PyPegen_alias_for_star ( p , EXTRA ) ) );
3476             if (_res == NULL && PyErr_Occurred()) {
3477                 p->error_indicator = 1;
3478                 D(p->level--);
3479                 return NULL;
3480             }
3481             goto done;
3482         }
3483         p->mark = _mark;
3484         D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3485                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
3486     }
3487     if (p->call_invalid_rules) { // invalid_import_from_targets
3488         if (p->error_indicator) {
3489             D(p->level--);
3490             return NULL;
3491         }
3492         D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3493         void *invalid_import_from_targets_var;
3494         if (
3495             (invalid_import_from_targets_var = invalid_import_from_targets_rule(p))  // invalid_import_from_targets
3496         )
3497         {
3498             D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3499             _res = invalid_import_from_targets_var;
3500             goto done;
3501         }
3502         p->mark = _mark;
3503         D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3504                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_targets"));
3505     }
3506     _res = NULL;
3507   done:
3508     D(p->level--);
3509     return _res;
3510 }
3511 
3512 // import_from_as_names: ','.import_from_as_name+
3513 static asdl_alias_seq*
import_from_as_names_rule(Parser * p)3514 import_from_as_names_rule(Parser *p)
3515 {
3516     D(p->level++);
3517     if (p->error_indicator) {
3518         D(p->level--);
3519         return NULL;
3520     }
3521     asdl_alias_seq* _res = NULL;
3522     int _mark = p->mark;
3523     { // ','.import_from_as_name+
3524         if (p->error_indicator) {
3525             D(p->level--);
3526             return NULL;
3527         }
3528         D(fprintf(stderr, "%*c> import_from_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3529         asdl_alias_seq* a;
3530         if (
3531             (a = (asdl_alias_seq*)_gather_26_rule(p))  // ','.import_from_as_name+
3532         )
3533         {
3534             D(fprintf(stderr, "%*c+ import_from_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3535             _res = a;
3536             if (_res == NULL && PyErr_Occurred()) {
3537                 p->error_indicator = 1;
3538                 D(p->level--);
3539                 return NULL;
3540             }
3541             goto done;
3542         }
3543         p->mark = _mark;
3544         D(fprintf(stderr, "%*c%s import_from_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3545                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.import_from_as_name+"));
3546     }
3547     _res = NULL;
3548   done:
3549     D(p->level--);
3550     return _res;
3551 }
3552 
3553 // import_from_as_name: NAME ['as' NAME]
3554 static alias_ty
import_from_as_name_rule(Parser * p)3555 import_from_as_name_rule(Parser *p)
3556 {
3557     D(p->level++);
3558     if (p->error_indicator) {
3559         D(p->level--);
3560         return NULL;
3561     }
3562     alias_ty _res = NULL;
3563     int _mark = p->mark;
3564     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3565         p->error_indicator = 1;
3566         D(p->level--);
3567         return NULL;
3568     }
3569     int _start_lineno = p->tokens[_mark]->lineno;
3570     UNUSED(_start_lineno); // Only used by EXTRA macro
3571     int _start_col_offset = p->tokens[_mark]->col_offset;
3572     UNUSED(_start_col_offset); // Only used by EXTRA macro
3573     { // NAME ['as' NAME]
3574         if (p->error_indicator) {
3575             D(p->level--);
3576             return NULL;
3577         }
3578         D(fprintf(stderr, "%*c> import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3579         expr_ty a;
3580         void *b;
3581         if (
3582             (a = _PyPegen_name_token(p))  // NAME
3583             &&
3584             (b = _tmp_28_rule(p), !p->error_indicator)  // ['as' NAME]
3585         )
3586         {
3587             D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3588             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3589             if (_token == NULL) {
3590                 D(p->level--);
3591                 return NULL;
3592             }
3593             int _end_lineno = _token->end_lineno;
3594             UNUSED(_end_lineno); // Only used by EXTRA macro
3595             int _end_col_offset = _token->end_col_offset;
3596             UNUSED(_end_col_offset); // Only used by EXTRA macro
3597             _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
3598             if (_res == NULL && PyErr_Occurred()) {
3599                 p->error_indicator = 1;
3600                 D(p->level--);
3601                 return NULL;
3602             }
3603             goto done;
3604         }
3605         p->mark = _mark;
3606         D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3607                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ['as' NAME]"));
3608     }
3609     _res = NULL;
3610   done:
3611     D(p->level--);
3612     return _res;
3613 }
3614 
3615 // dotted_as_names: ','.dotted_as_name+
3616 static asdl_alias_seq*
dotted_as_names_rule(Parser * p)3617 dotted_as_names_rule(Parser *p)
3618 {
3619     D(p->level++);
3620     if (p->error_indicator) {
3621         D(p->level--);
3622         return NULL;
3623     }
3624     asdl_alias_seq* _res = NULL;
3625     int _mark = p->mark;
3626     { // ','.dotted_as_name+
3627         if (p->error_indicator) {
3628             D(p->level--);
3629             return NULL;
3630         }
3631         D(fprintf(stderr, "%*c> dotted_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
3632         asdl_alias_seq* a;
3633         if (
3634             (a = (asdl_alias_seq*)_gather_29_rule(p))  // ','.dotted_as_name+
3635         )
3636         {
3637             D(fprintf(stderr, "%*c+ dotted_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
3638             _res = a;
3639             if (_res == NULL && PyErr_Occurred()) {
3640                 p->error_indicator = 1;
3641                 D(p->level--);
3642                 return NULL;
3643             }
3644             goto done;
3645         }
3646         p->mark = _mark;
3647         D(fprintf(stderr, "%*c%s dotted_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3648                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.dotted_as_name+"));
3649     }
3650     _res = NULL;
3651   done:
3652     D(p->level--);
3653     return _res;
3654 }
3655 
3656 // dotted_as_name: dotted_name ['as' NAME]
3657 static alias_ty
dotted_as_name_rule(Parser * p)3658 dotted_as_name_rule(Parser *p)
3659 {
3660     D(p->level++);
3661     if (p->error_indicator) {
3662         D(p->level--);
3663         return NULL;
3664     }
3665     alias_ty _res = NULL;
3666     int _mark = p->mark;
3667     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3668         p->error_indicator = 1;
3669         D(p->level--);
3670         return NULL;
3671     }
3672     int _start_lineno = p->tokens[_mark]->lineno;
3673     UNUSED(_start_lineno); // Only used by EXTRA macro
3674     int _start_col_offset = p->tokens[_mark]->col_offset;
3675     UNUSED(_start_col_offset); // Only used by EXTRA macro
3676     { // dotted_name ['as' NAME]
3677         if (p->error_indicator) {
3678             D(p->level--);
3679             return NULL;
3680         }
3681         D(fprintf(stderr, "%*c> dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
3682         expr_ty a;
3683         void *b;
3684         if (
3685             (a = dotted_name_rule(p))  // dotted_name
3686             &&
3687             (b = _tmp_31_rule(p), !p->error_indicator)  // ['as' NAME]
3688         )
3689         {
3690             D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
3691             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3692             if (_token == NULL) {
3693                 D(p->level--);
3694                 return NULL;
3695             }
3696             int _end_lineno = _token->end_lineno;
3697             UNUSED(_end_lineno); // Only used by EXTRA macro
3698             int _end_col_offset = _token->end_col_offset;
3699             UNUSED(_end_col_offset); // Only used by EXTRA macro
3700             _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
3701             if (_res == NULL && PyErr_Occurred()) {
3702                 p->error_indicator = 1;
3703                 D(p->level--);
3704                 return NULL;
3705             }
3706             goto done;
3707         }
3708         p->mark = _mark;
3709         D(fprintf(stderr, "%*c%s dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3710                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name ['as' NAME]"));
3711     }
3712     _res = NULL;
3713   done:
3714     D(p->level--);
3715     return _res;
3716 }
3717 
3718 // Left-recursive
3719 // dotted_name: dotted_name '.' NAME | NAME
3720 static expr_ty dotted_name_raw(Parser *);
3721 static expr_ty
dotted_name_rule(Parser * p)3722 dotted_name_rule(Parser *p)
3723 {
3724     D(p->level++);
3725     expr_ty _res = NULL;
3726     if (_PyPegen_is_memoized(p, dotted_name_type, &_res)) {
3727         D(p->level--);
3728         return _res;
3729     }
3730     int _mark = p->mark;
3731     int _resmark = p->mark;
3732     while (1) {
3733         int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
3734         if (tmpvar_0) {
3735             D(p->level--);
3736             return _res;
3737         }
3738         p->mark = _mark;
3739         p->in_raw_rule++;
3740         void *_raw = dotted_name_raw(p);
3741         p->in_raw_rule--;
3742         if (p->error_indicator)
3743             return NULL;
3744         if (_raw == NULL || p->mark <= _resmark)
3745             break;
3746         _resmark = p->mark;
3747         _res = _raw;
3748     }
3749     p->mark = _resmark;
3750     D(p->level--);
3751     return _res;
3752 }
3753 static expr_ty
dotted_name_raw(Parser * p)3754 dotted_name_raw(Parser *p)
3755 {
3756     D(p->level++);
3757     if (p->error_indicator) {
3758         D(p->level--);
3759         return NULL;
3760     }
3761     expr_ty _res = NULL;
3762     int _mark = p->mark;
3763     { // dotted_name '.' NAME
3764         if (p->error_indicator) {
3765             D(p->level--);
3766             return NULL;
3767         }
3768         D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
3769         Token * _literal;
3770         expr_ty a;
3771         expr_ty b;
3772         if (
3773             (a = dotted_name_rule(p))  // dotted_name
3774             &&
3775             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
3776             &&
3777             (b = _PyPegen_name_token(p))  // NAME
3778         )
3779         {
3780             D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
3781             _res = _PyPegen_join_names_with_dot ( p , a , b );
3782             if (_res == NULL && PyErr_Occurred()) {
3783                 p->error_indicator = 1;
3784                 D(p->level--);
3785                 return NULL;
3786             }
3787             goto done;
3788         }
3789         p->mark = _mark;
3790         D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
3791                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name '.' NAME"));
3792     }
3793     { // NAME
3794         if (p->error_indicator) {
3795             D(p->level--);
3796             return NULL;
3797         }
3798         D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
3799         expr_ty name_var;
3800         if (
3801             (name_var = _PyPegen_name_token(p))  // NAME
3802         )
3803         {
3804             D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
3805             _res = name_var;
3806             goto done;
3807         }
3808         p->mark = _mark;
3809         D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
3810                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
3811     }
3812     _res = NULL;
3813   done:
3814     D(p->level--);
3815     return _res;
3816 }
3817 
3818 // block: NEWLINE INDENT statements DEDENT | simple_stmts | invalid_block
3819 static asdl_stmt_seq*
block_rule(Parser * p)3820 block_rule(Parser *p)
3821 {
3822     D(p->level++);
3823     if (p->error_indicator) {
3824         D(p->level--);
3825         return NULL;
3826     }
3827     asdl_stmt_seq* _res = NULL;
3828     if (_PyPegen_is_memoized(p, block_type, &_res)) {
3829         D(p->level--);
3830         return _res;
3831     }
3832     int _mark = p->mark;
3833     { // NEWLINE INDENT statements DEDENT
3834         if (p->error_indicator) {
3835             D(p->level--);
3836             return NULL;
3837         }
3838         D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
3839         asdl_stmt_seq* a;
3840         Token * dedent_var;
3841         Token * indent_var;
3842         Token * newline_var;
3843         if (
3844             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
3845             &&
3846             (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
3847             &&
3848             (a = statements_rule(p))  // statements
3849             &&
3850             (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
3851         )
3852         {
3853             D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
3854             _res = a;
3855             if (_res == NULL && PyErr_Occurred()) {
3856                 p->error_indicator = 1;
3857                 D(p->level--);
3858                 return NULL;
3859             }
3860             goto done;
3861         }
3862         p->mark = _mark;
3863         D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
3864                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
3865     }
3866     { // simple_stmts
3867         if (p->error_indicator) {
3868             D(p->level--);
3869             return NULL;
3870         }
3871         D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
3872         asdl_stmt_seq* simple_stmts_var;
3873         if (
3874             (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
3875         )
3876         {
3877             D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
3878             _res = simple_stmts_var;
3879             goto done;
3880         }
3881         p->mark = _mark;
3882         D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
3883                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
3884     }
3885     if (p->call_invalid_rules) { // invalid_block
3886         if (p->error_indicator) {
3887             D(p->level--);
3888             return NULL;
3889         }
3890         D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_block"));
3891         void *invalid_block_var;
3892         if (
3893             (invalid_block_var = invalid_block_rule(p))  // invalid_block
3894         )
3895         {
3896             D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_block"));
3897             _res = invalid_block_var;
3898             goto done;
3899         }
3900         p->mark = _mark;
3901         D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
3902                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_block"));
3903     }
3904     _res = NULL;
3905   done:
3906     _PyPegen_insert_memo(p, _mark, block_type, _res);
3907     D(p->level--);
3908     return _res;
3909 }
3910 
3911 // decorators: (('@' named_expression NEWLINE))+
3912 static asdl_expr_seq*
decorators_rule(Parser * p)3913 decorators_rule(Parser *p)
3914 {
3915     D(p->level++);
3916     if (p->error_indicator) {
3917         D(p->level--);
3918         return NULL;
3919     }
3920     asdl_expr_seq* _res = NULL;
3921     int _mark = p->mark;
3922     { // (('@' named_expression NEWLINE))+
3923         if (p->error_indicator) {
3924             D(p->level--);
3925             return NULL;
3926         }
3927         D(fprintf(stderr, "%*c> decorators[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
3928         asdl_expr_seq* a;
3929         if (
3930             (a = (asdl_expr_seq*)_loop1_32_rule(p))  // (('@' named_expression NEWLINE))+
3931         )
3932         {
3933             D(fprintf(stderr, "%*c+ decorators[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
3934             _res = a;
3935             if (_res == NULL && PyErr_Occurred()) {
3936                 p->error_indicator = 1;
3937                 D(p->level--);
3938                 return NULL;
3939             }
3940             goto done;
3941         }
3942         p->mark = _mark;
3943         D(fprintf(stderr, "%*c%s decorators[%d-%d]: %s failed!\n", p->level, ' ',
3944                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(('@' named_expression NEWLINE))+"));
3945     }
3946     _res = NULL;
3947   done:
3948     D(p->level--);
3949     return _res;
3950 }
3951 
3952 // class_def: decorators class_def_raw | class_def_raw
3953 static stmt_ty
class_def_rule(Parser * p)3954 class_def_rule(Parser *p)
3955 {
3956     D(p->level++);
3957     if (p->error_indicator) {
3958         D(p->level--);
3959         return NULL;
3960     }
3961     stmt_ty _res = NULL;
3962     int _mark = p->mark;
3963     { // decorators class_def_raw
3964         if (p->error_indicator) {
3965             D(p->level--);
3966             return NULL;
3967         }
3968         D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
3969         asdl_expr_seq* a;
3970         stmt_ty b;
3971         if (
3972             (a = decorators_rule(p))  // decorators
3973             &&
3974             (b = class_def_raw_rule(p))  // class_def_raw
3975         )
3976         {
3977             D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
3978             _res = _PyPegen_class_def_decorators ( p , a , b );
3979             if (_res == NULL && PyErr_Occurred()) {
3980                 p->error_indicator = 1;
3981                 D(p->level--);
3982                 return NULL;
3983             }
3984             goto done;
3985         }
3986         p->mark = _mark;
3987         D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
3988                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators class_def_raw"));
3989     }
3990     { // class_def_raw
3991         if (p->error_indicator) {
3992             D(p->level--);
3993             return NULL;
3994         }
3995         D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
3996         stmt_ty class_def_raw_var;
3997         if (
3998             (class_def_raw_var = class_def_raw_rule(p))  // class_def_raw
3999         )
4000         {
4001             D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
4002             _res = class_def_raw_var;
4003             goto done;
4004         }
4005         p->mark = _mark;
4006         D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
4007                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_def_raw"));
4008     }
4009     _res = NULL;
4010   done:
4011     D(p->level--);
4012     return _res;
4013 }
4014 
4015 // class_def_raw: invalid_class_def_raw | 'class' NAME ['(' arguments? ')'] &&':' block
4016 static stmt_ty
class_def_raw_rule(Parser * p)4017 class_def_raw_rule(Parser *p)
4018 {
4019     D(p->level++);
4020     if (p->error_indicator) {
4021         D(p->level--);
4022         return NULL;
4023     }
4024     stmt_ty _res = NULL;
4025     int _mark = p->mark;
4026     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4027         p->error_indicator = 1;
4028         D(p->level--);
4029         return NULL;
4030     }
4031     int _start_lineno = p->tokens[_mark]->lineno;
4032     UNUSED(_start_lineno); // Only used by EXTRA macro
4033     int _start_col_offset = p->tokens[_mark]->col_offset;
4034     UNUSED(_start_col_offset); // Only used by EXTRA macro
4035     if (p->call_invalid_rules) { // invalid_class_def_raw
4036         if (p->error_indicator) {
4037             D(p->level--);
4038             return NULL;
4039         }
4040         D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
4041         void *invalid_class_def_raw_var;
4042         if (
4043             (invalid_class_def_raw_var = invalid_class_def_raw_rule(p))  // invalid_class_def_raw
4044         )
4045         {
4046             D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
4047             _res = invalid_class_def_raw_var;
4048             goto done;
4049         }
4050         p->mark = _mark;
4051         D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4052                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_def_raw"));
4053     }
4054     { // 'class' NAME ['(' arguments? ')'] &&':' block
4055         if (p->error_indicator) {
4056             D(p->level--);
4057             return NULL;
4058         }
4059         D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] &&':' block"));
4060         Token * _keyword;
4061         Token * _literal;
4062         expr_ty a;
4063         void *b;
4064         asdl_stmt_seq* c;
4065         if (
4066             (_keyword = _PyPegen_expect_token(p, 636))  // token='class'
4067             &&
4068             (a = _PyPegen_name_token(p))  // NAME
4069             &&
4070             (b = _tmp_33_rule(p), !p->error_indicator)  // ['(' arguments? ')']
4071             &&
4072             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
4073             &&
4074             (c = block_rule(p))  // block
4075         )
4076         {
4077             D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] &&':' block"));
4078             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4079             if (_token == NULL) {
4080                 D(p->level--);
4081                 return NULL;
4082             }
4083             int _end_lineno = _token->end_lineno;
4084             UNUSED(_end_lineno); // Only used by EXTRA macro
4085             int _end_col_offset = _token->end_col_offset;
4086             UNUSED(_end_col_offset); // Only used by EXTRA macro
4087             _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 );
4088             if (_res == NULL && PyErr_Occurred()) {
4089                 p->error_indicator = 1;
4090                 D(p->level--);
4091                 return NULL;
4092             }
4093             goto done;
4094         }
4095         p->mark = _mark;
4096         D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4097                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME ['(' arguments? ')'] &&':' block"));
4098     }
4099     _res = NULL;
4100   done:
4101     D(p->level--);
4102     return _res;
4103 }
4104 
4105 // function_def: decorators function_def_raw | function_def_raw
4106 static stmt_ty
function_def_rule(Parser * p)4107 function_def_rule(Parser *p)
4108 {
4109     D(p->level++);
4110     if (p->error_indicator) {
4111         D(p->level--);
4112         return NULL;
4113     }
4114     stmt_ty _res = NULL;
4115     int _mark = p->mark;
4116     { // decorators function_def_raw
4117         if (p->error_indicator) {
4118             D(p->level--);
4119             return NULL;
4120         }
4121         D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
4122         asdl_expr_seq* d;
4123         stmt_ty f;
4124         if (
4125             (d = decorators_rule(p))  // decorators
4126             &&
4127             (f = function_def_raw_rule(p))  // function_def_raw
4128         )
4129         {
4130             D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
4131             _res = _PyPegen_function_def_decorators ( p , d , f );
4132             if (_res == NULL && PyErr_Occurred()) {
4133                 p->error_indicator = 1;
4134                 D(p->level--);
4135                 return NULL;
4136             }
4137             goto done;
4138         }
4139         p->mark = _mark;
4140         D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4141                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators function_def_raw"));
4142     }
4143     { // function_def_raw
4144         if (p->error_indicator) {
4145             D(p->level--);
4146             return NULL;
4147         }
4148         D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
4149         stmt_ty function_def_raw_var;
4150         if (
4151             (function_def_raw_var = function_def_raw_rule(p))  // function_def_raw
4152         )
4153         {
4154             D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
4155             _res = function_def_raw_var;
4156             goto done;
4157         }
4158         p->mark = _mark;
4159         D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
4160                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "function_def_raw"));
4161     }
4162     _res = NULL;
4163   done:
4164     D(p->level--);
4165     return _res;
4166 }
4167 
4168 // function_def_raw:
4169 //     | invalid_def_raw
4170 //     | 'def' NAME &&'(' params? ')' ['->' expression] &&':' func_type_comment? block
4171 //     | ASYNC 'def' NAME &&'(' params? ')' ['->' expression] &&':' func_type_comment? block
4172 static stmt_ty
function_def_raw_rule(Parser * p)4173 function_def_raw_rule(Parser *p)
4174 {
4175     D(p->level++);
4176     if (p->error_indicator) {
4177         D(p->level--);
4178         return NULL;
4179     }
4180     stmt_ty _res = NULL;
4181     int _mark = p->mark;
4182     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4183         p->error_indicator = 1;
4184         D(p->level--);
4185         return NULL;
4186     }
4187     int _start_lineno = p->tokens[_mark]->lineno;
4188     UNUSED(_start_lineno); // Only used by EXTRA macro
4189     int _start_col_offset = p->tokens[_mark]->col_offset;
4190     UNUSED(_start_col_offset); // Only used by EXTRA macro
4191     if (p->call_invalid_rules) { // invalid_def_raw
4192         if (p->error_indicator) {
4193             D(p->level--);
4194             return NULL;
4195         }
4196         D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
4197         void *invalid_def_raw_var;
4198         if (
4199             (invalid_def_raw_var = invalid_def_raw_rule(p))  // invalid_def_raw
4200         )
4201         {
4202             D(fprintf(stderr, "%*c+ function_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
4203             _res = invalid_def_raw_var;
4204             goto done;
4205         }
4206         p->mark = _mark;
4207         D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4208                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_def_raw"));
4209     }
4210     { // 'def' NAME &&'(' params? ')' ['->' expression] &&':' func_type_comment? block
4211         if (p->error_indicator) {
4212             D(p->level--);
4213             return NULL;
4214         }
4215         D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def' NAME &&'(' params? ')' ['->' expression] &&':' func_type_comment? block"));
4216         Token * _keyword;
4217         Token * _literal;
4218         Token * _literal_1;
4219         Token * _literal_2;
4220         void *a;
4221         asdl_stmt_seq* b;
4222         expr_ty n;
4223         void *params;
4224         void *tc;
4225         if (
4226             (_keyword = _PyPegen_expect_token(p, 635))  // token='def'
4227             &&
4228             (n = _PyPegen_name_token(p))  // NAME
4229             &&
4230             (_literal = _PyPegen_expect_forced_token(p, 7, "("))  // forced_token='('
4231             &&
4232             (params = params_rule(p), !p->error_indicator)  // params?
4233             &&
4234             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4235             &&
4236             (a = _tmp_34_rule(p), !p->error_indicator)  // ['->' expression]
4237             &&
4238             (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
4239             &&
4240             (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
4241             &&
4242             (b = block_rule(p))  // block
4243         )
4244         {
4245             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"));
4246             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4247             if (_token == NULL) {
4248                 D(p->level--);
4249                 return NULL;
4250             }
4251             int _end_lineno = _token->end_lineno;
4252             UNUSED(_end_lineno); // Only used by EXTRA macro
4253             int _end_col_offset = _token->end_col_offset;
4254             UNUSED(_end_col_offset); // Only used by EXTRA macro
4255             _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 );
4256             if (_res == NULL && PyErr_Occurred()) {
4257                 p->error_indicator = 1;
4258                 D(p->level--);
4259                 return NULL;
4260             }
4261             goto done;
4262         }
4263         p->mark = _mark;
4264         D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4265                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def' NAME &&'(' params? ')' ['->' expression] &&':' func_type_comment? block"));
4266     }
4267     { // ASYNC 'def' NAME &&'(' params? ')' ['->' expression] &&':' func_type_comment? block
4268         if (p->error_indicator) {
4269             D(p->level--);
4270             return NULL;
4271         }
4272         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"));
4273         Token * _keyword;
4274         Token * _literal;
4275         Token * _literal_1;
4276         Token * _literal_2;
4277         void *a;
4278         Token * async_var;
4279         asdl_stmt_seq* b;
4280         expr_ty n;
4281         void *params;
4282         void *tc;
4283         if (
4284             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
4285             &&
4286             (_keyword = _PyPegen_expect_token(p, 635))  // token='def'
4287             &&
4288             (n = _PyPegen_name_token(p))  // NAME
4289             &&
4290             (_literal = _PyPegen_expect_forced_token(p, 7, "("))  // forced_token='('
4291             &&
4292             (params = params_rule(p), !p->error_indicator)  // params?
4293             &&
4294             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4295             &&
4296             (a = _tmp_35_rule(p), !p->error_indicator)  // ['->' expression]
4297             &&
4298             (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
4299             &&
4300             (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
4301             &&
4302             (b = block_rule(p))  // block
4303         )
4304         {
4305             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"));
4306             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4307             if (_token == NULL) {
4308                 D(p->level--);
4309                 return NULL;
4310             }
4311             int _end_lineno = _token->end_lineno;
4312             UNUSED(_end_lineno); // Only used by EXTRA macro
4313             int _end_col_offset = _token->end_col_offset;
4314             UNUSED(_end_col_offset); // Only used by EXTRA macro
4315             _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 ) );
4316             if (_res == NULL && PyErr_Occurred()) {
4317                 p->error_indicator = 1;
4318                 D(p->level--);
4319                 return NULL;
4320             }
4321             goto done;
4322         }
4323         p->mark = _mark;
4324         D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
4325                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'def' NAME &&'(' params? ')' ['->' expression] &&':' func_type_comment? block"));
4326     }
4327     _res = NULL;
4328   done:
4329     D(p->level--);
4330     return _res;
4331 }
4332 
4333 // params: invalid_parameters | parameters
4334 static arguments_ty
params_rule(Parser * p)4335 params_rule(Parser *p)
4336 {
4337     D(p->level++);
4338     if (p->error_indicator) {
4339         D(p->level--);
4340         return NULL;
4341     }
4342     arguments_ty _res = NULL;
4343     int _mark = p->mark;
4344     if (p->call_invalid_rules) { // invalid_parameters
4345         if (p->error_indicator) {
4346             D(p->level--);
4347             return NULL;
4348         }
4349         D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
4350         void *invalid_parameters_var;
4351         if (
4352             (invalid_parameters_var = invalid_parameters_rule(p))  // invalid_parameters
4353         )
4354         {
4355             D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
4356             _res = invalid_parameters_var;
4357             goto done;
4358         }
4359         p->mark = _mark;
4360         D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
4361                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_parameters"));
4362     }
4363     { // parameters
4364         if (p->error_indicator) {
4365             D(p->level--);
4366             return NULL;
4367         }
4368         D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "parameters"));
4369         arguments_ty parameters_var;
4370         if (
4371             (parameters_var = parameters_rule(p))  // parameters
4372         )
4373         {
4374             D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "parameters"));
4375             _res = parameters_var;
4376             goto done;
4377         }
4378         p->mark = _mark;
4379         D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
4380                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "parameters"));
4381     }
4382     _res = NULL;
4383   done:
4384     D(p->level--);
4385     return _res;
4386 }
4387 
4388 // parameters:
4389 //     | slash_no_default param_no_default* param_with_default* star_etc?
4390 //     | slash_with_default param_with_default* star_etc?
4391 //     | param_no_default+ param_with_default* star_etc?
4392 //     | param_with_default+ star_etc?
4393 //     | star_etc
4394 static arguments_ty
parameters_rule(Parser * p)4395 parameters_rule(Parser *p)
4396 {
4397     D(p->level++);
4398     if (p->error_indicator) {
4399         D(p->level--);
4400         return NULL;
4401     }
4402     arguments_ty _res = NULL;
4403     int _mark = p->mark;
4404     { // slash_no_default param_no_default* param_with_default* star_etc?
4405         if (p->error_indicator) {
4406             D(p->level--);
4407             return NULL;
4408         }
4409         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?"));
4410         asdl_arg_seq* a;
4411         asdl_arg_seq* b;
4412         asdl_seq * c;
4413         void *d;
4414         if (
4415             (a = slash_no_default_rule(p))  // slash_no_default
4416             &&
4417             (b = (asdl_arg_seq*)_loop0_36_rule(p))  // param_no_default*
4418             &&
4419             (c = _loop0_37_rule(p))  // param_with_default*
4420             &&
4421             (d = star_etc_rule(p), !p->error_indicator)  // star_etc?
4422         )
4423         {
4424             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?"));
4425             _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
4426             if (_res == NULL && PyErr_Occurred()) {
4427                 p->error_indicator = 1;
4428                 D(p->level--);
4429                 return NULL;
4430             }
4431             goto done;
4432         }
4433         p->mark = _mark;
4434         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4435                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default param_no_default* param_with_default* star_etc?"));
4436     }
4437     { // slash_with_default param_with_default* star_etc?
4438         if (p->error_indicator) {
4439             D(p->level--);
4440             return NULL;
4441         }
4442         D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4443         SlashWithDefault* a;
4444         asdl_seq * b;
4445         void *c;
4446         if (
4447             (a = slash_with_default_rule(p))  // slash_with_default
4448             &&
4449             (b = _loop0_38_rule(p))  // param_with_default*
4450             &&
4451             (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
4452         )
4453         {
4454             D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4455             _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
4456             if (_res == NULL && PyErr_Occurred()) {
4457                 p->error_indicator = 1;
4458                 D(p->level--);
4459                 return NULL;
4460             }
4461             goto done;
4462         }
4463         p->mark = _mark;
4464         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4465                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
4466     }
4467     { // param_no_default+ param_with_default* star_etc?
4468         if (p->error_indicator) {
4469             D(p->level--);
4470             return NULL;
4471         }
4472         D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4473         asdl_arg_seq* a;
4474         asdl_seq * b;
4475         void *c;
4476         if (
4477             (a = (asdl_arg_seq*)_loop1_39_rule(p))  // param_no_default+
4478             &&
4479             (b = _loop0_40_rule(p))  // param_with_default*
4480             &&
4481             (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
4482         )
4483         {
4484             D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4485             _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
4486             if (_res == NULL && PyErr_Occurred()) {
4487                 p->error_indicator = 1;
4488                 D(p->level--);
4489                 return NULL;
4490             }
4491             goto done;
4492         }
4493         p->mark = _mark;
4494         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4495                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
4496     }
4497     { // param_with_default+ star_etc?
4498         if (p->error_indicator) {
4499             D(p->level--);
4500             return NULL;
4501         }
4502         D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
4503         asdl_seq * a;
4504         void *b;
4505         if (
4506             (a = _loop1_41_rule(p))  // param_with_default+
4507             &&
4508             (b = star_etc_rule(p), !p->error_indicator)  // star_etc?
4509         )
4510         {
4511             D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
4512             _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
4513             if (_res == NULL && PyErr_Occurred()) {
4514                 p->error_indicator = 1;
4515                 D(p->level--);
4516                 return NULL;
4517             }
4518             goto done;
4519         }
4520         p->mark = _mark;
4521         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4522                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+ star_etc?"));
4523     }
4524     { // star_etc
4525         if (p->error_indicator) {
4526             D(p->level--);
4527             return NULL;
4528         }
4529         D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_etc"));
4530         StarEtc* a;
4531         if (
4532             (a = star_etc_rule(p))  // star_etc
4533         )
4534         {
4535             D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_etc"));
4536             _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
4537             if (_res == NULL && PyErr_Occurred()) {
4538                 p->error_indicator = 1;
4539                 D(p->level--);
4540                 return NULL;
4541             }
4542             goto done;
4543         }
4544         p->mark = _mark;
4545         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
4546                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_etc"));
4547     }
4548     _res = NULL;
4549   done:
4550     D(p->level--);
4551     return _res;
4552 }
4553 
4554 // slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
4555 static asdl_arg_seq*
slash_no_default_rule(Parser * p)4556 slash_no_default_rule(Parser *p)
4557 {
4558     D(p->level++);
4559     if (p->error_indicator) {
4560         D(p->level--);
4561         return NULL;
4562     }
4563     asdl_arg_seq* _res = NULL;
4564     int _mark = p->mark;
4565     { // param_no_default+ '/' ','
4566         if (p->error_indicator) {
4567             D(p->level--);
4568             return NULL;
4569         }
4570         D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
4571         Token * _literal;
4572         Token * _literal_1;
4573         asdl_arg_seq* a;
4574         if (
4575             (a = (asdl_arg_seq*)_loop1_42_rule(p))  // param_no_default+
4576             &&
4577             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
4578             &&
4579             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
4580         )
4581         {
4582             D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
4583             _res = a;
4584             if (_res == NULL && PyErr_Occurred()) {
4585                 p->error_indicator = 1;
4586                 D(p->level--);
4587                 return NULL;
4588             }
4589             goto done;
4590         }
4591         p->mark = _mark;
4592         D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
4593                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' ','"));
4594     }
4595     { // param_no_default+ '/' &')'
4596         if (p->error_indicator) {
4597             D(p->level--);
4598             return NULL;
4599         }
4600         D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
4601         Token * _literal;
4602         asdl_arg_seq* a;
4603         if (
4604             (a = (asdl_arg_seq*)_loop1_43_rule(p))  // param_no_default+
4605             &&
4606             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
4607             &&
4608             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
4609         )
4610         {
4611             D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
4612             _res = a;
4613             if (_res == NULL && PyErr_Occurred()) {
4614                 p->error_indicator = 1;
4615                 D(p->level--);
4616                 return NULL;
4617             }
4618             goto done;
4619         }
4620         p->mark = _mark;
4621         D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
4622                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' &')'"));
4623     }
4624     _res = NULL;
4625   done:
4626     D(p->level--);
4627     return _res;
4628 }
4629 
4630 // slash_with_default:
4631 //     | param_no_default* param_with_default+ '/' ','
4632 //     | param_no_default* param_with_default+ '/' &')'
4633 static SlashWithDefault*
slash_with_default_rule(Parser * p)4634 slash_with_default_rule(Parser *p)
4635 {
4636     D(p->level++);
4637     if (p->error_indicator) {
4638         D(p->level--);
4639         return NULL;
4640     }
4641     SlashWithDefault* _res = NULL;
4642     int _mark = p->mark;
4643     { // param_no_default* param_with_default+ '/' ','
4644         if (p->error_indicator) {
4645             D(p->level--);
4646             return NULL;
4647         }
4648         D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
4649         Token * _literal;
4650         Token * _literal_1;
4651         asdl_seq * a;
4652         asdl_seq * b;
4653         if (
4654             (a = _loop0_44_rule(p))  // param_no_default*
4655             &&
4656             (b = _loop1_45_rule(p))  // param_with_default+
4657             &&
4658             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
4659             &&
4660             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
4661         )
4662         {
4663             D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
4664             _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
4665             if (_res == NULL && PyErr_Occurred()) {
4666                 p->error_indicator = 1;
4667                 D(p->level--);
4668                 return NULL;
4669             }
4670             goto done;
4671         }
4672         p->mark = _mark;
4673         D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
4674                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
4675     }
4676     { // param_no_default* param_with_default+ '/' &')'
4677         if (p->error_indicator) {
4678             D(p->level--);
4679             return NULL;
4680         }
4681         D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
4682         Token * _literal;
4683         asdl_seq * a;
4684         asdl_seq * b;
4685         if (
4686             (a = _loop0_46_rule(p))  // param_no_default*
4687             &&
4688             (b = _loop1_47_rule(p))  // param_with_default+
4689             &&
4690             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
4691             &&
4692             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
4693         )
4694         {
4695             D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
4696             _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
4697             if (_res == NULL && PyErr_Occurred()) {
4698                 p->error_indicator = 1;
4699                 D(p->level--);
4700                 return NULL;
4701             }
4702             goto done;
4703         }
4704         p->mark = _mark;
4705         D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
4706                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
4707     }
4708     _res = NULL;
4709   done:
4710     D(p->level--);
4711     return _res;
4712 }
4713 
4714 // star_etc:
4715 //     | '*' param_no_default param_maybe_default* kwds?
4716 //     | '*' ',' param_maybe_default+ kwds?
4717 //     | kwds
4718 //     | invalid_star_etc
4719 static StarEtc*
star_etc_rule(Parser * p)4720 star_etc_rule(Parser *p)
4721 {
4722     D(p->level++);
4723     if (p->error_indicator) {
4724         D(p->level--);
4725         return NULL;
4726     }
4727     StarEtc* _res = NULL;
4728     int _mark = p->mark;
4729     { // '*' param_no_default param_maybe_default* kwds?
4730         if (p->error_indicator) {
4731             D(p->level--);
4732             return NULL;
4733         }
4734         D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
4735         Token * _literal;
4736         arg_ty a;
4737         asdl_seq * b;
4738         void *c;
4739         if (
4740             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
4741             &&
4742             (a = param_no_default_rule(p))  // param_no_default
4743             &&
4744             (b = _loop0_48_rule(p))  // param_maybe_default*
4745             &&
4746             (c = kwds_rule(p), !p->error_indicator)  // kwds?
4747         )
4748         {
4749             D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
4750             _res = _PyPegen_star_etc ( p , a , b , c );
4751             if (_res == NULL && PyErr_Occurred()) {
4752                 p->error_indicator = 1;
4753                 D(p->level--);
4754                 return NULL;
4755             }
4756             goto done;
4757         }
4758         p->mark = _mark;
4759         D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
4760                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
4761     }
4762     { // '*' ',' param_maybe_default+ kwds?
4763         if (p->error_indicator) {
4764             D(p->level--);
4765             return NULL;
4766         }
4767         D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
4768         Token * _literal;
4769         Token * _literal_1;
4770         asdl_seq * b;
4771         void *c;
4772         if (
4773             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
4774             &&
4775             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
4776             &&
4777             (b = _loop1_49_rule(p))  // param_maybe_default+
4778             &&
4779             (c = kwds_rule(p), !p->error_indicator)  // kwds?
4780         )
4781         {
4782             D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
4783             _res = _PyPegen_star_etc ( p , NULL , b , c );
4784             if (_res == NULL && PyErr_Occurred()) {
4785                 p->error_indicator = 1;
4786                 D(p->level--);
4787                 return NULL;
4788             }
4789             goto done;
4790         }
4791         p->mark = _mark;
4792         D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
4793                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
4794     }
4795     { // kwds
4796         if (p->error_indicator) {
4797             D(p->level--);
4798             return NULL;
4799         }
4800         D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwds"));
4801         arg_ty a;
4802         if (
4803             (a = kwds_rule(p))  // kwds
4804         )
4805         {
4806             D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwds"));
4807             _res = _PyPegen_star_etc ( p , NULL , NULL , a );
4808             if (_res == NULL && PyErr_Occurred()) {
4809                 p->error_indicator = 1;
4810                 D(p->level--);
4811                 return NULL;
4812             }
4813             goto done;
4814         }
4815         p->mark = _mark;
4816         D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
4817                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwds"));
4818     }
4819     if (p->call_invalid_rules) { // invalid_star_etc
4820         if (p->error_indicator) {
4821             D(p->level--);
4822             return NULL;
4823         }
4824         D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
4825         void *invalid_star_etc_var;
4826         if (
4827             (invalid_star_etc_var = invalid_star_etc_rule(p))  // invalid_star_etc
4828         )
4829         {
4830             D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
4831             _res = invalid_star_etc_var;
4832             goto done;
4833         }
4834         p->mark = _mark;
4835         D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
4836                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_star_etc"));
4837     }
4838     _res = NULL;
4839   done:
4840     D(p->level--);
4841     return _res;
4842 }
4843 
4844 // kwds: '**' param_no_default
4845 static arg_ty
kwds_rule(Parser * p)4846 kwds_rule(Parser *p)
4847 {
4848     D(p->level++);
4849     if (p->error_indicator) {
4850         D(p->level--);
4851         return NULL;
4852     }
4853     arg_ty _res = NULL;
4854     int _mark = p->mark;
4855     { // '**' param_no_default
4856         if (p->error_indicator) {
4857             D(p->level--);
4858             return NULL;
4859         }
4860         D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
4861         Token * _literal;
4862         arg_ty a;
4863         if (
4864             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
4865             &&
4866             (a = param_no_default_rule(p))  // param_no_default
4867         )
4868         {
4869             D(fprintf(stderr, "%*c+ kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
4870             _res = a;
4871             if (_res == NULL && PyErr_Occurred()) {
4872                 p->error_indicator = 1;
4873                 D(p->level--);
4874                 return NULL;
4875             }
4876             goto done;
4877         }
4878         p->mark = _mark;
4879         D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
4880                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param_no_default"));
4881     }
4882     _res = NULL;
4883   done:
4884     D(p->level--);
4885     return _res;
4886 }
4887 
4888 // param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
4889 static arg_ty
param_no_default_rule(Parser * p)4890 param_no_default_rule(Parser *p)
4891 {
4892     D(p->level++);
4893     if (p->error_indicator) {
4894         D(p->level--);
4895         return NULL;
4896     }
4897     arg_ty _res = NULL;
4898     int _mark = p->mark;
4899     { // param ',' TYPE_COMMENT?
4900         if (p->error_indicator) {
4901             D(p->level--);
4902             return NULL;
4903         }
4904         D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
4905         Token * _literal;
4906         arg_ty a;
4907         void *tc;
4908         if (
4909             (a = param_rule(p))  // param
4910             &&
4911             (_literal = _PyPegen_expect_token(p, 12))  // token=','
4912             &&
4913             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
4914         )
4915         {
4916             D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
4917             _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4918             if (_res == NULL && PyErr_Occurred()) {
4919                 p->error_indicator = 1;
4920                 D(p->level--);
4921                 return NULL;
4922             }
4923             goto done;
4924         }
4925         p->mark = _mark;
4926         D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
4927                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param ',' TYPE_COMMENT?"));
4928     }
4929     { // param TYPE_COMMENT? &')'
4930         if (p->error_indicator) {
4931             D(p->level--);
4932             return NULL;
4933         }
4934         D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
4935         arg_ty a;
4936         void *tc;
4937         if (
4938             (a = param_rule(p))  // param
4939             &&
4940             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
4941             &&
4942             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
4943         )
4944         {
4945             D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
4946             _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
4947             if (_res == NULL && PyErr_Occurred()) {
4948                 p->error_indicator = 1;
4949                 D(p->level--);
4950                 return NULL;
4951             }
4952             goto done;
4953         }
4954         p->mark = _mark;
4955         D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
4956                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param TYPE_COMMENT? &')'"));
4957     }
4958     _res = NULL;
4959   done:
4960     D(p->level--);
4961     return _res;
4962 }
4963 
4964 // param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
4965 static NameDefaultPair*
param_with_default_rule(Parser * p)4966 param_with_default_rule(Parser *p)
4967 {
4968     D(p->level++);
4969     if (p->error_indicator) {
4970         D(p->level--);
4971         return NULL;
4972     }
4973     NameDefaultPair* _res = NULL;
4974     int _mark = p->mark;
4975     { // param default ',' TYPE_COMMENT?
4976         if (p->error_indicator) {
4977             D(p->level--);
4978             return NULL;
4979         }
4980         D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
4981         Token * _literal;
4982         arg_ty a;
4983         expr_ty c;
4984         void *tc;
4985         if (
4986             (a = param_rule(p))  // param
4987             &&
4988             (c = default_rule(p))  // default
4989             &&
4990             (_literal = _PyPegen_expect_token(p, 12))  // token=','
4991             &&
4992             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
4993         )
4994         {
4995             D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
4996             _res = _PyPegen_name_default_pair ( p , a , c , tc );
4997             if (_res == NULL && PyErr_Occurred()) {
4998                 p->error_indicator = 1;
4999                 D(p->level--);
5000                 return NULL;
5001             }
5002             goto done;
5003         }
5004         p->mark = _mark;
5005         D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5006                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default ',' TYPE_COMMENT?"));
5007     }
5008     { // param default TYPE_COMMENT? &')'
5009         if (p->error_indicator) {
5010             D(p->level--);
5011             return NULL;
5012         }
5013         D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5014         arg_ty a;
5015         expr_ty c;
5016         void *tc;
5017         if (
5018             (a = param_rule(p))  // param
5019             &&
5020             (c = default_rule(p))  // default
5021             &&
5022             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5023             &&
5024             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5025         )
5026         {
5027             D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5028             _res = _PyPegen_name_default_pair ( p , a , c , tc );
5029             if (_res == NULL && PyErr_Occurred()) {
5030                 p->error_indicator = 1;
5031                 D(p->level--);
5032                 return NULL;
5033             }
5034             goto done;
5035         }
5036         p->mark = _mark;
5037         D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
5038                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default TYPE_COMMENT? &')'"));
5039     }
5040     _res = NULL;
5041   done:
5042     D(p->level--);
5043     return _res;
5044 }
5045 
5046 // param_maybe_default:
5047 //     | param default? ',' TYPE_COMMENT?
5048 //     | param default? TYPE_COMMENT? &')'
5049 static NameDefaultPair*
param_maybe_default_rule(Parser * p)5050 param_maybe_default_rule(Parser *p)
5051 {
5052     D(p->level++);
5053     if (p->error_indicator) {
5054         D(p->level--);
5055         return NULL;
5056     }
5057     NameDefaultPair* _res = NULL;
5058     int _mark = p->mark;
5059     { // param default? ',' TYPE_COMMENT?
5060         if (p->error_indicator) {
5061             D(p->level--);
5062             return NULL;
5063         }
5064         D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5065         Token * _literal;
5066         arg_ty a;
5067         void *c;
5068         void *tc;
5069         if (
5070             (a = param_rule(p))  // param
5071             &&
5072             (c = default_rule(p), !p->error_indicator)  // default?
5073             &&
5074             (_literal = _PyPegen_expect_token(p, 12))  // token=','
5075             &&
5076             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5077         )
5078         {
5079             D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5080             _res = _PyPegen_name_default_pair ( p , a , c , tc );
5081             if (_res == NULL && PyErr_Occurred()) {
5082                 p->error_indicator = 1;
5083                 D(p->level--);
5084                 return NULL;
5085             }
5086             goto done;
5087         }
5088         p->mark = _mark;
5089         D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5090                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
5091     }
5092     { // param default? TYPE_COMMENT? &')'
5093         if (p->error_indicator) {
5094             D(p->level--);
5095             return NULL;
5096         }
5097         D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5098         arg_ty a;
5099         void *c;
5100         void *tc;
5101         if (
5102             (a = param_rule(p))  // param
5103             &&
5104             (c = default_rule(p), !p->error_indicator)  // default?
5105             &&
5106             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5107             &&
5108             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
5109         )
5110         {
5111             D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5112             _res = _PyPegen_name_default_pair ( p , a , c , tc );
5113             if (_res == NULL && PyErr_Occurred()) {
5114                 p->error_indicator = 1;
5115                 D(p->level--);
5116                 return NULL;
5117             }
5118             goto done;
5119         }
5120         p->mark = _mark;
5121         D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
5122                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
5123     }
5124     _res = NULL;
5125   done:
5126     D(p->level--);
5127     return _res;
5128 }
5129 
5130 // param: NAME annotation?
5131 static arg_ty
param_rule(Parser * p)5132 param_rule(Parser *p)
5133 {
5134     D(p->level++);
5135     if (p->error_indicator) {
5136         D(p->level--);
5137         return NULL;
5138     }
5139     arg_ty _res = NULL;
5140     int _mark = p->mark;
5141     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5142         p->error_indicator = 1;
5143         D(p->level--);
5144         return NULL;
5145     }
5146     int _start_lineno = p->tokens[_mark]->lineno;
5147     UNUSED(_start_lineno); // Only used by EXTRA macro
5148     int _start_col_offset = p->tokens[_mark]->col_offset;
5149     UNUSED(_start_col_offset); // Only used by EXTRA macro
5150     { // NAME annotation?
5151         if (p->error_indicator) {
5152             D(p->level--);
5153             return NULL;
5154         }
5155         D(fprintf(stderr, "%*c> param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
5156         expr_ty a;
5157         void *b;
5158         if (
5159             (a = _PyPegen_name_token(p))  // NAME
5160             &&
5161             (b = annotation_rule(p), !p->error_indicator)  // annotation?
5162         )
5163         {
5164             D(fprintf(stderr, "%*c+ param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
5165             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5166             if (_token == NULL) {
5167                 D(p->level--);
5168                 return NULL;
5169             }
5170             int _end_lineno = _token->end_lineno;
5171             UNUSED(_end_lineno); // Only used by EXTRA macro
5172             int _end_col_offset = _token->end_col_offset;
5173             UNUSED(_end_col_offset); // Only used by EXTRA macro
5174             _res = _PyAST_arg ( a -> v . Name . id , b , NULL , EXTRA );
5175             if (_res == NULL && PyErr_Occurred()) {
5176                 p->error_indicator = 1;
5177                 D(p->level--);
5178                 return NULL;
5179             }
5180             goto done;
5181         }
5182         p->mark = _mark;
5183         D(fprintf(stderr, "%*c%s param[%d-%d]: %s failed!\n", p->level, ' ',
5184                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME annotation?"));
5185     }
5186     _res = NULL;
5187   done:
5188     D(p->level--);
5189     return _res;
5190 }
5191 
5192 // annotation: ':' expression
5193 static expr_ty
annotation_rule(Parser * p)5194 annotation_rule(Parser *p)
5195 {
5196     D(p->level++);
5197     if (p->error_indicator) {
5198         D(p->level--);
5199         return NULL;
5200     }
5201     expr_ty _res = NULL;
5202     int _mark = p->mark;
5203     { // ':' expression
5204         if (p->error_indicator) {
5205             D(p->level--);
5206             return NULL;
5207         }
5208         D(fprintf(stderr, "%*c> annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
5209         Token * _literal;
5210         expr_ty a;
5211         if (
5212             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5213             &&
5214             (a = expression_rule(p))  // expression
5215         )
5216         {
5217             D(fprintf(stderr, "%*c+ annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
5218             _res = a;
5219             if (_res == NULL && PyErr_Occurred()) {
5220                 p->error_indicator = 1;
5221                 D(p->level--);
5222                 return NULL;
5223             }
5224             goto done;
5225         }
5226         p->mark = _mark;
5227         D(fprintf(stderr, "%*c%s annotation[%d-%d]: %s failed!\n", p->level, ' ',
5228                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
5229     }
5230     _res = NULL;
5231   done:
5232     D(p->level--);
5233     return _res;
5234 }
5235 
5236 // default: '=' expression
5237 static expr_ty
default_rule(Parser * p)5238 default_rule(Parser *p)
5239 {
5240     D(p->level++);
5241     if (p->error_indicator) {
5242         D(p->level--);
5243         return NULL;
5244     }
5245     expr_ty _res = NULL;
5246     int _mark = p->mark;
5247     { // '=' expression
5248         if (p->error_indicator) {
5249             D(p->level--);
5250             return NULL;
5251         }
5252         D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
5253         Token * _literal;
5254         expr_ty a;
5255         if (
5256             (_literal = _PyPegen_expect_token(p, 22))  // token='='
5257             &&
5258             (a = expression_rule(p))  // expression
5259         )
5260         {
5261             D(fprintf(stderr, "%*c+ default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
5262             _res = a;
5263             if (_res == NULL && PyErr_Occurred()) {
5264                 p->error_indicator = 1;
5265                 D(p->level--);
5266                 return NULL;
5267             }
5268             goto done;
5269         }
5270         p->mark = _mark;
5271         D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
5272                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
5273     }
5274     _res = NULL;
5275   done:
5276     D(p->level--);
5277     return _res;
5278 }
5279 
5280 // if_stmt:
5281 //     | invalid_if_stmt
5282 //     | 'if' named_expression ':' block elif_stmt
5283 //     | 'if' named_expression ':' block else_block?
5284 static stmt_ty
if_stmt_rule(Parser * p)5285 if_stmt_rule(Parser *p)
5286 {
5287     D(p->level++);
5288     if (p->error_indicator) {
5289         D(p->level--);
5290         return NULL;
5291     }
5292     stmt_ty _res = NULL;
5293     int _mark = p->mark;
5294     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5295         p->error_indicator = 1;
5296         D(p->level--);
5297         return NULL;
5298     }
5299     int _start_lineno = p->tokens[_mark]->lineno;
5300     UNUSED(_start_lineno); // Only used by EXTRA macro
5301     int _start_col_offset = p->tokens[_mark]->col_offset;
5302     UNUSED(_start_col_offset); // Only used by EXTRA macro
5303     if (p->call_invalid_rules) { // invalid_if_stmt
5304         if (p->error_indicator) {
5305             D(p->level--);
5306             return NULL;
5307         }
5308         D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_if_stmt"));
5309         void *invalid_if_stmt_var;
5310         if (
5311             (invalid_if_stmt_var = invalid_if_stmt_rule(p))  // invalid_if_stmt
5312         )
5313         {
5314             D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_if_stmt"));
5315             _res = invalid_if_stmt_var;
5316             goto done;
5317         }
5318         p->mark = _mark;
5319         D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5320                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_if_stmt"));
5321     }
5322     { // 'if' named_expression ':' block elif_stmt
5323         if (p->error_indicator) {
5324             D(p->level--);
5325             return NULL;
5326         }
5327         D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
5328         Token * _keyword;
5329         Token * _literal;
5330         expr_ty a;
5331         asdl_stmt_seq* b;
5332         stmt_ty c;
5333         if (
5334             (_keyword = _PyPegen_expect_token(p, 627))  // token='if'
5335             &&
5336             (a = named_expression_rule(p))  // named_expression
5337             &&
5338             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5339             &&
5340             (b = block_rule(p))  // block
5341             &&
5342             (c = elif_stmt_rule(p))  // elif_stmt
5343         )
5344         {
5345             D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
5346             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5347             if (_token == NULL) {
5348                 D(p->level--);
5349                 return NULL;
5350             }
5351             int _end_lineno = _token->end_lineno;
5352             UNUSED(_end_lineno); // Only used by EXTRA macro
5353             int _end_col_offset = _token->end_col_offset;
5354             UNUSED(_end_col_offset); // Only used by EXTRA macro
5355             _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq* , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
5356             if (_res == NULL && PyErr_Occurred()) {
5357                 p->error_indicator = 1;
5358                 D(p->level--);
5359                 return NULL;
5360             }
5361             goto done;
5362         }
5363         p->mark = _mark;
5364         D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5365                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
5366     }
5367     { // 'if' named_expression ':' block else_block?
5368         if (p->error_indicator) {
5369             D(p->level--);
5370             return NULL;
5371         }
5372         D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
5373         Token * _keyword;
5374         Token * _literal;
5375         expr_ty a;
5376         asdl_stmt_seq* b;
5377         void *c;
5378         if (
5379             (_keyword = _PyPegen_expect_token(p, 627))  // token='if'
5380             &&
5381             (a = named_expression_rule(p))  // named_expression
5382             &&
5383             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5384             &&
5385             (b = block_rule(p))  // block
5386             &&
5387             (c = else_block_rule(p), !p->error_indicator)  // else_block?
5388         )
5389         {
5390             D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
5391             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5392             if (_token == NULL) {
5393                 D(p->level--);
5394                 return NULL;
5395             }
5396             int _end_lineno = _token->end_lineno;
5397             UNUSED(_end_lineno); // Only used by EXTRA macro
5398             int _end_col_offset = _token->end_col_offset;
5399             UNUSED(_end_col_offset); // Only used by EXTRA macro
5400             _res = _PyAST_If ( a , b , c , EXTRA );
5401             if (_res == NULL && PyErr_Occurred()) {
5402                 p->error_indicator = 1;
5403                 D(p->level--);
5404                 return NULL;
5405             }
5406             goto done;
5407         }
5408         p->mark = _mark;
5409         D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5410                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block else_block?"));
5411     }
5412     _res = NULL;
5413   done:
5414     D(p->level--);
5415     return _res;
5416 }
5417 
5418 // elif_stmt:
5419 //     | invalid_elif_stmt
5420 //     | 'elif' named_expression ':' block elif_stmt
5421 //     | 'elif' named_expression ':' block else_block?
5422 static stmt_ty
elif_stmt_rule(Parser * p)5423 elif_stmt_rule(Parser *p)
5424 {
5425     D(p->level++);
5426     if (p->error_indicator) {
5427         D(p->level--);
5428         return NULL;
5429     }
5430     stmt_ty _res = NULL;
5431     int _mark = p->mark;
5432     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5433         p->error_indicator = 1;
5434         D(p->level--);
5435         return NULL;
5436     }
5437     int _start_lineno = p->tokens[_mark]->lineno;
5438     UNUSED(_start_lineno); // Only used by EXTRA macro
5439     int _start_col_offset = p->tokens[_mark]->col_offset;
5440     UNUSED(_start_col_offset); // Only used by EXTRA macro
5441     if (p->call_invalid_rules) { // invalid_elif_stmt
5442         if (p->error_indicator) {
5443             D(p->level--);
5444             return NULL;
5445         }
5446         D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_elif_stmt"));
5447         void *invalid_elif_stmt_var;
5448         if (
5449             (invalid_elif_stmt_var = invalid_elif_stmt_rule(p))  // invalid_elif_stmt
5450         )
5451         {
5452             D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_elif_stmt"));
5453             _res = invalid_elif_stmt_var;
5454             goto done;
5455         }
5456         p->mark = _mark;
5457         D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5458                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_elif_stmt"));
5459     }
5460     { // 'elif' named_expression ':' block elif_stmt
5461         if (p->error_indicator) {
5462             D(p->level--);
5463             return NULL;
5464         }
5465         D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
5466         Token * _keyword;
5467         Token * _literal;
5468         expr_ty a;
5469         asdl_stmt_seq* b;
5470         stmt_ty c;
5471         if (
5472             (_keyword = _PyPegen_expect_token(p, 629))  // token='elif'
5473             &&
5474             (a = named_expression_rule(p))  // named_expression
5475             &&
5476             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5477             &&
5478             (b = block_rule(p))  // block
5479             &&
5480             (c = elif_stmt_rule(p))  // elif_stmt
5481         )
5482         {
5483             D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
5484             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5485             if (_token == NULL) {
5486                 D(p->level--);
5487                 return NULL;
5488             }
5489             int _end_lineno = _token->end_lineno;
5490             UNUSED(_end_lineno); // Only used by EXTRA macro
5491             int _end_col_offset = _token->end_col_offset;
5492             UNUSED(_end_col_offset); // Only used by EXTRA macro
5493             _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq* , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
5494             if (_res == NULL && PyErr_Occurred()) {
5495                 p->error_indicator = 1;
5496                 D(p->level--);
5497                 return NULL;
5498             }
5499             goto done;
5500         }
5501         p->mark = _mark;
5502         D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5503                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
5504     }
5505     { // 'elif' named_expression ':' block else_block?
5506         if (p->error_indicator) {
5507             D(p->level--);
5508             return NULL;
5509         }
5510         D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
5511         Token * _keyword;
5512         Token * _literal;
5513         expr_ty a;
5514         asdl_stmt_seq* b;
5515         void *c;
5516         if (
5517             (_keyword = _PyPegen_expect_token(p, 629))  // token='elif'
5518             &&
5519             (a = named_expression_rule(p))  // named_expression
5520             &&
5521             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5522             &&
5523             (b = block_rule(p))  // block
5524             &&
5525             (c = else_block_rule(p), !p->error_indicator)  // else_block?
5526         )
5527         {
5528             D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
5529             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5530             if (_token == NULL) {
5531                 D(p->level--);
5532                 return NULL;
5533             }
5534             int _end_lineno = _token->end_lineno;
5535             UNUSED(_end_lineno); // Only used by EXTRA macro
5536             int _end_col_offset = _token->end_col_offset;
5537             UNUSED(_end_col_offset); // Only used by EXTRA macro
5538             _res = _PyAST_If ( a , b , c , EXTRA );
5539             if (_res == NULL && PyErr_Occurred()) {
5540                 p->error_indicator = 1;
5541                 D(p->level--);
5542                 return NULL;
5543             }
5544             goto done;
5545         }
5546         p->mark = _mark;
5547         D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5548                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block else_block?"));
5549     }
5550     _res = NULL;
5551   done:
5552     D(p->level--);
5553     return _res;
5554 }
5555 
5556 // else_block: invalid_else_stmt | 'else' &&':' block
5557 static asdl_stmt_seq*
else_block_rule(Parser * p)5558 else_block_rule(Parser *p)
5559 {
5560     D(p->level++);
5561     if (p->error_indicator) {
5562         D(p->level--);
5563         return NULL;
5564     }
5565     asdl_stmt_seq* _res = NULL;
5566     int _mark = p->mark;
5567     if (p->call_invalid_rules) { // invalid_else_stmt
5568         if (p->error_indicator) {
5569             D(p->level--);
5570             return NULL;
5571         }
5572         D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
5573         void *invalid_else_stmt_var;
5574         if (
5575             (invalid_else_stmt_var = invalid_else_stmt_rule(p))  // invalid_else_stmt
5576         )
5577         {
5578             D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
5579             _res = invalid_else_stmt_var;
5580             goto done;
5581         }
5582         p->mark = _mark;
5583         D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
5584                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_else_stmt"));
5585     }
5586     { // 'else' &&':' block
5587         if (p->error_indicator) {
5588             D(p->level--);
5589             return NULL;
5590         }
5591         D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
5592         Token * _keyword;
5593         Token * _literal;
5594         asdl_stmt_seq* b;
5595         if (
5596             (_keyword = _PyPegen_expect_token(p, 630))  // token='else'
5597             &&
5598             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
5599             &&
5600             (b = block_rule(p))  // block
5601         )
5602         {
5603             D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
5604             _res = b;
5605             if (_res == NULL && PyErr_Occurred()) {
5606                 p->error_indicator = 1;
5607                 D(p->level--);
5608                 return NULL;
5609             }
5610             goto done;
5611         }
5612         p->mark = _mark;
5613         D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
5614                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' &&':' block"));
5615     }
5616     _res = NULL;
5617   done:
5618     D(p->level--);
5619     return _res;
5620 }
5621 
5622 // while_stmt: invalid_while_stmt | 'while' named_expression ':' block else_block?
5623 static stmt_ty
while_stmt_rule(Parser * p)5624 while_stmt_rule(Parser *p)
5625 {
5626     D(p->level++);
5627     if (p->error_indicator) {
5628         D(p->level--);
5629         return NULL;
5630     }
5631     stmt_ty _res = NULL;
5632     int _mark = p->mark;
5633     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5634         p->error_indicator = 1;
5635         D(p->level--);
5636         return NULL;
5637     }
5638     int _start_lineno = p->tokens[_mark]->lineno;
5639     UNUSED(_start_lineno); // Only used by EXTRA macro
5640     int _start_col_offset = p->tokens[_mark]->col_offset;
5641     UNUSED(_start_col_offset); // Only used by EXTRA macro
5642     if (p->call_invalid_rules) { // invalid_while_stmt
5643         if (p->error_indicator) {
5644             D(p->level--);
5645             return NULL;
5646         }
5647         D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_while_stmt"));
5648         void *invalid_while_stmt_var;
5649         if (
5650             (invalid_while_stmt_var = invalid_while_stmt_rule(p))  // invalid_while_stmt
5651         )
5652         {
5653             D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_while_stmt"));
5654             _res = invalid_while_stmt_var;
5655             goto done;
5656         }
5657         p->mark = _mark;
5658         D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5659                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_while_stmt"));
5660     }
5661     { // 'while' named_expression ':' block else_block?
5662         if (p->error_indicator) {
5663             D(p->level--);
5664             return NULL;
5665         }
5666         D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
5667         Token * _keyword;
5668         Token * _literal;
5669         expr_ty a;
5670         asdl_stmt_seq* b;
5671         void *c;
5672         if (
5673             (_keyword = _PyPegen_expect_token(p, 632))  // token='while'
5674             &&
5675             (a = named_expression_rule(p))  // named_expression
5676             &&
5677             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5678             &&
5679             (b = block_rule(p))  // block
5680             &&
5681             (c = else_block_rule(p), !p->error_indicator)  // else_block?
5682         )
5683         {
5684             D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
5685             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5686             if (_token == NULL) {
5687                 D(p->level--);
5688                 return NULL;
5689             }
5690             int _end_lineno = _token->end_lineno;
5691             UNUSED(_end_lineno); // Only used by EXTRA macro
5692             int _end_col_offset = _token->end_col_offset;
5693             UNUSED(_end_col_offset); // Only used by EXTRA macro
5694             _res = _PyAST_While ( a , b , c , EXTRA );
5695             if (_res == NULL && PyErr_Occurred()) {
5696                 p->error_indicator = 1;
5697                 D(p->level--);
5698                 return NULL;
5699             }
5700             goto done;
5701         }
5702         p->mark = _mark;
5703         D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5704                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' block else_block?"));
5705     }
5706     _res = NULL;
5707   done:
5708     D(p->level--);
5709     return _res;
5710 }
5711 
5712 // for_stmt:
5713 //     | invalid_for_stmt
5714 //     | 'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?
5715 //     | ASYNC 'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?
5716 //     | invalid_for_target
5717 static stmt_ty
for_stmt_rule(Parser * p)5718 for_stmt_rule(Parser *p)
5719 {
5720     D(p->level++);
5721     if (p->error_indicator) {
5722         D(p->level--);
5723         return NULL;
5724     }
5725     stmt_ty _res = NULL;
5726     int _mark = p->mark;
5727     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5728         p->error_indicator = 1;
5729         D(p->level--);
5730         return NULL;
5731     }
5732     int _start_lineno = p->tokens[_mark]->lineno;
5733     UNUSED(_start_lineno); // Only used by EXTRA macro
5734     int _start_col_offset = p->tokens[_mark]->col_offset;
5735     UNUSED(_start_col_offset); // Only used by EXTRA macro
5736     if (p->call_invalid_rules) { // invalid_for_stmt
5737         if (p->error_indicator) {
5738             D(p->level--);
5739             return NULL;
5740         }
5741         D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
5742         void *invalid_for_stmt_var;
5743         if (
5744             (invalid_for_stmt_var = invalid_for_stmt_rule(p))  // invalid_for_stmt
5745         )
5746         {
5747             D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
5748             _res = invalid_for_stmt_var;
5749             goto done;
5750         }
5751         p->mark = _mark;
5752         D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5753                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_stmt"));
5754     }
5755     { // 'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?
5756         if (p->error_indicator) {
5757             D(p->level--);
5758             return NULL;
5759         }
5760         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?"));
5761         int _cut_var = 0;
5762         Token * _keyword;
5763         Token * _keyword_1;
5764         Token * _literal;
5765         asdl_stmt_seq* b;
5766         void *el;
5767         expr_ty ex;
5768         expr_ty t;
5769         void *tc;
5770         if (
5771             (_keyword = _PyPegen_expect_token(p, 633))  // token='for'
5772             &&
5773             (t = star_targets_rule(p))  // star_targets
5774             &&
5775             (_keyword_1 = _PyPegen_expect_token(p, 634))  // token='in'
5776             &&
5777             (_cut_var = 1)
5778             &&
5779             (ex = star_expressions_rule(p))  // star_expressions
5780             &&
5781             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
5782             &&
5783             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5784             &&
5785             (b = block_rule(p))  // block
5786             &&
5787             (el = else_block_rule(p), !p->error_indicator)  // else_block?
5788         )
5789         {
5790             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?"));
5791             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5792             if (_token == NULL) {
5793                 D(p->level--);
5794                 return NULL;
5795             }
5796             int _end_lineno = _token->end_lineno;
5797             UNUSED(_end_lineno); // Only used by EXTRA macro
5798             int _end_col_offset = _token->end_col_offset;
5799             UNUSED(_end_col_offset); // Only used by EXTRA macro
5800             _res = _PyAST_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
5801             if (_res == NULL && PyErr_Occurred()) {
5802                 p->error_indicator = 1;
5803                 D(p->level--);
5804                 return NULL;
5805             }
5806             goto done;
5807         }
5808         p->mark = _mark;
5809         D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5810                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?"));
5811         if (_cut_var) {
5812             D(p->level--);
5813             return NULL;
5814         }
5815     }
5816     { // ASYNC 'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?
5817         if (p->error_indicator) {
5818             D(p->level--);
5819             return NULL;
5820         }
5821         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?"));
5822         int _cut_var = 0;
5823         Token * _keyword;
5824         Token * _keyword_1;
5825         Token * _literal;
5826         Token * async_var;
5827         asdl_stmt_seq* b;
5828         void *el;
5829         expr_ty ex;
5830         expr_ty t;
5831         void *tc;
5832         if (
5833             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
5834             &&
5835             (_keyword = _PyPegen_expect_token(p, 633))  // token='for'
5836             &&
5837             (t = star_targets_rule(p))  // star_targets
5838             &&
5839             (_keyword_1 = _PyPegen_expect_token(p, 634))  // token='in'
5840             &&
5841             (_cut_var = 1)
5842             &&
5843             (ex = star_expressions_rule(p))  // star_expressions
5844             &&
5845             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
5846             &&
5847             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
5848             &&
5849             (b = block_rule(p))  // block
5850             &&
5851             (el = else_block_rule(p), !p->error_indicator)  // else_block?
5852         )
5853         {
5854             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?"));
5855             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5856             if (_token == NULL) {
5857                 D(p->level--);
5858                 return NULL;
5859             }
5860             int _end_lineno = _token->end_lineno;
5861             UNUSED(_end_lineno); // Only used by EXTRA macro
5862             int _end_col_offset = _token->end_col_offset;
5863             UNUSED(_end_col_offset); // Only used by EXTRA macro
5864             _res = CHECK_VERSION ( stmt_ty , 5 , "Async for loops are" , _PyAST_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
5865             if (_res == NULL && PyErr_Occurred()) {
5866                 p->error_indicator = 1;
5867                 D(p->level--);
5868                 return NULL;
5869             }
5870             goto done;
5871         }
5872         p->mark = _mark;
5873         D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5874                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?"));
5875         if (_cut_var) {
5876             D(p->level--);
5877             return NULL;
5878         }
5879     }
5880     if (p->call_invalid_rules) { // invalid_for_target
5881         if (p->error_indicator) {
5882             D(p->level--);
5883             return NULL;
5884         }
5885         D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
5886         void *invalid_for_target_var;
5887         if (
5888             (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
5889         )
5890         {
5891             D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
5892             _res = invalid_for_target_var;
5893             goto done;
5894         }
5895         p->mark = _mark;
5896         D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5897                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
5898     }
5899     _res = NULL;
5900   done:
5901     D(p->level--);
5902     return _res;
5903 }
5904 
5905 // with_stmt:
5906 //     | invalid_with_stmt_indent
5907 //     | 'with' '(' ','.with_item+ ','? ')' ':' block
5908 //     | 'with' ','.with_item+ ':' TYPE_COMMENT? block
5909 //     | ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
5910 //     | ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
5911 //     | invalid_with_stmt
5912 static stmt_ty
with_stmt_rule(Parser * p)5913 with_stmt_rule(Parser *p)
5914 {
5915     D(p->level++);
5916     if (p->error_indicator) {
5917         D(p->level--);
5918         return NULL;
5919     }
5920     stmt_ty _res = NULL;
5921     int _mark = p->mark;
5922     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5923         p->error_indicator = 1;
5924         D(p->level--);
5925         return NULL;
5926     }
5927     int _start_lineno = p->tokens[_mark]->lineno;
5928     UNUSED(_start_lineno); // Only used by EXTRA macro
5929     int _start_col_offset = p->tokens[_mark]->col_offset;
5930     UNUSED(_start_col_offset); // Only used by EXTRA macro
5931     if (p->call_invalid_rules) { // invalid_with_stmt_indent
5932         if (p->error_indicator) {
5933             D(p->level--);
5934             return NULL;
5935         }
5936         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
5937         void *invalid_with_stmt_indent_var;
5938         if (
5939             (invalid_with_stmt_indent_var = invalid_with_stmt_indent_rule(p))  // invalid_with_stmt_indent
5940         )
5941         {
5942             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
5943             _res = invalid_with_stmt_indent_var;
5944             goto done;
5945         }
5946         p->mark = _mark;
5947         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5948                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt_indent"));
5949     }
5950     { // 'with' '(' ','.with_item+ ','? ')' ':' block
5951         if (p->error_indicator) {
5952             D(p->level--);
5953             return NULL;
5954         }
5955         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' block"));
5956         Token * _keyword;
5957         Token * _literal;
5958         Token * _literal_1;
5959         Token * _literal_2;
5960         void *_opt_var;
5961         UNUSED(_opt_var); // Silence compiler warnings
5962         asdl_withitem_seq* a;
5963         asdl_stmt_seq* b;
5964         if (
5965             (_keyword = _PyPegen_expect_token(p, 609))  // token='with'
5966             &&
5967             (_literal = _PyPegen_expect_token(p, 7))  // token='('
5968             &&
5969             (a = (asdl_withitem_seq*)_gather_50_rule(p))  // ','.with_item+
5970             &&
5971             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
5972             &&
5973             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
5974             &&
5975             (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
5976             &&
5977             (b = block_rule(p))  // block
5978         )
5979         {
5980             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' block"));
5981             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5982             if (_token == NULL) {
5983                 D(p->level--);
5984                 return NULL;
5985             }
5986             int _end_lineno = _token->end_lineno;
5987             UNUSED(_end_lineno); // Only used by EXTRA macro
5988             int _end_col_offset = _token->end_col_offset;
5989             UNUSED(_end_col_offset); // Only used by EXTRA macro
5990             _res = _PyAST_With ( a , b , NULL , EXTRA );
5991             if (_res == NULL && PyErr_Occurred()) {
5992                 p->error_indicator = 1;
5993                 D(p->level--);
5994                 return NULL;
5995             }
5996             goto done;
5997         }
5998         p->mark = _mark;
5999         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6000                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' block"));
6001     }
6002     { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
6003         if (p->error_indicator) {
6004             D(p->level--);
6005             return NULL;
6006         }
6007         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6008         Token * _keyword;
6009         Token * _literal;
6010         asdl_withitem_seq* a;
6011         asdl_stmt_seq* b;
6012         void *tc;
6013         if (
6014             (_keyword = _PyPegen_expect_token(p, 609))  // token='with'
6015             &&
6016             (a = (asdl_withitem_seq*)_gather_52_rule(p))  // ','.with_item+
6017             &&
6018             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6019             &&
6020             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6021             &&
6022             (b = block_rule(p))  // block
6023         )
6024         {
6025             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6026             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6027             if (_token == NULL) {
6028                 D(p->level--);
6029                 return NULL;
6030             }
6031             int _end_lineno = _token->end_lineno;
6032             UNUSED(_end_lineno); // Only used by EXTRA macro
6033             int _end_col_offset = _token->end_col_offset;
6034             UNUSED(_end_col_offset); // Only used by EXTRA macro
6035             _res = _PyAST_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
6036             if (_res == NULL && PyErr_Occurred()) {
6037                 p->error_indicator = 1;
6038                 D(p->level--);
6039                 return NULL;
6040             }
6041             goto done;
6042         }
6043         p->mark = _mark;
6044         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6045                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6046     }
6047     { // ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
6048         if (p->error_indicator) {
6049             D(p->level--);
6050             return NULL;
6051         }
6052         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block"));
6053         Token * _keyword;
6054         Token * _literal;
6055         Token * _literal_1;
6056         Token * _literal_2;
6057         void *_opt_var;
6058         UNUSED(_opt_var); // Silence compiler warnings
6059         asdl_withitem_seq* a;
6060         Token * async_var;
6061         asdl_stmt_seq* b;
6062         if (
6063             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
6064             &&
6065             (_keyword = _PyPegen_expect_token(p, 609))  // token='with'
6066             &&
6067             (_literal = _PyPegen_expect_token(p, 7))  // token='('
6068             &&
6069             (a = (asdl_withitem_seq*)_gather_54_rule(p))  // ','.with_item+
6070             &&
6071             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
6072             &&
6073             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
6074             &&
6075             (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
6076             &&
6077             (b = block_rule(p))  // block
6078         )
6079         {
6080             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block"));
6081             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6082             if (_token == NULL) {
6083                 D(p->level--);
6084                 return NULL;
6085             }
6086             int _end_lineno = _token->end_lineno;
6087             UNUSED(_end_lineno); // Only used by EXTRA macro
6088             int _end_col_offset = _token->end_col_offset;
6089             UNUSED(_end_col_offset); // Only used by EXTRA macro
6090             _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NULL , EXTRA ) );
6091             if (_res == NULL && PyErr_Occurred()) {
6092                 p->error_indicator = 1;
6093                 D(p->level--);
6094                 return NULL;
6095             }
6096             goto done;
6097         }
6098         p->mark = _mark;
6099         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6100                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block"));
6101     }
6102     { // ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
6103         if (p->error_indicator) {
6104             D(p->level--);
6105             return NULL;
6106         }
6107         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6108         Token * _keyword;
6109         Token * _literal;
6110         asdl_withitem_seq* a;
6111         Token * async_var;
6112         asdl_stmt_seq* b;
6113         void *tc;
6114         if (
6115             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
6116             &&
6117             (_keyword = _PyPegen_expect_token(p, 609))  // token='with'
6118             &&
6119             (a = (asdl_withitem_seq*)_gather_56_rule(p))  // ','.with_item+
6120             &&
6121             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6122             &&
6123             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
6124             &&
6125             (b = block_rule(p))  // block
6126         )
6127         {
6128             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6129             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6130             if (_token == NULL) {
6131                 D(p->level--);
6132                 return NULL;
6133             }
6134             int _end_lineno = _token->end_lineno;
6135             UNUSED(_end_lineno); // Only used by EXTRA macro
6136             int _end_col_offset = _token->end_col_offset;
6137             UNUSED(_end_col_offset); // Only used by EXTRA macro
6138             _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
6139             if (_res == NULL && PyErr_Occurred()) {
6140                 p->error_indicator = 1;
6141                 D(p->level--);
6142                 return NULL;
6143             }
6144             goto done;
6145         }
6146         p->mark = _mark;
6147         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6148                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
6149     }
6150     if (p->call_invalid_rules) { // invalid_with_stmt
6151         if (p->error_indicator) {
6152             D(p->level--);
6153             return NULL;
6154         }
6155         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt"));
6156         void *invalid_with_stmt_var;
6157         if (
6158             (invalid_with_stmt_var = invalid_with_stmt_rule(p))  // invalid_with_stmt
6159         )
6160         {
6161             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt"));
6162             _res = invalid_with_stmt_var;
6163             goto done;
6164         }
6165         p->mark = _mark;
6166         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6167                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt"));
6168     }
6169     _res = NULL;
6170   done:
6171     D(p->level--);
6172     return _res;
6173 }
6174 
6175 // with_item:
6176 //     | expression 'as' star_target &(',' | ')' | ':')
6177 //     | invalid_with_item
6178 //     | expression
6179 static withitem_ty
with_item_rule(Parser * p)6180 with_item_rule(Parser *p)
6181 {
6182     D(p->level++);
6183     if (p->error_indicator) {
6184         D(p->level--);
6185         return NULL;
6186     }
6187     withitem_ty _res = NULL;
6188     int _mark = p->mark;
6189     { // expression 'as' star_target &(',' | ')' | ':')
6190         if (p->error_indicator) {
6191             D(p->level--);
6192             return NULL;
6193         }
6194         D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6195         Token * _keyword;
6196         expr_ty e;
6197         expr_ty t;
6198         if (
6199             (e = expression_rule(p))  // expression
6200             &&
6201             (_keyword = _PyPegen_expect_token(p, 625))  // token='as'
6202             &&
6203             (t = star_target_rule(p))  // star_target
6204             &&
6205             _PyPegen_lookahead(1, _tmp_58_rule, p)
6206         )
6207         {
6208             D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6209             _res = _PyAST_withitem ( e , t , p -> arena );
6210             if (_res == NULL && PyErr_Occurred()) {
6211                 p->error_indicator = 1;
6212                 D(p->level--);
6213                 return NULL;
6214             }
6215             goto done;
6216         }
6217         p->mark = _mark;
6218         D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6219                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
6220     }
6221     if (p->call_invalid_rules) { // invalid_with_item
6222         if (p->error_indicator) {
6223             D(p->level--);
6224             return NULL;
6225         }
6226         D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
6227         void *invalid_with_item_var;
6228         if (
6229             (invalid_with_item_var = invalid_with_item_rule(p))  // invalid_with_item
6230         )
6231         {
6232             D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
6233             _res = invalid_with_item_var;
6234             goto done;
6235         }
6236         p->mark = _mark;
6237         D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6238                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_item"));
6239     }
6240     { // expression
6241         if (p->error_indicator) {
6242             D(p->level--);
6243             return NULL;
6244         }
6245         D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
6246         expr_ty e;
6247         if (
6248             (e = expression_rule(p))  // expression
6249         )
6250         {
6251             D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
6252             _res = _PyAST_withitem ( e , NULL , p -> arena );
6253             if (_res == NULL && PyErr_Occurred()) {
6254                 p->error_indicator = 1;
6255                 D(p->level--);
6256                 return NULL;
6257             }
6258             goto done;
6259         }
6260         p->mark = _mark;
6261         D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
6262                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
6263     }
6264     _res = NULL;
6265   done:
6266     D(p->level--);
6267     return _res;
6268 }
6269 
6270 // try_stmt:
6271 //     | invalid_try_stmt
6272 //     | 'try' &&':' block finally_block
6273 //     | 'try' &&':' block except_block+ else_block? finally_block?
6274 static stmt_ty
try_stmt_rule(Parser * p)6275 try_stmt_rule(Parser *p)
6276 {
6277     D(p->level++);
6278     if (p->error_indicator) {
6279         D(p->level--);
6280         return NULL;
6281     }
6282     stmt_ty _res = NULL;
6283     int _mark = p->mark;
6284     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6285         p->error_indicator = 1;
6286         D(p->level--);
6287         return NULL;
6288     }
6289     int _start_lineno = p->tokens[_mark]->lineno;
6290     UNUSED(_start_lineno); // Only used by EXTRA macro
6291     int _start_col_offset = p->tokens[_mark]->col_offset;
6292     UNUSED(_start_col_offset); // Only used by EXTRA macro
6293     if (p->call_invalid_rules) { // invalid_try_stmt
6294         if (p->error_indicator) {
6295             D(p->level--);
6296             return NULL;
6297         }
6298         D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
6299         void *invalid_try_stmt_var;
6300         if (
6301             (invalid_try_stmt_var = invalid_try_stmt_rule(p))  // invalid_try_stmt
6302         )
6303         {
6304             D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
6305             _res = invalid_try_stmt_var;
6306             goto done;
6307         }
6308         p->mark = _mark;
6309         D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6310                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_try_stmt"));
6311     }
6312     { // 'try' &&':' block finally_block
6313         if (p->error_indicator) {
6314             D(p->level--);
6315             return NULL;
6316         }
6317         D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
6318         Token * _keyword;
6319         Token * _literal;
6320         asdl_stmt_seq* b;
6321         asdl_stmt_seq* f;
6322         if (
6323             (_keyword = _PyPegen_expect_token(p, 612))  // token='try'
6324             &&
6325             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
6326             &&
6327             (b = block_rule(p))  // block
6328             &&
6329             (f = finally_block_rule(p))  // finally_block
6330         )
6331         {
6332             D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
6333             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6334             if (_token == NULL) {
6335                 D(p->level--);
6336                 return NULL;
6337             }
6338             int _end_lineno = _token->end_lineno;
6339             UNUSED(_end_lineno); // Only used by EXTRA macro
6340             int _end_col_offset = _token->end_col_offset;
6341             UNUSED(_end_col_offset); // Only used by EXTRA macro
6342             _res = _PyAST_Try ( b , NULL , NULL , f , EXTRA );
6343             if (_res == NULL && PyErr_Occurred()) {
6344                 p->error_indicator = 1;
6345                 D(p->level--);
6346                 return NULL;
6347             }
6348             goto done;
6349         }
6350         p->mark = _mark;
6351         D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6352                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block finally_block"));
6353     }
6354     { // 'try' &&':' block except_block+ else_block? finally_block?
6355         if (p->error_indicator) {
6356             D(p->level--);
6357             return NULL;
6358         }
6359         D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
6360         Token * _keyword;
6361         Token * _literal;
6362         asdl_stmt_seq* b;
6363         void *el;
6364         asdl_excepthandler_seq* ex;
6365         void *f;
6366         if (
6367             (_keyword = _PyPegen_expect_token(p, 612))  // token='try'
6368             &&
6369             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
6370             &&
6371             (b = block_rule(p))  // block
6372             &&
6373             (ex = (asdl_excepthandler_seq*)_loop1_59_rule(p))  // except_block+
6374             &&
6375             (el = else_block_rule(p), !p->error_indicator)  // else_block?
6376             &&
6377             (f = finally_block_rule(p), !p->error_indicator)  // finally_block?
6378         )
6379         {
6380             D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
6381             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6382             if (_token == NULL) {
6383                 D(p->level--);
6384                 return NULL;
6385             }
6386             int _end_lineno = _token->end_lineno;
6387             UNUSED(_end_lineno); // Only used by EXTRA macro
6388             int _end_col_offset = _token->end_col_offset;
6389             UNUSED(_end_col_offset); // Only used by EXTRA macro
6390             _res = _PyAST_Try ( b , ex , el , f , EXTRA );
6391             if (_res == NULL && PyErr_Occurred()) {
6392                 p->error_indicator = 1;
6393                 D(p->level--);
6394                 return NULL;
6395             }
6396             goto done;
6397         }
6398         p->mark = _mark;
6399         D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6400                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
6401     }
6402     _res = NULL;
6403   done:
6404     D(p->level--);
6405     return _res;
6406 }
6407 
6408 // except_block:
6409 //     | invalid_except_stmt_indent
6410 //     | 'except' expression ['as' NAME] ':' block
6411 //     | 'except' ':' block
6412 //     | invalid_except_stmt
6413 static excepthandler_ty
except_block_rule(Parser * p)6414 except_block_rule(Parser *p)
6415 {
6416     D(p->level++);
6417     if (p->error_indicator) {
6418         D(p->level--);
6419         return NULL;
6420     }
6421     excepthandler_ty _res = NULL;
6422     int _mark = p->mark;
6423     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6424         p->error_indicator = 1;
6425         D(p->level--);
6426         return NULL;
6427     }
6428     int _start_lineno = p->tokens[_mark]->lineno;
6429     UNUSED(_start_lineno); // Only used by EXTRA macro
6430     int _start_col_offset = p->tokens[_mark]->col_offset;
6431     UNUSED(_start_col_offset); // Only used by EXTRA macro
6432     if (p->call_invalid_rules) { // invalid_except_stmt_indent
6433         if (p->error_indicator) {
6434             D(p->level--);
6435             return NULL;
6436         }
6437         D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
6438         void *invalid_except_stmt_indent_var;
6439         if (
6440             (invalid_except_stmt_indent_var = invalid_except_stmt_indent_rule(p))  // invalid_except_stmt_indent
6441         )
6442         {
6443             D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
6444             _res = invalid_except_stmt_indent_var;
6445             goto done;
6446         }
6447         p->mark = _mark;
6448         D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
6449                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt_indent"));
6450     }
6451     { // 'except' expression ['as' NAME] ':' block
6452         if (p->error_indicator) {
6453             D(p->level--);
6454             return NULL;
6455         }
6456         D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' block"));
6457         Token * _keyword;
6458         Token * _literal;
6459         asdl_stmt_seq* b;
6460         expr_ty e;
6461         void *t;
6462         if (
6463             (_keyword = _PyPegen_expect_token(p, 623))  // token='except'
6464             &&
6465             (e = expression_rule(p))  // expression
6466             &&
6467             (t = _tmp_60_rule(p), !p->error_indicator)  // ['as' NAME]
6468             &&
6469             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6470             &&
6471             (b = block_rule(p))  // block
6472         )
6473         {
6474             D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' block"));
6475             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6476             if (_token == NULL) {
6477                 D(p->level--);
6478                 return NULL;
6479             }
6480             int _end_lineno = _token->end_lineno;
6481             UNUSED(_end_lineno); // Only used by EXTRA macro
6482             int _end_col_offset = _token->end_col_offset;
6483             UNUSED(_end_col_offset); // Only used by EXTRA macro
6484             _res = _PyAST_ExceptHandler ( e , ( t ) ? ( ( expr_ty ) t ) -> v . Name . id : NULL , b , EXTRA );
6485             if (_res == NULL && PyErr_Occurred()) {
6486                 p->error_indicator = 1;
6487                 D(p->level--);
6488                 return NULL;
6489             }
6490             goto done;
6491         }
6492         p->mark = _mark;
6493         D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
6494                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] ':' block"));
6495     }
6496     { // 'except' ':' block
6497         if (p->error_indicator) {
6498             D(p->level--);
6499             return NULL;
6500         }
6501         D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
6502         Token * _keyword;
6503         Token * _literal;
6504         asdl_stmt_seq* b;
6505         if (
6506             (_keyword = _PyPegen_expect_token(p, 623))  // token='except'
6507             &&
6508             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6509             &&
6510             (b = block_rule(p))  // block
6511         )
6512         {
6513             D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
6514             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6515             if (_token == NULL) {
6516                 D(p->level--);
6517                 return NULL;
6518             }
6519             int _end_lineno = _token->end_lineno;
6520             UNUSED(_end_lineno); // Only used by EXTRA macro
6521             int _end_col_offset = _token->end_col_offset;
6522             UNUSED(_end_col_offset); // Only used by EXTRA macro
6523             _res = _PyAST_ExceptHandler ( NULL , NULL , b , EXTRA );
6524             if (_res == NULL && PyErr_Occurred()) {
6525                 p->error_indicator = 1;
6526                 D(p->level--);
6527                 return NULL;
6528             }
6529             goto done;
6530         }
6531         p->mark = _mark;
6532         D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
6533                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' block"));
6534     }
6535     if (p->call_invalid_rules) { // invalid_except_stmt
6536         if (p->error_indicator) {
6537             D(p->level--);
6538             return NULL;
6539         }
6540         D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
6541         void *invalid_except_stmt_var;
6542         if (
6543             (invalid_except_stmt_var = invalid_except_stmt_rule(p))  // invalid_except_stmt
6544         )
6545         {
6546             D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
6547             _res = invalid_except_stmt_var;
6548             goto done;
6549         }
6550         p->mark = _mark;
6551         D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
6552                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt"));
6553     }
6554     _res = NULL;
6555   done:
6556     D(p->level--);
6557     return _res;
6558 }
6559 
6560 // finally_block: invalid_finally_stmt | 'finally' &&':' block
6561 static asdl_stmt_seq*
finally_block_rule(Parser * p)6562 finally_block_rule(Parser *p)
6563 {
6564     D(p->level++);
6565     if (p->error_indicator) {
6566         D(p->level--);
6567         return NULL;
6568     }
6569     asdl_stmt_seq* _res = NULL;
6570     int _mark = p->mark;
6571     if (p->call_invalid_rules) { // invalid_finally_stmt
6572         if (p->error_indicator) {
6573             D(p->level--);
6574             return NULL;
6575         }
6576         D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
6577         void *invalid_finally_stmt_var;
6578         if (
6579             (invalid_finally_stmt_var = invalid_finally_stmt_rule(p))  // invalid_finally_stmt
6580         )
6581         {
6582             D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
6583             _res = invalid_finally_stmt_var;
6584             goto done;
6585         }
6586         p->mark = _mark;
6587         D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
6588                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_finally_stmt"));
6589     }
6590     { // 'finally' &&':' block
6591         if (p->error_indicator) {
6592             D(p->level--);
6593             return NULL;
6594         }
6595         D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
6596         Token * _keyword;
6597         Token * _literal;
6598         asdl_stmt_seq* a;
6599         if (
6600             (_keyword = _PyPegen_expect_token(p, 620))  // token='finally'
6601             &&
6602             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
6603             &&
6604             (a = block_rule(p))  // block
6605         )
6606         {
6607             D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
6608             _res = a;
6609             if (_res == NULL && PyErr_Occurred()) {
6610                 p->error_indicator = 1;
6611                 D(p->level--);
6612                 return NULL;
6613             }
6614             goto done;
6615         }
6616         p->mark = _mark;
6617         D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
6618                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' &&':' block"));
6619     }
6620     _res = NULL;
6621   done:
6622     D(p->level--);
6623     return _res;
6624 }
6625 
6626 // match_stmt:
6627 //     | "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
6628 //     | invalid_match_stmt
6629 static stmt_ty
match_stmt_rule(Parser * p)6630 match_stmt_rule(Parser *p)
6631 {
6632     D(p->level++);
6633     if (p->error_indicator) {
6634         D(p->level--);
6635         return NULL;
6636     }
6637     stmt_ty _res = NULL;
6638     int _mark = p->mark;
6639     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6640         p->error_indicator = 1;
6641         D(p->level--);
6642         return NULL;
6643     }
6644     int _start_lineno = p->tokens[_mark]->lineno;
6645     UNUSED(_start_lineno); // Only used by EXTRA macro
6646     int _start_col_offset = p->tokens[_mark]->col_offset;
6647     UNUSED(_start_col_offset); // Only used by EXTRA macro
6648     { // "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
6649         if (p->error_indicator) {
6650             D(p->level--);
6651             return NULL;
6652         }
6653         D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
6654         expr_ty _keyword;
6655         Token * _literal;
6656         asdl_match_case_seq* cases;
6657         Token * dedent_var;
6658         Token * indent_var;
6659         Token * newline_var;
6660         expr_ty subject;
6661         if (
6662             (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
6663             &&
6664             (subject = subject_expr_rule(p))  // subject_expr
6665             &&
6666             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6667             &&
6668             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
6669             &&
6670             (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
6671             &&
6672             (cases = (asdl_match_case_seq*)_loop1_61_rule(p))  // case_block+
6673             &&
6674             (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
6675         )
6676         {
6677             D(fprintf(stderr, "%*c+ match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
6678             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6679             if (_token == NULL) {
6680                 D(p->level--);
6681                 return NULL;
6682             }
6683             int _end_lineno = _token->end_lineno;
6684             UNUSED(_end_lineno); // Only used by EXTRA macro
6685             int _end_col_offset = _token->end_col_offset;
6686             UNUSED(_end_col_offset); // Only used by EXTRA macro
6687             _res = CHECK_VERSION ( stmt_ty , 10 , "Pattern matching is" , _PyAST_Match ( subject , cases , EXTRA ) );
6688             if (_res == NULL && PyErr_Occurred()) {
6689                 p->error_indicator = 1;
6690                 D(p->level--);
6691                 return NULL;
6692             }
6693             goto done;
6694         }
6695         p->mark = _mark;
6696         D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6697                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
6698     }
6699     if (p->call_invalid_rules) { // invalid_match_stmt
6700         if (p->error_indicator) {
6701             D(p->level--);
6702             return NULL;
6703         }
6704         D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_match_stmt"));
6705         void *invalid_match_stmt_var;
6706         if (
6707             (invalid_match_stmt_var = invalid_match_stmt_rule(p))  // invalid_match_stmt
6708         )
6709         {
6710             D(fprintf(stderr, "%*c+ match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_match_stmt"));
6711             _res = invalid_match_stmt_var;
6712             goto done;
6713         }
6714         p->mark = _mark;
6715         D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
6716                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_match_stmt"));
6717     }
6718     _res = NULL;
6719   done:
6720     D(p->level--);
6721     return _res;
6722 }
6723 
6724 // subject_expr: star_named_expression ',' star_named_expressions? | named_expression
6725 static expr_ty
subject_expr_rule(Parser * p)6726 subject_expr_rule(Parser *p)
6727 {
6728     D(p->level++);
6729     if (p->error_indicator) {
6730         D(p->level--);
6731         return NULL;
6732     }
6733     expr_ty _res = NULL;
6734     int _mark = p->mark;
6735     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6736         p->error_indicator = 1;
6737         D(p->level--);
6738         return NULL;
6739     }
6740     int _start_lineno = p->tokens[_mark]->lineno;
6741     UNUSED(_start_lineno); // Only used by EXTRA macro
6742     int _start_col_offset = p->tokens[_mark]->col_offset;
6743     UNUSED(_start_col_offset); // Only used by EXTRA macro
6744     { // star_named_expression ',' star_named_expressions?
6745         if (p->error_indicator) {
6746             D(p->level--);
6747             return NULL;
6748         }
6749         D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
6750         Token * _literal;
6751         expr_ty value;
6752         void *values;
6753         if (
6754             (value = star_named_expression_rule(p))  // star_named_expression
6755             &&
6756             (_literal = _PyPegen_expect_token(p, 12))  // token=','
6757             &&
6758             (values = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
6759         )
6760         {
6761             D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
6762             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6763             if (_token == NULL) {
6764                 D(p->level--);
6765                 return NULL;
6766             }
6767             int _end_lineno = _token->end_lineno;
6768             UNUSED(_end_lineno); // Only used by EXTRA macro
6769             int _end_col_offset = _token->end_col_offset;
6770             UNUSED(_end_col_offset); // Only used by EXTRA macro
6771             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , value , values ) ) , Load , EXTRA );
6772             if (_res == NULL && PyErr_Occurred()) {
6773                 p->error_indicator = 1;
6774                 D(p->level--);
6775                 return NULL;
6776             }
6777             goto done;
6778         }
6779         p->mark = _mark;
6780         D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
6781                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
6782     }
6783     { // named_expression
6784         if (p->error_indicator) {
6785             D(p->level--);
6786             return NULL;
6787         }
6788         D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
6789         expr_ty named_expression_var;
6790         if (
6791             (named_expression_var = named_expression_rule(p))  // named_expression
6792         )
6793         {
6794             D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
6795             _res = named_expression_var;
6796             goto done;
6797         }
6798         p->mark = _mark;
6799         D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
6800                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
6801     }
6802     _res = NULL;
6803   done:
6804     D(p->level--);
6805     return _res;
6806 }
6807 
6808 // case_block: invalid_case_block | "case" patterns guard? ':' block
6809 static match_case_ty
case_block_rule(Parser * p)6810 case_block_rule(Parser *p)
6811 {
6812     D(p->level++);
6813     if (p->error_indicator) {
6814         D(p->level--);
6815         return NULL;
6816     }
6817     match_case_ty _res = NULL;
6818     int _mark = p->mark;
6819     if (p->call_invalid_rules) { // invalid_case_block
6820         if (p->error_indicator) {
6821             D(p->level--);
6822             return NULL;
6823         }
6824         D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_case_block"));
6825         void *invalid_case_block_var;
6826         if (
6827             (invalid_case_block_var = invalid_case_block_rule(p))  // invalid_case_block
6828         )
6829         {
6830             D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_case_block"));
6831             _res = invalid_case_block_var;
6832             goto done;
6833         }
6834         p->mark = _mark;
6835         D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
6836                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_case_block"));
6837     }
6838     { // "case" patterns guard? ':' block
6839         if (p->error_indicator) {
6840             D(p->level--);
6841             return NULL;
6842         }
6843         D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
6844         expr_ty _keyword;
6845         Token * _literal;
6846         asdl_stmt_seq* body;
6847         void *guard;
6848         pattern_ty pattern;
6849         if (
6850             (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
6851             &&
6852             (pattern = patterns_rule(p))  // patterns
6853             &&
6854             (guard = guard_rule(p), !p->error_indicator)  // guard?
6855             &&
6856             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
6857             &&
6858             (body = block_rule(p))  // block
6859         )
6860         {
6861             D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
6862             _res = _PyAST_match_case ( pattern , guard , body , p -> arena );
6863             if (_res == NULL && PyErr_Occurred()) {
6864                 p->error_indicator = 1;
6865                 D(p->level--);
6866                 return NULL;
6867             }
6868             goto done;
6869         }
6870         p->mark = _mark;
6871         D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
6872                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? ':' block"));
6873     }
6874     _res = NULL;
6875   done:
6876     D(p->level--);
6877     return _res;
6878 }
6879 
6880 // guard: 'if' named_expression
6881 static expr_ty
guard_rule(Parser * p)6882 guard_rule(Parser *p)
6883 {
6884     D(p->level++);
6885     if (p->error_indicator) {
6886         D(p->level--);
6887         return NULL;
6888     }
6889     expr_ty _res = NULL;
6890     int _mark = p->mark;
6891     { // 'if' named_expression
6892         if (p->error_indicator) {
6893             D(p->level--);
6894             return NULL;
6895         }
6896         D(fprintf(stderr, "%*c> guard[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
6897         Token * _keyword;
6898         expr_ty guard;
6899         if (
6900             (_keyword = _PyPegen_expect_token(p, 627))  // token='if'
6901             &&
6902             (guard = named_expression_rule(p))  // named_expression
6903         )
6904         {
6905             D(fprintf(stderr, "%*c+ guard[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
6906             _res = guard;
6907             if (_res == NULL && PyErr_Occurred()) {
6908                 p->error_indicator = 1;
6909                 D(p->level--);
6910                 return NULL;
6911             }
6912             goto done;
6913         }
6914         p->mark = _mark;
6915         D(fprintf(stderr, "%*c%s guard[%d-%d]: %s failed!\n", p->level, ' ',
6916                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression"));
6917     }
6918     _res = NULL;
6919   done:
6920     D(p->level--);
6921     return _res;
6922 }
6923 
6924 // patterns: open_sequence_pattern | pattern
6925 static pattern_ty
patterns_rule(Parser * p)6926 patterns_rule(Parser *p)
6927 {
6928     D(p->level++);
6929     if (p->error_indicator) {
6930         D(p->level--);
6931         return NULL;
6932     }
6933     pattern_ty _res = NULL;
6934     int _mark = p->mark;
6935     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6936         p->error_indicator = 1;
6937         D(p->level--);
6938         return NULL;
6939     }
6940     int _start_lineno = p->tokens[_mark]->lineno;
6941     UNUSED(_start_lineno); // Only used by EXTRA macro
6942     int _start_col_offset = p->tokens[_mark]->col_offset;
6943     UNUSED(_start_col_offset); // Only used by EXTRA macro
6944     { // open_sequence_pattern
6945         if (p->error_indicator) {
6946             D(p->level--);
6947             return NULL;
6948         }
6949         D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
6950         asdl_pattern_seq* patterns;
6951         if (
6952             (patterns = (asdl_pattern_seq*)open_sequence_pattern_rule(p))  // open_sequence_pattern
6953         )
6954         {
6955             D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
6956             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6957             if (_token == NULL) {
6958                 D(p->level--);
6959                 return NULL;
6960             }
6961             int _end_lineno = _token->end_lineno;
6962             UNUSED(_end_lineno); // Only used by EXTRA macro
6963             int _end_col_offset = _token->end_col_offset;
6964             UNUSED(_end_col_offset); // Only used by EXTRA macro
6965             _res = _PyAST_MatchSequence ( patterns , EXTRA );
6966             if (_res == NULL && PyErr_Occurred()) {
6967                 p->error_indicator = 1;
6968                 D(p->level--);
6969                 return NULL;
6970             }
6971             goto done;
6972         }
6973         p->mark = _mark;
6974         D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
6975                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "open_sequence_pattern"));
6976     }
6977     { // pattern
6978         if (p->error_indicator) {
6979             D(p->level--);
6980             return NULL;
6981         }
6982         D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
6983         pattern_ty pattern_var;
6984         if (
6985             (pattern_var = pattern_rule(p))  // pattern
6986         )
6987         {
6988             D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
6989             _res = pattern_var;
6990             goto done;
6991         }
6992         p->mark = _mark;
6993         D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
6994                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
6995     }
6996     _res = NULL;
6997   done:
6998     D(p->level--);
6999     return _res;
7000 }
7001 
7002 // pattern: as_pattern | or_pattern
7003 static pattern_ty
pattern_rule(Parser * p)7004 pattern_rule(Parser *p)
7005 {
7006     D(p->level++);
7007     if (p->error_indicator) {
7008         D(p->level--);
7009         return NULL;
7010     }
7011     pattern_ty _res = NULL;
7012     int _mark = p->mark;
7013     { // as_pattern
7014         if (p->error_indicator) {
7015             D(p->level--);
7016             return NULL;
7017         }
7018         D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "as_pattern"));
7019         pattern_ty as_pattern_var;
7020         if (
7021             (as_pattern_var = as_pattern_rule(p))  // as_pattern
7022         )
7023         {
7024             D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "as_pattern"));
7025             _res = as_pattern_var;
7026             goto done;
7027         }
7028         p->mark = _mark;
7029         D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
7030                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "as_pattern"));
7031     }
7032     { // or_pattern
7033         if (p->error_indicator) {
7034             D(p->level--);
7035             return NULL;
7036         }
7037         D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern"));
7038         pattern_ty or_pattern_var;
7039         if (
7040             (or_pattern_var = or_pattern_rule(p))  // or_pattern
7041         )
7042         {
7043             D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern"));
7044             _res = or_pattern_var;
7045             goto done;
7046         }
7047         p->mark = _mark;
7048         D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
7049                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern"));
7050     }
7051     _res = NULL;
7052   done:
7053     D(p->level--);
7054     return _res;
7055 }
7056 
7057 // as_pattern: or_pattern 'as' pattern_capture_target | invalid_as_pattern
7058 static pattern_ty
as_pattern_rule(Parser * p)7059 as_pattern_rule(Parser *p)
7060 {
7061     D(p->level++);
7062     if (p->error_indicator) {
7063         D(p->level--);
7064         return NULL;
7065     }
7066     pattern_ty _res = NULL;
7067     int _mark = p->mark;
7068     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7069         p->error_indicator = 1;
7070         D(p->level--);
7071         return NULL;
7072     }
7073     int _start_lineno = p->tokens[_mark]->lineno;
7074     UNUSED(_start_lineno); // Only used by EXTRA macro
7075     int _start_col_offset = p->tokens[_mark]->col_offset;
7076     UNUSED(_start_col_offset); // Only used by EXTRA macro
7077     { // or_pattern 'as' pattern_capture_target
7078         if (p->error_indicator) {
7079             D(p->level--);
7080             return NULL;
7081         }
7082         D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
7083         Token * _keyword;
7084         pattern_ty pattern;
7085         expr_ty target;
7086         if (
7087             (pattern = or_pattern_rule(p))  // or_pattern
7088             &&
7089             (_keyword = _PyPegen_expect_token(p, 625))  // token='as'
7090             &&
7091             (target = pattern_capture_target_rule(p))  // pattern_capture_target
7092         )
7093         {
7094             D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
7095             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7096             if (_token == NULL) {
7097                 D(p->level--);
7098                 return NULL;
7099             }
7100             int _end_lineno = _token->end_lineno;
7101             UNUSED(_end_lineno); // Only used by EXTRA macro
7102             int _end_col_offset = _token->end_col_offset;
7103             UNUSED(_end_col_offset); // Only used by EXTRA macro
7104             _res = _PyAST_MatchAs ( pattern , target -> v . Name . id , EXTRA );
7105             if (_res == NULL && PyErr_Occurred()) {
7106                 p->error_indicator = 1;
7107                 D(p->level--);
7108                 return NULL;
7109             }
7110             goto done;
7111         }
7112         p->mark = _mark;
7113         D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7114                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
7115     }
7116     if (p->call_invalid_rules) { // invalid_as_pattern
7117         if (p->error_indicator) {
7118             D(p->level--);
7119             return NULL;
7120         }
7121         D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
7122         void *invalid_as_pattern_var;
7123         if (
7124             (invalid_as_pattern_var = invalid_as_pattern_rule(p))  // invalid_as_pattern
7125         )
7126         {
7127             D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
7128             _res = invalid_as_pattern_var;
7129             goto done;
7130         }
7131         p->mark = _mark;
7132         D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7133                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_as_pattern"));
7134     }
7135     _res = NULL;
7136   done:
7137     D(p->level--);
7138     return _res;
7139 }
7140 
7141 // or_pattern: '|'.closed_pattern+
7142 static pattern_ty
or_pattern_rule(Parser * p)7143 or_pattern_rule(Parser *p)
7144 {
7145     D(p->level++);
7146     if (p->error_indicator) {
7147         D(p->level--);
7148         return NULL;
7149     }
7150     pattern_ty _res = NULL;
7151     int _mark = p->mark;
7152     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7153         p->error_indicator = 1;
7154         D(p->level--);
7155         return NULL;
7156     }
7157     int _start_lineno = p->tokens[_mark]->lineno;
7158     UNUSED(_start_lineno); // Only used by EXTRA macro
7159     int _start_col_offset = p->tokens[_mark]->col_offset;
7160     UNUSED(_start_col_offset); // Only used by EXTRA macro
7161     { // '|'.closed_pattern+
7162         if (p->error_indicator) {
7163             D(p->level--);
7164             return NULL;
7165         }
7166         D(fprintf(stderr, "%*c> or_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
7167         asdl_pattern_seq* patterns;
7168         if (
7169             (patterns = (asdl_pattern_seq*)_gather_62_rule(p))  // '|'.closed_pattern+
7170         )
7171         {
7172             D(fprintf(stderr, "%*c+ or_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
7173             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7174             if (_token == NULL) {
7175                 D(p->level--);
7176                 return NULL;
7177             }
7178             int _end_lineno = _token->end_lineno;
7179             UNUSED(_end_lineno); // Only used by EXTRA macro
7180             int _end_col_offset = _token->end_col_offset;
7181             UNUSED(_end_col_offset); // Only used by EXTRA macro
7182             _res = asdl_seq_LEN ( patterns ) == 1 ? asdl_seq_GET ( patterns , 0 ) : _PyAST_MatchOr ( patterns , EXTRA );
7183             if (_res == NULL && PyErr_Occurred()) {
7184                 p->error_indicator = 1;
7185                 D(p->level--);
7186                 return NULL;
7187             }
7188             goto done;
7189         }
7190         p->mark = _mark;
7191         D(fprintf(stderr, "%*c%s or_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7192                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|'.closed_pattern+"));
7193     }
7194     _res = NULL;
7195   done:
7196     D(p->level--);
7197     return _res;
7198 }
7199 
7200 // closed_pattern:
7201 //     | literal_pattern
7202 //     | capture_pattern
7203 //     | wildcard_pattern
7204 //     | value_pattern
7205 //     | group_pattern
7206 //     | sequence_pattern
7207 //     | mapping_pattern
7208 //     | class_pattern
7209 static pattern_ty
closed_pattern_rule(Parser * p)7210 closed_pattern_rule(Parser *p)
7211 {
7212     D(p->level++);
7213     if (p->error_indicator) {
7214         D(p->level--);
7215         return NULL;
7216     }
7217     pattern_ty _res = NULL;
7218     int _mark = p->mark;
7219     { // literal_pattern
7220         if (p->error_indicator) {
7221             D(p->level--);
7222             return NULL;
7223         }
7224         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
7225         pattern_ty literal_pattern_var;
7226         if (
7227             (literal_pattern_var = literal_pattern_rule(p))  // literal_pattern
7228         )
7229         {
7230             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
7231             _res = literal_pattern_var;
7232             goto done;
7233         }
7234         p->mark = _mark;
7235         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7236                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_pattern"));
7237     }
7238     { // capture_pattern
7239         if (p->error_indicator) {
7240             D(p->level--);
7241             return NULL;
7242         }
7243         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
7244         pattern_ty capture_pattern_var;
7245         if (
7246             (capture_pattern_var = capture_pattern_rule(p))  // capture_pattern
7247         )
7248         {
7249             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
7250             _res = capture_pattern_var;
7251             goto done;
7252         }
7253         p->mark = _mark;
7254         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7255                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "capture_pattern"));
7256     }
7257     { // wildcard_pattern
7258         if (p->error_indicator) {
7259             D(p->level--);
7260             return NULL;
7261         }
7262         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
7263         pattern_ty wildcard_pattern_var;
7264         if (
7265             (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
7266         )
7267         {
7268             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
7269             _res = wildcard_pattern_var;
7270             goto done;
7271         }
7272         p->mark = _mark;
7273         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7274                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "wildcard_pattern"));
7275     }
7276     { // value_pattern
7277         if (p->error_indicator) {
7278             D(p->level--);
7279             return NULL;
7280         }
7281         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "value_pattern"));
7282         pattern_ty value_pattern_var;
7283         if (
7284             (value_pattern_var = value_pattern_rule(p))  // value_pattern
7285         )
7286         {
7287             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "value_pattern"));
7288             _res = value_pattern_var;
7289             goto done;
7290         }
7291         p->mark = _mark;
7292         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7293                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "value_pattern"));
7294     }
7295     { // group_pattern
7296         if (p->error_indicator) {
7297             D(p->level--);
7298             return NULL;
7299         }
7300         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group_pattern"));
7301         pattern_ty group_pattern_var;
7302         if (
7303             (group_pattern_var = group_pattern_rule(p))  // group_pattern
7304         )
7305         {
7306             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group_pattern"));
7307             _res = group_pattern_var;
7308             goto done;
7309         }
7310         p->mark = _mark;
7311         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7312                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group_pattern"));
7313     }
7314     { // sequence_pattern
7315         if (p->error_indicator) {
7316             D(p->level--);
7317             return NULL;
7318         }
7319         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
7320         pattern_ty sequence_pattern_var;
7321         if (
7322             (sequence_pattern_var = sequence_pattern_rule(p))  // sequence_pattern
7323         )
7324         {
7325             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
7326             _res = sequence_pattern_var;
7327             goto done;
7328         }
7329         p->mark = _mark;
7330         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7331                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sequence_pattern"));
7332     }
7333     { // mapping_pattern
7334         if (p->error_indicator) {
7335             D(p->level--);
7336             return NULL;
7337         }
7338         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
7339         pattern_ty mapping_pattern_var;
7340         if (
7341             (mapping_pattern_var = mapping_pattern_rule(p))  // mapping_pattern
7342         )
7343         {
7344             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
7345             _res = mapping_pattern_var;
7346             goto done;
7347         }
7348         p->mark = _mark;
7349         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7350                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "mapping_pattern"));
7351     }
7352     { // class_pattern
7353         if (p->error_indicator) {
7354             D(p->level--);
7355             return NULL;
7356         }
7357         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_pattern"));
7358         pattern_ty class_pattern_var;
7359         if (
7360             (class_pattern_var = class_pattern_rule(p))  // class_pattern
7361         )
7362         {
7363             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_pattern"));
7364             _res = class_pattern_var;
7365             goto done;
7366         }
7367         p->mark = _mark;
7368         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7369                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_pattern"));
7370     }
7371     _res = NULL;
7372   done:
7373     D(p->level--);
7374     return _res;
7375 }
7376 
7377 // literal_pattern:
7378 //     | signed_number !('+' | '-')
7379 //     | complex_number
7380 //     | strings
7381 //     | 'None'
7382 //     | 'True'
7383 //     | 'False'
7384 static pattern_ty
literal_pattern_rule(Parser * p)7385 literal_pattern_rule(Parser *p)
7386 {
7387     D(p->level++);
7388     if (p->error_indicator) {
7389         D(p->level--);
7390         return NULL;
7391     }
7392     pattern_ty _res = NULL;
7393     int _mark = p->mark;
7394     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7395         p->error_indicator = 1;
7396         D(p->level--);
7397         return NULL;
7398     }
7399     int _start_lineno = p->tokens[_mark]->lineno;
7400     UNUSED(_start_lineno); // Only used by EXTRA macro
7401     int _start_col_offset = p->tokens[_mark]->col_offset;
7402     UNUSED(_start_col_offset); // Only used by EXTRA macro
7403     { // signed_number !('+' | '-')
7404         if (p->error_indicator) {
7405             D(p->level--);
7406             return NULL;
7407         }
7408         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
7409         expr_ty value;
7410         if (
7411             (value = signed_number_rule(p))  // signed_number
7412             &&
7413             _PyPegen_lookahead(0, _tmp_64_rule, p)
7414         )
7415         {
7416             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
7417             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7418             if (_token == NULL) {
7419                 D(p->level--);
7420                 return NULL;
7421             }
7422             int _end_lineno = _token->end_lineno;
7423             UNUSED(_end_lineno); // Only used by EXTRA macro
7424             int _end_col_offset = _token->end_col_offset;
7425             UNUSED(_end_col_offset); // Only used by EXTRA macro
7426             _res = _PyAST_MatchValue ( value , EXTRA );
7427             if (_res == NULL && PyErr_Occurred()) {
7428                 p->error_indicator = 1;
7429                 D(p->level--);
7430                 return NULL;
7431             }
7432             goto done;
7433         }
7434         p->mark = _mark;
7435         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7436                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
7437     }
7438     { // complex_number
7439         if (p->error_indicator) {
7440             D(p->level--);
7441             return NULL;
7442         }
7443         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
7444         expr_ty value;
7445         if (
7446             (value = complex_number_rule(p))  // complex_number
7447         )
7448         {
7449             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
7450             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7451             if (_token == NULL) {
7452                 D(p->level--);
7453                 return NULL;
7454             }
7455             int _end_lineno = _token->end_lineno;
7456             UNUSED(_end_lineno); // Only used by EXTRA macro
7457             int _end_col_offset = _token->end_col_offset;
7458             UNUSED(_end_col_offset); // Only used by EXTRA macro
7459             _res = _PyAST_MatchValue ( value , EXTRA );
7460             if (_res == NULL && PyErr_Occurred()) {
7461                 p->error_indicator = 1;
7462                 D(p->level--);
7463                 return NULL;
7464             }
7465             goto done;
7466         }
7467         p->mark = _mark;
7468         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7469                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
7470     }
7471     { // strings
7472         if (p->error_indicator) {
7473             D(p->level--);
7474             return NULL;
7475         }
7476         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "strings"));
7477         expr_ty value;
7478         if (
7479             (value = strings_rule(p))  // strings
7480         )
7481         {
7482             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "strings"));
7483             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7484             if (_token == NULL) {
7485                 D(p->level--);
7486                 return NULL;
7487             }
7488             int _end_lineno = _token->end_lineno;
7489             UNUSED(_end_lineno); // Only used by EXTRA macro
7490             int _end_col_offset = _token->end_col_offset;
7491             UNUSED(_end_col_offset); // Only used by EXTRA macro
7492             _res = _PyAST_MatchValue ( value , EXTRA );
7493             if (_res == NULL && PyErr_Occurred()) {
7494                 p->error_indicator = 1;
7495                 D(p->level--);
7496                 return NULL;
7497             }
7498             goto done;
7499         }
7500         p->mark = _mark;
7501         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7502                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "strings"));
7503     }
7504     { // 'None'
7505         if (p->error_indicator) {
7506             D(p->level--);
7507             return NULL;
7508         }
7509         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
7510         Token * _keyword;
7511         if (
7512             (_keyword = _PyPegen_expect_token(p, 598))  // token='None'
7513         )
7514         {
7515             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
7516             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7517             if (_token == NULL) {
7518                 D(p->level--);
7519                 return NULL;
7520             }
7521             int _end_lineno = _token->end_lineno;
7522             UNUSED(_end_lineno); // Only used by EXTRA macro
7523             int _end_col_offset = _token->end_col_offset;
7524             UNUSED(_end_col_offset); // Only used by EXTRA macro
7525             _res = _PyAST_MatchSingleton ( Py_None , EXTRA );
7526             if (_res == NULL && PyErr_Occurred()) {
7527                 p->error_indicator = 1;
7528                 D(p->level--);
7529                 return NULL;
7530             }
7531             goto done;
7532         }
7533         p->mark = _mark;
7534         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7535                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
7536     }
7537     { // 'True'
7538         if (p->error_indicator) {
7539             D(p->level--);
7540             return NULL;
7541         }
7542         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
7543         Token * _keyword;
7544         if (
7545             (_keyword = _PyPegen_expect_token(p, 597))  // token='True'
7546         )
7547         {
7548             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
7549             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7550             if (_token == NULL) {
7551                 D(p->level--);
7552                 return NULL;
7553             }
7554             int _end_lineno = _token->end_lineno;
7555             UNUSED(_end_lineno); // Only used by EXTRA macro
7556             int _end_col_offset = _token->end_col_offset;
7557             UNUSED(_end_col_offset); // Only used by EXTRA macro
7558             _res = _PyAST_MatchSingleton ( Py_True , EXTRA );
7559             if (_res == NULL && PyErr_Occurred()) {
7560                 p->error_indicator = 1;
7561                 D(p->level--);
7562                 return NULL;
7563             }
7564             goto done;
7565         }
7566         p->mark = _mark;
7567         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7568                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
7569     }
7570     { // 'False'
7571         if (p->error_indicator) {
7572             D(p->level--);
7573             return NULL;
7574         }
7575         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
7576         Token * _keyword;
7577         if (
7578             (_keyword = _PyPegen_expect_token(p, 599))  // token='False'
7579         )
7580         {
7581             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
7582             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7583             if (_token == NULL) {
7584                 D(p->level--);
7585                 return NULL;
7586             }
7587             int _end_lineno = _token->end_lineno;
7588             UNUSED(_end_lineno); // Only used by EXTRA macro
7589             int _end_col_offset = _token->end_col_offset;
7590             UNUSED(_end_col_offset); // Only used by EXTRA macro
7591             _res = _PyAST_MatchSingleton ( Py_False , EXTRA );
7592             if (_res == NULL && PyErr_Occurred()) {
7593                 p->error_indicator = 1;
7594                 D(p->level--);
7595                 return NULL;
7596             }
7597             goto done;
7598         }
7599         p->mark = _mark;
7600         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7601                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
7602     }
7603     _res = NULL;
7604   done:
7605     D(p->level--);
7606     return _res;
7607 }
7608 
7609 // literal_expr:
7610 //     | signed_number !('+' | '-')
7611 //     | complex_number
7612 //     | strings
7613 //     | 'None'
7614 //     | 'True'
7615 //     | 'False'
7616 static expr_ty
literal_expr_rule(Parser * p)7617 literal_expr_rule(Parser *p)
7618 {
7619     D(p->level++);
7620     if (p->error_indicator) {
7621         D(p->level--);
7622         return NULL;
7623     }
7624     expr_ty _res = NULL;
7625     int _mark = p->mark;
7626     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7627         p->error_indicator = 1;
7628         D(p->level--);
7629         return NULL;
7630     }
7631     int _start_lineno = p->tokens[_mark]->lineno;
7632     UNUSED(_start_lineno); // Only used by EXTRA macro
7633     int _start_col_offset = p->tokens[_mark]->col_offset;
7634     UNUSED(_start_col_offset); // Only used by EXTRA macro
7635     { // signed_number !('+' | '-')
7636         if (p->error_indicator) {
7637             D(p->level--);
7638             return NULL;
7639         }
7640         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
7641         expr_ty signed_number_var;
7642         if (
7643             (signed_number_var = signed_number_rule(p))  // signed_number
7644             &&
7645             _PyPegen_lookahead(0, _tmp_65_rule, p)
7646         )
7647         {
7648             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
7649             _res = signed_number_var;
7650             goto done;
7651         }
7652         p->mark = _mark;
7653         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
7654                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
7655     }
7656     { // complex_number
7657         if (p->error_indicator) {
7658             D(p->level--);
7659             return NULL;
7660         }
7661         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
7662         expr_ty complex_number_var;
7663         if (
7664             (complex_number_var = complex_number_rule(p))  // complex_number
7665         )
7666         {
7667             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
7668             _res = complex_number_var;
7669             goto done;
7670         }
7671         p->mark = _mark;
7672         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
7673                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
7674     }
7675     { // strings
7676         if (p->error_indicator) {
7677             D(p->level--);
7678             return NULL;
7679         }
7680         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "strings"));
7681         expr_ty strings_var;
7682         if (
7683             (strings_var = strings_rule(p))  // strings
7684         )
7685         {
7686             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "strings"));
7687             _res = strings_var;
7688             goto done;
7689         }
7690         p->mark = _mark;
7691         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
7692                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "strings"));
7693     }
7694     { // 'None'
7695         if (p->error_indicator) {
7696             D(p->level--);
7697             return NULL;
7698         }
7699         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
7700         Token * _keyword;
7701         if (
7702             (_keyword = _PyPegen_expect_token(p, 598))  // token='None'
7703         )
7704         {
7705             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
7706             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7707             if (_token == NULL) {
7708                 D(p->level--);
7709                 return NULL;
7710             }
7711             int _end_lineno = _token->end_lineno;
7712             UNUSED(_end_lineno); // Only used by EXTRA macro
7713             int _end_col_offset = _token->end_col_offset;
7714             UNUSED(_end_col_offset); // Only used by EXTRA macro
7715             _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
7716             if (_res == NULL && PyErr_Occurred()) {
7717                 p->error_indicator = 1;
7718                 D(p->level--);
7719                 return NULL;
7720             }
7721             goto done;
7722         }
7723         p->mark = _mark;
7724         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
7725                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
7726     }
7727     { // 'True'
7728         if (p->error_indicator) {
7729             D(p->level--);
7730             return NULL;
7731         }
7732         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
7733         Token * _keyword;
7734         if (
7735             (_keyword = _PyPegen_expect_token(p, 597))  // token='True'
7736         )
7737         {
7738             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
7739             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7740             if (_token == NULL) {
7741                 D(p->level--);
7742                 return NULL;
7743             }
7744             int _end_lineno = _token->end_lineno;
7745             UNUSED(_end_lineno); // Only used by EXTRA macro
7746             int _end_col_offset = _token->end_col_offset;
7747             UNUSED(_end_col_offset); // Only used by EXTRA macro
7748             _res = _PyAST_Constant ( Py_True , NULL , EXTRA );
7749             if (_res == NULL && PyErr_Occurred()) {
7750                 p->error_indicator = 1;
7751                 D(p->level--);
7752                 return NULL;
7753             }
7754             goto done;
7755         }
7756         p->mark = _mark;
7757         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
7758                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
7759     }
7760     { // 'False'
7761         if (p->error_indicator) {
7762             D(p->level--);
7763             return NULL;
7764         }
7765         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
7766         Token * _keyword;
7767         if (
7768             (_keyword = _PyPegen_expect_token(p, 599))  // token='False'
7769         )
7770         {
7771             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
7772             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7773             if (_token == NULL) {
7774                 D(p->level--);
7775                 return NULL;
7776             }
7777             int _end_lineno = _token->end_lineno;
7778             UNUSED(_end_lineno); // Only used by EXTRA macro
7779             int _end_col_offset = _token->end_col_offset;
7780             UNUSED(_end_col_offset); // Only used by EXTRA macro
7781             _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
7782             if (_res == NULL && PyErr_Occurred()) {
7783                 p->error_indicator = 1;
7784                 D(p->level--);
7785                 return NULL;
7786             }
7787             goto done;
7788         }
7789         p->mark = _mark;
7790         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
7791                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
7792     }
7793     _res = NULL;
7794   done:
7795     D(p->level--);
7796     return _res;
7797 }
7798 
7799 // complex_number:
7800 //     | signed_real_number '+' imaginary_number
7801 //     | signed_real_number '-' imaginary_number
7802 static expr_ty
complex_number_rule(Parser * p)7803 complex_number_rule(Parser *p)
7804 {
7805     D(p->level++);
7806     if (p->error_indicator) {
7807         D(p->level--);
7808         return NULL;
7809     }
7810     expr_ty _res = NULL;
7811     int _mark = p->mark;
7812     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7813         p->error_indicator = 1;
7814         D(p->level--);
7815         return NULL;
7816     }
7817     int _start_lineno = p->tokens[_mark]->lineno;
7818     UNUSED(_start_lineno); // Only used by EXTRA macro
7819     int _start_col_offset = p->tokens[_mark]->col_offset;
7820     UNUSED(_start_col_offset); // Only used by EXTRA macro
7821     { // signed_real_number '+' imaginary_number
7822         if (p->error_indicator) {
7823             D(p->level--);
7824             return NULL;
7825         }
7826         D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
7827         Token * _literal;
7828         expr_ty imag;
7829         expr_ty real;
7830         if (
7831             (real = signed_real_number_rule(p))  // signed_real_number
7832             &&
7833             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
7834             &&
7835             (imag = imaginary_number_rule(p))  // imaginary_number
7836         )
7837         {
7838             D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
7839             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7840             if (_token == NULL) {
7841                 D(p->level--);
7842                 return NULL;
7843             }
7844             int _end_lineno = _token->end_lineno;
7845             UNUSED(_end_lineno); // Only used by EXTRA macro
7846             int _end_col_offset = _token->end_col_offset;
7847             UNUSED(_end_col_offset); // Only used by EXTRA macro
7848             _res = _PyAST_BinOp ( real , Add , imag , EXTRA );
7849             if (_res == NULL && PyErr_Occurred()) {
7850                 p->error_indicator = 1;
7851                 D(p->level--);
7852                 return NULL;
7853             }
7854             goto done;
7855         }
7856         p->mark = _mark;
7857         D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
7858                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '+' imaginary_number"));
7859     }
7860     { // signed_real_number '-' imaginary_number
7861         if (p->error_indicator) {
7862             D(p->level--);
7863             return NULL;
7864         }
7865         D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
7866         Token * _literal;
7867         expr_ty imag;
7868         expr_ty real;
7869         if (
7870             (real = signed_real_number_rule(p))  // signed_real_number
7871             &&
7872             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
7873             &&
7874             (imag = imaginary_number_rule(p))  // imaginary_number
7875         )
7876         {
7877             D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
7878             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7879             if (_token == NULL) {
7880                 D(p->level--);
7881                 return NULL;
7882             }
7883             int _end_lineno = _token->end_lineno;
7884             UNUSED(_end_lineno); // Only used by EXTRA macro
7885             int _end_col_offset = _token->end_col_offset;
7886             UNUSED(_end_col_offset); // Only used by EXTRA macro
7887             _res = _PyAST_BinOp ( real , Sub , imag , EXTRA );
7888             if (_res == NULL && PyErr_Occurred()) {
7889                 p->error_indicator = 1;
7890                 D(p->level--);
7891                 return NULL;
7892             }
7893             goto done;
7894         }
7895         p->mark = _mark;
7896         D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
7897                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '-' imaginary_number"));
7898     }
7899     _res = NULL;
7900   done:
7901     D(p->level--);
7902     return _res;
7903 }
7904 
7905 // signed_number: NUMBER | '-' NUMBER
7906 static expr_ty
signed_number_rule(Parser * p)7907 signed_number_rule(Parser *p)
7908 {
7909     D(p->level++);
7910     if (p->error_indicator) {
7911         D(p->level--);
7912         return NULL;
7913     }
7914     expr_ty _res = NULL;
7915     int _mark = p->mark;
7916     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7917         p->error_indicator = 1;
7918         D(p->level--);
7919         return NULL;
7920     }
7921     int _start_lineno = p->tokens[_mark]->lineno;
7922     UNUSED(_start_lineno); // Only used by EXTRA macro
7923     int _start_col_offset = p->tokens[_mark]->col_offset;
7924     UNUSED(_start_col_offset); // Only used by EXTRA macro
7925     { // NUMBER
7926         if (p->error_indicator) {
7927             D(p->level--);
7928             return NULL;
7929         }
7930         D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
7931         expr_ty number_var;
7932         if (
7933             (number_var = _PyPegen_number_token(p))  // NUMBER
7934         )
7935         {
7936             D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
7937             _res = number_var;
7938             goto done;
7939         }
7940         p->mark = _mark;
7941         D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
7942                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
7943     }
7944     { // '-' NUMBER
7945         if (p->error_indicator) {
7946             D(p->level--);
7947             return NULL;
7948         }
7949         D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
7950         Token * _literal;
7951         expr_ty number;
7952         if (
7953             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
7954             &&
7955             (number = _PyPegen_number_token(p))  // NUMBER
7956         )
7957         {
7958             D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
7959             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7960             if (_token == NULL) {
7961                 D(p->level--);
7962                 return NULL;
7963             }
7964             int _end_lineno = _token->end_lineno;
7965             UNUSED(_end_lineno); // Only used by EXTRA macro
7966             int _end_col_offset = _token->end_col_offset;
7967             UNUSED(_end_col_offset); // Only used by EXTRA macro
7968             _res = _PyAST_UnaryOp ( USub , number , EXTRA );
7969             if (_res == NULL && PyErr_Occurred()) {
7970                 p->error_indicator = 1;
7971                 D(p->level--);
7972                 return NULL;
7973             }
7974             goto done;
7975         }
7976         p->mark = _mark;
7977         D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
7978                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' NUMBER"));
7979     }
7980     _res = NULL;
7981   done:
7982     D(p->level--);
7983     return _res;
7984 }
7985 
7986 // signed_real_number: real_number | '-' real_number
7987 static expr_ty
signed_real_number_rule(Parser * p)7988 signed_real_number_rule(Parser *p)
7989 {
7990     D(p->level++);
7991     if (p->error_indicator) {
7992         D(p->level--);
7993         return NULL;
7994     }
7995     expr_ty _res = NULL;
7996     int _mark = p->mark;
7997     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7998         p->error_indicator = 1;
7999         D(p->level--);
8000         return NULL;
8001     }
8002     int _start_lineno = p->tokens[_mark]->lineno;
8003     UNUSED(_start_lineno); // Only used by EXTRA macro
8004     int _start_col_offset = p->tokens[_mark]->col_offset;
8005     UNUSED(_start_col_offset); // Only used by EXTRA macro
8006     { // real_number
8007         if (p->error_indicator) {
8008             D(p->level--);
8009             return NULL;
8010         }
8011         D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "real_number"));
8012         expr_ty real_number_var;
8013         if (
8014             (real_number_var = real_number_rule(p))  // real_number
8015         )
8016         {
8017             D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "real_number"));
8018             _res = real_number_var;
8019             goto done;
8020         }
8021         p->mark = _mark;
8022         D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
8023                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "real_number"));
8024     }
8025     { // '-' real_number
8026         if (p->error_indicator) {
8027             D(p->level--);
8028             return NULL;
8029         }
8030         D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
8031         Token * _literal;
8032         expr_ty real;
8033         if (
8034             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
8035             &&
8036             (real = real_number_rule(p))  // real_number
8037         )
8038         {
8039             D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
8040             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8041             if (_token == NULL) {
8042                 D(p->level--);
8043                 return NULL;
8044             }
8045             int _end_lineno = _token->end_lineno;
8046             UNUSED(_end_lineno); // Only used by EXTRA macro
8047             int _end_col_offset = _token->end_col_offset;
8048             UNUSED(_end_col_offset); // Only used by EXTRA macro
8049             _res = _PyAST_UnaryOp ( USub , real , EXTRA );
8050             if (_res == NULL && PyErr_Occurred()) {
8051                 p->error_indicator = 1;
8052                 D(p->level--);
8053                 return NULL;
8054             }
8055             goto done;
8056         }
8057         p->mark = _mark;
8058         D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
8059                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' real_number"));
8060     }
8061     _res = NULL;
8062   done:
8063     D(p->level--);
8064     return _res;
8065 }
8066 
8067 // real_number: NUMBER
8068 static expr_ty
real_number_rule(Parser * p)8069 real_number_rule(Parser *p)
8070 {
8071     D(p->level++);
8072     if (p->error_indicator) {
8073         D(p->level--);
8074         return NULL;
8075     }
8076     expr_ty _res = NULL;
8077     int _mark = p->mark;
8078     { // NUMBER
8079         if (p->error_indicator) {
8080             D(p->level--);
8081             return NULL;
8082         }
8083         D(fprintf(stderr, "%*c> real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
8084         expr_ty real;
8085         if (
8086             (real = _PyPegen_number_token(p))  // NUMBER
8087         )
8088         {
8089             D(fprintf(stderr, "%*c+ real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
8090             _res = _PyPegen_ensure_real ( p , real );
8091             if (_res == NULL && PyErr_Occurred()) {
8092                 p->error_indicator = 1;
8093                 D(p->level--);
8094                 return NULL;
8095             }
8096             goto done;
8097         }
8098         p->mark = _mark;
8099         D(fprintf(stderr, "%*c%s real_number[%d-%d]: %s failed!\n", p->level, ' ',
8100                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
8101     }
8102     _res = NULL;
8103   done:
8104     D(p->level--);
8105     return _res;
8106 }
8107 
8108 // imaginary_number: NUMBER
8109 static expr_ty
imaginary_number_rule(Parser * p)8110 imaginary_number_rule(Parser *p)
8111 {
8112     D(p->level++);
8113     if (p->error_indicator) {
8114         D(p->level--);
8115         return NULL;
8116     }
8117     expr_ty _res = NULL;
8118     int _mark = p->mark;
8119     { // NUMBER
8120         if (p->error_indicator) {
8121             D(p->level--);
8122             return NULL;
8123         }
8124         D(fprintf(stderr, "%*c> imaginary_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
8125         expr_ty imag;
8126         if (
8127             (imag = _PyPegen_number_token(p))  // NUMBER
8128         )
8129         {
8130             D(fprintf(stderr, "%*c+ imaginary_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
8131             _res = _PyPegen_ensure_imaginary ( p , imag );
8132             if (_res == NULL && PyErr_Occurred()) {
8133                 p->error_indicator = 1;
8134                 D(p->level--);
8135                 return NULL;
8136             }
8137             goto done;
8138         }
8139         p->mark = _mark;
8140         D(fprintf(stderr, "%*c%s imaginary_number[%d-%d]: %s failed!\n", p->level, ' ',
8141                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
8142     }
8143     _res = NULL;
8144   done:
8145     D(p->level--);
8146     return _res;
8147 }
8148 
8149 // capture_pattern: pattern_capture_target
8150 static pattern_ty
capture_pattern_rule(Parser * p)8151 capture_pattern_rule(Parser *p)
8152 {
8153     D(p->level++);
8154     if (p->error_indicator) {
8155         D(p->level--);
8156         return NULL;
8157     }
8158     pattern_ty _res = NULL;
8159     int _mark = p->mark;
8160     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8161         p->error_indicator = 1;
8162         D(p->level--);
8163         return NULL;
8164     }
8165     int _start_lineno = p->tokens[_mark]->lineno;
8166     UNUSED(_start_lineno); // Only used by EXTRA macro
8167     int _start_col_offset = p->tokens[_mark]->col_offset;
8168     UNUSED(_start_col_offset); // Only used by EXTRA macro
8169     { // pattern_capture_target
8170         if (p->error_indicator) {
8171             D(p->level--);
8172             return NULL;
8173         }
8174         D(fprintf(stderr, "%*c> capture_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
8175         expr_ty target;
8176         if (
8177             (target = pattern_capture_target_rule(p))  // pattern_capture_target
8178         )
8179         {
8180             D(fprintf(stderr, "%*c+ capture_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
8181             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8182             if (_token == NULL) {
8183                 D(p->level--);
8184                 return NULL;
8185             }
8186             int _end_lineno = _token->end_lineno;
8187             UNUSED(_end_lineno); // Only used by EXTRA macro
8188             int _end_col_offset = _token->end_col_offset;
8189             UNUSED(_end_col_offset); // Only used by EXTRA macro
8190             _res = _PyAST_MatchAs ( NULL , target -> v . Name . id , EXTRA );
8191             if (_res == NULL && PyErr_Occurred()) {
8192                 p->error_indicator = 1;
8193                 D(p->level--);
8194                 return NULL;
8195             }
8196             goto done;
8197         }
8198         p->mark = _mark;
8199         D(fprintf(stderr, "%*c%s capture_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8200                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern_capture_target"));
8201     }
8202     _res = NULL;
8203   done:
8204     D(p->level--);
8205     return _res;
8206 }
8207 
8208 // pattern_capture_target: !"_" NAME !('.' | '(' | '=')
8209 static expr_ty
pattern_capture_target_rule(Parser * p)8210 pattern_capture_target_rule(Parser *p)
8211 {
8212     D(p->level++);
8213     if (p->error_indicator) {
8214         D(p->level--);
8215         return NULL;
8216     }
8217     expr_ty _res = NULL;
8218     int _mark = p->mark;
8219     { // !"_" NAME !('.' | '(' | '=')
8220         if (p->error_indicator) {
8221             D(p->level--);
8222             return NULL;
8223         }
8224         D(fprintf(stderr, "%*c> pattern_capture_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
8225         expr_ty name;
8226         if (
8227             _PyPegen_lookahead_with_string(0, _PyPegen_expect_soft_keyword, p, "_")
8228             &&
8229             (name = _PyPegen_name_token(p))  // NAME
8230             &&
8231             _PyPegen_lookahead(0, _tmp_66_rule, p)
8232         )
8233         {
8234             D(fprintf(stderr, "%*c+ pattern_capture_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
8235             _res = _PyPegen_set_expr_context ( p , name , Store );
8236             if (_res == NULL && PyErr_Occurred()) {
8237                 p->error_indicator = 1;
8238                 D(p->level--);
8239                 return NULL;
8240             }
8241             goto done;
8242         }
8243         p->mark = _mark;
8244         D(fprintf(stderr, "%*c%s pattern_capture_target[%d-%d]: %s failed!\n", p->level, ' ',
8245                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
8246     }
8247     _res = NULL;
8248   done:
8249     D(p->level--);
8250     return _res;
8251 }
8252 
8253 // wildcard_pattern: "_"
8254 static pattern_ty
wildcard_pattern_rule(Parser * p)8255 wildcard_pattern_rule(Parser *p)
8256 {
8257     D(p->level++);
8258     if (p->error_indicator) {
8259         D(p->level--);
8260         return NULL;
8261     }
8262     pattern_ty _res = NULL;
8263     int _mark = p->mark;
8264     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8265         p->error_indicator = 1;
8266         D(p->level--);
8267         return NULL;
8268     }
8269     int _start_lineno = p->tokens[_mark]->lineno;
8270     UNUSED(_start_lineno); // Only used by EXTRA macro
8271     int _start_col_offset = p->tokens[_mark]->col_offset;
8272     UNUSED(_start_col_offset); // Only used by EXTRA macro
8273     { // "_"
8274         if (p->error_indicator) {
8275             D(p->level--);
8276             return NULL;
8277         }
8278         D(fprintf(stderr, "%*c> wildcard_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"_\""));
8279         expr_ty _keyword;
8280         if (
8281             (_keyword = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
8282         )
8283         {
8284             D(fprintf(stderr, "%*c+ wildcard_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"_\""));
8285             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8286             if (_token == NULL) {
8287                 D(p->level--);
8288                 return NULL;
8289             }
8290             int _end_lineno = _token->end_lineno;
8291             UNUSED(_end_lineno); // Only used by EXTRA macro
8292             int _end_col_offset = _token->end_col_offset;
8293             UNUSED(_end_col_offset); // Only used by EXTRA macro
8294             _res = _PyAST_MatchAs ( NULL , NULL , EXTRA );
8295             if (_res == NULL && PyErr_Occurred()) {
8296                 p->error_indicator = 1;
8297                 D(p->level--);
8298                 return NULL;
8299             }
8300             goto done;
8301         }
8302         p->mark = _mark;
8303         D(fprintf(stderr, "%*c%s wildcard_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8304                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"_\""));
8305     }
8306     _res = NULL;
8307   done:
8308     D(p->level--);
8309     return _res;
8310 }
8311 
8312 // value_pattern: attr !('.' | '(' | '=')
8313 static pattern_ty
value_pattern_rule(Parser * p)8314 value_pattern_rule(Parser *p)
8315 {
8316     D(p->level++);
8317     if (p->error_indicator) {
8318         D(p->level--);
8319         return NULL;
8320     }
8321     pattern_ty _res = NULL;
8322     int _mark = p->mark;
8323     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8324         p->error_indicator = 1;
8325         D(p->level--);
8326         return NULL;
8327     }
8328     int _start_lineno = p->tokens[_mark]->lineno;
8329     UNUSED(_start_lineno); // Only used by EXTRA macro
8330     int _start_col_offset = p->tokens[_mark]->col_offset;
8331     UNUSED(_start_col_offset); // Only used by EXTRA macro
8332     { // attr !('.' | '(' | '=')
8333         if (p->error_indicator) {
8334             D(p->level--);
8335             return NULL;
8336         }
8337         D(fprintf(stderr, "%*c> value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
8338         expr_ty attr;
8339         if (
8340             (attr = attr_rule(p))  // attr
8341             &&
8342             _PyPegen_lookahead(0, _tmp_67_rule, p)
8343         )
8344         {
8345             D(fprintf(stderr, "%*c+ value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
8346             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8347             if (_token == NULL) {
8348                 D(p->level--);
8349                 return NULL;
8350             }
8351             int _end_lineno = _token->end_lineno;
8352             UNUSED(_end_lineno); // Only used by EXTRA macro
8353             int _end_col_offset = _token->end_col_offset;
8354             UNUSED(_end_col_offset); // Only used by EXTRA macro
8355             _res = _PyAST_MatchValue ( attr , EXTRA );
8356             if (_res == NULL && PyErr_Occurred()) {
8357                 p->error_indicator = 1;
8358                 D(p->level--);
8359                 return NULL;
8360             }
8361             goto done;
8362         }
8363         p->mark = _mark;
8364         D(fprintf(stderr, "%*c%s value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8365                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr !('.' | '(' | '=')"));
8366     }
8367     _res = NULL;
8368   done:
8369     D(p->level--);
8370     return _res;
8371 }
8372 
8373 // Left-recursive
8374 // attr: name_or_attr '.' NAME
8375 static expr_ty attr_raw(Parser *);
8376 static expr_ty
attr_rule(Parser * p)8377 attr_rule(Parser *p)
8378 {
8379     D(p->level++);
8380     expr_ty _res = NULL;
8381     if (_PyPegen_is_memoized(p, attr_type, &_res)) {
8382         D(p->level--);
8383         return _res;
8384     }
8385     int _mark = p->mark;
8386     int _resmark = p->mark;
8387     while (1) {
8388         int tmpvar_1 = _PyPegen_update_memo(p, _mark, attr_type, _res);
8389         if (tmpvar_1) {
8390             D(p->level--);
8391             return _res;
8392         }
8393         p->mark = _mark;
8394         p->in_raw_rule++;
8395         void *_raw = attr_raw(p);
8396         p->in_raw_rule--;
8397         if (p->error_indicator)
8398             return NULL;
8399         if (_raw == NULL || p->mark <= _resmark)
8400             break;
8401         _resmark = p->mark;
8402         _res = _raw;
8403     }
8404     p->mark = _resmark;
8405     D(p->level--);
8406     return _res;
8407 }
8408 static expr_ty
attr_raw(Parser * p)8409 attr_raw(Parser *p)
8410 {
8411     D(p->level++);
8412     if (p->error_indicator) {
8413         D(p->level--);
8414         return NULL;
8415     }
8416     expr_ty _res = NULL;
8417     int _mark = p->mark;
8418     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8419         p->error_indicator = 1;
8420         D(p->level--);
8421         return NULL;
8422     }
8423     int _start_lineno = p->tokens[_mark]->lineno;
8424     UNUSED(_start_lineno); // Only used by EXTRA macro
8425     int _start_col_offset = p->tokens[_mark]->col_offset;
8426     UNUSED(_start_col_offset); // Only used by EXTRA macro
8427     { // name_or_attr '.' NAME
8428         if (p->error_indicator) {
8429             D(p->level--);
8430             return NULL;
8431         }
8432         D(fprintf(stderr, "%*c> attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
8433         Token * _literal;
8434         expr_ty attr;
8435         expr_ty value;
8436         if (
8437             (value = name_or_attr_rule(p))  // name_or_attr
8438             &&
8439             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
8440             &&
8441             (attr = _PyPegen_name_token(p))  // NAME
8442         )
8443         {
8444             D(fprintf(stderr, "%*c+ attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
8445             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8446             if (_token == NULL) {
8447                 D(p->level--);
8448                 return NULL;
8449             }
8450             int _end_lineno = _token->end_lineno;
8451             UNUSED(_end_lineno); // Only used by EXTRA macro
8452             int _end_col_offset = _token->end_col_offset;
8453             UNUSED(_end_col_offset); // Only used by EXTRA macro
8454             _res = _PyAST_Attribute ( value , attr -> v . Name . id , Load , EXTRA );
8455             if (_res == NULL && PyErr_Occurred()) {
8456                 p->error_indicator = 1;
8457                 D(p->level--);
8458                 return NULL;
8459             }
8460             goto done;
8461         }
8462         p->mark = _mark;
8463         D(fprintf(stderr, "%*c%s attr[%d-%d]: %s failed!\n", p->level, ' ',
8464                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '.' NAME"));
8465     }
8466     _res = NULL;
8467   done:
8468     D(p->level--);
8469     return _res;
8470 }
8471 
8472 // Left-recursive
8473 // name_or_attr: attr | NAME
8474 static expr_ty
name_or_attr_rule(Parser * p)8475 name_or_attr_rule(Parser *p)
8476 {
8477     D(p->level++);
8478     if (p->error_indicator) {
8479         D(p->level--);
8480         return NULL;
8481     }
8482     expr_ty _res = NULL;
8483     int _mark = p->mark;
8484     { // attr
8485         if (p->error_indicator) {
8486             D(p->level--);
8487             return NULL;
8488         }
8489         D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
8490         expr_ty attr_var;
8491         if (
8492             (attr_var = attr_rule(p))  // attr
8493         )
8494         {
8495             D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
8496             _res = attr_var;
8497             goto done;
8498         }
8499         p->mark = _mark;
8500         D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
8501                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
8502     }
8503     { // NAME
8504         if (p->error_indicator) {
8505             D(p->level--);
8506             return NULL;
8507         }
8508         D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
8509         expr_ty name_var;
8510         if (
8511             (name_var = _PyPegen_name_token(p))  // NAME
8512         )
8513         {
8514             D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
8515             _res = name_var;
8516             goto done;
8517         }
8518         p->mark = _mark;
8519         D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
8520                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
8521     }
8522     _res = NULL;
8523   done:
8524     D(p->level--);
8525     return _res;
8526 }
8527 
8528 // group_pattern: '(' pattern ')'
8529 static pattern_ty
group_pattern_rule(Parser * p)8530 group_pattern_rule(Parser *p)
8531 {
8532     D(p->level++);
8533     if (p->error_indicator) {
8534         D(p->level--);
8535         return NULL;
8536     }
8537     pattern_ty _res = NULL;
8538     int _mark = p->mark;
8539     { // '(' pattern ')'
8540         if (p->error_indicator) {
8541             D(p->level--);
8542             return NULL;
8543         }
8544         D(fprintf(stderr, "%*c> group_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
8545         Token * _literal;
8546         Token * _literal_1;
8547         pattern_ty pattern;
8548         if (
8549             (_literal = _PyPegen_expect_token(p, 7))  // token='('
8550             &&
8551             (pattern = pattern_rule(p))  // pattern
8552             &&
8553             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
8554         )
8555         {
8556             D(fprintf(stderr, "%*c+ group_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
8557             _res = pattern;
8558             if (_res == NULL && PyErr_Occurred()) {
8559                 p->error_indicator = 1;
8560                 D(p->level--);
8561                 return NULL;
8562             }
8563             goto done;
8564         }
8565         p->mark = _mark;
8566         D(fprintf(stderr, "%*c%s group_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8567                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' pattern ')'"));
8568     }
8569     _res = NULL;
8570   done:
8571     D(p->level--);
8572     return _res;
8573 }
8574 
8575 // sequence_pattern: '[' maybe_sequence_pattern? ']' | '(' open_sequence_pattern? ')'
8576 static pattern_ty
sequence_pattern_rule(Parser * p)8577 sequence_pattern_rule(Parser *p)
8578 {
8579     D(p->level++);
8580     if (p->error_indicator) {
8581         D(p->level--);
8582         return NULL;
8583     }
8584     pattern_ty _res = NULL;
8585     int _mark = p->mark;
8586     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8587         p->error_indicator = 1;
8588         D(p->level--);
8589         return NULL;
8590     }
8591     int _start_lineno = p->tokens[_mark]->lineno;
8592     UNUSED(_start_lineno); // Only used by EXTRA macro
8593     int _start_col_offset = p->tokens[_mark]->col_offset;
8594     UNUSED(_start_col_offset); // Only used by EXTRA macro
8595     { // '[' maybe_sequence_pattern? ']'
8596         if (p->error_indicator) {
8597             D(p->level--);
8598             return NULL;
8599         }
8600         D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
8601         Token * _literal;
8602         Token * _literal_1;
8603         void *patterns;
8604         if (
8605             (_literal = _PyPegen_expect_token(p, 9))  // token='['
8606             &&
8607             (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
8608             &&
8609             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
8610         )
8611         {
8612             D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
8613             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8614             if (_token == NULL) {
8615                 D(p->level--);
8616                 return NULL;
8617             }
8618             int _end_lineno = _token->end_lineno;
8619             UNUSED(_end_lineno); // Only used by EXTRA macro
8620             int _end_col_offset = _token->end_col_offset;
8621             UNUSED(_end_col_offset); // Only used by EXTRA macro
8622             _res = _PyAST_MatchSequence ( patterns , EXTRA );
8623             if (_res == NULL && PyErr_Occurred()) {
8624                 p->error_indicator = 1;
8625                 D(p->level--);
8626                 return NULL;
8627             }
8628             goto done;
8629         }
8630         p->mark = _mark;
8631         D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8632                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
8633     }
8634     { // '(' open_sequence_pattern? ')'
8635         if (p->error_indicator) {
8636             D(p->level--);
8637             return NULL;
8638         }
8639         D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
8640         Token * _literal;
8641         Token * _literal_1;
8642         void *patterns;
8643         if (
8644             (_literal = _PyPegen_expect_token(p, 7))  // token='('
8645             &&
8646             (patterns = open_sequence_pattern_rule(p), !p->error_indicator)  // open_sequence_pattern?
8647             &&
8648             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
8649         )
8650         {
8651             D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
8652             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8653             if (_token == NULL) {
8654                 D(p->level--);
8655                 return NULL;
8656             }
8657             int _end_lineno = _token->end_lineno;
8658             UNUSED(_end_lineno); // Only used by EXTRA macro
8659             int _end_col_offset = _token->end_col_offset;
8660             UNUSED(_end_col_offset); // Only used by EXTRA macro
8661             _res = _PyAST_MatchSequence ( patterns , EXTRA );
8662             if (_res == NULL && PyErr_Occurred()) {
8663                 p->error_indicator = 1;
8664                 D(p->level--);
8665                 return NULL;
8666             }
8667             goto done;
8668         }
8669         p->mark = _mark;
8670         D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8671                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' open_sequence_pattern? ')'"));
8672     }
8673     _res = NULL;
8674   done:
8675     D(p->level--);
8676     return _res;
8677 }
8678 
8679 // open_sequence_pattern: maybe_star_pattern ',' maybe_sequence_pattern?
8680 static asdl_seq*
open_sequence_pattern_rule(Parser * p)8681 open_sequence_pattern_rule(Parser *p)
8682 {
8683     D(p->level++);
8684     if (p->error_indicator) {
8685         D(p->level--);
8686         return NULL;
8687     }
8688     asdl_seq* _res = NULL;
8689     int _mark = p->mark;
8690     { // maybe_star_pattern ',' maybe_sequence_pattern?
8691         if (p->error_indicator) {
8692             D(p->level--);
8693             return NULL;
8694         }
8695         D(fprintf(stderr, "%*c> open_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
8696         Token * _literal;
8697         pattern_ty pattern;
8698         void *patterns;
8699         if (
8700             (pattern = maybe_star_pattern_rule(p))  // maybe_star_pattern
8701             &&
8702             (_literal = _PyPegen_expect_token(p, 12))  // token=','
8703             &&
8704             (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
8705         )
8706         {
8707             D(fprintf(stderr, "%*c+ open_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
8708             _res = _PyPegen_seq_insert_in_front ( p , pattern , patterns );
8709             if (_res == NULL && PyErr_Occurred()) {
8710                 p->error_indicator = 1;
8711                 D(p->level--);
8712                 return NULL;
8713             }
8714             goto done;
8715         }
8716         p->mark = _mark;
8717         D(fprintf(stderr, "%*c%s open_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8718                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
8719     }
8720     _res = NULL;
8721   done:
8722     D(p->level--);
8723     return _res;
8724 }
8725 
8726 // maybe_sequence_pattern: ','.maybe_star_pattern+ ','?
8727 static asdl_seq*
maybe_sequence_pattern_rule(Parser * p)8728 maybe_sequence_pattern_rule(Parser *p)
8729 {
8730     D(p->level++);
8731     if (p->error_indicator) {
8732         D(p->level--);
8733         return NULL;
8734     }
8735     asdl_seq* _res = NULL;
8736     int _mark = p->mark;
8737     { // ','.maybe_star_pattern+ ','?
8738         if (p->error_indicator) {
8739             D(p->level--);
8740             return NULL;
8741         }
8742         D(fprintf(stderr, "%*c> maybe_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
8743         void *_opt_var;
8744         UNUSED(_opt_var); // Silence compiler warnings
8745         asdl_seq * patterns;
8746         if (
8747             (patterns = _gather_68_rule(p))  // ','.maybe_star_pattern+
8748             &&
8749             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
8750         )
8751         {
8752             D(fprintf(stderr, "%*c+ maybe_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
8753             _res = patterns;
8754             if (_res == NULL && PyErr_Occurred()) {
8755                 p->error_indicator = 1;
8756                 D(p->level--);
8757                 return NULL;
8758             }
8759             goto done;
8760         }
8761         p->mark = _mark;
8762         D(fprintf(stderr, "%*c%s maybe_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8763                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.maybe_star_pattern+ ','?"));
8764     }
8765     _res = NULL;
8766   done:
8767     D(p->level--);
8768     return _res;
8769 }
8770 
8771 // maybe_star_pattern: star_pattern | pattern
8772 static pattern_ty
maybe_star_pattern_rule(Parser * p)8773 maybe_star_pattern_rule(Parser *p)
8774 {
8775     D(p->level++);
8776     if (p->error_indicator) {
8777         D(p->level--);
8778         return NULL;
8779     }
8780     pattern_ty _res = NULL;
8781     int _mark = p->mark;
8782     { // star_pattern
8783         if (p->error_indicator) {
8784             D(p->level--);
8785             return NULL;
8786         }
8787         D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_pattern"));
8788         pattern_ty star_pattern_var;
8789         if (
8790             (star_pattern_var = star_pattern_rule(p))  // star_pattern
8791         )
8792         {
8793             D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_pattern"));
8794             _res = star_pattern_var;
8795             goto done;
8796         }
8797         p->mark = _mark;
8798         D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8799                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_pattern"));
8800     }
8801     { // pattern
8802         if (p->error_indicator) {
8803             D(p->level--);
8804             return NULL;
8805         }
8806         D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
8807         pattern_ty pattern_var;
8808         if (
8809             (pattern_var = pattern_rule(p))  // pattern
8810         )
8811         {
8812             D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
8813             _res = pattern_var;
8814             goto done;
8815         }
8816         p->mark = _mark;
8817         D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8818                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
8819     }
8820     _res = NULL;
8821   done:
8822     D(p->level--);
8823     return _res;
8824 }
8825 
8826 // star_pattern: '*' pattern_capture_target | '*' wildcard_pattern
8827 static pattern_ty
star_pattern_rule(Parser * p)8828 star_pattern_rule(Parser *p)
8829 {
8830     D(p->level++);
8831     if (p->error_indicator) {
8832         D(p->level--);
8833         return NULL;
8834     }
8835     pattern_ty _res = NULL;
8836     int _mark = p->mark;
8837     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8838         p->error_indicator = 1;
8839         D(p->level--);
8840         return NULL;
8841     }
8842     int _start_lineno = p->tokens[_mark]->lineno;
8843     UNUSED(_start_lineno); // Only used by EXTRA macro
8844     int _start_col_offset = p->tokens[_mark]->col_offset;
8845     UNUSED(_start_col_offset); // Only used by EXTRA macro
8846     { // '*' pattern_capture_target
8847         if (p->error_indicator) {
8848             D(p->level--);
8849             return NULL;
8850         }
8851         D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
8852         Token * _literal;
8853         expr_ty target;
8854         if (
8855             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
8856             &&
8857             (target = pattern_capture_target_rule(p))  // pattern_capture_target
8858         )
8859         {
8860             D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
8861             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8862             if (_token == NULL) {
8863                 D(p->level--);
8864                 return NULL;
8865             }
8866             int _end_lineno = _token->end_lineno;
8867             UNUSED(_end_lineno); // Only used by EXTRA macro
8868             int _end_col_offset = _token->end_col_offset;
8869             UNUSED(_end_col_offset); // Only used by EXTRA macro
8870             _res = _PyAST_MatchStar ( target -> v . Name . id , EXTRA );
8871             if (_res == NULL && PyErr_Occurred()) {
8872                 p->error_indicator = 1;
8873                 D(p->level--);
8874                 return NULL;
8875             }
8876             goto done;
8877         }
8878         p->mark = _mark;
8879         D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8880                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' pattern_capture_target"));
8881     }
8882     { // '*' wildcard_pattern
8883         if (p->error_indicator) {
8884             D(p->level--);
8885             return NULL;
8886         }
8887         D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
8888         Token * _literal;
8889         pattern_ty wildcard_pattern_var;
8890         if (
8891             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
8892             &&
8893             (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
8894         )
8895         {
8896             D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
8897             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8898             if (_token == NULL) {
8899                 D(p->level--);
8900                 return NULL;
8901             }
8902             int _end_lineno = _token->end_lineno;
8903             UNUSED(_end_lineno); // Only used by EXTRA macro
8904             int _end_col_offset = _token->end_col_offset;
8905             UNUSED(_end_col_offset); // Only used by EXTRA macro
8906             _res = _PyAST_MatchStar ( NULL , EXTRA );
8907             if (_res == NULL && PyErr_Occurred()) {
8908                 p->error_indicator = 1;
8909                 D(p->level--);
8910                 return NULL;
8911             }
8912             goto done;
8913         }
8914         p->mark = _mark;
8915         D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8916                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' wildcard_pattern"));
8917     }
8918     _res = NULL;
8919   done:
8920     D(p->level--);
8921     return _res;
8922 }
8923 
8924 // mapping_pattern:
8925 //     | '{' '}'
8926 //     | '{' double_star_pattern ','? '}'
8927 //     | '{' items_pattern ',' double_star_pattern ','? '}'
8928 //     | '{' items_pattern ','? '}'
8929 static pattern_ty
mapping_pattern_rule(Parser * p)8930 mapping_pattern_rule(Parser *p)
8931 {
8932     D(p->level++);
8933     if (p->error_indicator) {
8934         D(p->level--);
8935         return NULL;
8936     }
8937     pattern_ty _res = NULL;
8938     int _mark = p->mark;
8939     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8940         p->error_indicator = 1;
8941         D(p->level--);
8942         return NULL;
8943     }
8944     int _start_lineno = p->tokens[_mark]->lineno;
8945     UNUSED(_start_lineno); // Only used by EXTRA macro
8946     int _start_col_offset = p->tokens[_mark]->col_offset;
8947     UNUSED(_start_col_offset); // Only used by EXTRA macro
8948     { // '{' '}'
8949         if (p->error_indicator) {
8950             D(p->level--);
8951             return NULL;
8952         }
8953         D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
8954         Token * _literal;
8955         Token * _literal_1;
8956         if (
8957             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
8958             &&
8959             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
8960         )
8961         {
8962             D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
8963             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8964             if (_token == NULL) {
8965                 D(p->level--);
8966                 return NULL;
8967             }
8968             int _end_lineno = _token->end_lineno;
8969             UNUSED(_end_lineno); // Only used by EXTRA macro
8970             int _end_col_offset = _token->end_col_offset;
8971             UNUSED(_end_col_offset); // Only used by EXTRA macro
8972             _res = _PyAST_MatchMapping ( NULL , NULL , NULL , EXTRA );
8973             if (_res == NULL && PyErr_Occurred()) {
8974                 p->error_indicator = 1;
8975                 D(p->level--);
8976                 return NULL;
8977             }
8978             goto done;
8979         }
8980         p->mark = _mark;
8981         D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8982                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
8983     }
8984     { // '{' double_star_pattern ','? '}'
8985         if (p->error_indicator) {
8986             D(p->level--);
8987             return NULL;
8988         }
8989         D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
8990         Token * _literal;
8991         Token * _literal_1;
8992         void *_opt_var;
8993         UNUSED(_opt_var); // Silence compiler warnings
8994         expr_ty rest;
8995         if (
8996             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
8997             &&
8998             (rest = double_star_pattern_rule(p))  // double_star_pattern
8999             &&
9000             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
9001             &&
9002             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
9003         )
9004         {
9005             D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
9006             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9007             if (_token == NULL) {
9008                 D(p->level--);
9009                 return NULL;
9010             }
9011             int _end_lineno = _token->end_lineno;
9012             UNUSED(_end_lineno); // Only used by EXTRA macro
9013             int _end_col_offset = _token->end_col_offset;
9014             UNUSED(_end_col_offset); // Only used by EXTRA macro
9015             _res = _PyAST_MatchMapping ( NULL , NULL , rest -> v . Name . id , EXTRA );
9016             if (_res == NULL && PyErr_Occurred()) {
9017                 p->error_indicator = 1;
9018                 D(p->level--);
9019                 return NULL;
9020             }
9021             goto done;
9022         }
9023         p->mark = _mark;
9024         D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9025                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_star_pattern ','? '}'"));
9026     }
9027     { // '{' items_pattern ',' double_star_pattern ','? '}'
9028         if (p->error_indicator) {
9029             D(p->level--);
9030             return NULL;
9031         }
9032         D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
9033         Token * _literal;
9034         Token * _literal_1;
9035         Token * _literal_2;
9036         void *_opt_var;
9037         UNUSED(_opt_var); // Silence compiler warnings
9038         asdl_seq* items;
9039         expr_ty rest;
9040         if (
9041             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
9042             &&
9043             (items = items_pattern_rule(p))  // items_pattern
9044             &&
9045             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
9046             &&
9047             (rest = double_star_pattern_rule(p))  // double_star_pattern
9048             &&
9049             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
9050             &&
9051             (_literal_2 = _PyPegen_expect_token(p, 26))  // token='}'
9052         )
9053         {
9054             D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
9055             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9056             if (_token == NULL) {
9057                 D(p->level--);
9058                 return NULL;
9059             }
9060             int _end_lineno = _token->end_lineno;
9061             UNUSED(_end_lineno); // Only used by EXTRA macro
9062             int _end_col_offset = _token->end_col_offset;
9063             UNUSED(_end_col_offset); // Only used by EXTRA macro
9064             _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 );
9065             if (_res == NULL && PyErr_Occurred()) {
9066                 p->error_indicator = 1;
9067                 D(p->level--);
9068                 return NULL;
9069             }
9070             goto done;
9071         }
9072         p->mark = _mark;
9073         D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9074                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
9075     }
9076     { // '{' items_pattern ','? '}'
9077         if (p->error_indicator) {
9078             D(p->level--);
9079             return NULL;
9080         }
9081         D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
9082         Token * _literal;
9083         Token * _literal_1;
9084         void *_opt_var;
9085         UNUSED(_opt_var); // Silence compiler warnings
9086         asdl_seq* items;
9087         if (
9088             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
9089             &&
9090             (items = items_pattern_rule(p))  // items_pattern
9091             &&
9092             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
9093             &&
9094             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
9095         )
9096         {
9097             D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
9098             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9099             if (_token == NULL) {
9100                 D(p->level--);
9101                 return NULL;
9102             }
9103             int _end_lineno = _token->end_lineno;
9104             UNUSED(_end_lineno); // Only used by EXTRA macro
9105             int _end_col_offset = _token->end_col_offset;
9106             UNUSED(_end_col_offset); // Only used by EXTRA macro
9107             _res = _PyAST_MatchMapping ( CHECK ( asdl_expr_seq* , _PyPegen_get_pattern_keys ( p , items ) ) , CHECK ( asdl_pattern_seq* , _PyPegen_get_patterns ( p , items ) ) , NULL , EXTRA );
9108             if (_res == NULL && PyErr_Occurred()) {
9109                 p->error_indicator = 1;
9110                 D(p->level--);
9111                 return NULL;
9112             }
9113             goto done;
9114         }
9115         p->mark = _mark;
9116         D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9117                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ','? '}'"));
9118     }
9119     _res = NULL;
9120   done:
9121     D(p->level--);
9122     return _res;
9123 }
9124 
9125 // items_pattern: ','.key_value_pattern+
9126 static asdl_seq*
items_pattern_rule(Parser * p)9127 items_pattern_rule(Parser *p)
9128 {
9129     D(p->level++);
9130     if (p->error_indicator) {
9131         D(p->level--);
9132         return NULL;
9133     }
9134     asdl_seq* _res = NULL;
9135     int _mark = p->mark;
9136     { // ','.key_value_pattern+
9137         if (p->error_indicator) {
9138             D(p->level--);
9139             return NULL;
9140         }
9141         D(fprintf(stderr, "%*c> items_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
9142         asdl_seq * _gather_70_var;
9143         if (
9144             (_gather_70_var = _gather_70_rule(p))  // ','.key_value_pattern+
9145         )
9146         {
9147             D(fprintf(stderr, "%*c+ items_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
9148             _res = _gather_70_var;
9149             goto done;
9150         }
9151         p->mark = _mark;
9152         D(fprintf(stderr, "%*c%s items_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9153                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.key_value_pattern+"));
9154     }
9155     _res = NULL;
9156   done:
9157     D(p->level--);
9158     return _res;
9159 }
9160 
9161 // key_value_pattern: (literal_expr | attr) ':' pattern
9162 static KeyPatternPair*
key_value_pattern_rule(Parser * p)9163 key_value_pattern_rule(Parser *p)
9164 {
9165     D(p->level++);
9166     if (p->error_indicator) {
9167         D(p->level--);
9168         return NULL;
9169     }
9170     KeyPatternPair* _res = NULL;
9171     int _mark = p->mark;
9172     { // (literal_expr | attr) ':' pattern
9173         if (p->error_indicator) {
9174             D(p->level--);
9175             return NULL;
9176         }
9177         D(fprintf(stderr, "%*c> key_value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
9178         Token * _literal;
9179         void *key;
9180         pattern_ty pattern;
9181         if (
9182             (key = _tmp_72_rule(p))  // literal_expr | attr
9183             &&
9184             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
9185             &&
9186             (pattern = pattern_rule(p))  // pattern
9187         )
9188         {
9189             D(fprintf(stderr, "%*c+ key_value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
9190             _res = _PyPegen_key_pattern_pair ( p , key , pattern );
9191             if (_res == NULL && PyErr_Occurred()) {
9192                 p->error_indicator = 1;
9193                 D(p->level--);
9194                 return NULL;
9195             }
9196             goto done;
9197         }
9198         p->mark = _mark;
9199         D(fprintf(stderr, "%*c%s key_value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9200                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(literal_expr | attr) ':' pattern"));
9201     }
9202     _res = NULL;
9203   done:
9204     D(p->level--);
9205     return _res;
9206 }
9207 
9208 // double_star_pattern: '**' pattern_capture_target
9209 static expr_ty
double_star_pattern_rule(Parser * p)9210 double_star_pattern_rule(Parser *p)
9211 {
9212     D(p->level++);
9213     if (p->error_indicator) {
9214         D(p->level--);
9215         return NULL;
9216     }
9217     expr_ty _res = NULL;
9218     int _mark = p->mark;
9219     { // '**' pattern_capture_target
9220         if (p->error_indicator) {
9221             D(p->level--);
9222             return NULL;
9223         }
9224         D(fprintf(stderr, "%*c> double_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
9225         Token * _literal;
9226         expr_ty target;
9227         if (
9228             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
9229             &&
9230             (target = pattern_capture_target_rule(p))  // pattern_capture_target
9231         )
9232         {
9233             D(fprintf(stderr, "%*c+ double_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
9234             _res = target;
9235             if (_res == NULL && PyErr_Occurred()) {
9236                 p->error_indicator = 1;
9237                 D(p->level--);
9238                 return NULL;
9239             }
9240             goto done;
9241         }
9242         p->mark = _mark;
9243         D(fprintf(stderr, "%*c%s double_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9244                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' pattern_capture_target"));
9245     }
9246     _res = NULL;
9247   done:
9248     D(p->level--);
9249     return _res;
9250 }
9251 
9252 // class_pattern:
9253 //     | name_or_attr '(' ')'
9254 //     | name_or_attr '(' positional_patterns ','? ')'
9255 //     | name_or_attr '(' keyword_patterns ','? ')'
9256 //     | name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
9257 //     | invalid_class_pattern
9258 static pattern_ty
class_pattern_rule(Parser * p)9259 class_pattern_rule(Parser *p)
9260 {
9261     D(p->level++);
9262     if (p->error_indicator) {
9263         D(p->level--);
9264         return NULL;
9265     }
9266     pattern_ty _res = NULL;
9267     int _mark = p->mark;
9268     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9269         p->error_indicator = 1;
9270         D(p->level--);
9271         return NULL;
9272     }
9273     int _start_lineno = p->tokens[_mark]->lineno;
9274     UNUSED(_start_lineno); // Only used by EXTRA macro
9275     int _start_col_offset = p->tokens[_mark]->col_offset;
9276     UNUSED(_start_col_offset); // Only used by EXTRA macro
9277     { // name_or_attr '(' ')'
9278         if (p->error_indicator) {
9279             D(p->level--);
9280             return NULL;
9281         }
9282         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
9283         Token * _literal;
9284         Token * _literal_1;
9285         expr_ty cls;
9286         if (
9287             (cls = name_or_attr_rule(p))  // name_or_attr
9288             &&
9289             (_literal = _PyPegen_expect_token(p, 7))  // token='('
9290             &&
9291             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
9292         )
9293         {
9294             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
9295             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9296             if (_token == NULL) {
9297                 D(p->level--);
9298                 return NULL;
9299             }
9300             int _end_lineno = _token->end_lineno;
9301             UNUSED(_end_lineno); // Only used by EXTRA macro
9302             int _end_col_offset = _token->end_col_offset;
9303             UNUSED(_end_col_offset); // Only used by EXTRA macro
9304             _res = _PyAST_MatchClass ( cls , NULL , NULL , NULL , EXTRA );
9305             if (_res == NULL && PyErr_Occurred()) {
9306                 p->error_indicator = 1;
9307                 D(p->level--);
9308                 return NULL;
9309             }
9310             goto done;
9311         }
9312         p->mark = _mark;
9313         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9314                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' ')'"));
9315     }
9316     { // name_or_attr '(' positional_patterns ','? ')'
9317         if (p->error_indicator) {
9318             D(p->level--);
9319             return NULL;
9320         }
9321         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
9322         Token * _literal;
9323         Token * _literal_1;
9324         void *_opt_var;
9325         UNUSED(_opt_var); // Silence compiler warnings
9326         expr_ty cls;
9327         asdl_pattern_seq* patterns;
9328         if (
9329             (cls = name_or_attr_rule(p))  // name_or_attr
9330             &&
9331             (_literal = _PyPegen_expect_token(p, 7))  // token='('
9332             &&
9333             (patterns = positional_patterns_rule(p))  // positional_patterns
9334             &&
9335             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
9336             &&
9337             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
9338         )
9339         {
9340             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
9341             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9342             if (_token == NULL) {
9343                 D(p->level--);
9344                 return NULL;
9345             }
9346             int _end_lineno = _token->end_lineno;
9347             UNUSED(_end_lineno); // Only used by EXTRA macro
9348             int _end_col_offset = _token->end_col_offset;
9349             UNUSED(_end_col_offset); // Only used by EXTRA macro
9350             _res = _PyAST_MatchClass ( cls , patterns , NULL , NULL , EXTRA );
9351             if (_res == NULL && PyErr_Occurred()) {
9352                 p->error_indicator = 1;
9353                 D(p->level--);
9354                 return NULL;
9355             }
9356             goto done;
9357         }
9358         p->mark = _mark;
9359         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9360                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
9361     }
9362     { // name_or_attr '(' keyword_patterns ','? ')'
9363         if (p->error_indicator) {
9364             D(p->level--);
9365             return NULL;
9366         }
9367         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
9368         Token * _literal;
9369         Token * _literal_1;
9370         void *_opt_var;
9371         UNUSED(_opt_var); // Silence compiler warnings
9372         expr_ty cls;
9373         asdl_seq* keywords;
9374         if (
9375             (cls = name_or_attr_rule(p))  // name_or_attr
9376             &&
9377             (_literal = _PyPegen_expect_token(p, 7))  // token='('
9378             &&
9379             (keywords = keyword_patterns_rule(p))  // keyword_patterns
9380             &&
9381             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
9382             &&
9383             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
9384         )
9385         {
9386             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
9387             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9388             if (_token == NULL) {
9389                 D(p->level--);
9390                 return NULL;
9391             }
9392             int _end_lineno = _token->end_lineno;
9393             UNUSED(_end_lineno); // Only used by EXTRA macro
9394             int _end_col_offset = _token->end_col_offset;
9395             UNUSED(_end_col_offset); // Only used by EXTRA macro
9396             _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 );
9397             if (_res == NULL && PyErr_Occurred()) {
9398                 p->error_indicator = 1;
9399                 D(p->level--);
9400                 return NULL;
9401             }
9402             goto done;
9403         }
9404         p->mark = _mark;
9405         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9406                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
9407     }
9408     { // name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
9409         if (p->error_indicator) {
9410             D(p->level--);
9411             return NULL;
9412         }
9413         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
9414         Token * _literal;
9415         Token * _literal_1;
9416         Token * _literal_2;
9417         void *_opt_var;
9418         UNUSED(_opt_var); // Silence compiler warnings
9419         expr_ty cls;
9420         asdl_seq* keywords;
9421         asdl_pattern_seq* patterns;
9422         if (
9423             (cls = name_or_attr_rule(p))  // name_or_attr
9424             &&
9425             (_literal = _PyPegen_expect_token(p, 7))  // token='('
9426             &&
9427             (patterns = positional_patterns_rule(p))  // positional_patterns
9428             &&
9429             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
9430             &&
9431             (keywords = keyword_patterns_rule(p))  // keyword_patterns
9432             &&
9433             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
9434             &&
9435             (_literal_2 = _PyPegen_expect_token(p, 8))  // token=')'
9436         )
9437         {
9438             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
9439             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9440             if (_token == NULL) {
9441                 D(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_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 );
9449             if (_res == NULL && PyErr_Occurred()) {
9450                 p->error_indicator = 1;
9451                 D(p->level--);
9452                 return NULL;
9453             }
9454             goto done;
9455         }
9456         p->mark = _mark;
9457         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9458                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
9459     }
9460     if (p->call_invalid_rules) { // invalid_class_pattern
9461         if (p->error_indicator) {
9462             D(p->level--);
9463             return NULL;
9464         }
9465         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
9466         void *invalid_class_pattern_var;
9467         if (
9468             (invalid_class_pattern_var = invalid_class_pattern_rule(p))  // invalid_class_pattern
9469         )
9470         {
9471             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
9472             _res = invalid_class_pattern_var;
9473             goto done;
9474         }
9475         p->mark = _mark;
9476         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9477                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_pattern"));
9478     }
9479     _res = NULL;
9480   done:
9481     D(p->level--);
9482     return _res;
9483 }
9484 
9485 // positional_patterns: ','.pattern+
9486 static asdl_pattern_seq*
positional_patterns_rule(Parser * p)9487 positional_patterns_rule(Parser *p)
9488 {
9489     D(p->level++);
9490     if (p->error_indicator) {
9491         D(p->level--);
9492         return NULL;
9493     }
9494     asdl_pattern_seq* _res = NULL;
9495     int _mark = p->mark;
9496     { // ','.pattern+
9497         if (p->error_indicator) {
9498             D(p->level--);
9499             return NULL;
9500         }
9501         D(fprintf(stderr, "%*c> positional_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
9502         asdl_pattern_seq* args;
9503         if (
9504             (args = (asdl_pattern_seq*)_gather_73_rule(p))  // ','.pattern+
9505         )
9506         {
9507             D(fprintf(stderr, "%*c+ positional_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
9508             _res = args;
9509             if (_res == NULL && PyErr_Occurred()) {
9510                 p->error_indicator = 1;
9511                 D(p->level--);
9512                 return NULL;
9513             }
9514             goto done;
9515         }
9516         p->mark = _mark;
9517         D(fprintf(stderr, "%*c%s positional_patterns[%d-%d]: %s failed!\n", p->level, ' ',
9518                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.pattern+"));
9519     }
9520     _res = NULL;
9521   done:
9522     D(p->level--);
9523     return _res;
9524 }
9525 
9526 // keyword_patterns: ','.keyword_pattern+
9527 static asdl_seq*
keyword_patterns_rule(Parser * p)9528 keyword_patterns_rule(Parser *p)
9529 {
9530     D(p->level++);
9531     if (p->error_indicator) {
9532         D(p->level--);
9533         return NULL;
9534     }
9535     asdl_seq* _res = NULL;
9536     int _mark = p->mark;
9537     { // ','.keyword_pattern+
9538         if (p->error_indicator) {
9539             D(p->level--);
9540             return NULL;
9541         }
9542         D(fprintf(stderr, "%*c> keyword_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
9543         asdl_seq * _gather_75_var;
9544         if (
9545             (_gather_75_var = _gather_75_rule(p))  // ','.keyword_pattern+
9546         )
9547         {
9548             D(fprintf(stderr, "%*c+ keyword_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
9549             _res = _gather_75_var;
9550             goto done;
9551         }
9552         p->mark = _mark;
9553         D(fprintf(stderr, "%*c%s keyword_patterns[%d-%d]: %s failed!\n", p->level, ' ',
9554                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.keyword_pattern+"));
9555     }
9556     _res = NULL;
9557   done:
9558     D(p->level--);
9559     return _res;
9560 }
9561 
9562 // keyword_pattern: NAME '=' pattern
9563 static KeyPatternPair*
keyword_pattern_rule(Parser * p)9564 keyword_pattern_rule(Parser *p)
9565 {
9566     D(p->level++);
9567     if (p->error_indicator) {
9568         D(p->level--);
9569         return NULL;
9570     }
9571     KeyPatternPair* _res = NULL;
9572     int _mark = p->mark;
9573     { // NAME '=' pattern
9574         if (p->error_indicator) {
9575             D(p->level--);
9576             return NULL;
9577         }
9578         D(fprintf(stderr, "%*c> keyword_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
9579         Token * _literal;
9580         expr_ty arg;
9581         pattern_ty value;
9582         if (
9583             (arg = _PyPegen_name_token(p))  // NAME
9584             &&
9585             (_literal = _PyPegen_expect_token(p, 22))  // token='='
9586             &&
9587             (value = pattern_rule(p))  // pattern
9588         )
9589         {
9590             D(fprintf(stderr, "%*c+ keyword_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
9591             _res = _PyPegen_key_pattern_pair ( p , arg , value );
9592             if (_res == NULL && PyErr_Occurred()) {
9593                 p->error_indicator = 1;
9594                 D(p->level--);
9595                 return NULL;
9596             }
9597             goto done;
9598         }
9599         p->mark = _mark;
9600         D(fprintf(stderr, "%*c%s keyword_pattern[%d-%d]: %s failed!\n", p->level, ' ',
9601                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' pattern"));
9602     }
9603     _res = NULL;
9604   done:
9605     D(p->level--);
9606     return _res;
9607 }
9608 
9609 // expressions: expression ((',' expression))+ ','? | expression ',' | expression
9610 static expr_ty
expressions_rule(Parser * p)9611 expressions_rule(Parser *p)
9612 {
9613     D(p->level++);
9614     if (p->error_indicator) {
9615         D(p->level--);
9616         return NULL;
9617     }
9618     expr_ty _res = NULL;
9619     int _mark = p->mark;
9620     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9621         p->error_indicator = 1;
9622         D(p->level--);
9623         return NULL;
9624     }
9625     int _start_lineno = p->tokens[_mark]->lineno;
9626     UNUSED(_start_lineno); // Only used by EXTRA macro
9627     int _start_col_offset = p->tokens[_mark]->col_offset;
9628     UNUSED(_start_col_offset); // Only used by EXTRA macro
9629     { // expression ((',' expression))+ ','?
9630         if (p->error_indicator) {
9631             D(p->level--);
9632             return NULL;
9633         }
9634         D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
9635         void *_opt_var;
9636         UNUSED(_opt_var); // Silence compiler warnings
9637         expr_ty a;
9638         asdl_seq * b;
9639         if (
9640             (a = expression_rule(p))  // expression
9641             &&
9642             (b = _loop1_77_rule(p))  // ((',' expression))+
9643             &&
9644             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
9645         )
9646         {
9647             D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
9648             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9649             if (_token == NULL) {
9650                 D(p->level--);
9651                 return NULL;
9652             }
9653             int _end_lineno = _token->end_lineno;
9654             UNUSED(_end_lineno); // Only used by EXTRA macro
9655             int _end_col_offset = _token->end_col_offset;
9656             UNUSED(_end_col_offset); // Only used by EXTRA macro
9657             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
9658             if (_res == NULL && PyErr_Occurred()) {
9659                 p->error_indicator = 1;
9660                 D(p->level--);
9661                 return NULL;
9662             }
9663             goto done;
9664         }
9665         p->mark = _mark;
9666         D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
9667                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ((',' expression))+ ','?"));
9668     }
9669     { // expression ','
9670         if (p->error_indicator) {
9671             D(p->level--);
9672             return NULL;
9673         }
9674         D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ','"));
9675         Token * _literal;
9676         expr_ty a;
9677         if (
9678             (a = expression_rule(p))  // expression
9679             &&
9680             (_literal = _PyPegen_expect_token(p, 12))  // token=','
9681         )
9682         {
9683             D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ','"));
9684             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9685             if (_token == NULL) {
9686                 D(p->level--);
9687                 return NULL;
9688             }
9689             int _end_lineno = _token->end_lineno;
9690             UNUSED(_end_lineno); // Only used by EXTRA macro
9691             int _end_col_offset = _token->end_col_offset;
9692             UNUSED(_end_col_offset); // Only used by EXTRA macro
9693             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
9694             if (_res == NULL && PyErr_Occurred()) {
9695                 p->error_indicator = 1;
9696                 D(p->level--);
9697                 return NULL;
9698             }
9699             goto done;
9700         }
9701         p->mark = _mark;
9702         D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
9703                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ','"));
9704     }
9705     { // expression
9706         if (p->error_indicator) {
9707             D(p->level--);
9708             return NULL;
9709         }
9710         D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
9711         expr_ty expression_var;
9712         if (
9713             (expression_var = expression_rule(p))  // expression
9714         )
9715         {
9716             D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
9717             _res = expression_var;
9718             goto done;
9719         }
9720         p->mark = _mark;
9721         D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
9722                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
9723     }
9724     _res = NULL;
9725   done:
9726     D(p->level--);
9727     return _res;
9728 }
9729 
9730 // expression:
9731 //     | invalid_expression
9732 //     | invalid_legacy_expression
9733 //     | disjunction 'if' disjunction 'else' expression
9734 //     | disjunction
9735 //     | lambdef
9736 static expr_ty
expression_rule(Parser * p)9737 expression_rule(Parser *p)
9738 {
9739     D(p->level++);
9740     if (p->error_indicator) {
9741         D(p->level--);
9742         return NULL;
9743     }
9744     expr_ty _res = NULL;
9745     if (_PyPegen_is_memoized(p, expression_type, &_res)) {
9746         D(p->level--);
9747         return _res;
9748     }
9749     int _mark = p->mark;
9750     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9751         p->error_indicator = 1;
9752         D(p->level--);
9753         return NULL;
9754     }
9755     int _start_lineno = p->tokens[_mark]->lineno;
9756     UNUSED(_start_lineno); // Only used by EXTRA macro
9757     int _start_col_offset = p->tokens[_mark]->col_offset;
9758     UNUSED(_start_col_offset); // Only used by EXTRA macro
9759     if (p->call_invalid_rules) { // invalid_expression
9760         if (p->error_indicator) {
9761             D(p->level--);
9762             return NULL;
9763         }
9764         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
9765         void *invalid_expression_var;
9766         if (
9767             (invalid_expression_var = invalid_expression_rule(p))  // invalid_expression
9768         )
9769         {
9770             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
9771             _res = invalid_expression_var;
9772             goto done;
9773         }
9774         p->mark = _mark;
9775         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
9776                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_expression"));
9777     }
9778     if (p->call_invalid_rules) { // invalid_legacy_expression
9779         if (p->error_indicator) {
9780             D(p->level--);
9781             return NULL;
9782         }
9783         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
9784         void *invalid_legacy_expression_var;
9785         if (
9786             (invalid_legacy_expression_var = invalid_legacy_expression_rule(p))  // invalid_legacy_expression
9787         )
9788         {
9789             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
9790             _res = invalid_legacy_expression_var;
9791             goto done;
9792         }
9793         p->mark = _mark;
9794         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
9795                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_legacy_expression"));
9796     }
9797     { // disjunction 'if' disjunction 'else' expression
9798         if (p->error_indicator) {
9799             D(p->level--);
9800             return NULL;
9801         }
9802         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
9803         Token * _keyword;
9804         Token * _keyword_1;
9805         expr_ty a;
9806         expr_ty b;
9807         expr_ty c;
9808         if (
9809             (a = disjunction_rule(p))  // disjunction
9810             &&
9811             (_keyword = _PyPegen_expect_token(p, 627))  // token='if'
9812             &&
9813             (b = disjunction_rule(p))  // disjunction
9814             &&
9815             (_keyword_1 = _PyPegen_expect_token(p, 630))  // token='else'
9816             &&
9817             (c = expression_rule(p))  // expression
9818         )
9819         {
9820             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
9821             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9822             if (_token == NULL) {
9823                 D(p->level--);
9824                 return NULL;
9825             }
9826             int _end_lineno = _token->end_lineno;
9827             UNUSED(_end_lineno); // Only used by EXTRA macro
9828             int _end_col_offset = _token->end_col_offset;
9829             UNUSED(_end_col_offset); // Only used by EXTRA macro
9830             _res = _PyAST_IfExp ( b , a , c , EXTRA );
9831             if (_res == NULL && PyErr_Occurred()) {
9832                 p->error_indicator = 1;
9833                 D(p->level--);
9834                 return NULL;
9835             }
9836             goto done;
9837         }
9838         p->mark = _mark;
9839         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
9840                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
9841     }
9842     { // disjunction
9843         if (p->error_indicator) {
9844             D(p->level--);
9845             return NULL;
9846         }
9847         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
9848         expr_ty disjunction_var;
9849         if (
9850             (disjunction_var = disjunction_rule(p))  // disjunction
9851         )
9852         {
9853             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
9854             _res = disjunction_var;
9855             goto done;
9856         }
9857         p->mark = _mark;
9858         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
9859                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
9860     }
9861     { // lambdef
9862         if (p->error_indicator) {
9863             D(p->level--);
9864             return NULL;
9865         }
9866         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
9867         expr_ty lambdef_var;
9868         if (
9869             (lambdef_var = lambdef_rule(p))  // lambdef
9870         )
9871         {
9872             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
9873             _res = lambdef_var;
9874             goto done;
9875         }
9876         p->mark = _mark;
9877         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
9878                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
9879     }
9880     _res = NULL;
9881   done:
9882     _PyPegen_insert_memo(p, _mark, expression_type, _res);
9883     D(p->level--);
9884     return _res;
9885 }
9886 
9887 // yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
9888 static expr_ty
yield_expr_rule(Parser * p)9889 yield_expr_rule(Parser *p)
9890 {
9891     D(p->level++);
9892     if (p->error_indicator) {
9893         D(p->level--);
9894         return NULL;
9895     }
9896     expr_ty _res = NULL;
9897     int _mark = p->mark;
9898     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9899         p->error_indicator = 1;
9900         D(p->level--);
9901         return NULL;
9902     }
9903     int _start_lineno = p->tokens[_mark]->lineno;
9904     UNUSED(_start_lineno); // Only used by EXTRA macro
9905     int _start_col_offset = p->tokens[_mark]->col_offset;
9906     UNUSED(_start_col_offset); // Only used by EXTRA macro
9907     { // 'yield' 'from' expression
9908         if (p->error_indicator) {
9909             D(p->level--);
9910             return NULL;
9911         }
9912         D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
9913         Token * _keyword;
9914         Token * _keyword_1;
9915         expr_ty a;
9916         if (
9917             (_keyword = _PyPegen_expect_token(p, 570))  // token='yield'
9918             &&
9919             (_keyword_1 = _PyPegen_expect_token(p, 569))  // token='from'
9920             &&
9921             (a = expression_rule(p))  // expression
9922         )
9923         {
9924             D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
9925             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9926             if (_token == NULL) {
9927                 D(p->level--);
9928                 return NULL;
9929             }
9930             int _end_lineno = _token->end_lineno;
9931             UNUSED(_end_lineno); // Only used by EXTRA macro
9932             int _end_col_offset = _token->end_col_offset;
9933             UNUSED(_end_col_offset); // Only used by EXTRA macro
9934             _res = _PyAST_YieldFrom ( a , EXTRA );
9935             if (_res == NULL && PyErr_Occurred()) {
9936                 p->error_indicator = 1;
9937                 D(p->level--);
9938                 return NULL;
9939             }
9940             goto done;
9941         }
9942         p->mark = _mark;
9943         D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
9944                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' 'from' expression"));
9945     }
9946     { // 'yield' star_expressions?
9947         if (p->error_indicator) {
9948             D(p->level--);
9949             return NULL;
9950         }
9951         D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
9952         Token * _keyword;
9953         void *a;
9954         if (
9955             (_keyword = _PyPegen_expect_token(p, 570))  // token='yield'
9956             &&
9957             (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
9958         )
9959         {
9960             D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
9961             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9962             if (_token == NULL) {
9963                 D(p->level--);
9964                 return NULL;
9965             }
9966             int _end_lineno = _token->end_lineno;
9967             UNUSED(_end_lineno); // Only used by EXTRA macro
9968             int _end_col_offset = _token->end_col_offset;
9969             UNUSED(_end_col_offset); // Only used by EXTRA macro
9970             _res = _PyAST_Yield ( a , EXTRA );
9971             if (_res == NULL && PyErr_Occurred()) {
9972                 p->error_indicator = 1;
9973                 D(p->level--);
9974                 return NULL;
9975             }
9976             goto done;
9977         }
9978         p->mark = _mark;
9979         D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
9980                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' star_expressions?"));
9981     }
9982     _res = NULL;
9983   done:
9984     D(p->level--);
9985     return _res;
9986 }
9987 
9988 // star_expressions:
9989 //     | star_expression ((',' star_expression))+ ','?
9990 //     | star_expression ','
9991 //     | star_expression
9992 static expr_ty
star_expressions_rule(Parser * p)9993 star_expressions_rule(Parser *p)
9994 {
9995     D(p->level++);
9996     if (p->error_indicator) {
9997         D(p->level--);
9998         return NULL;
9999     }
10000     expr_ty _res = NULL;
10001     int _mark = p->mark;
10002     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10003         p->error_indicator = 1;
10004         D(p->level--);
10005         return NULL;
10006     }
10007     int _start_lineno = p->tokens[_mark]->lineno;
10008     UNUSED(_start_lineno); // Only used by EXTRA macro
10009     int _start_col_offset = p->tokens[_mark]->col_offset;
10010     UNUSED(_start_col_offset); // Only used by EXTRA macro
10011     { // star_expression ((',' star_expression))+ ','?
10012         if (p->error_indicator) {
10013             D(p->level--);
10014             return NULL;
10015         }
10016         D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
10017         void *_opt_var;
10018         UNUSED(_opt_var); // Silence compiler warnings
10019         expr_ty a;
10020         asdl_seq * b;
10021         if (
10022             (a = star_expression_rule(p))  // star_expression
10023             &&
10024             (b = _loop1_78_rule(p))  // ((',' star_expression))+
10025             &&
10026             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10027         )
10028         {
10029             D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
10030             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10031             if (_token == NULL) {
10032                 D(p->level--);
10033                 return NULL;
10034             }
10035             int _end_lineno = _token->end_lineno;
10036             UNUSED(_end_lineno); // Only used by EXTRA macro
10037             int _end_col_offset = _token->end_col_offset;
10038             UNUSED(_end_col_offset); // Only used by EXTRA macro
10039             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
10040             if (_res == NULL && PyErr_Occurred()) {
10041                 p->error_indicator = 1;
10042                 D(p->level--);
10043                 return NULL;
10044             }
10045             goto done;
10046         }
10047         p->mark = _mark;
10048         D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
10049                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
10050     }
10051     { // star_expression ','
10052         if (p->error_indicator) {
10053             D(p->level--);
10054             return NULL;
10055         }
10056         D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
10057         Token * _literal;
10058         expr_ty a;
10059         if (
10060             (a = star_expression_rule(p))  // star_expression
10061             &&
10062             (_literal = _PyPegen_expect_token(p, 12))  // token=','
10063         )
10064         {
10065             D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
10066             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10067             if (_token == NULL) {
10068                 D(p->level--);
10069                 return NULL;
10070             }
10071             int _end_lineno = _token->end_lineno;
10072             UNUSED(_end_lineno); // Only used by EXTRA macro
10073             int _end_col_offset = _token->end_col_offset;
10074             UNUSED(_end_col_offset); // Only used by EXTRA macro
10075             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
10076             if (_res == NULL && PyErr_Occurred()) {
10077                 p->error_indicator = 1;
10078                 D(p->level--);
10079                 return NULL;
10080             }
10081             goto done;
10082         }
10083         p->mark = _mark;
10084         D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
10085                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ','"));
10086     }
10087     { // star_expression
10088         if (p->error_indicator) {
10089             D(p->level--);
10090             return NULL;
10091         }
10092         D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression"));
10093         expr_ty star_expression_var;
10094         if (
10095             (star_expression_var = star_expression_rule(p))  // star_expression
10096         )
10097         {
10098             D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression"));
10099             _res = star_expression_var;
10100             goto done;
10101         }
10102         p->mark = _mark;
10103         D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
10104                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression"));
10105     }
10106     _res = NULL;
10107   done:
10108     D(p->level--);
10109     return _res;
10110 }
10111 
10112 // star_expression: '*' bitwise_or | expression
10113 static expr_ty
star_expression_rule(Parser * p)10114 star_expression_rule(Parser *p)
10115 {
10116     D(p->level++);
10117     if (p->error_indicator) {
10118         D(p->level--);
10119         return NULL;
10120     }
10121     expr_ty _res = NULL;
10122     if (_PyPegen_is_memoized(p, star_expression_type, &_res)) {
10123         D(p->level--);
10124         return _res;
10125     }
10126     int _mark = p->mark;
10127     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10128         p->error_indicator = 1;
10129         D(p->level--);
10130         return NULL;
10131     }
10132     int _start_lineno = p->tokens[_mark]->lineno;
10133     UNUSED(_start_lineno); // Only used by EXTRA macro
10134     int _start_col_offset = p->tokens[_mark]->col_offset;
10135     UNUSED(_start_col_offset); // Only used by EXTRA macro
10136     { // '*' bitwise_or
10137         if (p->error_indicator) {
10138             D(p->level--);
10139             return NULL;
10140         }
10141         D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
10142         Token * _literal;
10143         expr_ty a;
10144         if (
10145             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
10146             &&
10147             (a = bitwise_or_rule(p))  // bitwise_or
10148         )
10149         {
10150             D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
10151             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10152             if (_token == NULL) {
10153                 D(p->level--);
10154                 return NULL;
10155             }
10156             int _end_lineno = _token->end_lineno;
10157             UNUSED(_end_lineno); // Only used by EXTRA macro
10158             int _end_col_offset = _token->end_col_offset;
10159             UNUSED(_end_col_offset); // Only used by EXTRA macro
10160             _res = _PyAST_Starred ( a , Load , EXTRA );
10161             if (_res == NULL && PyErr_Occurred()) {
10162                 p->error_indicator = 1;
10163                 D(p->level--);
10164                 return NULL;
10165             }
10166             goto done;
10167         }
10168         p->mark = _mark;
10169         D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
10170                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
10171     }
10172     { // expression
10173         if (p->error_indicator) {
10174             D(p->level--);
10175             return NULL;
10176         }
10177         D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
10178         expr_ty expression_var;
10179         if (
10180             (expression_var = expression_rule(p))  // expression
10181         )
10182         {
10183             D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
10184             _res = expression_var;
10185             goto done;
10186         }
10187         p->mark = _mark;
10188         D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
10189                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
10190     }
10191     _res = NULL;
10192   done:
10193     _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
10194     D(p->level--);
10195     return _res;
10196 }
10197 
10198 // star_named_expressions: ','.star_named_expression+ ','?
10199 static asdl_expr_seq*
star_named_expressions_rule(Parser * p)10200 star_named_expressions_rule(Parser *p)
10201 {
10202     D(p->level++);
10203     if (p->error_indicator) {
10204         D(p->level--);
10205         return NULL;
10206     }
10207     asdl_expr_seq* _res = NULL;
10208     int _mark = p->mark;
10209     { // ','.star_named_expression+ ','?
10210         if (p->error_indicator) {
10211             D(p->level--);
10212             return NULL;
10213         }
10214         D(fprintf(stderr, "%*c> star_named_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
10215         void *_opt_var;
10216         UNUSED(_opt_var); // Silence compiler warnings
10217         asdl_expr_seq* a;
10218         if (
10219             (a = (asdl_expr_seq*)_gather_79_rule(p))  // ','.star_named_expression+
10220             &&
10221             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10222         )
10223         {
10224             D(fprintf(stderr, "%*c+ star_named_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
10225             _res = a;
10226             if (_res == NULL && PyErr_Occurred()) {
10227                 p->error_indicator = 1;
10228                 D(p->level--);
10229                 return NULL;
10230             }
10231             goto done;
10232         }
10233         p->mark = _mark;
10234         D(fprintf(stderr, "%*c%s star_named_expressions[%d-%d]: %s failed!\n", p->level, ' ',
10235                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_named_expression+ ','?"));
10236     }
10237     _res = NULL;
10238   done:
10239     D(p->level--);
10240     return _res;
10241 }
10242 
10243 // star_named_expression: '*' bitwise_or | named_expression
10244 static expr_ty
star_named_expression_rule(Parser * p)10245 star_named_expression_rule(Parser *p)
10246 {
10247     D(p->level++);
10248     if (p->error_indicator) {
10249         D(p->level--);
10250         return NULL;
10251     }
10252     expr_ty _res = NULL;
10253     int _mark = p->mark;
10254     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10255         p->error_indicator = 1;
10256         D(p->level--);
10257         return NULL;
10258     }
10259     int _start_lineno = p->tokens[_mark]->lineno;
10260     UNUSED(_start_lineno); // Only used by EXTRA macro
10261     int _start_col_offset = p->tokens[_mark]->col_offset;
10262     UNUSED(_start_col_offset); // Only used by EXTRA macro
10263     { // '*' bitwise_or
10264         if (p->error_indicator) {
10265             D(p->level--);
10266             return NULL;
10267         }
10268         D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
10269         Token * _literal;
10270         expr_ty a;
10271         if (
10272             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
10273             &&
10274             (a = bitwise_or_rule(p))  // bitwise_or
10275         )
10276         {
10277             D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
10278             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10279             if (_token == NULL) {
10280                 D(p->level--);
10281                 return NULL;
10282             }
10283             int _end_lineno = _token->end_lineno;
10284             UNUSED(_end_lineno); // Only used by EXTRA macro
10285             int _end_col_offset = _token->end_col_offset;
10286             UNUSED(_end_col_offset); // Only used by EXTRA macro
10287             _res = _PyAST_Starred ( a , Load , EXTRA );
10288             if (_res == NULL && PyErr_Occurred()) {
10289                 p->error_indicator = 1;
10290                 D(p->level--);
10291                 return NULL;
10292             }
10293             goto done;
10294         }
10295         p->mark = _mark;
10296         D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
10297                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
10298     }
10299     { // named_expression
10300         if (p->error_indicator) {
10301             D(p->level--);
10302             return NULL;
10303         }
10304         D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
10305         expr_ty named_expression_var;
10306         if (
10307             (named_expression_var = named_expression_rule(p))  // named_expression
10308         )
10309         {
10310             D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
10311             _res = named_expression_var;
10312             goto done;
10313         }
10314         p->mark = _mark;
10315         D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
10316                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
10317     }
10318     _res = NULL;
10319   done:
10320     D(p->level--);
10321     return _res;
10322 }
10323 
10324 // assignment_expression: NAME ':=' ~ expression
10325 static expr_ty
assignment_expression_rule(Parser * p)10326 assignment_expression_rule(Parser *p)
10327 {
10328     D(p->level++);
10329     if (p->error_indicator) {
10330         D(p->level--);
10331         return NULL;
10332     }
10333     expr_ty _res = NULL;
10334     int _mark = p->mark;
10335     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10336         p->error_indicator = 1;
10337         D(p->level--);
10338         return NULL;
10339     }
10340     int _start_lineno = p->tokens[_mark]->lineno;
10341     UNUSED(_start_lineno); // Only used by EXTRA macro
10342     int _start_col_offset = p->tokens[_mark]->col_offset;
10343     UNUSED(_start_col_offset); // Only used by EXTRA macro
10344     { // NAME ':=' ~ expression
10345         if (p->error_indicator) {
10346             D(p->level--);
10347             return NULL;
10348         }
10349         D(fprintf(stderr, "%*c> assignment_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
10350         int _cut_var = 0;
10351         Token * _literal;
10352         expr_ty a;
10353         expr_ty b;
10354         if (
10355             (a = _PyPegen_name_token(p))  // NAME
10356             &&
10357             (_literal = _PyPegen_expect_token(p, 53))  // token=':='
10358             &&
10359             (_cut_var = 1)
10360             &&
10361             (b = expression_rule(p))  // expression
10362         )
10363         {
10364             D(fprintf(stderr, "%*c+ assignment_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
10365             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10366             if (_token == NULL) {
10367                 D(p->level--);
10368                 return NULL;
10369             }
10370             int _end_lineno = _token->end_lineno;
10371             UNUSED(_end_lineno); // Only used by EXTRA macro
10372             int _end_col_offset = _token->end_col_offset;
10373             UNUSED(_end_col_offset); // Only used by EXTRA macro
10374             _res = _PyAST_NamedExpr ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA );
10375             if (_res == NULL && PyErr_Occurred()) {
10376                 p->error_indicator = 1;
10377                 D(p->level--);
10378                 return NULL;
10379             }
10380             goto done;
10381         }
10382         p->mark = _mark;
10383         D(fprintf(stderr, "%*c%s assignment_expression[%d-%d]: %s failed!\n", p->level, ' ',
10384                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':=' ~ expression"));
10385         if (_cut_var) {
10386             D(p->level--);
10387             return NULL;
10388         }
10389     }
10390     _res = NULL;
10391   done:
10392     D(p->level--);
10393     return _res;
10394 }
10395 
10396 // named_expression: assignment_expression | invalid_named_expression | expression !':='
10397 static expr_ty
named_expression_rule(Parser * p)10398 named_expression_rule(Parser *p)
10399 {
10400     D(p->level++);
10401     if (p->error_indicator) {
10402         D(p->level--);
10403         return NULL;
10404     }
10405     expr_ty _res = NULL;
10406     int _mark = p->mark;
10407     { // assignment_expression
10408         if (p->error_indicator) {
10409             D(p->level--);
10410             return NULL;
10411         }
10412         D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
10413         expr_ty assignment_expression_var;
10414         if (
10415             (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
10416         )
10417         {
10418             D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
10419             _res = assignment_expression_var;
10420             goto done;
10421         }
10422         p->mark = _mark;
10423         D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
10424                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
10425     }
10426     if (p->call_invalid_rules) { // invalid_named_expression
10427         if (p->error_indicator) {
10428             D(p->level--);
10429             return NULL;
10430         }
10431         D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
10432         void *invalid_named_expression_var;
10433         if (
10434             (invalid_named_expression_var = invalid_named_expression_rule(p))  // invalid_named_expression
10435         )
10436         {
10437             D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
10438             _res = invalid_named_expression_var;
10439             goto done;
10440         }
10441         p->mark = _mark;
10442         D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
10443                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_named_expression"));
10444     }
10445     { // expression !':='
10446         if (p->error_indicator) {
10447             D(p->level--);
10448             return NULL;
10449         }
10450         D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
10451         expr_ty expression_var;
10452         if (
10453             (expression_var = expression_rule(p))  // expression
10454             &&
10455             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
10456         )
10457         {
10458             D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
10459             _res = expression_var;
10460             goto done;
10461         }
10462         p->mark = _mark;
10463         D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
10464                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
10465     }
10466     _res = NULL;
10467   done:
10468     D(p->level--);
10469     return _res;
10470 }
10471 
10472 // disjunction: conjunction (('or' conjunction))+ | conjunction
10473 static expr_ty
disjunction_rule(Parser * p)10474 disjunction_rule(Parser *p)
10475 {
10476     D(p->level++);
10477     if (p->error_indicator) {
10478         D(p->level--);
10479         return NULL;
10480     }
10481     expr_ty _res = NULL;
10482     if (_PyPegen_is_memoized(p, disjunction_type, &_res)) {
10483         D(p->level--);
10484         return _res;
10485     }
10486     int _mark = p->mark;
10487     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10488         p->error_indicator = 1;
10489         D(p->level--);
10490         return NULL;
10491     }
10492     int _start_lineno = p->tokens[_mark]->lineno;
10493     UNUSED(_start_lineno); // Only used by EXTRA macro
10494     int _start_col_offset = p->tokens[_mark]->col_offset;
10495     UNUSED(_start_col_offset); // Only used by EXTRA macro
10496     { // conjunction (('or' conjunction))+
10497         if (p->error_indicator) {
10498             D(p->level--);
10499             return NULL;
10500         }
10501         D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
10502         expr_ty a;
10503         asdl_seq * b;
10504         if (
10505             (a = conjunction_rule(p))  // conjunction
10506             &&
10507             (b = _loop1_81_rule(p))  // (('or' conjunction))+
10508         )
10509         {
10510             D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
10511             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10512             if (_token == NULL) {
10513                 D(p->level--);
10514                 return NULL;
10515             }
10516             int _end_lineno = _token->end_lineno;
10517             UNUSED(_end_lineno); // Only used by EXTRA macro
10518             int _end_col_offset = _token->end_col_offset;
10519             UNUSED(_end_col_offset); // Only used by EXTRA macro
10520             _res = _PyAST_BoolOp ( Or , CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
10521             if (_res == NULL && PyErr_Occurred()) {
10522                 p->error_indicator = 1;
10523                 D(p->level--);
10524                 return NULL;
10525             }
10526             goto done;
10527         }
10528         p->mark = _mark;
10529         D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
10530                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction (('or' conjunction))+"));
10531     }
10532     { // conjunction
10533         if (p->error_indicator) {
10534             D(p->level--);
10535             return NULL;
10536         }
10537         D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction"));
10538         expr_ty conjunction_var;
10539         if (
10540             (conjunction_var = conjunction_rule(p))  // conjunction
10541         )
10542         {
10543             D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction"));
10544             _res = conjunction_var;
10545             goto done;
10546         }
10547         p->mark = _mark;
10548         D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
10549                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction"));
10550     }
10551     _res = NULL;
10552   done:
10553     _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
10554     D(p->level--);
10555     return _res;
10556 }
10557 
10558 // conjunction: inversion (('and' inversion))+ | inversion
10559 static expr_ty
conjunction_rule(Parser * p)10560 conjunction_rule(Parser *p)
10561 {
10562     D(p->level++);
10563     if (p->error_indicator) {
10564         D(p->level--);
10565         return NULL;
10566     }
10567     expr_ty _res = NULL;
10568     if (_PyPegen_is_memoized(p, conjunction_type, &_res)) {
10569         D(p->level--);
10570         return _res;
10571     }
10572     int _mark = p->mark;
10573     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10574         p->error_indicator = 1;
10575         D(p->level--);
10576         return NULL;
10577     }
10578     int _start_lineno = p->tokens[_mark]->lineno;
10579     UNUSED(_start_lineno); // Only used by EXTRA macro
10580     int _start_col_offset = p->tokens[_mark]->col_offset;
10581     UNUSED(_start_col_offset); // Only used by EXTRA macro
10582     { // inversion (('and' inversion))+
10583         if (p->error_indicator) {
10584             D(p->level--);
10585             return NULL;
10586         }
10587         D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
10588         expr_ty a;
10589         asdl_seq * b;
10590         if (
10591             (a = inversion_rule(p))  // inversion
10592             &&
10593             (b = _loop1_82_rule(p))  // (('and' inversion))+
10594         )
10595         {
10596             D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
10597             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10598             if (_token == NULL) {
10599                 D(p->level--);
10600                 return NULL;
10601             }
10602             int _end_lineno = _token->end_lineno;
10603             UNUSED(_end_lineno); // Only used by EXTRA macro
10604             int _end_col_offset = _token->end_col_offset;
10605             UNUSED(_end_col_offset); // Only used by EXTRA macro
10606             _res = _PyAST_BoolOp ( And , CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
10607             if (_res == NULL && PyErr_Occurred()) {
10608                 p->error_indicator = 1;
10609                 D(p->level--);
10610                 return NULL;
10611             }
10612             goto done;
10613         }
10614         p->mark = _mark;
10615         D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
10616                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion (('and' inversion))+"));
10617     }
10618     { // inversion
10619         if (p->error_indicator) {
10620             D(p->level--);
10621             return NULL;
10622         }
10623         D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion"));
10624         expr_ty inversion_var;
10625         if (
10626             (inversion_var = inversion_rule(p))  // inversion
10627         )
10628         {
10629             D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion"));
10630             _res = inversion_var;
10631             goto done;
10632         }
10633         p->mark = _mark;
10634         D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
10635                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion"));
10636     }
10637     _res = NULL;
10638   done:
10639     _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
10640     D(p->level--);
10641     return _res;
10642 }
10643 
10644 // inversion: 'not' inversion | comparison
10645 static expr_ty
inversion_rule(Parser * p)10646 inversion_rule(Parser *p)
10647 {
10648     D(p->level++);
10649     if (p->error_indicator) {
10650         D(p->level--);
10651         return NULL;
10652     }
10653     expr_ty _res = NULL;
10654     if (_PyPegen_is_memoized(p, inversion_type, &_res)) {
10655         D(p->level--);
10656         return _res;
10657     }
10658     int _mark = p->mark;
10659     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10660         p->error_indicator = 1;
10661         D(p->level--);
10662         return NULL;
10663     }
10664     int _start_lineno = p->tokens[_mark]->lineno;
10665     UNUSED(_start_lineno); // Only used by EXTRA macro
10666     int _start_col_offset = p->tokens[_mark]->col_offset;
10667     UNUSED(_start_col_offset); // Only used by EXTRA macro
10668     { // 'not' inversion
10669         if (p->error_indicator) {
10670             D(p->level--);
10671             return NULL;
10672         }
10673         D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
10674         Token * _keyword;
10675         expr_ty a;
10676         if (
10677             (_keyword = _PyPegen_expect_token(p, 578))  // token='not'
10678             &&
10679             (a = inversion_rule(p))  // inversion
10680         )
10681         {
10682             D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
10683             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10684             if (_token == NULL) {
10685                 D(p->level--);
10686                 return NULL;
10687             }
10688             int _end_lineno = _token->end_lineno;
10689             UNUSED(_end_lineno); // Only used by EXTRA macro
10690             int _end_col_offset = _token->end_col_offset;
10691             UNUSED(_end_col_offset); // Only used by EXTRA macro
10692             _res = _PyAST_UnaryOp ( Not , a , EXTRA );
10693             if (_res == NULL && PyErr_Occurred()) {
10694                 p->error_indicator = 1;
10695                 D(p->level--);
10696                 return NULL;
10697             }
10698             goto done;
10699         }
10700         p->mark = _mark;
10701         D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
10702                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' inversion"));
10703     }
10704     { // comparison
10705         if (p->error_indicator) {
10706             D(p->level--);
10707             return NULL;
10708         }
10709         D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "comparison"));
10710         expr_ty comparison_var;
10711         if (
10712             (comparison_var = comparison_rule(p))  // comparison
10713         )
10714         {
10715             D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "comparison"));
10716             _res = comparison_var;
10717             goto done;
10718         }
10719         p->mark = _mark;
10720         D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
10721                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "comparison"));
10722     }
10723     _res = NULL;
10724   done:
10725     _PyPegen_insert_memo(p, _mark, inversion_type, _res);
10726     D(p->level--);
10727     return _res;
10728 }
10729 
10730 // comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
10731 static expr_ty
comparison_rule(Parser * p)10732 comparison_rule(Parser *p)
10733 {
10734     D(p->level++);
10735     if (p->error_indicator) {
10736         D(p->level--);
10737         return NULL;
10738     }
10739     expr_ty _res = NULL;
10740     int _mark = p->mark;
10741     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10742         p->error_indicator = 1;
10743         D(p->level--);
10744         return NULL;
10745     }
10746     int _start_lineno = p->tokens[_mark]->lineno;
10747     UNUSED(_start_lineno); // Only used by EXTRA macro
10748     int _start_col_offset = p->tokens[_mark]->col_offset;
10749     UNUSED(_start_col_offset); // Only used by EXTRA macro
10750     { // bitwise_or compare_op_bitwise_or_pair+
10751         if (p->error_indicator) {
10752             D(p->level--);
10753             return NULL;
10754         }
10755         D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
10756         expr_ty a;
10757         asdl_seq * b;
10758         if (
10759             (a = bitwise_or_rule(p))  // bitwise_or
10760             &&
10761             (b = _loop1_83_rule(p))  // compare_op_bitwise_or_pair+
10762         )
10763         {
10764             D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
10765             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10766             if (_token == NULL) {
10767                 D(p->level--);
10768                 return NULL;
10769             }
10770             int _end_lineno = _token->end_lineno;
10771             UNUSED(_end_lineno); // Only used by EXTRA macro
10772             int _end_col_offset = _token->end_col_offset;
10773             UNUSED(_end_col_offset); // Only used by EXTRA macro
10774             _res = _PyAST_Compare ( a , CHECK ( asdl_int_seq* , _PyPegen_get_cmpops ( p , b ) ) , CHECK ( asdl_expr_seq* , _PyPegen_get_exprs ( p , b ) ) , EXTRA );
10775             if (_res == NULL && PyErr_Occurred()) {
10776                 p->error_indicator = 1;
10777                 D(p->level--);
10778                 return NULL;
10779             }
10780             goto done;
10781         }
10782         p->mark = _mark;
10783         D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
10784                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
10785     }
10786     { // bitwise_or
10787         if (p->error_indicator) {
10788             D(p->level--);
10789             return NULL;
10790         }
10791         D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
10792         expr_ty bitwise_or_var;
10793         if (
10794             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
10795         )
10796         {
10797             D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
10798             _res = bitwise_or_var;
10799             goto done;
10800         }
10801         p->mark = _mark;
10802         D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
10803                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or"));
10804     }
10805     _res = NULL;
10806   done:
10807     D(p->level--);
10808     return _res;
10809 }
10810 
10811 // compare_op_bitwise_or_pair:
10812 //     | eq_bitwise_or
10813 //     | noteq_bitwise_or
10814 //     | lte_bitwise_or
10815 //     | lt_bitwise_or
10816 //     | gte_bitwise_or
10817 //     | gt_bitwise_or
10818 //     | notin_bitwise_or
10819 //     | in_bitwise_or
10820 //     | isnot_bitwise_or
10821 //     | is_bitwise_or
10822 static CmpopExprPair*
compare_op_bitwise_or_pair_rule(Parser * p)10823 compare_op_bitwise_or_pair_rule(Parser *p)
10824 {
10825     D(p->level++);
10826     if (p->error_indicator) {
10827         D(p->level--);
10828         return NULL;
10829     }
10830     CmpopExprPair* _res = NULL;
10831     int _mark = p->mark;
10832     { // eq_bitwise_or
10833         if (p->error_indicator) {
10834             D(p->level--);
10835             return NULL;
10836         }
10837         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
10838         CmpopExprPair* eq_bitwise_or_var;
10839         if (
10840             (eq_bitwise_or_var = eq_bitwise_or_rule(p))  // eq_bitwise_or
10841         )
10842         {
10843             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
10844             _res = eq_bitwise_or_var;
10845             goto done;
10846         }
10847         p->mark = _mark;
10848         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
10849                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "eq_bitwise_or"));
10850     }
10851     { // noteq_bitwise_or
10852         if (p->error_indicator) {
10853             D(p->level--);
10854             return NULL;
10855         }
10856         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
10857         CmpopExprPair* noteq_bitwise_or_var;
10858         if (
10859             (noteq_bitwise_or_var = noteq_bitwise_or_rule(p))  // noteq_bitwise_or
10860         )
10861         {
10862             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
10863             _res = noteq_bitwise_or_var;
10864             goto done;
10865         }
10866         p->mark = _mark;
10867         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
10868                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "noteq_bitwise_or"));
10869     }
10870     { // lte_bitwise_or
10871         if (p->error_indicator) {
10872             D(p->level--);
10873             return NULL;
10874         }
10875         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
10876         CmpopExprPair* lte_bitwise_or_var;
10877         if (
10878             (lte_bitwise_or_var = lte_bitwise_or_rule(p))  // lte_bitwise_or
10879         )
10880         {
10881             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
10882             _res = lte_bitwise_or_var;
10883             goto done;
10884         }
10885         p->mark = _mark;
10886         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
10887                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lte_bitwise_or"));
10888     }
10889     { // lt_bitwise_or
10890         if (p->error_indicator) {
10891             D(p->level--);
10892             return NULL;
10893         }
10894         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
10895         CmpopExprPair* lt_bitwise_or_var;
10896         if (
10897             (lt_bitwise_or_var = lt_bitwise_or_rule(p))  // lt_bitwise_or
10898         )
10899         {
10900             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
10901             _res = lt_bitwise_or_var;
10902             goto done;
10903         }
10904         p->mark = _mark;
10905         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
10906                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lt_bitwise_or"));
10907     }
10908     { // gte_bitwise_or
10909         if (p->error_indicator) {
10910             D(p->level--);
10911             return NULL;
10912         }
10913         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
10914         CmpopExprPair* gte_bitwise_or_var;
10915         if (
10916             (gte_bitwise_or_var = gte_bitwise_or_rule(p))  // gte_bitwise_or
10917         )
10918         {
10919             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
10920             _res = gte_bitwise_or_var;
10921             goto done;
10922         }
10923         p->mark = _mark;
10924         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
10925                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gte_bitwise_or"));
10926     }
10927     { // gt_bitwise_or
10928         if (p->error_indicator) {
10929             D(p->level--);
10930             return NULL;
10931         }
10932         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
10933         CmpopExprPair* gt_bitwise_or_var;
10934         if (
10935             (gt_bitwise_or_var = gt_bitwise_or_rule(p))  // gt_bitwise_or
10936         )
10937         {
10938             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
10939             _res = gt_bitwise_or_var;
10940             goto done;
10941         }
10942         p->mark = _mark;
10943         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
10944                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gt_bitwise_or"));
10945     }
10946     { // notin_bitwise_or
10947         if (p->error_indicator) {
10948             D(p->level--);
10949             return NULL;
10950         }
10951         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
10952         CmpopExprPair* notin_bitwise_or_var;
10953         if (
10954             (notin_bitwise_or_var = notin_bitwise_or_rule(p))  // notin_bitwise_or
10955         )
10956         {
10957             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
10958             _res = notin_bitwise_or_var;
10959             goto done;
10960         }
10961         p->mark = _mark;
10962         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
10963                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "notin_bitwise_or"));
10964     }
10965     { // in_bitwise_or
10966         if (p->error_indicator) {
10967             D(p->level--);
10968             return NULL;
10969         }
10970         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
10971         CmpopExprPair* in_bitwise_or_var;
10972         if (
10973             (in_bitwise_or_var = in_bitwise_or_rule(p))  // in_bitwise_or
10974         )
10975         {
10976             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
10977             _res = in_bitwise_or_var;
10978             goto done;
10979         }
10980         p->mark = _mark;
10981         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
10982                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "in_bitwise_or"));
10983     }
10984     { // isnot_bitwise_or
10985         if (p->error_indicator) {
10986             D(p->level--);
10987             return NULL;
10988         }
10989         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
10990         CmpopExprPair* isnot_bitwise_or_var;
10991         if (
10992             (isnot_bitwise_or_var = isnot_bitwise_or_rule(p))  // isnot_bitwise_or
10993         )
10994         {
10995             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
10996             _res = isnot_bitwise_or_var;
10997             goto done;
10998         }
10999         p->mark = _mark;
11000         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
11001                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "isnot_bitwise_or"));
11002     }
11003     { // is_bitwise_or
11004         if (p->error_indicator) {
11005             D(p->level--);
11006             return NULL;
11007         }
11008         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
11009         CmpopExprPair* is_bitwise_or_var;
11010         if (
11011             (is_bitwise_or_var = is_bitwise_or_rule(p))  // is_bitwise_or
11012         )
11013         {
11014             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
11015             _res = is_bitwise_or_var;
11016             goto done;
11017         }
11018         p->mark = _mark;
11019         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
11020                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "is_bitwise_or"));
11021     }
11022     _res = NULL;
11023   done:
11024     D(p->level--);
11025     return _res;
11026 }
11027 
11028 // eq_bitwise_or: '==' bitwise_or
11029 static CmpopExprPair*
eq_bitwise_or_rule(Parser * p)11030 eq_bitwise_or_rule(Parser *p)
11031 {
11032     D(p->level++);
11033     if (p->error_indicator) {
11034         D(p->level--);
11035         return NULL;
11036     }
11037     CmpopExprPair* _res = NULL;
11038     int _mark = p->mark;
11039     { // '==' bitwise_or
11040         if (p->error_indicator) {
11041             D(p->level--);
11042             return NULL;
11043         }
11044         D(fprintf(stderr, "%*c> eq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
11045         Token * _literal;
11046         expr_ty a;
11047         if (
11048             (_literal = _PyPegen_expect_token(p, 27))  // token='=='
11049             &&
11050             (a = bitwise_or_rule(p))  // bitwise_or
11051         )
11052         {
11053             D(fprintf(stderr, "%*c+ eq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
11054             _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
11055             if (_res == NULL && PyErr_Occurred()) {
11056                 p->error_indicator = 1;
11057                 D(p->level--);
11058                 return NULL;
11059             }
11060             goto done;
11061         }
11062         p->mark = _mark;
11063         D(fprintf(stderr, "%*c%s eq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
11064                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'==' bitwise_or"));
11065     }
11066     _res = NULL;
11067   done:
11068     D(p->level--);
11069     return _res;
11070 }
11071 
11072 // noteq_bitwise_or: ('!=') bitwise_or
11073 static CmpopExprPair*
noteq_bitwise_or_rule(Parser * p)11074 noteq_bitwise_or_rule(Parser *p)
11075 {
11076     D(p->level++);
11077     if (p->error_indicator) {
11078         D(p->level--);
11079         return NULL;
11080     }
11081     CmpopExprPair* _res = NULL;
11082     int _mark = p->mark;
11083     { // ('!=') bitwise_or
11084         if (p->error_indicator) {
11085             D(p->level--);
11086             return NULL;
11087         }
11088         D(fprintf(stderr, "%*c> noteq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
11089         void *_tmp_84_var;
11090         expr_ty a;
11091         if (
11092             (_tmp_84_var = _tmp_84_rule(p))  // '!='
11093             &&
11094             (a = bitwise_or_rule(p))  // bitwise_or
11095         )
11096         {
11097             D(fprintf(stderr, "%*c+ noteq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
11098             _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
11099             if (_res == NULL && PyErr_Occurred()) {
11100                 p->error_indicator = 1;
11101                 D(p->level--);
11102                 return NULL;
11103             }
11104             goto done;
11105         }
11106         p->mark = _mark;
11107         D(fprintf(stderr, "%*c%s noteq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
11108                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('!=') bitwise_or"));
11109     }
11110     _res = NULL;
11111   done:
11112     D(p->level--);
11113     return _res;
11114 }
11115 
11116 // lte_bitwise_or: '<=' bitwise_or
11117 static CmpopExprPair*
lte_bitwise_or_rule(Parser * p)11118 lte_bitwise_or_rule(Parser *p)
11119 {
11120     D(p->level++);
11121     if (p->error_indicator) {
11122         D(p->level--);
11123         return NULL;
11124     }
11125     CmpopExprPair* _res = NULL;
11126     int _mark = p->mark;
11127     { // '<=' bitwise_or
11128         if (p->error_indicator) {
11129             D(p->level--);
11130             return NULL;
11131         }
11132         D(fprintf(stderr, "%*c> lte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
11133         Token * _literal;
11134         expr_ty a;
11135         if (
11136             (_literal = _PyPegen_expect_token(p, 29))  // token='<='
11137             &&
11138             (a = bitwise_or_rule(p))  // bitwise_or
11139         )
11140         {
11141             D(fprintf(stderr, "%*c+ lte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
11142             _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
11143             if (_res == NULL && PyErr_Occurred()) {
11144                 p->error_indicator = 1;
11145                 D(p->level--);
11146                 return NULL;
11147             }
11148             goto done;
11149         }
11150         p->mark = _mark;
11151         D(fprintf(stderr, "%*c%s lte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
11152                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<=' bitwise_or"));
11153     }
11154     _res = NULL;
11155   done:
11156     D(p->level--);
11157     return _res;
11158 }
11159 
11160 // lt_bitwise_or: '<' bitwise_or
11161 static CmpopExprPair*
lt_bitwise_or_rule(Parser * p)11162 lt_bitwise_or_rule(Parser *p)
11163 {
11164     D(p->level++);
11165     if (p->error_indicator) {
11166         D(p->level--);
11167         return NULL;
11168     }
11169     CmpopExprPair* _res = NULL;
11170     int _mark = p->mark;
11171     { // '<' bitwise_or
11172         if (p->error_indicator) {
11173             D(p->level--);
11174             return NULL;
11175         }
11176         D(fprintf(stderr, "%*c> lt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
11177         Token * _literal;
11178         expr_ty a;
11179         if (
11180             (_literal = _PyPegen_expect_token(p, 20))  // token='<'
11181             &&
11182             (a = bitwise_or_rule(p))  // bitwise_or
11183         )
11184         {
11185             D(fprintf(stderr, "%*c+ lt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
11186             _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
11187             if (_res == NULL && PyErr_Occurred()) {
11188                 p->error_indicator = 1;
11189                 D(p->level--);
11190                 return NULL;
11191             }
11192             goto done;
11193         }
11194         p->mark = _mark;
11195         D(fprintf(stderr, "%*c%s lt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
11196                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<' bitwise_or"));
11197     }
11198     _res = NULL;
11199   done:
11200     D(p->level--);
11201     return _res;
11202 }
11203 
11204 // gte_bitwise_or: '>=' bitwise_or
11205 static CmpopExprPair*
gte_bitwise_or_rule(Parser * p)11206 gte_bitwise_or_rule(Parser *p)
11207 {
11208     D(p->level++);
11209     if (p->error_indicator) {
11210         D(p->level--);
11211         return NULL;
11212     }
11213     CmpopExprPair* _res = NULL;
11214     int _mark = p->mark;
11215     { // '>=' bitwise_or
11216         if (p->error_indicator) {
11217             D(p->level--);
11218             return NULL;
11219         }
11220         D(fprintf(stderr, "%*c> gte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
11221         Token * _literal;
11222         expr_ty a;
11223         if (
11224             (_literal = _PyPegen_expect_token(p, 30))  // token='>='
11225             &&
11226             (a = bitwise_or_rule(p))  // bitwise_or
11227         )
11228         {
11229             D(fprintf(stderr, "%*c+ gte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
11230             _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
11231             if (_res == NULL && PyErr_Occurred()) {
11232                 p->error_indicator = 1;
11233                 D(p->level--);
11234                 return NULL;
11235             }
11236             goto done;
11237         }
11238         p->mark = _mark;
11239         D(fprintf(stderr, "%*c%s gte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
11240                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>=' bitwise_or"));
11241     }
11242     _res = NULL;
11243   done:
11244     D(p->level--);
11245     return _res;
11246 }
11247 
11248 // gt_bitwise_or: '>' bitwise_or
11249 static CmpopExprPair*
gt_bitwise_or_rule(Parser * p)11250 gt_bitwise_or_rule(Parser *p)
11251 {
11252     D(p->level++);
11253     if (p->error_indicator) {
11254         D(p->level--);
11255         return NULL;
11256     }
11257     CmpopExprPair* _res = NULL;
11258     int _mark = p->mark;
11259     { // '>' bitwise_or
11260         if (p->error_indicator) {
11261             D(p->level--);
11262             return NULL;
11263         }
11264         D(fprintf(stderr, "%*c> gt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
11265         Token * _literal;
11266         expr_ty a;
11267         if (
11268             (_literal = _PyPegen_expect_token(p, 21))  // token='>'
11269             &&
11270             (a = bitwise_or_rule(p))  // bitwise_or
11271         )
11272         {
11273             D(fprintf(stderr, "%*c+ gt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
11274             _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
11275             if (_res == NULL && PyErr_Occurred()) {
11276                 p->error_indicator = 1;
11277                 D(p->level--);
11278                 return NULL;
11279             }
11280             goto done;
11281         }
11282         p->mark = _mark;
11283         D(fprintf(stderr, "%*c%s gt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
11284                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>' bitwise_or"));
11285     }
11286     _res = NULL;
11287   done:
11288     D(p->level--);
11289     return _res;
11290 }
11291 
11292 // notin_bitwise_or: 'not' 'in' bitwise_or
11293 static CmpopExprPair*
notin_bitwise_or_rule(Parser * p)11294 notin_bitwise_or_rule(Parser *p)
11295 {
11296     D(p->level++);
11297     if (p->error_indicator) {
11298         D(p->level--);
11299         return NULL;
11300     }
11301     CmpopExprPair* _res = NULL;
11302     int _mark = p->mark;
11303     { // 'not' 'in' bitwise_or
11304         if (p->error_indicator) {
11305             D(p->level--);
11306             return NULL;
11307         }
11308         D(fprintf(stderr, "%*c> notin_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
11309         Token * _keyword;
11310         Token * _keyword_1;
11311         expr_ty a;
11312         if (
11313             (_keyword = _PyPegen_expect_token(p, 578))  // token='not'
11314             &&
11315             (_keyword_1 = _PyPegen_expect_token(p, 634))  // token='in'
11316             &&
11317             (a = bitwise_or_rule(p))  // bitwise_or
11318         )
11319         {
11320             D(fprintf(stderr, "%*c+ notin_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
11321             _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
11322             if (_res == NULL && PyErr_Occurred()) {
11323                 p->error_indicator = 1;
11324                 D(p->level--);
11325                 return NULL;
11326             }
11327             goto done;
11328         }
11329         p->mark = _mark;
11330         D(fprintf(stderr, "%*c%s notin_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
11331                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' 'in' bitwise_or"));
11332     }
11333     _res = NULL;
11334   done:
11335     D(p->level--);
11336     return _res;
11337 }
11338 
11339 // in_bitwise_or: 'in' bitwise_or
11340 static CmpopExprPair*
in_bitwise_or_rule(Parser * p)11341 in_bitwise_or_rule(Parser *p)
11342 {
11343     D(p->level++);
11344     if (p->error_indicator) {
11345         D(p->level--);
11346         return NULL;
11347     }
11348     CmpopExprPair* _res = NULL;
11349     int _mark = p->mark;
11350     { // 'in' bitwise_or
11351         if (p->error_indicator) {
11352             D(p->level--);
11353             return NULL;
11354         }
11355         D(fprintf(stderr, "%*c> in_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
11356         Token * _keyword;
11357         expr_ty a;
11358         if (
11359             (_keyword = _PyPegen_expect_token(p, 634))  // token='in'
11360             &&
11361             (a = bitwise_or_rule(p))  // bitwise_or
11362         )
11363         {
11364             D(fprintf(stderr, "%*c+ in_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
11365             _res = _PyPegen_cmpop_expr_pair ( p , In , a );
11366             if (_res == NULL && PyErr_Occurred()) {
11367                 p->error_indicator = 1;
11368                 D(p->level--);
11369                 return NULL;
11370             }
11371             goto done;
11372         }
11373         p->mark = _mark;
11374         D(fprintf(stderr, "%*c%s in_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
11375                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'in' bitwise_or"));
11376     }
11377     _res = NULL;
11378   done:
11379     D(p->level--);
11380     return _res;
11381 }
11382 
11383 // isnot_bitwise_or: 'is' 'not' bitwise_or
11384 static CmpopExprPair*
isnot_bitwise_or_rule(Parser * p)11385 isnot_bitwise_or_rule(Parser *p)
11386 {
11387     D(p->level++);
11388     if (p->error_indicator) {
11389         D(p->level--);
11390         return NULL;
11391     }
11392     CmpopExprPair* _res = NULL;
11393     int _mark = p->mark;
11394     { // 'is' 'not' bitwise_or
11395         if (p->error_indicator) {
11396             D(p->level--);
11397             return NULL;
11398         }
11399         D(fprintf(stderr, "%*c> isnot_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
11400         Token * _keyword;
11401         Token * _keyword_1;
11402         expr_ty a;
11403         if (
11404             (_keyword = _PyPegen_expect_token(p, 579))  // token='is'
11405             &&
11406             (_keyword_1 = _PyPegen_expect_token(p, 578))  // token='not'
11407             &&
11408             (a = bitwise_or_rule(p))  // bitwise_or
11409         )
11410         {
11411             D(fprintf(stderr, "%*c+ isnot_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
11412             _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
11413             if (_res == NULL && PyErr_Occurred()) {
11414                 p->error_indicator = 1;
11415                 D(p->level--);
11416                 return NULL;
11417             }
11418             goto done;
11419         }
11420         p->mark = _mark;
11421         D(fprintf(stderr, "%*c%s isnot_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
11422                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' 'not' bitwise_or"));
11423     }
11424     _res = NULL;
11425   done:
11426     D(p->level--);
11427     return _res;
11428 }
11429 
11430 // is_bitwise_or: 'is' bitwise_or
11431 static CmpopExprPair*
is_bitwise_or_rule(Parser * p)11432 is_bitwise_or_rule(Parser *p)
11433 {
11434     D(p->level++);
11435     if (p->error_indicator) {
11436         D(p->level--);
11437         return NULL;
11438     }
11439     CmpopExprPair* _res = NULL;
11440     int _mark = p->mark;
11441     { // 'is' bitwise_or
11442         if (p->error_indicator) {
11443             D(p->level--);
11444             return NULL;
11445         }
11446         D(fprintf(stderr, "%*c> is_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
11447         Token * _keyword;
11448         expr_ty a;
11449         if (
11450             (_keyword = _PyPegen_expect_token(p, 579))  // token='is'
11451             &&
11452             (a = bitwise_or_rule(p))  // bitwise_or
11453         )
11454         {
11455             D(fprintf(stderr, "%*c+ is_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
11456             _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
11457             if (_res == NULL && PyErr_Occurred()) {
11458                 p->error_indicator = 1;
11459                 D(p->level--);
11460                 return NULL;
11461             }
11462             goto done;
11463         }
11464         p->mark = _mark;
11465         D(fprintf(stderr, "%*c%s is_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
11466                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' bitwise_or"));
11467     }
11468     _res = NULL;
11469   done:
11470     D(p->level--);
11471     return _res;
11472 }
11473 
11474 // Left-recursive
11475 // bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
11476 static expr_ty bitwise_or_raw(Parser *);
11477 static expr_ty
bitwise_or_rule(Parser * p)11478 bitwise_or_rule(Parser *p)
11479 {
11480     D(p->level++);
11481     expr_ty _res = NULL;
11482     if (_PyPegen_is_memoized(p, bitwise_or_type, &_res)) {
11483         D(p->level--);
11484         return _res;
11485     }
11486     int _mark = p->mark;
11487     int _resmark = p->mark;
11488     while (1) {
11489         int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
11490         if (tmpvar_2) {
11491             D(p->level--);
11492             return _res;
11493         }
11494         p->mark = _mark;
11495         p->in_raw_rule++;
11496         void *_raw = bitwise_or_raw(p);
11497         p->in_raw_rule--;
11498         if (p->error_indicator)
11499             return NULL;
11500         if (_raw == NULL || p->mark <= _resmark)
11501             break;
11502         _resmark = p->mark;
11503         _res = _raw;
11504     }
11505     p->mark = _resmark;
11506     D(p->level--);
11507     return _res;
11508 }
11509 static expr_ty
bitwise_or_raw(Parser * p)11510 bitwise_or_raw(Parser *p)
11511 {
11512     D(p->level++);
11513     if (p->error_indicator) {
11514         D(p->level--);
11515         return NULL;
11516     }
11517     expr_ty _res = NULL;
11518     int _mark = p->mark;
11519     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11520         p->error_indicator = 1;
11521         D(p->level--);
11522         return NULL;
11523     }
11524     int _start_lineno = p->tokens[_mark]->lineno;
11525     UNUSED(_start_lineno); // Only used by EXTRA macro
11526     int _start_col_offset = p->tokens[_mark]->col_offset;
11527     UNUSED(_start_col_offset); // Only used by EXTRA macro
11528     { // bitwise_or '|' bitwise_xor
11529         if (p->error_indicator) {
11530             D(p->level--);
11531             return NULL;
11532         }
11533         D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
11534         Token * _literal;
11535         expr_ty a;
11536         expr_ty b;
11537         if (
11538             (a = bitwise_or_rule(p))  // bitwise_or
11539             &&
11540             (_literal = _PyPegen_expect_token(p, 18))  // token='|'
11541             &&
11542             (b = bitwise_xor_rule(p))  // bitwise_xor
11543         )
11544         {
11545             D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
11546             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11547             if (_token == NULL) {
11548                 D(p->level--);
11549                 return NULL;
11550             }
11551             int _end_lineno = _token->end_lineno;
11552             UNUSED(_end_lineno); // Only used by EXTRA macro
11553             int _end_col_offset = _token->end_col_offset;
11554             UNUSED(_end_col_offset); // Only used by EXTRA macro
11555             _res = _PyAST_BinOp ( a , BitOr , b , EXTRA );
11556             if (_res == NULL && PyErr_Occurred()) {
11557                 p->error_indicator = 1;
11558                 D(p->level--);
11559                 return NULL;
11560             }
11561             goto done;
11562         }
11563         p->mark = _mark;
11564         D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
11565                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or '|' bitwise_xor"));
11566     }
11567     { // bitwise_xor
11568         if (p->error_indicator) {
11569             D(p->level--);
11570             return NULL;
11571         }
11572         D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
11573         expr_ty bitwise_xor_var;
11574         if (
11575             (bitwise_xor_var = bitwise_xor_rule(p))  // bitwise_xor
11576         )
11577         {
11578             D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
11579             _res = bitwise_xor_var;
11580             goto done;
11581         }
11582         p->mark = _mark;
11583         D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
11584                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor"));
11585     }
11586     _res = NULL;
11587   done:
11588     D(p->level--);
11589     return _res;
11590 }
11591 
11592 // Left-recursive
11593 // bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
11594 static expr_ty bitwise_xor_raw(Parser *);
11595 static expr_ty
bitwise_xor_rule(Parser * p)11596 bitwise_xor_rule(Parser *p)
11597 {
11598     D(p->level++);
11599     expr_ty _res = NULL;
11600     if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res)) {
11601         D(p->level--);
11602         return _res;
11603     }
11604     int _mark = p->mark;
11605     int _resmark = p->mark;
11606     while (1) {
11607         int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
11608         if (tmpvar_3) {
11609             D(p->level--);
11610             return _res;
11611         }
11612         p->mark = _mark;
11613         p->in_raw_rule++;
11614         void *_raw = bitwise_xor_raw(p);
11615         p->in_raw_rule--;
11616         if (p->error_indicator)
11617             return NULL;
11618         if (_raw == NULL || p->mark <= _resmark)
11619             break;
11620         _resmark = p->mark;
11621         _res = _raw;
11622     }
11623     p->mark = _resmark;
11624     D(p->level--);
11625     return _res;
11626 }
11627 static expr_ty
bitwise_xor_raw(Parser * p)11628 bitwise_xor_raw(Parser *p)
11629 {
11630     D(p->level++);
11631     if (p->error_indicator) {
11632         D(p->level--);
11633         return NULL;
11634     }
11635     expr_ty _res = NULL;
11636     int _mark = p->mark;
11637     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11638         p->error_indicator = 1;
11639         D(p->level--);
11640         return NULL;
11641     }
11642     int _start_lineno = p->tokens[_mark]->lineno;
11643     UNUSED(_start_lineno); // Only used by EXTRA macro
11644     int _start_col_offset = p->tokens[_mark]->col_offset;
11645     UNUSED(_start_col_offset); // Only used by EXTRA macro
11646     { // bitwise_xor '^' bitwise_and
11647         if (p->error_indicator) {
11648             D(p->level--);
11649             return NULL;
11650         }
11651         D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
11652         Token * _literal;
11653         expr_ty a;
11654         expr_ty b;
11655         if (
11656             (a = bitwise_xor_rule(p))  // bitwise_xor
11657             &&
11658             (_literal = _PyPegen_expect_token(p, 32))  // token='^'
11659             &&
11660             (b = bitwise_and_rule(p))  // bitwise_and
11661         )
11662         {
11663             D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
11664             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11665             if (_token == NULL) {
11666                 D(p->level--);
11667                 return NULL;
11668             }
11669             int _end_lineno = _token->end_lineno;
11670             UNUSED(_end_lineno); // Only used by EXTRA macro
11671             int _end_col_offset = _token->end_col_offset;
11672             UNUSED(_end_col_offset); // Only used by EXTRA macro
11673             _res = _PyAST_BinOp ( a , BitXor , b , EXTRA );
11674             if (_res == NULL && PyErr_Occurred()) {
11675                 p->error_indicator = 1;
11676                 D(p->level--);
11677                 return NULL;
11678             }
11679             goto done;
11680         }
11681         p->mark = _mark;
11682         D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
11683                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor '^' bitwise_and"));
11684     }
11685     { // bitwise_and
11686         if (p->error_indicator) {
11687             D(p->level--);
11688             return NULL;
11689         }
11690         D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
11691         expr_ty bitwise_and_var;
11692         if (
11693             (bitwise_and_var = bitwise_and_rule(p))  // bitwise_and
11694         )
11695         {
11696             D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
11697             _res = bitwise_and_var;
11698             goto done;
11699         }
11700         p->mark = _mark;
11701         D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
11702                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and"));
11703     }
11704     _res = NULL;
11705   done:
11706     D(p->level--);
11707     return _res;
11708 }
11709 
11710 // Left-recursive
11711 // bitwise_and: bitwise_and '&' shift_expr | shift_expr
11712 static expr_ty bitwise_and_raw(Parser *);
11713 static expr_ty
bitwise_and_rule(Parser * p)11714 bitwise_and_rule(Parser *p)
11715 {
11716     D(p->level++);
11717     expr_ty _res = NULL;
11718     if (_PyPegen_is_memoized(p, bitwise_and_type, &_res)) {
11719         D(p->level--);
11720         return _res;
11721     }
11722     int _mark = p->mark;
11723     int _resmark = p->mark;
11724     while (1) {
11725         int tmpvar_4 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
11726         if (tmpvar_4) {
11727             D(p->level--);
11728             return _res;
11729         }
11730         p->mark = _mark;
11731         p->in_raw_rule++;
11732         void *_raw = bitwise_and_raw(p);
11733         p->in_raw_rule--;
11734         if (p->error_indicator)
11735             return NULL;
11736         if (_raw == NULL || p->mark <= _resmark)
11737             break;
11738         _resmark = p->mark;
11739         _res = _raw;
11740     }
11741     p->mark = _resmark;
11742     D(p->level--);
11743     return _res;
11744 }
11745 static expr_ty
bitwise_and_raw(Parser * p)11746 bitwise_and_raw(Parser *p)
11747 {
11748     D(p->level++);
11749     if (p->error_indicator) {
11750         D(p->level--);
11751         return NULL;
11752     }
11753     expr_ty _res = NULL;
11754     int _mark = p->mark;
11755     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11756         p->error_indicator = 1;
11757         D(p->level--);
11758         return NULL;
11759     }
11760     int _start_lineno = p->tokens[_mark]->lineno;
11761     UNUSED(_start_lineno); // Only used by EXTRA macro
11762     int _start_col_offset = p->tokens[_mark]->col_offset;
11763     UNUSED(_start_col_offset); // Only used by EXTRA macro
11764     { // bitwise_and '&' shift_expr
11765         if (p->error_indicator) {
11766             D(p->level--);
11767             return NULL;
11768         }
11769         D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
11770         Token * _literal;
11771         expr_ty a;
11772         expr_ty b;
11773         if (
11774             (a = bitwise_and_rule(p))  // bitwise_and
11775             &&
11776             (_literal = _PyPegen_expect_token(p, 19))  // token='&'
11777             &&
11778             (b = shift_expr_rule(p))  // shift_expr
11779         )
11780         {
11781             D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
11782             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11783             if (_token == NULL) {
11784                 D(p->level--);
11785                 return NULL;
11786             }
11787             int _end_lineno = _token->end_lineno;
11788             UNUSED(_end_lineno); // Only used by EXTRA macro
11789             int _end_col_offset = _token->end_col_offset;
11790             UNUSED(_end_col_offset); // Only used by EXTRA macro
11791             _res = _PyAST_BinOp ( a , BitAnd , b , EXTRA );
11792             if (_res == NULL && PyErr_Occurred()) {
11793                 p->error_indicator = 1;
11794                 D(p->level--);
11795                 return NULL;
11796             }
11797             goto done;
11798         }
11799         p->mark = _mark;
11800         D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
11801                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and '&' shift_expr"));
11802     }
11803     { // shift_expr
11804         if (p->error_indicator) {
11805             D(p->level--);
11806             return NULL;
11807         }
11808         D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr"));
11809         expr_ty shift_expr_var;
11810         if (
11811             (shift_expr_var = shift_expr_rule(p))  // shift_expr
11812         )
11813         {
11814             D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr"));
11815             _res = shift_expr_var;
11816             goto done;
11817         }
11818         p->mark = _mark;
11819         D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
11820                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr"));
11821     }
11822     _res = NULL;
11823   done:
11824     D(p->level--);
11825     return _res;
11826 }
11827 
11828 // Left-recursive
11829 // shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | sum
11830 static expr_ty shift_expr_raw(Parser *);
11831 static expr_ty
shift_expr_rule(Parser * p)11832 shift_expr_rule(Parser *p)
11833 {
11834     D(p->level++);
11835     expr_ty _res = NULL;
11836     if (_PyPegen_is_memoized(p, shift_expr_type, &_res)) {
11837         D(p->level--);
11838         return _res;
11839     }
11840     int _mark = p->mark;
11841     int _resmark = p->mark;
11842     while (1) {
11843         int tmpvar_5 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
11844         if (tmpvar_5) {
11845             D(p->level--);
11846             return _res;
11847         }
11848         p->mark = _mark;
11849         p->in_raw_rule++;
11850         void *_raw = shift_expr_raw(p);
11851         p->in_raw_rule--;
11852         if (p->error_indicator)
11853             return NULL;
11854         if (_raw == NULL || p->mark <= _resmark)
11855             break;
11856         _resmark = p->mark;
11857         _res = _raw;
11858     }
11859     p->mark = _resmark;
11860     D(p->level--);
11861     return _res;
11862 }
11863 static expr_ty
shift_expr_raw(Parser * p)11864 shift_expr_raw(Parser *p)
11865 {
11866     D(p->level++);
11867     if (p->error_indicator) {
11868         D(p->level--);
11869         return NULL;
11870     }
11871     expr_ty _res = NULL;
11872     int _mark = p->mark;
11873     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11874         p->error_indicator = 1;
11875         D(p->level--);
11876         return NULL;
11877     }
11878     int _start_lineno = p->tokens[_mark]->lineno;
11879     UNUSED(_start_lineno); // Only used by EXTRA macro
11880     int _start_col_offset = p->tokens[_mark]->col_offset;
11881     UNUSED(_start_col_offset); // Only used by EXTRA macro
11882     { // shift_expr '<<' sum
11883         if (p->error_indicator) {
11884             D(p->level--);
11885             return NULL;
11886         }
11887         D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
11888         Token * _literal;
11889         expr_ty a;
11890         expr_ty b;
11891         if (
11892             (a = shift_expr_rule(p))  // shift_expr
11893             &&
11894             (_literal = _PyPegen_expect_token(p, 33))  // token='<<'
11895             &&
11896             (b = sum_rule(p))  // sum
11897         )
11898         {
11899             D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
11900             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11901             if (_token == NULL) {
11902                 D(p->level--);
11903                 return NULL;
11904             }
11905             int _end_lineno = _token->end_lineno;
11906             UNUSED(_end_lineno); // Only used by EXTRA macro
11907             int _end_col_offset = _token->end_col_offset;
11908             UNUSED(_end_col_offset); // Only used by EXTRA macro
11909             _res = _PyAST_BinOp ( a , LShift , b , EXTRA );
11910             if (_res == NULL && PyErr_Occurred()) {
11911                 p->error_indicator = 1;
11912                 D(p->level--);
11913                 return NULL;
11914             }
11915             goto done;
11916         }
11917         p->mark = _mark;
11918         D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
11919                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '<<' sum"));
11920     }
11921     { // shift_expr '>>' sum
11922         if (p->error_indicator) {
11923             D(p->level--);
11924             return NULL;
11925         }
11926         D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
11927         Token * _literal;
11928         expr_ty a;
11929         expr_ty b;
11930         if (
11931             (a = shift_expr_rule(p))  // shift_expr
11932             &&
11933             (_literal = _PyPegen_expect_token(p, 34))  // token='>>'
11934             &&
11935             (b = sum_rule(p))  // sum
11936         )
11937         {
11938             D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
11939             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11940             if (_token == NULL) {
11941                 D(p->level--);
11942                 return NULL;
11943             }
11944             int _end_lineno = _token->end_lineno;
11945             UNUSED(_end_lineno); // Only used by EXTRA macro
11946             int _end_col_offset = _token->end_col_offset;
11947             UNUSED(_end_col_offset); // Only used by EXTRA macro
11948             _res = _PyAST_BinOp ( a , RShift , b , EXTRA );
11949             if (_res == NULL && PyErr_Occurred()) {
11950                 p->error_indicator = 1;
11951                 D(p->level--);
11952                 return NULL;
11953             }
11954             goto done;
11955         }
11956         p->mark = _mark;
11957         D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
11958                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '>>' sum"));
11959     }
11960     { // sum
11961         if (p->error_indicator) {
11962             D(p->level--);
11963             return NULL;
11964         }
11965         D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum"));
11966         expr_ty sum_var;
11967         if (
11968             (sum_var = sum_rule(p))  // sum
11969         )
11970         {
11971             D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum"));
11972             _res = sum_var;
11973             goto done;
11974         }
11975         p->mark = _mark;
11976         D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
11977                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum"));
11978     }
11979     _res = NULL;
11980   done:
11981     D(p->level--);
11982     return _res;
11983 }
11984 
11985 // Left-recursive
11986 // sum: sum '+' term | sum '-' term | term
11987 static expr_ty sum_raw(Parser *);
11988 static expr_ty
sum_rule(Parser * p)11989 sum_rule(Parser *p)
11990 {
11991     D(p->level++);
11992     expr_ty _res = NULL;
11993     if (_PyPegen_is_memoized(p, sum_type, &_res)) {
11994         D(p->level--);
11995         return _res;
11996     }
11997     int _mark = p->mark;
11998     int _resmark = p->mark;
11999     while (1) {
12000         int tmpvar_6 = _PyPegen_update_memo(p, _mark, sum_type, _res);
12001         if (tmpvar_6) {
12002             D(p->level--);
12003             return _res;
12004         }
12005         p->mark = _mark;
12006         p->in_raw_rule++;
12007         void *_raw = sum_raw(p);
12008         p->in_raw_rule--;
12009         if (p->error_indicator)
12010             return NULL;
12011         if (_raw == NULL || p->mark <= _resmark)
12012             break;
12013         _resmark = p->mark;
12014         _res = _raw;
12015     }
12016     p->mark = _resmark;
12017     D(p->level--);
12018     return _res;
12019 }
12020 static expr_ty
sum_raw(Parser * p)12021 sum_raw(Parser *p)
12022 {
12023     D(p->level++);
12024     if (p->error_indicator) {
12025         D(p->level--);
12026         return NULL;
12027     }
12028     expr_ty _res = NULL;
12029     int _mark = p->mark;
12030     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12031         p->error_indicator = 1;
12032         D(p->level--);
12033         return NULL;
12034     }
12035     int _start_lineno = p->tokens[_mark]->lineno;
12036     UNUSED(_start_lineno); // Only used by EXTRA macro
12037     int _start_col_offset = p->tokens[_mark]->col_offset;
12038     UNUSED(_start_col_offset); // Only used by EXTRA macro
12039     { // sum '+' term
12040         if (p->error_indicator) {
12041             D(p->level--);
12042             return NULL;
12043         }
12044         D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
12045         Token * _literal;
12046         expr_ty a;
12047         expr_ty b;
12048         if (
12049             (a = sum_rule(p))  // sum
12050             &&
12051             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
12052             &&
12053             (b = term_rule(p))  // term
12054         )
12055         {
12056             D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
12057             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12058             if (_token == NULL) {
12059                 D(p->level--);
12060                 return NULL;
12061             }
12062             int _end_lineno = _token->end_lineno;
12063             UNUSED(_end_lineno); // Only used by EXTRA macro
12064             int _end_col_offset = _token->end_col_offset;
12065             UNUSED(_end_col_offset); // Only used by EXTRA macro
12066             _res = _PyAST_BinOp ( a , Add , b , EXTRA );
12067             if (_res == NULL && PyErr_Occurred()) {
12068                 p->error_indicator = 1;
12069                 D(p->level--);
12070                 return NULL;
12071             }
12072             goto done;
12073         }
12074         p->mark = _mark;
12075         D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
12076                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '+' term"));
12077     }
12078     { // sum '-' term
12079         if (p->error_indicator) {
12080             D(p->level--);
12081             return NULL;
12082         }
12083         D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
12084         Token * _literal;
12085         expr_ty a;
12086         expr_ty b;
12087         if (
12088             (a = sum_rule(p))  // sum
12089             &&
12090             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
12091             &&
12092             (b = term_rule(p))  // term
12093         )
12094         {
12095             D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
12096             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12097             if (_token == NULL) {
12098                 D(p->level--);
12099                 return NULL;
12100             }
12101             int _end_lineno = _token->end_lineno;
12102             UNUSED(_end_lineno); // Only used by EXTRA macro
12103             int _end_col_offset = _token->end_col_offset;
12104             UNUSED(_end_col_offset); // Only used by EXTRA macro
12105             _res = _PyAST_BinOp ( a , Sub , b , EXTRA );
12106             if (_res == NULL && PyErr_Occurred()) {
12107                 p->error_indicator = 1;
12108                 D(p->level--);
12109                 return NULL;
12110             }
12111             goto done;
12112         }
12113         p->mark = _mark;
12114         D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
12115                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '-' term"));
12116     }
12117     { // term
12118         if (p->error_indicator) {
12119             D(p->level--);
12120             return NULL;
12121         }
12122         D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term"));
12123         expr_ty term_var;
12124         if (
12125             (term_var = term_rule(p))  // term
12126         )
12127         {
12128             D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term"));
12129             _res = term_var;
12130             goto done;
12131         }
12132         p->mark = _mark;
12133         D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
12134                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term"));
12135     }
12136     _res = NULL;
12137   done:
12138     D(p->level--);
12139     return _res;
12140 }
12141 
12142 // Left-recursive
12143 // term:
12144 //     | term '*' factor
12145 //     | term '/' factor
12146 //     | term '//' factor
12147 //     | term '%' factor
12148 //     | term '@' factor
12149 //     | factor
12150 static expr_ty term_raw(Parser *);
12151 static expr_ty
term_rule(Parser * p)12152 term_rule(Parser *p)
12153 {
12154     D(p->level++);
12155     expr_ty _res = NULL;
12156     if (_PyPegen_is_memoized(p, term_type, &_res)) {
12157         D(p->level--);
12158         return _res;
12159     }
12160     int _mark = p->mark;
12161     int _resmark = p->mark;
12162     while (1) {
12163         int tmpvar_7 = _PyPegen_update_memo(p, _mark, term_type, _res);
12164         if (tmpvar_7) {
12165             D(p->level--);
12166             return _res;
12167         }
12168         p->mark = _mark;
12169         p->in_raw_rule++;
12170         void *_raw = term_raw(p);
12171         p->in_raw_rule--;
12172         if (p->error_indicator)
12173             return NULL;
12174         if (_raw == NULL || p->mark <= _resmark)
12175             break;
12176         _resmark = p->mark;
12177         _res = _raw;
12178     }
12179     p->mark = _resmark;
12180     D(p->level--);
12181     return _res;
12182 }
12183 static expr_ty
term_raw(Parser * p)12184 term_raw(Parser *p)
12185 {
12186     D(p->level++);
12187     if (p->error_indicator) {
12188         D(p->level--);
12189         return NULL;
12190     }
12191     expr_ty _res = NULL;
12192     int _mark = p->mark;
12193     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12194         p->error_indicator = 1;
12195         D(p->level--);
12196         return NULL;
12197     }
12198     int _start_lineno = p->tokens[_mark]->lineno;
12199     UNUSED(_start_lineno); // Only used by EXTRA macro
12200     int _start_col_offset = p->tokens[_mark]->col_offset;
12201     UNUSED(_start_col_offset); // Only used by EXTRA macro
12202     { // term '*' factor
12203         if (p->error_indicator) {
12204             D(p->level--);
12205             return NULL;
12206         }
12207         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
12208         Token * _literal;
12209         expr_ty a;
12210         expr_ty b;
12211         if (
12212             (a = term_rule(p))  // term
12213             &&
12214             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
12215             &&
12216             (b = factor_rule(p))  // factor
12217         )
12218         {
12219             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
12220             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12221             if (_token == NULL) {
12222                 D(p->level--);
12223                 return NULL;
12224             }
12225             int _end_lineno = _token->end_lineno;
12226             UNUSED(_end_lineno); // Only used by EXTRA macro
12227             int _end_col_offset = _token->end_col_offset;
12228             UNUSED(_end_col_offset); // Only used by EXTRA macro
12229             _res = _PyAST_BinOp ( a , Mult , b , EXTRA );
12230             if (_res == NULL && PyErr_Occurred()) {
12231                 p->error_indicator = 1;
12232                 D(p->level--);
12233                 return NULL;
12234             }
12235             goto done;
12236         }
12237         p->mark = _mark;
12238         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
12239                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '*' factor"));
12240     }
12241     { // term '/' factor
12242         if (p->error_indicator) {
12243             D(p->level--);
12244             return NULL;
12245         }
12246         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
12247         Token * _literal;
12248         expr_ty a;
12249         expr_ty b;
12250         if (
12251             (a = term_rule(p))  // term
12252             &&
12253             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
12254             &&
12255             (b = factor_rule(p))  // factor
12256         )
12257         {
12258             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
12259             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12260             if (_token == NULL) {
12261                 D(p->level--);
12262                 return NULL;
12263             }
12264             int _end_lineno = _token->end_lineno;
12265             UNUSED(_end_lineno); // Only used by EXTRA macro
12266             int _end_col_offset = _token->end_col_offset;
12267             UNUSED(_end_col_offset); // Only used by EXTRA macro
12268             _res = _PyAST_BinOp ( a , Div , b , EXTRA );
12269             if (_res == NULL && PyErr_Occurred()) {
12270                 p->error_indicator = 1;
12271                 D(p->level--);
12272                 return NULL;
12273             }
12274             goto done;
12275         }
12276         p->mark = _mark;
12277         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
12278                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '/' factor"));
12279     }
12280     { // term '//' factor
12281         if (p->error_indicator) {
12282             D(p->level--);
12283             return NULL;
12284         }
12285         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
12286         Token * _literal;
12287         expr_ty a;
12288         expr_ty b;
12289         if (
12290             (a = term_rule(p))  // term
12291             &&
12292             (_literal = _PyPegen_expect_token(p, 47))  // token='//'
12293             &&
12294             (b = factor_rule(p))  // factor
12295         )
12296         {
12297             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
12298             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12299             if (_token == NULL) {
12300                 D(p->level--);
12301                 return NULL;
12302             }
12303             int _end_lineno = _token->end_lineno;
12304             UNUSED(_end_lineno); // Only used by EXTRA macro
12305             int _end_col_offset = _token->end_col_offset;
12306             UNUSED(_end_col_offset); // Only used by EXTRA macro
12307             _res = _PyAST_BinOp ( a , FloorDiv , b , EXTRA );
12308             if (_res == NULL && PyErr_Occurred()) {
12309                 p->error_indicator = 1;
12310                 D(p->level--);
12311                 return NULL;
12312             }
12313             goto done;
12314         }
12315         p->mark = _mark;
12316         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
12317                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '//' factor"));
12318     }
12319     { // term '%' factor
12320         if (p->error_indicator) {
12321             D(p->level--);
12322             return NULL;
12323         }
12324         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
12325         Token * _literal;
12326         expr_ty a;
12327         expr_ty b;
12328         if (
12329             (a = term_rule(p))  // term
12330             &&
12331             (_literal = _PyPegen_expect_token(p, 24))  // token='%'
12332             &&
12333             (b = factor_rule(p))  // factor
12334         )
12335         {
12336             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
12337             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12338             if (_token == NULL) {
12339                 D(p->level--);
12340                 return NULL;
12341             }
12342             int _end_lineno = _token->end_lineno;
12343             UNUSED(_end_lineno); // Only used by EXTRA macro
12344             int _end_col_offset = _token->end_col_offset;
12345             UNUSED(_end_col_offset); // Only used by EXTRA macro
12346             _res = _PyAST_BinOp ( a , Mod , b , EXTRA );
12347             if (_res == NULL && PyErr_Occurred()) {
12348                 p->error_indicator = 1;
12349                 D(p->level--);
12350                 return NULL;
12351             }
12352             goto done;
12353         }
12354         p->mark = _mark;
12355         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
12356                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '%' factor"));
12357     }
12358     { // term '@' factor
12359         if (p->error_indicator) {
12360             D(p->level--);
12361             return NULL;
12362         }
12363         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
12364         Token * _literal;
12365         expr_ty a;
12366         expr_ty b;
12367         if (
12368             (a = term_rule(p))  // term
12369             &&
12370             (_literal = _PyPegen_expect_token(p, 49))  // token='@'
12371             &&
12372             (b = factor_rule(p))  // factor
12373         )
12374         {
12375             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
12376             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12377             if (_token == NULL) {
12378                 D(p->level--);
12379                 return NULL;
12380             }
12381             int _end_lineno = _token->end_lineno;
12382             UNUSED(_end_lineno); // Only used by EXTRA macro
12383             int _end_col_offset = _token->end_col_offset;
12384             UNUSED(_end_col_offset); // Only used by EXTRA macro
12385             _res = CHECK_VERSION ( expr_ty , 5 , "The '@' operator is" , _PyAST_BinOp ( a , MatMult , b , EXTRA ) );
12386             if (_res == NULL && PyErr_Occurred()) {
12387                 p->error_indicator = 1;
12388                 D(p->level--);
12389                 return NULL;
12390             }
12391             goto done;
12392         }
12393         p->mark = _mark;
12394         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
12395                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '@' factor"));
12396     }
12397     { // factor
12398         if (p->error_indicator) {
12399             D(p->level--);
12400             return NULL;
12401         }
12402         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "factor"));
12403         expr_ty factor_var;
12404         if (
12405             (factor_var = factor_rule(p))  // factor
12406         )
12407         {
12408             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "factor"));
12409             _res = factor_var;
12410             goto done;
12411         }
12412         p->mark = _mark;
12413         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
12414                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "factor"));
12415     }
12416     _res = NULL;
12417   done:
12418     D(p->level--);
12419     return _res;
12420 }
12421 
12422 // factor: '+' factor | '-' factor | '~' factor | power
12423 static expr_ty
factor_rule(Parser * p)12424 factor_rule(Parser *p)
12425 {
12426     D(p->level++);
12427     if (p->error_indicator) {
12428         D(p->level--);
12429         return NULL;
12430     }
12431     expr_ty _res = NULL;
12432     if (_PyPegen_is_memoized(p, factor_type, &_res)) {
12433         D(p->level--);
12434         return _res;
12435     }
12436     int _mark = p->mark;
12437     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12438         p->error_indicator = 1;
12439         D(p->level--);
12440         return NULL;
12441     }
12442     int _start_lineno = p->tokens[_mark]->lineno;
12443     UNUSED(_start_lineno); // Only used by EXTRA macro
12444     int _start_col_offset = p->tokens[_mark]->col_offset;
12445     UNUSED(_start_col_offset); // Only used by EXTRA macro
12446     { // '+' factor
12447         if (p->error_indicator) {
12448             D(p->level--);
12449             return NULL;
12450         }
12451         D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+' factor"));
12452         Token * _literal;
12453         expr_ty a;
12454         if (
12455             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
12456             &&
12457             (a = factor_rule(p))  // factor
12458         )
12459         {
12460             D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+' factor"));
12461             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12462             if (_token == NULL) {
12463                 D(p->level--);
12464                 return NULL;
12465             }
12466             int _end_lineno = _token->end_lineno;
12467             UNUSED(_end_lineno); // Only used by EXTRA macro
12468             int _end_col_offset = _token->end_col_offset;
12469             UNUSED(_end_col_offset); // Only used by EXTRA macro
12470             _res = _PyAST_UnaryOp ( UAdd , a , EXTRA );
12471             if (_res == NULL && PyErr_Occurred()) {
12472                 p->error_indicator = 1;
12473                 D(p->level--);
12474                 return NULL;
12475             }
12476             goto done;
12477         }
12478         p->mark = _mark;
12479         D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
12480                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+' factor"));
12481     }
12482     { // '-' factor
12483         if (p->error_indicator) {
12484             D(p->level--);
12485             return NULL;
12486         }
12487         D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' factor"));
12488         Token * _literal;
12489         expr_ty a;
12490         if (
12491             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
12492             &&
12493             (a = factor_rule(p))  // factor
12494         )
12495         {
12496             D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' factor"));
12497             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12498             if (_token == NULL) {
12499                 D(p->level--);
12500                 return NULL;
12501             }
12502             int _end_lineno = _token->end_lineno;
12503             UNUSED(_end_lineno); // Only used by EXTRA macro
12504             int _end_col_offset = _token->end_col_offset;
12505             UNUSED(_end_col_offset); // Only used by EXTRA macro
12506             _res = _PyAST_UnaryOp ( USub , a , EXTRA );
12507             if (_res == NULL && PyErr_Occurred()) {
12508                 p->error_indicator = 1;
12509                 D(p->level--);
12510                 return NULL;
12511             }
12512             goto done;
12513         }
12514         p->mark = _mark;
12515         D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
12516                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' factor"));
12517     }
12518     { // '~' factor
12519         if (p->error_indicator) {
12520             D(p->level--);
12521             return NULL;
12522         }
12523         D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'~' factor"));
12524         Token * _literal;
12525         expr_ty a;
12526         if (
12527             (_literal = _PyPegen_expect_token(p, 31))  // token='~'
12528             &&
12529             (a = factor_rule(p))  // factor
12530         )
12531         {
12532             D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'~' factor"));
12533             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12534             if (_token == NULL) {
12535                 D(p->level--);
12536                 return NULL;
12537             }
12538             int _end_lineno = _token->end_lineno;
12539             UNUSED(_end_lineno); // Only used by EXTRA macro
12540             int _end_col_offset = _token->end_col_offset;
12541             UNUSED(_end_col_offset); // Only used by EXTRA macro
12542             _res = _PyAST_UnaryOp ( Invert , a , EXTRA );
12543             if (_res == NULL && PyErr_Occurred()) {
12544                 p->error_indicator = 1;
12545                 D(p->level--);
12546                 return NULL;
12547             }
12548             goto done;
12549         }
12550         p->mark = _mark;
12551         D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
12552                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'~' factor"));
12553     }
12554     { // power
12555         if (p->error_indicator) {
12556             D(p->level--);
12557             return NULL;
12558         }
12559         D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "power"));
12560         expr_ty power_var;
12561         if (
12562             (power_var = power_rule(p))  // power
12563         )
12564         {
12565             D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "power"));
12566             _res = power_var;
12567             goto done;
12568         }
12569         p->mark = _mark;
12570         D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
12571                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "power"));
12572     }
12573     _res = NULL;
12574   done:
12575     _PyPegen_insert_memo(p, _mark, factor_type, _res);
12576     D(p->level--);
12577     return _res;
12578 }
12579 
12580 // power: await_primary '**' factor | await_primary
12581 static expr_ty
power_rule(Parser * p)12582 power_rule(Parser *p)
12583 {
12584     D(p->level++);
12585     if (p->error_indicator) {
12586         D(p->level--);
12587         return NULL;
12588     }
12589     expr_ty _res = NULL;
12590     int _mark = p->mark;
12591     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12592         p->error_indicator = 1;
12593         D(p->level--);
12594         return NULL;
12595     }
12596     int _start_lineno = p->tokens[_mark]->lineno;
12597     UNUSED(_start_lineno); // Only used by EXTRA macro
12598     int _start_col_offset = p->tokens[_mark]->col_offset;
12599     UNUSED(_start_col_offset); // Only used by EXTRA macro
12600     { // await_primary '**' factor
12601         if (p->error_indicator) {
12602             D(p->level--);
12603             return NULL;
12604         }
12605         D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
12606         Token * _literal;
12607         expr_ty a;
12608         expr_ty b;
12609         if (
12610             (a = await_primary_rule(p))  // await_primary
12611             &&
12612             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
12613             &&
12614             (b = factor_rule(p))  // factor
12615         )
12616         {
12617             D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
12618             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12619             if (_token == NULL) {
12620                 D(p->level--);
12621                 return NULL;
12622             }
12623             int _end_lineno = _token->end_lineno;
12624             UNUSED(_end_lineno); // Only used by EXTRA macro
12625             int _end_col_offset = _token->end_col_offset;
12626             UNUSED(_end_col_offset); // Only used by EXTRA macro
12627             _res = _PyAST_BinOp ( a , Pow , b , EXTRA );
12628             if (_res == NULL && PyErr_Occurred()) {
12629                 p->error_indicator = 1;
12630                 D(p->level--);
12631                 return NULL;
12632             }
12633             goto done;
12634         }
12635         p->mark = _mark;
12636         D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
12637                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary '**' factor"));
12638     }
12639     { // await_primary
12640         if (p->error_indicator) {
12641             D(p->level--);
12642             return NULL;
12643         }
12644         D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary"));
12645         expr_ty await_primary_var;
12646         if (
12647             (await_primary_var = await_primary_rule(p))  // await_primary
12648         )
12649         {
12650             D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary"));
12651             _res = await_primary_var;
12652             goto done;
12653         }
12654         p->mark = _mark;
12655         D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
12656                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary"));
12657     }
12658     _res = NULL;
12659   done:
12660     D(p->level--);
12661     return _res;
12662 }
12663 
12664 // await_primary: AWAIT primary | primary
12665 static expr_ty
await_primary_rule(Parser * p)12666 await_primary_rule(Parser *p)
12667 {
12668     D(p->level++);
12669     if (p->error_indicator) {
12670         D(p->level--);
12671         return NULL;
12672     }
12673     expr_ty _res = NULL;
12674     if (_PyPegen_is_memoized(p, await_primary_type, &_res)) {
12675         D(p->level--);
12676         return _res;
12677     }
12678     int _mark = p->mark;
12679     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12680         p->error_indicator = 1;
12681         D(p->level--);
12682         return NULL;
12683     }
12684     int _start_lineno = p->tokens[_mark]->lineno;
12685     UNUSED(_start_lineno); // Only used by EXTRA macro
12686     int _start_col_offset = p->tokens[_mark]->col_offset;
12687     UNUSED(_start_col_offset); // Only used by EXTRA macro
12688     { // AWAIT primary
12689         if (p->error_indicator) {
12690             D(p->level--);
12691             return NULL;
12692         }
12693         D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "AWAIT primary"));
12694         expr_ty a;
12695         Token * await_var;
12696         if (
12697             (await_var = _PyPegen_expect_token(p, AWAIT))  // token='AWAIT'
12698             &&
12699             (a = primary_rule(p))  // primary
12700         )
12701         {
12702             D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "AWAIT primary"));
12703             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12704             if (_token == NULL) {
12705                 D(p->level--);
12706                 return NULL;
12707             }
12708             int _end_lineno = _token->end_lineno;
12709             UNUSED(_end_lineno); // Only used by EXTRA macro
12710             int _end_col_offset = _token->end_col_offset;
12711             UNUSED(_end_col_offset); // Only used by EXTRA macro
12712             _res = CHECK_VERSION ( expr_ty , 5 , "Await expressions are" , _PyAST_Await ( a , EXTRA ) );
12713             if (_res == NULL && PyErr_Occurred()) {
12714                 p->error_indicator = 1;
12715                 D(p->level--);
12716                 return NULL;
12717             }
12718             goto done;
12719         }
12720         p->mark = _mark;
12721         D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
12722                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "AWAIT primary"));
12723     }
12724     { // primary
12725         if (p->error_indicator) {
12726             D(p->level--);
12727             return NULL;
12728         }
12729         D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary"));
12730         expr_ty primary_var;
12731         if (
12732             (primary_var = primary_rule(p))  // primary
12733         )
12734         {
12735             D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary"));
12736             _res = primary_var;
12737             goto done;
12738         }
12739         p->mark = _mark;
12740         D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
12741                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary"));
12742     }
12743     _res = NULL;
12744   done:
12745     _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
12746     D(p->level--);
12747     return _res;
12748 }
12749 
12750 // Left-recursive
12751 // primary:
12752 //     | primary '.' NAME
12753 //     | primary genexp
12754 //     | primary '(' arguments? ')'
12755 //     | primary '[' slices ']'
12756 //     | atom
12757 static expr_ty primary_raw(Parser *);
12758 static expr_ty
primary_rule(Parser * p)12759 primary_rule(Parser *p)
12760 {
12761     D(p->level++);
12762     expr_ty _res = NULL;
12763     if (_PyPegen_is_memoized(p, primary_type, &_res)) {
12764         D(p->level--);
12765         return _res;
12766     }
12767     int _mark = p->mark;
12768     int _resmark = p->mark;
12769     while (1) {
12770         int tmpvar_8 = _PyPegen_update_memo(p, _mark, primary_type, _res);
12771         if (tmpvar_8) {
12772             D(p->level--);
12773             return _res;
12774         }
12775         p->mark = _mark;
12776         p->in_raw_rule++;
12777         void *_raw = primary_raw(p);
12778         p->in_raw_rule--;
12779         if (p->error_indicator)
12780             return NULL;
12781         if (_raw == NULL || p->mark <= _resmark)
12782             break;
12783         _resmark = p->mark;
12784         _res = _raw;
12785     }
12786     p->mark = _resmark;
12787     D(p->level--);
12788     return _res;
12789 }
12790 static expr_ty
primary_raw(Parser * p)12791 primary_raw(Parser *p)
12792 {
12793     D(p->level++);
12794     if (p->error_indicator) {
12795         D(p->level--);
12796         return NULL;
12797     }
12798     expr_ty _res = NULL;
12799     int _mark = p->mark;
12800     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12801         p->error_indicator = 1;
12802         D(p->level--);
12803         return NULL;
12804     }
12805     int _start_lineno = p->tokens[_mark]->lineno;
12806     UNUSED(_start_lineno); // Only used by EXTRA macro
12807     int _start_col_offset = p->tokens[_mark]->col_offset;
12808     UNUSED(_start_col_offset); // Only used by EXTRA macro
12809     { // primary '.' NAME
12810         if (p->error_indicator) {
12811             D(p->level--);
12812             return NULL;
12813         }
12814         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
12815         Token * _literal;
12816         expr_ty a;
12817         expr_ty b;
12818         if (
12819             (a = primary_rule(p))  // primary
12820             &&
12821             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
12822             &&
12823             (b = _PyPegen_name_token(p))  // NAME
12824         )
12825         {
12826             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
12827             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12828             if (_token == NULL) {
12829                 D(p->level--);
12830                 return NULL;
12831             }
12832             int _end_lineno = _token->end_lineno;
12833             UNUSED(_end_lineno); // Only used by EXTRA macro
12834             int _end_col_offset = _token->end_col_offset;
12835             UNUSED(_end_col_offset); // Only used by EXTRA macro
12836             _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
12837             if (_res == NULL && PyErr_Occurred()) {
12838                 p->error_indicator = 1;
12839                 D(p->level--);
12840                 return NULL;
12841             }
12842             goto done;
12843         }
12844         p->mark = _mark;
12845         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
12846                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '.' NAME"));
12847     }
12848     { // primary genexp
12849         if (p->error_indicator) {
12850             D(p->level--);
12851             return NULL;
12852         }
12853         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary genexp"));
12854         expr_ty a;
12855         expr_ty b;
12856         if (
12857             (a = primary_rule(p))  // primary
12858             &&
12859             (b = genexp_rule(p))  // genexp
12860         )
12861         {
12862             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary genexp"));
12863             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12864             if (_token == NULL) {
12865                 D(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_Call ( a , CHECK ( asdl_expr_seq* , ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
12873             if (_res == NULL && PyErr_Occurred()) {
12874                 p->error_indicator = 1;
12875                 D(p->level--);
12876                 return NULL;
12877             }
12878             goto done;
12879         }
12880         p->mark = _mark;
12881         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
12882                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary genexp"));
12883     }
12884     { // primary '(' arguments? ')'
12885         if (p->error_indicator) {
12886             D(p->level--);
12887             return NULL;
12888         }
12889         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
12890         Token * _literal;
12891         Token * _literal_1;
12892         expr_ty a;
12893         void *b;
12894         if (
12895             (a = primary_rule(p))  // primary
12896             &&
12897             (_literal = _PyPegen_expect_token(p, 7))  // token='('
12898             &&
12899             (b = arguments_rule(p), !p->error_indicator)  // arguments?
12900             &&
12901             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
12902         )
12903         {
12904             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
12905             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12906             if (_token == NULL) {
12907                 D(p->level--);
12908                 return NULL;
12909             }
12910             int _end_lineno = _token->end_lineno;
12911             UNUSED(_end_lineno); // Only used by EXTRA macro
12912             int _end_col_offset = _token->end_col_offset;
12913             UNUSED(_end_col_offset); // Only used by EXTRA macro
12914             _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
12915             if (_res == NULL && PyErr_Occurred()) {
12916                 p->error_indicator = 1;
12917                 D(p->level--);
12918                 return NULL;
12919             }
12920             goto done;
12921         }
12922         p->mark = _mark;
12923         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
12924                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '(' arguments? ')'"));
12925     }
12926     { // primary '[' slices ']'
12927         if (p->error_indicator) {
12928             D(p->level--);
12929             return NULL;
12930         }
12931         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
12932         Token * _literal;
12933         Token * _literal_1;
12934         expr_ty a;
12935         expr_ty b;
12936         if (
12937             (a = primary_rule(p))  // primary
12938             &&
12939             (_literal = _PyPegen_expect_token(p, 9))  // token='['
12940             &&
12941             (b = slices_rule(p))  // slices
12942             &&
12943             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
12944         )
12945         {
12946             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
12947             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12948             if (_token == NULL) {
12949                 D(p->level--);
12950                 return NULL;
12951             }
12952             int _end_lineno = _token->end_lineno;
12953             UNUSED(_end_lineno); // Only used by EXTRA macro
12954             int _end_col_offset = _token->end_col_offset;
12955             UNUSED(_end_col_offset); // Only used by EXTRA macro
12956             _res = _PyAST_Subscript ( a , b , Load , EXTRA );
12957             if (_res == NULL && PyErr_Occurred()) {
12958                 p->error_indicator = 1;
12959                 D(p->level--);
12960                 return NULL;
12961             }
12962             goto done;
12963         }
12964         p->mark = _mark;
12965         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
12966                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '[' slices ']'"));
12967     }
12968     { // atom
12969         if (p->error_indicator) {
12970             D(p->level--);
12971             return NULL;
12972         }
12973         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom"));
12974         expr_ty atom_var;
12975         if (
12976             (atom_var = atom_rule(p))  // atom
12977         )
12978         {
12979             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom"));
12980             _res = atom_var;
12981             goto done;
12982         }
12983         p->mark = _mark;
12984         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
12985                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom"));
12986     }
12987     _res = NULL;
12988   done:
12989     D(p->level--);
12990     return _res;
12991 }
12992 
12993 // slices: slice !',' | ','.slice+ ','?
12994 static expr_ty
slices_rule(Parser * p)12995 slices_rule(Parser *p)
12996 {
12997     D(p->level++);
12998     if (p->error_indicator) {
12999         D(p->level--);
13000         return NULL;
13001     }
13002     expr_ty _res = NULL;
13003     int _mark = p->mark;
13004     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13005         p->error_indicator = 1;
13006         D(p->level--);
13007         return NULL;
13008     }
13009     int _start_lineno = p->tokens[_mark]->lineno;
13010     UNUSED(_start_lineno); // Only used by EXTRA macro
13011     int _start_col_offset = p->tokens[_mark]->col_offset;
13012     UNUSED(_start_col_offset); // Only used by EXTRA macro
13013     { // slice !','
13014         if (p->error_indicator) {
13015             D(p->level--);
13016             return NULL;
13017         }
13018         D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice !','"));
13019         expr_ty a;
13020         if (
13021             (a = slice_rule(p))  // slice
13022             &&
13023             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
13024         )
13025         {
13026             D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice !','"));
13027             _res = a;
13028             if (_res == NULL && PyErr_Occurred()) {
13029                 p->error_indicator = 1;
13030                 D(p->level--);
13031                 return NULL;
13032             }
13033             goto done;
13034         }
13035         p->mark = _mark;
13036         D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
13037                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice !','"));
13038     }
13039     { // ','.slice+ ','?
13040         if (p->error_indicator) {
13041             D(p->level--);
13042             return NULL;
13043         }
13044         D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.slice+ ','?"));
13045         void *_opt_var;
13046         UNUSED(_opt_var); // Silence compiler warnings
13047         asdl_expr_seq* a;
13048         if (
13049             (a = (asdl_expr_seq*)_gather_85_rule(p))  // ','.slice+
13050             &&
13051             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
13052         )
13053         {
13054             D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.slice+ ','?"));
13055             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13056             if (_token == NULL) {
13057                 D(p->level--);
13058                 return NULL;
13059             }
13060             int _end_lineno = _token->end_lineno;
13061             UNUSED(_end_lineno); // Only used by EXTRA macro
13062             int _end_col_offset = _token->end_col_offset;
13063             UNUSED(_end_col_offset); // Only used by EXTRA macro
13064             _res = _PyAST_Tuple ( a , Load , EXTRA );
13065             if (_res == NULL && PyErr_Occurred()) {
13066                 p->error_indicator = 1;
13067                 D(p->level--);
13068                 return NULL;
13069             }
13070             goto done;
13071         }
13072         p->mark = _mark;
13073         D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
13074                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.slice+ ','?"));
13075     }
13076     _res = NULL;
13077   done:
13078     D(p->level--);
13079     return _res;
13080 }
13081 
13082 // slice: expression? ':' expression? [':' expression?] | named_expression
13083 static expr_ty
slice_rule(Parser * p)13084 slice_rule(Parser *p)
13085 {
13086     D(p->level++);
13087     if (p->error_indicator) {
13088         D(p->level--);
13089         return NULL;
13090     }
13091     expr_ty _res = NULL;
13092     int _mark = p->mark;
13093     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13094         p->error_indicator = 1;
13095         D(p->level--);
13096         return NULL;
13097     }
13098     int _start_lineno = p->tokens[_mark]->lineno;
13099     UNUSED(_start_lineno); // Only used by EXTRA macro
13100     int _start_col_offset = p->tokens[_mark]->col_offset;
13101     UNUSED(_start_col_offset); // Only used by EXTRA macro
13102     { // expression? ':' expression? [':' expression?]
13103         if (p->error_indicator) {
13104             D(p->level--);
13105             return NULL;
13106         }
13107         D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
13108         Token * _literal;
13109         void *a;
13110         void *b;
13111         void *c;
13112         if (
13113             (a = expression_rule(p), !p->error_indicator)  // expression?
13114             &&
13115             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
13116             &&
13117             (b = expression_rule(p), !p->error_indicator)  // expression?
13118             &&
13119             (c = _tmp_87_rule(p), !p->error_indicator)  // [':' expression?]
13120         )
13121         {
13122             D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
13123             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13124             if (_token == NULL) {
13125                 D(p->level--);
13126                 return NULL;
13127             }
13128             int _end_lineno = _token->end_lineno;
13129             UNUSED(_end_lineno); // Only used by EXTRA macro
13130             int _end_col_offset = _token->end_col_offset;
13131             UNUSED(_end_col_offset); // Only used by EXTRA macro
13132             _res = _PyAST_Slice ( a , b , c , EXTRA );
13133             if (_res == NULL && PyErr_Occurred()) {
13134                 p->error_indicator = 1;
13135                 D(p->level--);
13136                 return NULL;
13137             }
13138             goto done;
13139         }
13140         p->mark = _mark;
13141         D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
13142                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression? ':' expression? [':' expression?]"));
13143     }
13144     { // named_expression
13145         if (p->error_indicator) {
13146             D(p->level--);
13147             return NULL;
13148         }
13149         D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
13150         expr_ty a;
13151         if (
13152             (a = named_expression_rule(p))  // named_expression
13153         )
13154         {
13155             D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
13156             _res = a;
13157             if (_res == NULL && PyErr_Occurred()) {
13158                 p->error_indicator = 1;
13159                 D(p->level--);
13160                 return NULL;
13161             }
13162             goto done;
13163         }
13164         p->mark = _mark;
13165         D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
13166                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
13167     }
13168     _res = NULL;
13169   done:
13170     D(p->level--);
13171     return _res;
13172 }
13173 
13174 // atom:
13175 //     | NAME
13176 //     | 'True'
13177 //     | 'False'
13178 //     | 'None'
13179 //     | &STRING strings
13180 //     | NUMBER
13181 //     | &'(' (tuple | group | genexp)
13182 //     | &'[' (list | listcomp)
13183 //     | &'{' (dict | set | dictcomp | setcomp)
13184 //     | '...'
13185 static expr_ty
atom_rule(Parser * p)13186 atom_rule(Parser *p)
13187 {
13188     D(p->level++);
13189     if (p->error_indicator) {
13190         D(p->level--);
13191         return NULL;
13192     }
13193     expr_ty _res = NULL;
13194     int _mark = p->mark;
13195     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13196         p->error_indicator = 1;
13197         D(p->level--);
13198         return NULL;
13199     }
13200     int _start_lineno = p->tokens[_mark]->lineno;
13201     UNUSED(_start_lineno); // Only used by EXTRA macro
13202     int _start_col_offset = p->tokens[_mark]->col_offset;
13203     UNUSED(_start_col_offset); // Only used by EXTRA macro
13204     { // NAME
13205         if (p->error_indicator) {
13206             D(p->level--);
13207             return NULL;
13208         }
13209         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
13210         expr_ty name_var;
13211         if (
13212             (name_var = _PyPegen_name_token(p))  // NAME
13213         )
13214         {
13215             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
13216             _res = name_var;
13217             goto done;
13218         }
13219         p->mark = _mark;
13220         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
13221                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
13222     }
13223     { // 'True'
13224         if (p->error_indicator) {
13225             D(p->level--);
13226             return NULL;
13227         }
13228         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
13229         Token * _keyword;
13230         if (
13231             (_keyword = _PyPegen_expect_token(p, 597))  // token='True'
13232         )
13233         {
13234             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
13235             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13236             if (_token == NULL) {
13237                 D(p->level--);
13238                 return NULL;
13239             }
13240             int _end_lineno = _token->end_lineno;
13241             UNUSED(_end_lineno); // Only used by EXTRA macro
13242             int _end_col_offset = _token->end_col_offset;
13243             UNUSED(_end_col_offset); // Only used by EXTRA macro
13244             _res = _PyAST_Constant ( Py_True , NULL , EXTRA );
13245             if (_res == NULL && PyErr_Occurred()) {
13246                 p->error_indicator = 1;
13247                 D(p->level--);
13248                 return NULL;
13249             }
13250             goto done;
13251         }
13252         p->mark = _mark;
13253         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
13254                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
13255     }
13256     { // 'False'
13257         if (p->error_indicator) {
13258             D(p->level--);
13259             return NULL;
13260         }
13261         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
13262         Token * _keyword;
13263         if (
13264             (_keyword = _PyPegen_expect_token(p, 599))  // token='False'
13265         )
13266         {
13267             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
13268             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13269             if (_token == NULL) {
13270                 D(p->level--);
13271                 return NULL;
13272             }
13273             int _end_lineno = _token->end_lineno;
13274             UNUSED(_end_lineno); // Only used by EXTRA macro
13275             int _end_col_offset = _token->end_col_offset;
13276             UNUSED(_end_col_offset); // Only used by EXTRA macro
13277             _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
13278             if (_res == NULL && PyErr_Occurred()) {
13279                 p->error_indicator = 1;
13280                 D(p->level--);
13281                 return NULL;
13282             }
13283             goto done;
13284         }
13285         p->mark = _mark;
13286         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
13287                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
13288     }
13289     { // 'None'
13290         if (p->error_indicator) {
13291             D(p->level--);
13292             return NULL;
13293         }
13294         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
13295         Token * _keyword;
13296         if (
13297             (_keyword = _PyPegen_expect_token(p, 598))  // token='None'
13298         )
13299         {
13300             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
13301             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13302             if (_token == NULL) {
13303                 D(p->level--);
13304                 return NULL;
13305             }
13306             int _end_lineno = _token->end_lineno;
13307             UNUSED(_end_lineno); // Only used by EXTRA macro
13308             int _end_col_offset = _token->end_col_offset;
13309             UNUSED(_end_col_offset); // Only used by EXTRA macro
13310             _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
13311             if (_res == NULL && PyErr_Occurred()) {
13312                 p->error_indicator = 1;
13313                 D(p->level--);
13314                 return NULL;
13315             }
13316             goto done;
13317         }
13318         p->mark = _mark;
13319         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
13320                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
13321     }
13322     { // &STRING strings
13323         if (p->error_indicator) {
13324             D(p->level--);
13325             return NULL;
13326         }
13327         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&STRING strings"));
13328         expr_ty strings_var;
13329         if (
13330             _PyPegen_lookahead(1, _PyPegen_string_token, p)
13331             &&
13332             (strings_var = strings_rule(p))  // strings
13333         )
13334         {
13335             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&STRING strings"));
13336             _res = strings_var;
13337             goto done;
13338         }
13339         p->mark = _mark;
13340         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
13341                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&STRING strings"));
13342     }
13343     { // NUMBER
13344         if (p->error_indicator) {
13345             D(p->level--);
13346             return NULL;
13347         }
13348         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
13349         expr_ty number_var;
13350         if (
13351             (number_var = _PyPegen_number_token(p))  // NUMBER
13352         )
13353         {
13354             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
13355             _res = number_var;
13356             goto done;
13357         }
13358         p->mark = _mark;
13359         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
13360                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
13361     }
13362     { // &'(' (tuple | group | genexp)
13363         if (p->error_indicator) {
13364             D(p->level--);
13365             return NULL;
13366         }
13367         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
13368         void *_tmp_88_var;
13369         if (
13370             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7)  // token='('
13371             &&
13372             (_tmp_88_var = _tmp_88_rule(p))  // tuple | group | genexp
13373         )
13374         {
13375             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
13376             _res = _tmp_88_var;
13377             goto done;
13378         }
13379         p->mark = _mark;
13380         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
13381                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'(' (tuple | group | genexp)"));
13382     }
13383     { // &'[' (list | listcomp)
13384         if (p->error_indicator) {
13385             D(p->level--);
13386             return NULL;
13387         }
13388         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
13389         void *_tmp_89_var;
13390         if (
13391             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9)  // token='['
13392             &&
13393             (_tmp_89_var = _tmp_89_rule(p))  // list | listcomp
13394         )
13395         {
13396             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
13397             _res = _tmp_89_var;
13398             goto done;
13399         }
13400         p->mark = _mark;
13401         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
13402                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'[' (list | listcomp)"));
13403     }
13404     { // &'{' (dict | set | dictcomp | setcomp)
13405         if (p->error_indicator) {
13406             D(p->level--);
13407             return NULL;
13408         }
13409         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
13410         void *_tmp_90_var;
13411         if (
13412             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25)  // token='{'
13413             &&
13414             (_tmp_90_var = _tmp_90_rule(p))  // dict | set | dictcomp | setcomp
13415         )
13416         {
13417             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
13418             _res = _tmp_90_var;
13419             goto done;
13420         }
13421         p->mark = _mark;
13422         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
13423                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
13424     }
13425     { // '...'
13426         if (p->error_indicator) {
13427             D(p->level--);
13428             return NULL;
13429         }
13430         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
13431         Token * _literal;
13432         if (
13433             (_literal = _PyPegen_expect_token(p, 52))  // token='...'
13434         )
13435         {
13436             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
13437             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13438             if (_token == NULL) {
13439                 D(p->level--);
13440                 return NULL;
13441             }
13442             int _end_lineno = _token->end_lineno;
13443             UNUSED(_end_lineno); // Only used by EXTRA macro
13444             int _end_col_offset = _token->end_col_offset;
13445             UNUSED(_end_col_offset); // Only used by EXTRA macro
13446             _res = _PyAST_Constant ( Py_Ellipsis , NULL , EXTRA );
13447             if (_res == NULL && PyErr_Occurred()) {
13448                 p->error_indicator = 1;
13449                 D(p->level--);
13450                 return NULL;
13451             }
13452             goto done;
13453         }
13454         p->mark = _mark;
13455         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
13456                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
13457     }
13458     _res = NULL;
13459   done:
13460     D(p->level--);
13461     return _res;
13462 }
13463 
13464 // group: '(' (yield_expr | named_expression) ')' | invalid_group
13465 static expr_ty
group_rule(Parser * p)13466 group_rule(Parser *p)
13467 {
13468     D(p->level++);
13469     if (p->error_indicator) {
13470         D(p->level--);
13471         return NULL;
13472     }
13473     expr_ty _res = NULL;
13474     int _mark = p->mark;
13475     { // '(' (yield_expr | named_expression) ')'
13476         if (p->error_indicator) {
13477             D(p->level--);
13478             return NULL;
13479         }
13480         D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
13481         Token * _literal;
13482         Token * _literal_1;
13483         void *a;
13484         if (
13485             (_literal = _PyPegen_expect_token(p, 7))  // token='('
13486             &&
13487             (a = _tmp_91_rule(p))  // yield_expr | named_expression
13488             &&
13489             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
13490         )
13491         {
13492             D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
13493             _res = a;
13494             if (_res == NULL && PyErr_Occurred()) {
13495                 p->error_indicator = 1;
13496                 D(p->level--);
13497                 return NULL;
13498             }
13499             goto done;
13500         }
13501         p->mark = _mark;
13502         D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
13503                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
13504     }
13505     if (p->call_invalid_rules) { // invalid_group
13506         if (p->error_indicator) {
13507             D(p->level--);
13508             return NULL;
13509         }
13510         D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_group"));
13511         void *invalid_group_var;
13512         if (
13513             (invalid_group_var = invalid_group_rule(p))  // invalid_group
13514         )
13515         {
13516             D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_group"));
13517             _res = invalid_group_var;
13518             goto done;
13519         }
13520         p->mark = _mark;
13521         D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
13522                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_group"));
13523     }
13524     _res = NULL;
13525   done:
13526     D(p->level--);
13527     return _res;
13528 }
13529 
13530 // lambdef: 'lambda' lambda_params? ':' expression
13531 static expr_ty
lambdef_rule(Parser * p)13532 lambdef_rule(Parser *p)
13533 {
13534     D(p->level++);
13535     if (p->error_indicator) {
13536         D(p->level--);
13537         return NULL;
13538     }
13539     expr_ty _res = NULL;
13540     int _mark = p->mark;
13541     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13542         p->error_indicator = 1;
13543         D(p->level--);
13544         return NULL;
13545     }
13546     int _start_lineno = p->tokens[_mark]->lineno;
13547     UNUSED(_start_lineno); // Only used by EXTRA macro
13548     int _start_col_offset = p->tokens[_mark]->col_offset;
13549     UNUSED(_start_col_offset); // Only used by EXTRA macro
13550     { // 'lambda' lambda_params? ':' expression
13551         if (p->error_indicator) {
13552             D(p->level--);
13553             return NULL;
13554         }
13555         D(fprintf(stderr, "%*c> lambdef[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
13556         Token * _keyword;
13557         Token * _literal;
13558         void *a;
13559         expr_ty b;
13560         if (
13561             (_keyword = _PyPegen_expect_token(p, 583))  // token='lambda'
13562             &&
13563             (a = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
13564             &&
13565             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
13566             &&
13567             (b = expression_rule(p))  // expression
13568         )
13569         {
13570             D(fprintf(stderr, "%*c+ lambdef[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
13571             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13572             if (_token == NULL) {
13573                 D(p->level--);
13574                 return NULL;
13575             }
13576             int _end_lineno = _token->end_lineno;
13577             UNUSED(_end_lineno); // Only used by EXTRA macro
13578             int _end_col_offset = _token->end_col_offset;
13579             UNUSED(_end_col_offset); // Only used by EXTRA macro
13580             _res = _PyAST_Lambda ( ( a ) ? a : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
13581             if (_res == NULL && PyErr_Occurred()) {
13582                 p->error_indicator = 1;
13583                 D(p->level--);
13584                 return NULL;
13585             }
13586             goto done;
13587         }
13588         p->mark = _mark;
13589         D(fprintf(stderr, "%*c%s lambdef[%d-%d]: %s failed!\n", p->level, ' ',
13590                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' expression"));
13591     }
13592     _res = NULL;
13593   done:
13594     D(p->level--);
13595     return _res;
13596 }
13597 
13598 // lambda_params: invalid_lambda_parameters | lambda_parameters
13599 static arguments_ty
lambda_params_rule(Parser * p)13600 lambda_params_rule(Parser *p)
13601 {
13602     D(p->level++);
13603     if (p->error_indicator) {
13604         D(p->level--);
13605         return NULL;
13606     }
13607     arguments_ty _res = NULL;
13608     int _mark = p->mark;
13609     if (p->call_invalid_rules) { // invalid_lambda_parameters
13610         if (p->error_indicator) {
13611             D(p->level--);
13612             return NULL;
13613         }
13614         D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
13615         void *invalid_lambda_parameters_var;
13616         if (
13617             (invalid_lambda_parameters_var = invalid_lambda_parameters_rule(p))  // invalid_lambda_parameters
13618         )
13619         {
13620             D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
13621             _res = invalid_lambda_parameters_var;
13622             goto done;
13623         }
13624         p->mark = _mark;
13625         D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
13626                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_parameters"));
13627     }
13628     { // lambda_parameters
13629         if (p->error_indicator) {
13630             D(p->level--);
13631             return NULL;
13632         }
13633         D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
13634         arguments_ty lambda_parameters_var;
13635         if (
13636             (lambda_parameters_var = lambda_parameters_rule(p))  // lambda_parameters
13637         )
13638         {
13639             D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
13640             _res = lambda_parameters_var;
13641             goto done;
13642         }
13643         p->mark = _mark;
13644         D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
13645                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_parameters"));
13646     }
13647     _res = NULL;
13648   done:
13649     D(p->level--);
13650     return _res;
13651 }
13652 
13653 // lambda_parameters:
13654 //     | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
13655 //     | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
13656 //     | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
13657 //     | lambda_param_with_default+ lambda_star_etc?
13658 //     | lambda_star_etc
13659 static arguments_ty
lambda_parameters_rule(Parser * p)13660 lambda_parameters_rule(Parser *p)
13661 {
13662     D(p->level++);
13663     if (p->error_indicator) {
13664         D(p->level--);
13665         return NULL;
13666     }
13667     arguments_ty _res = NULL;
13668     int _mark = p->mark;
13669     { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
13670         if (p->error_indicator) {
13671             D(p->level--);
13672             return NULL;
13673         }
13674         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?"));
13675         asdl_arg_seq* a;
13676         asdl_arg_seq* b;
13677         asdl_seq * c;
13678         void *d;
13679         if (
13680             (a = lambda_slash_no_default_rule(p))  // lambda_slash_no_default
13681             &&
13682             (b = (asdl_arg_seq*)_loop0_92_rule(p))  // lambda_param_no_default*
13683             &&
13684             (c = _loop0_93_rule(p))  // lambda_param_with_default*
13685             &&
13686             (d = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
13687         )
13688         {
13689             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?"));
13690             _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
13691             if (_res == NULL && PyErr_Occurred()) {
13692                 p->error_indicator = 1;
13693                 D(p->level--);
13694                 return NULL;
13695             }
13696             goto done;
13697         }
13698         p->mark = _mark;
13699         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
13700                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?"));
13701     }
13702     { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
13703         if (p->error_indicator) {
13704             D(p->level--);
13705             return NULL;
13706         }
13707         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?"));
13708         SlashWithDefault* a;
13709         asdl_seq * b;
13710         void *c;
13711         if (
13712             (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
13713             &&
13714             (b = _loop0_94_rule(p))  // lambda_param_with_default*
13715             &&
13716             (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
13717         )
13718         {
13719             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?"));
13720             _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
13721             if (_res == NULL && PyErr_Occurred()) {
13722                 p->error_indicator = 1;
13723                 D(p->level--);
13724                 return NULL;
13725             }
13726             goto done;
13727         }
13728         p->mark = _mark;
13729         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
13730                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default lambda_param_with_default* lambda_star_etc?"));
13731     }
13732     { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
13733         if (p->error_indicator) {
13734             D(p->level--);
13735             return NULL;
13736         }
13737         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?"));
13738         asdl_arg_seq* a;
13739         asdl_seq * b;
13740         void *c;
13741         if (
13742             (a = (asdl_arg_seq*)_loop1_95_rule(p))  // lambda_param_no_default+
13743             &&
13744             (b = _loop0_96_rule(p))  // lambda_param_with_default*
13745             &&
13746             (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
13747         )
13748         {
13749             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?"));
13750             _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
13751             if (_res == NULL && PyErr_Occurred()) {
13752                 p->error_indicator = 1;
13753                 D(p->level--);
13754                 return NULL;
13755             }
13756             goto done;
13757         }
13758         p->mark = _mark;
13759         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
13760                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?"));
13761     }
13762     { // lambda_param_with_default+ lambda_star_etc?
13763         if (p->error_indicator) {
13764             D(p->level--);
13765             return NULL;
13766         }
13767         D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
13768         asdl_seq * a;
13769         void *b;
13770         if (
13771             (a = _loop1_97_rule(p))  // lambda_param_with_default+
13772             &&
13773             (b = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
13774         )
13775         {
13776             D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
13777             _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
13778             if (_res == NULL && PyErr_Occurred()) {
13779                 p->error_indicator = 1;
13780                 D(p->level--);
13781                 return NULL;
13782             }
13783             goto done;
13784         }
13785         p->mark = _mark;
13786         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
13787                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
13788     }
13789     { // lambda_star_etc
13790         if (p->error_indicator) {
13791             D(p->level--);
13792             return NULL;
13793         }
13794         D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
13795         StarEtc* a;
13796         if (
13797             (a = lambda_star_etc_rule(p))  // lambda_star_etc
13798         )
13799         {
13800             D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
13801             _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
13802             if (_res == NULL && PyErr_Occurred()) {
13803                 p->error_indicator = 1;
13804                 D(p->level--);
13805                 return NULL;
13806             }
13807             goto done;
13808         }
13809         p->mark = _mark;
13810         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
13811                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_star_etc"));
13812     }
13813     _res = NULL;
13814   done:
13815     D(p->level--);
13816     return _res;
13817 }
13818 
13819 // lambda_slash_no_default:
13820 //     | lambda_param_no_default+ '/' ','
13821 //     | lambda_param_no_default+ '/' &':'
13822 static asdl_arg_seq*
lambda_slash_no_default_rule(Parser * p)13823 lambda_slash_no_default_rule(Parser *p)
13824 {
13825     D(p->level++);
13826     if (p->error_indicator) {
13827         D(p->level--);
13828         return NULL;
13829     }
13830     asdl_arg_seq* _res = NULL;
13831     int _mark = p->mark;
13832     { // lambda_param_no_default+ '/' ','
13833         if (p->error_indicator) {
13834             D(p->level--);
13835             return NULL;
13836         }
13837         D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
13838         Token * _literal;
13839         Token * _literal_1;
13840         asdl_arg_seq* a;
13841         if (
13842             (a = (asdl_arg_seq*)_loop1_98_rule(p))  // lambda_param_no_default+
13843             &&
13844             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
13845             &&
13846             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
13847         )
13848         {
13849             D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
13850             _res = a;
13851             if (_res == NULL && PyErr_Occurred()) {
13852                 p->error_indicator = 1;
13853                 D(p->level--);
13854                 return NULL;
13855             }
13856             goto done;
13857         }
13858         p->mark = _mark;
13859         D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
13860                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' ','"));
13861     }
13862     { // lambda_param_no_default+ '/' &':'
13863         if (p->error_indicator) {
13864             D(p->level--);
13865             return NULL;
13866         }
13867         D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
13868         Token * _literal;
13869         asdl_arg_seq* a;
13870         if (
13871             (a = (asdl_arg_seq*)_loop1_99_rule(p))  // lambda_param_no_default+
13872             &&
13873             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
13874             &&
13875             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
13876         )
13877         {
13878             D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
13879             _res = a;
13880             if (_res == NULL && PyErr_Occurred()) {
13881                 p->error_indicator = 1;
13882                 D(p->level--);
13883                 return NULL;
13884             }
13885             goto done;
13886         }
13887         p->mark = _mark;
13888         D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
13889                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
13890     }
13891     _res = NULL;
13892   done:
13893     D(p->level--);
13894     return _res;
13895 }
13896 
13897 // lambda_slash_with_default:
13898 //     | lambda_param_no_default* lambda_param_with_default+ '/' ','
13899 //     | lambda_param_no_default* lambda_param_with_default+ '/' &':'
13900 static SlashWithDefault*
lambda_slash_with_default_rule(Parser * p)13901 lambda_slash_with_default_rule(Parser *p)
13902 {
13903     D(p->level++);
13904     if (p->error_indicator) {
13905         D(p->level--);
13906         return NULL;
13907     }
13908     SlashWithDefault* _res = NULL;
13909     int _mark = p->mark;
13910     { // lambda_param_no_default* lambda_param_with_default+ '/' ','
13911         if (p->error_indicator) {
13912             D(p->level--);
13913             return NULL;
13914         }
13915         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+ '/' ','"));
13916         Token * _literal;
13917         Token * _literal_1;
13918         asdl_seq * a;
13919         asdl_seq * b;
13920         if (
13921             (a = _loop0_100_rule(p))  // lambda_param_no_default*
13922             &&
13923             (b = _loop1_101_rule(p))  // lambda_param_with_default+
13924             &&
13925             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
13926             &&
13927             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
13928         )
13929         {
13930             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+ '/' ','"));
13931             _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
13932             if (_res == NULL && PyErr_Occurred()) {
13933                 p->error_indicator = 1;
13934                 D(p->level--);
13935                 return NULL;
13936             }
13937             goto done;
13938         }
13939         p->mark = _mark;
13940         D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
13941                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' ','"));
13942     }
13943     { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
13944         if (p->error_indicator) {
13945             D(p->level--);
13946             return NULL;
13947         }
13948         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+ '/' &':'"));
13949         Token * _literal;
13950         asdl_seq * a;
13951         asdl_seq * b;
13952         if (
13953             (a = _loop0_102_rule(p))  // lambda_param_no_default*
13954             &&
13955             (b = _loop1_103_rule(p))  // lambda_param_with_default+
13956             &&
13957             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
13958             &&
13959             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
13960         )
13961         {
13962             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+ '/' &':'"));
13963             _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq* ) a , b );
13964             if (_res == NULL && PyErr_Occurred()) {
13965                 p->error_indicator = 1;
13966                 D(p->level--);
13967                 return NULL;
13968             }
13969             goto done;
13970         }
13971         p->mark = _mark;
13972         D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
13973                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' &':'"));
13974     }
13975     _res = NULL;
13976   done:
13977     D(p->level--);
13978     return _res;
13979 }
13980 
13981 // lambda_star_etc:
13982 //     | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
13983 //     | '*' ',' lambda_param_maybe_default+ lambda_kwds?
13984 //     | lambda_kwds
13985 //     | invalid_lambda_star_etc
13986 static StarEtc*
lambda_star_etc_rule(Parser * p)13987 lambda_star_etc_rule(Parser *p)
13988 {
13989     D(p->level++);
13990     if (p->error_indicator) {
13991         D(p->level--);
13992         return NULL;
13993     }
13994     StarEtc* _res = NULL;
13995     int _mark = p->mark;
13996     { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
13997         if (p->error_indicator) {
13998             D(p->level--);
13999             return NULL;
14000         }
14001         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?"));
14002         Token * _literal;
14003         arg_ty a;
14004         asdl_seq * b;
14005         void *c;
14006         if (
14007             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
14008             &&
14009             (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
14010             &&
14011             (b = _loop0_104_rule(p))  // lambda_param_maybe_default*
14012             &&
14013             (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
14014         )
14015         {
14016             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?"));
14017             _res = _PyPegen_star_etc ( p , a , b , c );
14018             if (_res == NULL && PyErr_Occurred()) {
14019                 p->error_indicator = 1;
14020                 D(p->level--);
14021                 return NULL;
14022             }
14023             goto done;
14024         }
14025         p->mark = _mark;
14026         D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
14027                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?"));
14028     }
14029     { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
14030         if (p->error_indicator) {
14031             D(p->level--);
14032             return NULL;
14033         }
14034         D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
14035         Token * _literal;
14036         Token * _literal_1;
14037         asdl_seq * b;
14038         void *c;
14039         if (
14040             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
14041             &&
14042             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
14043             &&
14044             (b = _loop1_105_rule(p))  // lambda_param_maybe_default+
14045             &&
14046             (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
14047         )
14048         {
14049             D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
14050             _res = _PyPegen_star_etc ( p , NULL , b , c );
14051             if (_res == NULL && PyErr_Occurred()) {
14052                 p->error_indicator = 1;
14053                 D(p->level--);
14054                 return NULL;
14055             }
14056             goto done;
14057         }
14058         p->mark = _mark;
14059         D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
14060                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
14061     }
14062     { // lambda_kwds
14063         if (p->error_indicator) {
14064             D(p->level--);
14065             return NULL;
14066         }
14067         D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
14068         arg_ty a;
14069         if (
14070             (a = lambda_kwds_rule(p))  // lambda_kwds
14071         )
14072         {
14073             D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
14074             _res = _PyPegen_star_etc ( p , NULL , NULL , a );
14075             if (_res == NULL && PyErr_Occurred()) {
14076                 p->error_indicator = 1;
14077                 D(p->level--);
14078                 return NULL;
14079             }
14080             goto done;
14081         }
14082         p->mark = _mark;
14083         D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
14084                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_kwds"));
14085     }
14086     if (p->call_invalid_rules) { // invalid_lambda_star_etc
14087         if (p->error_indicator) {
14088             D(p->level--);
14089             return NULL;
14090         }
14091         D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
14092         void *invalid_lambda_star_etc_var;
14093         if (
14094             (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p))  // invalid_lambda_star_etc
14095         )
14096         {
14097             D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
14098             _res = invalid_lambda_star_etc_var;
14099             goto done;
14100         }
14101         p->mark = _mark;
14102         D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
14103                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_star_etc"));
14104     }
14105     _res = NULL;
14106   done:
14107     D(p->level--);
14108     return _res;
14109 }
14110 
14111 // lambda_kwds: '**' lambda_param_no_default
14112 static arg_ty
lambda_kwds_rule(Parser * p)14113 lambda_kwds_rule(Parser *p)
14114 {
14115     D(p->level++);
14116     if (p->error_indicator) {
14117         D(p->level--);
14118         return NULL;
14119     }
14120     arg_ty _res = NULL;
14121     int _mark = p->mark;
14122     { // '**' lambda_param_no_default
14123         if (p->error_indicator) {
14124             D(p->level--);
14125             return NULL;
14126         }
14127         D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
14128         Token * _literal;
14129         arg_ty a;
14130         if (
14131             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
14132             &&
14133             (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
14134         )
14135         {
14136             D(fprintf(stderr, "%*c+ lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
14137             _res = a;
14138             if (_res == NULL && PyErr_Occurred()) {
14139                 p->error_indicator = 1;
14140                 D(p->level--);
14141                 return NULL;
14142             }
14143             goto done;
14144         }
14145         p->mark = _mark;
14146         D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
14147                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param_no_default"));
14148     }
14149     _res = NULL;
14150   done:
14151     D(p->level--);
14152     return _res;
14153 }
14154 
14155 // lambda_param_no_default: lambda_param ',' | lambda_param &':'
14156 static arg_ty
lambda_param_no_default_rule(Parser * p)14157 lambda_param_no_default_rule(Parser *p)
14158 {
14159     D(p->level++);
14160     if (p->error_indicator) {
14161         D(p->level--);
14162         return NULL;
14163     }
14164     arg_ty _res = NULL;
14165     int _mark = p->mark;
14166     { // lambda_param ','
14167         if (p->error_indicator) {
14168             D(p->level--);
14169             return NULL;
14170         }
14171         D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
14172         Token * _literal;
14173         arg_ty a;
14174         if (
14175             (a = lambda_param_rule(p))  // lambda_param
14176             &&
14177             (_literal = _PyPegen_expect_token(p, 12))  // token=','
14178         )
14179         {
14180             D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
14181             _res = a;
14182             if (_res == NULL && PyErr_Occurred()) {
14183                 p->error_indicator = 1;
14184                 D(p->level--);
14185                 return NULL;
14186             }
14187             goto done;
14188         }
14189         p->mark = _mark;
14190         D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
14191                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param ','"));
14192     }
14193     { // lambda_param &':'
14194         if (p->error_indicator) {
14195             D(p->level--);
14196             return NULL;
14197         }
14198         D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
14199         arg_ty a;
14200         if (
14201             (a = lambda_param_rule(p))  // lambda_param
14202             &&
14203             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
14204         )
14205         {
14206             D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
14207             _res = a;
14208             if (_res == NULL && PyErr_Occurred()) {
14209                 p->error_indicator = 1;
14210                 D(p->level--);
14211                 return NULL;
14212             }
14213             goto done;
14214         }
14215         p->mark = _mark;
14216         D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
14217                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param &':'"));
14218     }
14219     _res = NULL;
14220   done:
14221     D(p->level--);
14222     return _res;
14223 }
14224 
14225 // lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
14226 static NameDefaultPair*
lambda_param_with_default_rule(Parser * p)14227 lambda_param_with_default_rule(Parser *p)
14228 {
14229     D(p->level++);
14230     if (p->error_indicator) {
14231         D(p->level--);
14232         return NULL;
14233     }
14234     NameDefaultPair* _res = NULL;
14235     int _mark = p->mark;
14236     { // lambda_param default ','
14237         if (p->error_indicator) {
14238             D(p->level--);
14239             return NULL;
14240         }
14241         D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
14242         Token * _literal;
14243         arg_ty a;
14244         expr_ty c;
14245         if (
14246             (a = lambda_param_rule(p))  // lambda_param
14247             &&
14248             (c = default_rule(p))  // default
14249             &&
14250             (_literal = _PyPegen_expect_token(p, 12))  // token=','
14251         )
14252         {
14253             D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
14254             _res = _PyPegen_name_default_pair ( p , a , c , NULL );
14255             if (_res == NULL && PyErr_Occurred()) {
14256                 p->error_indicator = 1;
14257                 D(p->level--);
14258                 return NULL;
14259             }
14260             goto done;
14261         }
14262         p->mark = _mark;
14263         D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
14264                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default ','"));
14265     }
14266     { // lambda_param default &':'
14267         if (p->error_indicator) {
14268             D(p->level--);
14269             return NULL;
14270         }
14271         D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
14272         arg_ty a;
14273         expr_ty c;
14274         if (
14275             (a = lambda_param_rule(p))  // lambda_param
14276             &&
14277             (c = default_rule(p))  // default
14278             &&
14279             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
14280         )
14281         {
14282             D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
14283             _res = _PyPegen_name_default_pair ( p , a , c , NULL );
14284             if (_res == NULL && PyErr_Occurred()) {
14285                 p->error_indicator = 1;
14286                 D(p->level--);
14287                 return NULL;
14288             }
14289             goto done;
14290         }
14291         p->mark = _mark;
14292         D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
14293                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default &':'"));
14294     }
14295     _res = NULL;
14296   done:
14297     D(p->level--);
14298     return _res;
14299 }
14300 
14301 // lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
14302 static NameDefaultPair*
lambda_param_maybe_default_rule(Parser * p)14303 lambda_param_maybe_default_rule(Parser *p)
14304 {
14305     D(p->level++);
14306     if (p->error_indicator) {
14307         D(p->level--);
14308         return NULL;
14309     }
14310     NameDefaultPair* _res = NULL;
14311     int _mark = p->mark;
14312     { // lambda_param default? ','
14313         if (p->error_indicator) {
14314             D(p->level--);
14315             return NULL;
14316         }
14317         D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
14318         Token * _literal;
14319         arg_ty a;
14320         void *c;
14321         if (
14322             (a = lambda_param_rule(p))  // lambda_param
14323             &&
14324             (c = default_rule(p), !p->error_indicator)  // default?
14325             &&
14326             (_literal = _PyPegen_expect_token(p, 12))  // token=','
14327         )
14328         {
14329             D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
14330             _res = _PyPegen_name_default_pair ( p , a , c , NULL );
14331             if (_res == NULL && PyErr_Occurred()) {
14332                 p->error_indicator = 1;
14333                 D(p->level--);
14334                 return NULL;
14335             }
14336             goto done;
14337         }
14338         p->mark = _mark;
14339         D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
14340                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? ','"));
14341     }
14342     { // lambda_param default? &':'
14343         if (p->error_indicator) {
14344             D(p->level--);
14345             return NULL;
14346         }
14347         D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
14348         arg_ty a;
14349         void *c;
14350         if (
14351             (a = lambda_param_rule(p))  // lambda_param
14352             &&
14353             (c = default_rule(p), !p->error_indicator)  // default?
14354             &&
14355             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
14356         )
14357         {
14358             D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
14359             _res = _PyPegen_name_default_pair ( p , a , c , NULL );
14360             if (_res == NULL && PyErr_Occurred()) {
14361                 p->error_indicator = 1;
14362                 D(p->level--);
14363                 return NULL;
14364             }
14365             goto done;
14366         }
14367         p->mark = _mark;
14368         D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
14369                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? &':'"));
14370     }
14371     _res = NULL;
14372   done:
14373     D(p->level--);
14374     return _res;
14375 }
14376 
14377 // lambda_param: NAME
14378 static arg_ty
lambda_param_rule(Parser * p)14379 lambda_param_rule(Parser *p)
14380 {
14381     D(p->level++);
14382     if (p->error_indicator) {
14383         D(p->level--);
14384         return NULL;
14385     }
14386     arg_ty _res = NULL;
14387     int _mark = p->mark;
14388     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14389         p->error_indicator = 1;
14390         D(p->level--);
14391         return NULL;
14392     }
14393     int _start_lineno = p->tokens[_mark]->lineno;
14394     UNUSED(_start_lineno); // Only used by EXTRA macro
14395     int _start_col_offset = p->tokens[_mark]->col_offset;
14396     UNUSED(_start_col_offset); // Only used by EXTRA macro
14397     { // NAME
14398         if (p->error_indicator) {
14399             D(p->level--);
14400             return NULL;
14401         }
14402         D(fprintf(stderr, "%*c> lambda_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
14403         expr_ty a;
14404         if (
14405             (a = _PyPegen_name_token(p))  // NAME
14406         )
14407         {
14408             D(fprintf(stderr, "%*c+ lambda_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
14409             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14410             if (_token == NULL) {
14411                 D(p->level--);
14412                 return NULL;
14413             }
14414             int _end_lineno = _token->end_lineno;
14415             UNUSED(_end_lineno); // Only used by EXTRA macro
14416             int _end_col_offset = _token->end_col_offset;
14417             UNUSED(_end_col_offset); // Only used by EXTRA macro
14418             _res = _PyAST_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
14419             if (_res == NULL && PyErr_Occurred()) {
14420                 p->error_indicator = 1;
14421                 D(p->level--);
14422                 return NULL;
14423             }
14424             goto done;
14425         }
14426         p->mark = _mark;
14427         D(fprintf(stderr, "%*c%s lambda_param[%d-%d]: %s failed!\n", p->level, ' ',
14428                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
14429     }
14430     _res = NULL;
14431   done:
14432     D(p->level--);
14433     return _res;
14434 }
14435 
14436 // strings: STRING+
14437 static expr_ty
strings_rule(Parser * p)14438 strings_rule(Parser *p)
14439 {
14440     D(p->level++);
14441     if (p->error_indicator) {
14442         D(p->level--);
14443         return NULL;
14444     }
14445     expr_ty _res = NULL;
14446     if (_PyPegen_is_memoized(p, strings_type, &_res)) {
14447         D(p->level--);
14448         return _res;
14449     }
14450     int _mark = p->mark;
14451     { // STRING+
14452         if (p->error_indicator) {
14453             D(p->level--);
14454             return NULL;
14455         }
14456         D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING+"));
14457         asdl_seq * a;
14458         if (
14459             (a = _loop1_106_rule(p))  // STRING+
14460         )
14461         {
14462             D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING+"));
14463             _res = _PyPegen_concatenate_strings ( p , a );
14464             if (_res == NULL && PyErr_Occurred()) {
14465                 p->error_indicator = 1;
14466                 D(p->level--);
14467                 return NULL;
14468             }
14469             goto done;
14470         }
14471         p->mark = _mark;
14472         D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
14473                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING+"));
14474     }
14475     _res = NULL;
14476   done:
14477     _PyPegen_insert_memo(p, _mark, strings_type, _res);
14478     D(p->level--);
14479     return _res;
14480 }
14481 
14482 // list: '[' star_named_expressions? ']'
14483 static expr_ty
list_rule(Parser * p)14484 list_rule(Parser *p)
14485 {
14486     D(p->level++);
14487     if (p->error_indicator) {
14488         D(p->level--);
14489         return NULL;
14490     }
14491     expr_ty _res = NULL;
14492     int _mark = p->mark;
14493     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14494         p->error_indicator = 1;
14495         D(p->level--);
14496         return NULL;
14497     }
14498     int _start_lineno = p->tokens[_mark]->lineno;
14499     UNUSED(_start_lineno); // Only used by EXTRA macro
14500     int _start_col_offset = p->tokens[_mark]->col_offset;
14501     UNUSED(_start_col_offset); // Only used by EXTRA macro
14502     { // '[' star_named_expressions? ']'
14503         if (p->error_indicator) {
14504             D(p->level--);
14505             return NULL;
14506         }
14507         D(fprintf(stderr, "%*c> list[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
14508         Token * _literal;
14509         Token * _literal_1;
14510         void *a;
14511         if (
14512             (_literal = _PyPegen_expect_token(p, 9))  // token='['
14513             &&
14514             (a = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
14515             &&
14516             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
14517         )
14518         {
14519             D(fprintf(stderr, "%*c+ list[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
14520             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14521             if (_token == NULL) {
14522                 D(p->level--);
14523                 return NULL;
14524             }
14525             int _end_lineno = _token->end_lineno;
14526             UNUSED(_end_lineno); // Only used by EXTRA macro
14527             int _end_col_offset = _token->end_col_offset;
14528             UNUSED(_end_col_offset); // Only used by EXTRA macro
14529             _res = _PyAST_List ( a , Load , EXTRA );
14530             if (_res == NULL && PyErr_Occurred()) {
14531                 p->error_indicator = 1;
14532                 D(p->level--);
14533                 return NULL;
14534             }
14535             goto done;
14536         }
14537         p->mark = _mark;
14538         D(fprintf(stderr, "%*c%s list[%d-%d]: %s failed!\n", p->level, ' ',
14539                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_named_expressions? ']'"));
14540     }
14541     _res = NULL;
14542   done:
14543     D(p->level--);
14544     return _res;
14545 }
14546 
14547 // tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
14548 static expr_ty
tuple_rule(Parser * p)14549 tuple_rule(Parser *p)
14550 {
14551     D(p->level++);
14552     if (p->error_indicator) {
14553         D(p->level--);
14554         return NULL;
14555     }
14556     expr_ty _res = NULL;
14557     int _mark = p->mark;
14558     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14559         p->error_indicator = 1;
14560         D(p->level--);
14561         return NULL;
14562     }
14563     int _start_lineno = p->tokens[_mark]->lineno;
14564     UNUSED(_start_lineno); // Only used by EXTRA macro
14565     int _start_col_offset = p->tokens[_mark]->col_offset;
14566     UNUSED(_start_col_offset); // Only used by EXTRA macro
14567     { // '(' [star_named_expression ',' star_named_expressions?] ')'
14568         if (p->error_indicator) {
14569             D(p->level--);
14570             return NULL;
14571         }
14572         D(fprintf(stderr, "%*c> tuple[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
14573         Token * _literal;
14574         Token * _literal_1;
14575         void *a;
14576         if (
14577             (_literal = _PyPegen_expect_token(p, 7))  // token='('
14578             &&
14579             (a = _tmp_107_rule(p), !p->error_indicator)  // [star_named_expression ',' star_named_expressions?]
14580             &&
14581             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
14582         )
14583         {
14584             D(fprintf(stderr, "%*c+ tuple[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
14585             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14586             if (_token == NULL) {
14587                 D(p->level--);
14588                 return NULL;
14589             }
14590             int _end_lineno = _token->end_lineno;
14591             UNUSED(_end_lineno); // Only used by EXTRA macro
14592             int _end_col_offset = _token->end_col_offset;
14593             UNUSED(_end_col_offset); // Only used by EXTRA macro
14594             _res = _PyAST_Tuple ( a , Load , EXTRA );
14595             if (_res == NULL && PyErr_Occurred()) {
14596                 p->error_indicator = 1;
14597                 D(p->level--);
14598                 return NULL;
14599             }
14600             goto done;
14601         }
14602         p->mark = _mark;
14603         D(fprintf(stderr, "%*c%s tuple[%d-%d]: %s failed!\n", p->level, ' ',
14604                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
14605     }
14606     _res = NULL;
14607   done:
14608     D(p->level--);
14609     return _res;
14610 }
14611 
14612 // set: '{' star_named_expressions '}'
14613 static expr_ty
set_rule(Parser * p)14614 set_rule(Parser *p)
14615 {
14616     D(p->level++);
14617     if (p->error_indicator) {
14618         D(p->level--);
14619         return NULL;
14620     }
14621     expr_ty _res = NULL;
14622     int _mark = p->mark;
14623     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14624         p->error_indicator = 1;
14625         D(p->level--);
14626         return NULL;
14627     }
14628     int _start_lineno = p->tokens[_mark]->lineno;
14629     UNUSED(_start_lineno); // Only used by EXTRA macro
14630     int _start_col_offset = p->tokens[_mark]->col_offset;
14631     UNUSED(_start_col_offset); // Only used by EXTRA macro
14632     { // '{' star_named_expressions '}'
14633         if (p->error_indicator) {
14634             D(p->level--);
14635             return NULL;
14636         }
14637         D(fprintf(stderr, "%*c> set[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
14638         Token * _literal;
14639         Token * _literal_1;
14640         asdl_expr_seq* a;
14641         if (
14642             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
14643             &&
14644             (a = star_named_expressions_rule(p))  // star_named_expressions
14645             &&
14646             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
14647         )
14648         {
14649             D(fprintf(stderr, "%*c+ set[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
14650             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14651             if (_token == NULL) {
14652                 D(p->level--);
14653                 return NULL;
14654             }
14655             int _end_lineno = _token->end_lineno;
14656             UNUSED(_end_lineno); // Only used by EXTRA macro
14657             int _end_col_offset = _token->end_col_offset;
14658             UNUSED(_end_col_offset); // Only used by EXTRA macro
14659             _res = _PyAST_Set ( a , EXTRA );
14660             if (_res == NULL && PyErr_Occurred()) {
14661                 p->error_indicator = 1;
14662                 D(p->level--);
14663                 return NULL;
14664             }
14665             goto done;
14666         }
14667         p->mark = _mark;
14668         D(fprintf(stderr, "%*c%s set[%d-%d]: %s failed!\n", p->level, ' ',
14669                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' star_named_expressions '}'"));
14670     }
14671     _res = NULL;
14672   done:
14673     D(p->level--);
14674     return _res;
14675 }
14676 
14677 // dict: '{' double_starred_kvpairs? '}' | '{' invalid_double_starred_kvpairs '}'
14678 static expr_ty
dict_rule(Parser * p)14679 dict_rule(Parser *p)
14680 {
14681     D(p->level++);
14682     if (p->error_indicator) {
14683         D(p->level--);
14684         return NULL;
14685     }
14686     expr_ty _res = NULL;
14687     int _mark = p->mark;
14688     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14689         p->error_indicator = 1;
14690         D(p->level--);
14691         return NULL;
14692     }
14693     int _start_lineno = p->tokens[_mark]->lineno;
14694     UNUSED(_start_lineno); // Only used by EXTRA macro
14695     int _start_col_offset = p->tokens[_mark]->col_offset;
14696     UNUSED(_start_col_offset); // Only used by EXTRA macro
14697     { // '{' double_starred_kvpairs? '}'
14698         if (p->error_indicator) {
14699             D(p->level--);
14700             return NULL;
14701         }
14702         D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
14703         Token * _literal;
14704         Token * _literal_1;
14705         void *a;
14706         if (
14707             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
14708             &&
14709             (a = double_starred_kvpairs_rule(p), !p->error_indicator)  // double_starred_kvpairs?
14710             &&
14711             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
14712         )
14713         {
14714             D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
14715             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14716             if (_token == NULL) {
14717                 D(p->level--);
14718                 return NULL;
14719             }
14720             int _end_lineno = _token->end_lineno;
14721             UNUSED(_end_lineno); // Only used by EXTRA macro
14722             int _end_col_offset = _token->end_col_offset;
14723             UNUSED(_end_col_offset); // Only used by EXTRA macro
14724             _res = _PyAST_Dict ( CHECK ( asdl_expr_seq* , _PyPegen_get_keys ( p , a ) ) , CHECK ( asdl_expr_seq* , _PyPegen_get_values ( p , a ) ) , EXTRA );
14725             if (_res == NULL && PyErr_Occurred()) {
14726                 p->error_indicator = 1;
14727                 D(p->level--);
14728                 return NULL;
14729             }
14730             goto done;
14731         }
14732         p->mark = _mark;
14733         D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
14734                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
14735     }
14736     { // '{' invalid_double_starred_kvpairs '}'
14737         if (p->error_indicator) {
14738             D(p->level--);
14739             return NULL;
14740         }
14741         D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
14742         Token * _literal;
14743         Token * _literal_1;
14744         void *invalid_double_starred_kvpairs_var;
14745         if (
14746             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
14747             &&
14748             (invalid_double_starred_kvpairs_var = invalid_double_starred_kvpairs_rule(p))  // invalid_double_starred_kvpairs
14749             &&
14750             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
14751         )
14752         {
14753             D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
14754             _res = _PyPegen_dummy_name(p, _literal, invalid_double_starred_kvpairs_var, _literal_1);
14755             goto done;
14756         }
14757         p->mark = _mark;
14758         D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
14759                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
14760     }
14761     _res = NULL;
14762   done:
14763     D(p->level--);
14764     return _res;
14765 }
14766 
14767 // double_starred_kvpairs: ','.double_starred_kvpair+ ','?
14768 static asdl_seq*
double_starred_kvpairs_rule(Parser * p)14769 double_starred_kvpairs_rule(Parser *p)
14770 {
14771     D(p->level++);
14772     if (p->error_indicator) {
14773         D(p->level--);
14774         return NULL;
14775     }
14776     asdl_seq* _res = NULL;
14777     int _mark = p->mark;
14778     { // ','.double_starred_kvpair+ ','?
14779         if (p->error_indicator) {
14780             D(p->level--);
14781             return NULL;
14782         }
14783         D(fprintf(stderr, "%*c> double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
14784         void *_opt_var;
14785         UNUSED(_opt_var); // Silence compiler warnings
14786         asdl_seq * a;
14787         if (
14788             (a = _gather_108_rule(p))  // ','.double_starred_kvpair+
14789             &&
14790             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
14791         )
14792         {
14793             D(fprintf(stderr, "%*c+ double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
14794             _res = a;
14795             if (_res == NULL && PyErr_Occurred()) {
14796                 p->error_indicator = 1;
14797                 D(p->level--);
14798                 return NULL;
14799             }
14800             goto done;
14801         }
14802         p->mark = _mark;
14803         D(fprintf(stderr, "%*c%s double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
14804                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ','?"));
14805     }
14806     _res = NULL;
14807   done:
14808     D(p->level--);
14809     return _res;
14810 }
14811 
14812 // double_starred_kvpair: '**' bitwise_or | kvpair
14813 static KeyValuePair*
double_starred_kvpair_rule(Parser * p)14814 double_starred_kvpair_rule(Parser *p)
14815 {
14816     D(p->level++);
14817     if (p->error_indicator) {
14818         D(p->level--);
14819         return NULL;
14820     }
14821     KeyValuePair* _res = NULL;
14822     int _mark = p->mark;
14823     { // '**' bitwise_or
14824         if (p->error_indicator) {
14825             D(p->level--);
14826             return NULL;
14827         }
14828         D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
14829         Token * _literal;
14830         expr_ty a;
14831         if (
14832             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
14833             &&
14834             (a = bitwise_or_rule(p))  // bitwise_or
14835         )
14836         {
14837             D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
14838             _res = _PyPegen_key_value_pair ( p , NULL , a );
14839             if (_res == NULL && PyErr_Occurred()) {
14840                 p->error_indicator = 1;
14841                 D(p->level--);
14842                 return NULL;
14843             }
14844             goto done;
14845         }
14846         p->mark = _mark;
14847         D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
14848                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' bitwise_or"));
14849     }
14850     { // kvpair
14851         if (p->error_indicator) {
14852             D(p->level--);
14853             return NULL;
14854         }
14855         D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kvpair"));
14856         KeyValuePair* kvpair_var;
14857         if (
14858             (kvpair_var = kvpair_rule(p))  // kvpair
14859         )
14860         {
14861             D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kvpair"));
14862             _res = kvpair_var;
14863             goto done;
14864         }
14865         p->mark = _mark;
14866         D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
14867                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kvpair"));
14868     }
14869     _res = NULL;
14870   done:
14871     D(p->level--);
14872     return _res;
14873 }
14874 
14875 // kvpair: expression ':' expression
14876 static KeyValuePair*
kvpair_rule(Parser * p)14877 kvpair_rule(Parser *p)
14878 {
14879     D(p->level++);
14880     if (p->error_indicator) {
14881         D(p->level--);
14882         return NULL;
14883     }
14884     KeyValuePair* _res = NULL;
14885     int _mark = p->mark;
14886     { // expression ':' expression
14887         if (p->error_indicator) {
14888             D(p->level--);
14889             return NULL;
14890         }
14891         D(fprintf(stderr, "%*c> kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
14892         Token * _literal;
14893         expr_ty a;
14894         expr_ty b;
14895         if (
14896             (a = expression_rule(p))  // expression
14897             &&
14898             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
14899             &&
14900             (b = expression_rule(p))  // expression
14901         )
14902         {
14903             D(fprintf(stderr, "%*c+ kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
14904             _res = _PyPegen_key_value_pair ( p , a , b );
14905             if (_res == NULL && PyErr_Occurred()) {
14906                 p->error_indicator = 1;
14907                 D(p->level--);
14908                 return NULL;
14909             }
14910             goto done;
14911         }
14912         p->mark = _mark;
14913         D(fprintf(stderr, "%*c%s kvpair[%d-%d]: %s failed!\n", p->level, ' ',
14914                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
14915     }
14916     _res = NULL;
14917   done:
14918     D(p->level--);
14919     return _res;
14920 }
14921 
14922 // for_if_clauses: for_if_clause+
14923 static asdl_comprehension_seq*
for_if_clauses_rule(Parser * p)14924 for_if_clauses_rule(Parser *p)
14925 {
14926     D(p->level++);
14927     if (p->error_indicator) {
14928         D(p->level--);
14929         return NULL;
14930     }
14931     asdl_comprehension_seq* _res = NULL;
14932     int _mark = p->mark;
14933     { // for_if_clause+
14934         if (p->error_indicator) {
14935             D(p->level--);
14936             return NULL;
14937         }
14938         D(fprintf(stderr, "%*c> for_if_clauses[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
14939         asdl_comprehension_seq* a;
14940         if (
14941             (a = (asdl_comprehension_seq*)_loop1_110_rule(p))  // for_if_clause+
14942         )
14943         {
14944             D(fprintf(stderr, "%*c+ for_if_clauses[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
14945             _res = a;
14946             if (_res == NULL && PyErr_Occurred()) {
14947                 p->error_indicator = 1;
14948                 D(p->level--);
14949                 return NULL;
14950             }
14951             goto done;
14952         }
14953         p->mark = _mark;
14954         D(fprintf(stderr, "%*c%s for_if_clauses[%d-%d]: %s failed!\n", p->level, ' ',
14955                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause+"));
14956     }
14957     _res = NULL;
14958   done:
14959     D(p->level--);
14960     return _res;
14961 }
14962 
14963 // for_if_clause:
14964 //     | ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
14965 //     | 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
14966 //     | invalid_for_target
14967 static comprehension_ty
for_if_clause_rule(Parser * p)14968 for_if_clause_rule(Parser *p)
14969 {
14970     D(p->level++);
14971     if (p->error_indicator) {
14972         D(p->level--);
14973         return NULL;
14974     }
14975     comprehension_ty _res = NULL;
14976     int _mark = p->mark;
14977     { // ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
14978         if (p->error_indicator) {
14979             D(p->level--);
14980             return NULL;
14981         }
14982         D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
14983         int _cut_var = 0;
14984         Token * _keyword;
14985         Token * _keyword_1;
14986         expr_ty a;
14987         Token * async_var;
14988         expr_ty b;
14989         asdl_expr_seq* c;
14990         if (
14991             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
14992             &&
14993             (_keyword = _PyPegen_expect_token(p, 633))  // token='for'
14994             &&
14995             (a = star_targets_rule(p))  // star_targets
14996             &&
14997             (_keyword_1 = _PyPegen_expect_token(p, 634))  // token='in'
14998             &&
14999             (_cut_var = 1)
15000             &&
15001             (b = disjunction_rule(p))  // disjunction
15002             &&
15003             (c = (asdl_expr_seq*)_loop0_111_rule(p))  // (('if' disjunction))*
15004         )
15005         {
15006             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))*"));
15007             _res = CHECK_VERSION ( comprehension_ty , 6 , "Async comprehensions are" , _PyAST_comprehension ( a , b , c , 1 , p -> arena ) );
15008             if (_res == NULL && PyErr_Occurred()) {
15009                 p->error_indicator = 1;
15010                 D(p->level--);
15011                 return NULL;
15012             }
15013             goto done;
15014         }
15015         p->mark = _mark;
15016         D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
15017                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
15018         if (_cut_var) {
15019             D(p->level--);
15020             return NULL;
15021         }
15022     }
15023     { // 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
15024         if (p->error_indicator) {
15025             D(p->level--);
15026             return NULL;
15027         }
15028         D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
15029         int _cut_var = 0;
15030         Token * _keyword;
15031         Token * _keyword_1;
15032         expr_ty a;
15033         expr_ty b;
15034         asdl_expr_seq* c;
15035         if (
15036             (_keyword = _PyPegen_expect_token(p, 633))  // token='for'
15037             &&
15038             (a = star_targets_rule(p))  // star_targets
15039             &&
15040             (_keyword_1 = _PyPegen_expect_token(p, 634))  // token='in'
15041             &&
15042             (_cut_var = 1)
15043             &&
15044             (b = disjunction_rule(p))  // disjunction
15045             &&
15046             (c = (asdl_expr_seq*)_loop0_112_rule(p))  // (('if' disjunction))*
15047         )
15048         {
15049             D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
15050             _res = _PyAST_comprehension ( a , b , c , 0 , p -> arena );
15051             if (_res == NULL && PyErr_Occurred()) {
15052                 p->error_indicator = 1;
15053                 D(p->level--);
15054                 return NULL;
15055             }
15056             goto done;
15057         }
15058         p->mark = _mark;
15059         D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
15060                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
15061         if (_cut_var) {
15062             D(p->level--);
15063             return NULL;
15064         }
15065     }
15066     if (p->call_invalid_rules) { // invalid_for_target
15067         if (p->error_indicator) {
15068             D(p->level--);
15069             return NULL;
15070         }
15071         D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
15072         void *invalid_for_target_var;
15073         if (
15074             (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
15075         )
15076         {
15077             D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
15078             _res = invalid_for_target_var;
15079             goto done;
15080         }
15081         p->mark = _mark;
15082         D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
15083                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
15084     }
15085     _res = NULL;
15086   done:
15087     D(p->level--);
15088     return _res;
15089 }
15090 
15091 // listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
15092 static expr_ty
listcomp_rule(Parser * p)15093 listcomp_rule(Parser *p)
15094 {
15095     D(p->level++);
15096     if (p->error_indicator) {
15097         D(p->level--);
15098         return NULL;
15099     }
15100     expr_ty _res = NULL;
15101     int _mark = p->mark;
15102     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15103         p->error_indicator = 1;
15104         D(p->level--);
15105         return NULL;
15106     }
15107     int _start_lineno = p->tokens[_mark]->lineno;
15108     UNUSED(_start_lineno); // Only used by EXTRA macro
15109     int _start_col_offset = p->tokens[_mark]->col_offset;
15110     UNUSED(_start_col_offset); // Only used by EXTRA macro
15111     { // '[' named_expression for_if_clauses ']'
15112         if (p->error_indicator) {
15113             D(p->level--);
15114             return NULL;
15115         }
15116         D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
15117         Token * _literal;
15118         Token * _literal_1;
15119         expr_ty a;
15120         asdl_comprehension_seq* b;
15121         if (
15122             (_literal = _PyPegen_expect_token(p, 9))  // token='['
15123             &&
15124             (a = named_expression_rule(p))  // named_expression
15125             &&
15126             (b = for_if_clauses_rule(p))  // for_if_clauses
15127             &&
15128             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
15129         )
15130         {
15131             D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
15132             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15133             if (_token == NULL) {
15134                 D(p->level--);
15135                 return NULL;
15136             }
15137             int _end_lineno = _token->end_lineno;
15138             UNUSED(_end_lineno); // Only used by EXTRA macro
15139             int _end_col_offset = _token->end_col_offset;
15140             UNUSED(_end_col_offset); // Only used by EXTRA macro
15141             _res = _PyAST_ListComp ( a , b , EXTRA );
15142             if (_res == NULL && PyErr_Occurred()) {
15143                 p->error_indicator = 1;
15144                 D(p->level--);
15145                 return NULL;
15146             }
15147             goto done;
15148         }
15149         p->mark = _mark;
15150         D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
15151                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
15152     }
15153     if (p->call_invalid_rules) { // invalid_comprehension
15154         if (p->error_indicator) {
15155             D(p->level--);
15156             return NULL;
15157         }
15158         D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
15159         void *invalid_comprehension_var;
15160         if (
15161             (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
15162         )
15163         {
15164             D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
15165             _res = invalid_comprehension_var;
15166             goto done;
15167         }
15168         p->mark = _mark;
15169         D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
15170                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
15171     }
15172     _res = NULL;
15173   done:
15174     D(p->level--);
15175     return _res;
15176 }
15177 
15178 // setcomp: '{' named_expression for_if_clauses '}' | invalid_comprehension
15179 static expr_ty
setcomp_rule(Parser * p)15180 setcomp_rule(Parser *p)
15181 {
15182     D(p->level++);
15183     if (p->error_indicator) {
15184         D(p->level--);
15185         return NULL;
15186     }
15187     expr_ty _res = NULL;
15188     int _mark = p->mark;
15189     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15190         p->error_indicator = 1;
15191         D(p->level--);
15192         return NULL;
15193     }
15194     int _start_lineno = p->tokens[_mark]->lineno;
15195     UNUSED(_start_lineno); // Only used by EXTRA macro
15196     int _start_col_offset = p->tokens[_mark]->col_offset;
15197     UNUSED(_start_col_offset); // Only used by EXTRA macro
15198     { // '{' named_expression for_if_clauses '}'
15199         if (p->error_indicator) {
15200             D(p->level--);
15201             return NULL;
15202         }
15203         D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
15204         Token * _literal;
15205         Token * _literal_1;
15206         expr_ty a;
15207         asdl_comprehension_seq* b;
15208         if (
15209             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
15210             &&
15211             (a = named_expression_rule(p))  // named_expression
15212             &&
15213             (b = for_if_clauses_rule(p))  // for_if_clauses
15214             &&
15215             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
15216         )
15217         {
15218             D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
15219             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15220             if (_token == NULL) {
15221                 D(p->level--);
15222                 return NULL;
15223             }
15224             int _end_lineno = _token->end_lineno;
15225             UNUSED(_end_lineno); // Only used by EXTRA macro
15226             int _end_col_offset = _token->end_col_offset;
15227             UNUSED(_end_col_offset); // Only used by EXTRA macro
15228             _res = _PyAST_SetComp ( a , b , EXTRA );
15229             if (_res == NULL && PyErr_Occurred()) {
15230                 p->error_indicator = 1;
15231                 D(p->level--);
15232                 return NULL;
15233             }
15234             goto done;
15235         }
15236         p->mark = _mark;
15237         D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
15238                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
15239     }
15240     if (p->call_invalid_rules) { // invalid_comprehension
15241         if (p->error_indicator) {
15242             D(p->level--);
15243             return NULL;
15244         }
15245         D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
15246         void *invalid_comprehension_var;
15247         if (
15248             (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
15249         )
15250         {
15251             D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
15252             _res = invalid_comprehension_var;
15253             goto done;
15254         }
15255         p->mark = _mark;
15256         D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
15257                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
15258     }
15259     _res = NULL;
15260   done:
15261     D(p->level--);
15262     return _res;
15263 }
15264 
15265 // genexp:
15266 //     | '(' (assignment_expression | expression !':=') for_if_clauses ')'
15267 //     | invalid_comprehension
15268 static expr_ty
genexp_rule(Parser * p)15269 genexp_rule(Parser *p)
15270 {
15271     D(p->level++);
15272     if (p->error_indicator) {
15273         D(p->level--);
15274         return NULL;
15275     }
15276     expr_ty _res = NULL;
15277     int _mark = p->mark;
15278     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15279         p->error_indicator = 1;
15280         D(p->level--);
15281         return NULL;
15282     }
15283     int _start_lineno = p->tokens[_mark]->lineno;
15284     UNUSED(_start_lineno); // Only used by EXTRA macro
15285     int _start_col_offset = p->tokens[_mark]->col_offset;
15286     UNUSED(_start_col_offset); // Only used by EXTRA macro
15287     { // '(' (assignment_expression | expression !':=') for_if_clauses ')'
15288         if (p->error_indicator) {
15289             D(p->level--);
15290             return NULL;
15291         }
15292         D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
15293         Token * _literal;
15294         Token * _literal_1;
15295         void *a;
15296         asdl_comprehension_seq* b;
15297         if (
15298             (_literal = _PyPegen_expect_token(p, 7))  // token='('
15299             &&
15300             (a = _tmp_113_rule(p))  // assignment_expression | expression !':='
15301             &&
15302             (b = for_if_clauses_rule(p))  // for_if_clauses
15303             &&
15304             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
15305         )
15306         {
15307             D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
15308             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15309             if (_token == NULL) {
15310                 D(p->level--);
15311                 return NULL;
15312             }
15313             int _end_lineno = _token->end_lineno;
15314             UNUSED(_end_lineno); // Only used by EXTRA macro
15315             int _end_col_offset = _token->end_col_offset;
15316             UNUSED(_end_col_offset); // Only used by EXTRA macro
15317             _res = _PyAST_GeneratorExp ( a , b , EXTRA );
15318             if (_res == NULL && PyErr_Occurred()) {
15319                 p->error_indicator = 1;
15320                 D(p->level--);
15321                 return NULL;
15322             }
15323             goto done;
15324         }
15325         p->mark = _mark;
15326         D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
15327                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
15328     }
15329     if (p->call_invalid_rules) { // invalid_comprehension
15330         if (p->error_indicator) {
15331             D(p->level--);
15332             return NULL;
15333         }
15334         D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
15335         void *invalid_comprehension_var;
15336         if (
15337             (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
15338         )
15339         {
15340             D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
15341             _res = invalid_comprehension_var;
15342             goto done;
15343         }
15344         p->mark = _mark;
15345         D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
15346                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
15347     }
15348     _res = NULL;
15349   done:
15350     D(p->level--);
15351     return _res;
15352 }
15353 
15354 // dictcomp: '{' kvpair for_if_clauses '}' | invalid_dict_comprehension
15355 static expr_ty
dictcomp_rule(Parser * p)15356 dictcomp_rule(Parser *p)
15357 {
15358     D(p->level++);
15359     if (p->error_indicator) {
15360         D(p->level--);
15361         return NULL;
15362     }
15363     expr_ty _res = NULL;
15364     int _mark = p->mark;
15365     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15366         p->error_indicator = 1;
15367         D(p->level--);
15368         return NULL;
15369     }
15370     int _start_lineno = p->tokens[_mark]->lineno;
15371     UNUSED(_start_lineno); // Only used by EXTRA macro
15372     int _start_col_offset = p->tokens[_mark]->col_offset;
15373     UNUSED(_start_col_offset); // Only used by EXTRA macro
15374     { // '{' kvpair for_if_clauses '}'
15375         if (p->error_indicator) {
15376             D(p->level--);
15377             return NULL;
15378         }
15379         D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
15380         Token * _literal;
15381         Token * _literal_1;
15382         KeyValuePair* a;
15383         asdl_comprehension_seq* b;
15384         if (
15385             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
15386             &&
15387             (a = kvpair_rule(p))  // kvpair
15388             &&
15389             (b = for_if_clauses_rule(p))  // for_if_clauses
15390             &&
15391             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
15392         )
15393         {
15394             D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
15395             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15396             if (_token == NULL) {
15397                 D(p->level--);
15398                 return NULL;
15399             }
15400             int _end_lineno = _token->end_lineno;
15401             UNUSED(_end_lineno); // Only used by EXTRA macro
15402             int _end_col_offset = _token->end_col_offset;
15403             UNUSED(_end_col_offset); // Only used by EXTRA macro
15404             _res = _PyAST_DictComp ( a -> key , a -> value , b , EXTRA );
15405             if (_res == NULL && PyErr_Occurred()) {
15406                 p->error_indicator = 1;
15407                 D(p->level--);
15408                 return NULL;
15409             }
15410             goto done;
15411         }
15412         p->mark = _mark;
15413         D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
15414                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
15415     }
15416     if (p->call_invalid_rules) { // invalid_dict_comprehension
15417         if (p->error_indicator) {
15418             D(p->level--);
15419             return NULL;
15420         }
15421         D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
15422         void *invalid_dict_comprehension_var;
15423         if (
15424             (invalid_dict_comprehension_var = invalid_dict_comprehension_rule(p))  // invalid_dict_comprehension
15425         )
15426         {
15427             D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
15428             _res = invalid_dict_comprehension_var;
15429             goto done;
15430         }
15431         p->mark = _mark;
15432         D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
15433                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_dict_comprehension"));
15434     }
15435     _res = NULL;
15436   done:
15437     D(p->level--);
15438     return _res;
15439 }
15440 
15441 // arguments: args ','? &')' | invalid_arguments
15442 static expr_ty
arguments_rule(Parser * p)15443 arguments_rule(Parser *p)
15444 {
15445     D(p->level++);
15446     if (p->error_indicator) {
15447         D(p->level--);
15448         return NULL;
15449     }
15450     expr_ty _res = NULL;
15451     if (_PyPegen_is_memoized(p, arguments_type, &_res)) {
15452         D(p->level--);
15453         return _res;
15454     }
15455     int _mark = p->mark;
15456     { // args ','? &')'
15457         if (p->error_indicator) {
15458             D(p->level--);
15459             return NULL;
15460         }
15461         D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
15462         void *_opt_var;
15463         UNUSED(_opt_var); // Silence compiler warnings
15464         expr_ty a;
15465         if (
15466             (a = args_rule(p))  // args
15467             &&
15468             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
15469             &&
15470             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
15471         )
15472         {
15473             D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
15474             _res = a;
15475             if (_res == NULL && PyErr_Occurred()) {
15476                 p->error_indicator = 1;
15477                 D(p->level--);
15478                 return NULL;
15479             }
15480             goto done;
15481         }
15482         p->mark = _mark;
15483         D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
15484                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','? &')'"));
15485     }
15486     if (p->call_invalid_rules) { // invalid_arguments
15487         if (p->error_indicator) {
15488             D(p->level--);
15489             return NULL;
15490         }
15491         D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
15492         void *invalid_arguments_var;
15493         if (
15494             (invalid_arguments_var = invalid_arguments_rule(p))  // invalid_arguments
15495         )
15496         {
15497             D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
15498             _res = invalid_arguments_var;
15499             goto done;
15500         }
15501         p->mark = _mark;
15502         D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
15503                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_arguments"));
15504     }
15505     _res = NULL;
15506   done:
15507     _PyPegen_insert_memo(p, _mark, arguments_type, _res);
15508     D(p->level--);
15509     return _res;
15510 }
15511 
15512 // args:
15513 //     | ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
15514 //     | kwargs
15515 static expr_ty
args_rule(Parser * p)15516 args_rule(Parser *p)
15517 {
15518     D(p->level++);
15519     if (p->error_indicator) {
15520         D(p->level--);
15521         return NULL;
15522     }
15523     expr_ty _res = NULL;
15524     int _mark = p->mark;
15525     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15526         p->error_indicator = 1;
15527         D(p->level--);
15528         return NULL;
15529     }
15530     int _start_lineno = p->tokens[_mark]->lineno;
15531     UNUSED(_start_lineno); // Only used by EXTRA macro
15532     int _start_col_offset = p->tokens[_mark]->col_offset;
15533     UNUSED(_start_col_offset); // Only used by EXTRA macro
15534     { // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
15535         if (p->error_indicator) {
15536             D(p->level--);
15537             return NULL;
15538         }
15539         D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
15540         asdl_expr_seq* a;
15541         void *b;
15542         if (
15543             (a = (asdl_expr_seq*)_gather_114_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+
15544             &&
15545             (b = _tmp_116_rule(p), !p->error_indicator)  // [',' kwargs]
15546         )
15547         {
15548             D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
15549             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15550             if (_token == NULL) {
15551                 D(p->level--);
15552                 return NULL;
15553             }
15554             int _end_lineno = _token->end_lineno;
15555             UNUSED(_end_lineno); // Only used by EXTRA macro
15556             int _end_col_offset = _token->end_col_offset;
15557             UNUSED(_end_col_offset); // Only used by EXTRA macro
15558             _res = _PyPegen_collect_call_seqs ( p , a , b , EXTRA );
15559             if (_res == NULL && PyErr_Occurred()) {
15560                 p->error_indicator = 1;
15561                 D(p->level--);
15562                 return NULL;
15563             }
15564             goto done;
15565         }
15566         p->mark = _mark;
15567         D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
15568                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
15569     }
15570     { // kwargs
15571         if (p->error_indicator) {
15572             D(p->level--);
15573             return NULL;
15574         }
15575         D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwargs"));
15576         asdl_seq* a;
15577         if (
15578             (a = kwargs_rule(p))  // kwargs
15579         )
15580         {
15581             D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwargs"));
15582             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15583             if (_token == NULL) {
15584                 D(p->level--);
15585                 return NULL;
15586             }
15587             int _end_lineno = _token->end_lineno;
15588             UNUSED(_end_lineno); // Only used by EXTRA macro
15589             int _end_col_offset = _token->end_col_offset;
15590             UNUSED(_end_col_offset); // Only used by EXTRA macro
15591             _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 );
15592             if (_res == NULL && PyErr_Occurred()) {
15593                 p->error_indicator = 1;
15594                 D(p->level--);
15595                 return NULL;
15596             }
15597             goto done;
15598         }
15599         p->mark = _mark;
15600         D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
15601                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwargs"));
15602     }
15603     _res = NULL;
15604   done:
15605     D(p->level--);
15606     return _res;
15607 }
15608 
15609 // kwargs:
15610 //     | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
15611 //     | ','.kwarg_or_starred+
15612 //     | ','.kwarg_or_double_starred+
15613 static asdl_seq*
kwargs_rule(Parser * p)15614 kwargs_rule(Parser *p)
15615 {
15616     D(p->level++);
15617     if (p->error_indicator) {
15618         D(p->level--);
15619         return NULL;
15620     }
15621     asdl_seq* _res = NULL;
15622     int _mark = p->mark;
15623     { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
15624         if (p->error_indicator) {
15625             D(p->level--);
15626             return NULL;
15627         }
15628         D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
15629         Token * _literal;
15630         asdl_seq * a;
15631         asdl_seq * b;
15632         if (
15633             (a = _gather_117_rule(p))  // ','.kwarg_or_starred+
15634             &&
15635             (_literal = _PyPegen_expect_token(p, 12))  // token=','
15636             &&
15637             (b = _gather_119_rule(p))  // ','.kwarg_or_double_starred+
15638         )
15639         {
15640             D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
15641             _res = _PyPegen_join_sequences ( p , a , b );
15642             if (_res == NULL && PyErr_Occurred()) {
15643                 p->error_indicator = 1;
15644                 D(p->level--);
15645                 return NULL;
15646             }
15647             goto done;
15648         }
15649         p->mark = _mark;
15650         D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
15651                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
15652     }
15653     { // ','.kwarg_or_starred+
15654         if (p->error_indicator) {
15655             D(p->level--);
15656             return NULL;
15657         }
15658         D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
15659         asdl_seq * _gather_121_var;
15660         if (
15661             (_gather_121_var = _gather_121_rule(p))  // ','.kwarg_or_starred+
15662         )
15663         {
15664             D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
15665             _res = _gather_121_var;
15666             goto done;
15667         }
15668         p->mark = _mark;
15669         D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
15670                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+"));
15671     }
15672     { // ','.kwarg_or_double_starred+
15673         if (p->error_indicator) {
15674             D(p->level--);
15675             return NULL;
15676         }
15677         D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
15678         asdl_seq * _gather_123_var;
15679         if (
15680             (_gather_123_var = _gather_123_rule(p))  // ','.kwarg_or_double_starred+
15681         )
15682         {
15683             D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
15684             _res = _gather_123_var;
15685             goto done;
15686         }
15687         p->mark = _mark;
15688         D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
15689                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_double_starred+"));
15690     }
15691     _res = NULL;
15692   done:
15693     D(p->level--);
15694     return _res;
15695 }
15696 
15697 // starred_expression: '*' expression
15698 static expr_ty
starred_expression_rule(Parser * p)15699 starred_expression_rule(Parser *p)
15700 {
15701     D(p->level++);
15702     if (p->error_indicator) {
15703         D(p->level--);
15704         return NULL;
15705     }
15706     expr_ty _res = NULL;
15707     int _mark = p->mark;
15708     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15709         p->error_indicator = 1;
15710         D(p->level--);
15711         return NULL;
15712     }
15713     int _start_lineno = p->tokens[_mark]->lineno;
15714     UNUSED(_start_lineno); // Only used by EXTRA macro
15715     int _start_col_offset = p->tokens[_mark]->col_offset;
15716     UNUSED(_start_col_offset); // Only used by EXTRA macro
15717     { // '*' expression
15718         if (p->error_indicator) {
15719             D(p->level--);
15720             return NULL;
15721         }
15722         D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
15723         Token * _literal;
15724         expr_ty a;
15725         if (
15726             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
15727             &&
15728             (a = expression_rule(p))  // expression
15729         )
15730         {
15731             D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
15732             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15733             if (_token == NULL) {
15734                 D(p->level--);
15735                 return NULL;
15736             }
15737             int _end_lineno = _token->end_lineno;
15738             UNUSED(_end_lineno); // Only used by EXTRA macro
15739             int _end_col_offset = _token->end_col_offset;
15740             UNUSED(_end_col_offset); // Only used by EXTRA macro
15741             _res = _PyAST_Starred ( a , Load , EXTRA );
15742             if (_res == NULL && PyErr_Occurred()) {
15743                 p->error_indicator = 1;
15744                 D(p->level--);
15745                 return NULL;
15746             }
15747             goto done;
15748         }
15749         p->mark = _mark;
15750         D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
15751                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
15752     }
15753     _res = NULL;
15754   done:
15755     D(p->level--);
15756     return _res;
15757 }
15758 
15759 // kwarg_or_starred: invalid_kwarg | NAME '=' expression | starred_expression
15760 static KeywordOrStarred*
kwarg_or_starred_rule(Parser * p)15761 kwarg_or_starred_rule(Parser *p)
15762 {
15763     D(p->level++);
15764     if (p->error_indicator) {
15765         D(p->level--);
15766         return NULL;
15767     }
15768     KeywordOrStarred* _res = NULL;
15769     int _mark = p->mark;
15770     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15771         p->error_indicator = 1;
15772         D(p->level--);
15773         return NULL;
15774     }
15775     int _start_lineno = p->tokens[_mark]->lineno;
15776     UNUSED(_start_lineno); // Only used by EXTRA macro
15777     int _start_col_offset = p->tokens[_mark]->col_offset;
15778     UNUSED(_start_col_offset); // Only used by EXTRA macro
15779     if (p->call_invalid_rules) { // invalid_kwarg
15780         if (p->error_indicator) {
15781             D(p->level--);
15782             return NULL;
15783         }
15784         D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
15785         void *invalid_kwarg_var;
15786         if (
15787             (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
15788         )
15789         {
15790             D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
15791             _res = invalid_kwarg_var;
15792             goto done;
15793         }
15794         p->mark = _mark;
15795         D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
15796                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
15797     }
15798     { // NAME '=' expression
15799         if (p->error_indicator) {
15800             D(p->level--);
15801             return NULL;
15802         }
15803         D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
15804         Token * _literal;
15805         expr_ty a;
15806         expr_ty b;
15807         if (
15808             (a = _PyPegen_name_token(p))  // NAME
15809             &&
15810             (_literal = _PyPegen_expect_token(p, 22))  // token='='
15811             &&
15812             (b = expression_rule(p))  // expression
15813         )
15814         {
15815             D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
15816             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15817             if (_token == NULL) {
15818                 D(p->level--);
15819                 return NULL;
15820             }
15821             int _end_lineno = _token->end_lineno;
15822             UNUSED(_end_lineno); // Only used by EXTRA macro
15823             int _end_col_offset = _token->end_col_offset;
15824             UNUSED(_end_col_offset); // Only used by EXTRA macro
15825             _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
15826             if (_res == NULL && PyErr_Occurred()) {
15827                 p->error_indicator = 1;
15828                 D(p->level--);
15829                 return NULL;
15830             }
15831             goto done;
15832         }
15833         p->mark = _mark;
15834         D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
15835                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
15836     }
15837     { // starred_expression
15838         if (p->error_indicator) {
15839             D(p->level--);
15840             return NULL;
15841         }
15842         D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
15843         expr_ty a;
15844         if (
15845             (a = starred_expression_rule(p))  // starred_expression
15846         )
15847         {
15848             D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
15849             _res = _PyPegen_keyword_or_starred ( p , a , 0 );
15850             if (_res == NULL && PyErr_Occurred()) {
15851                 p->error_indicator = 1;
15852                 D(p->level--);
15853                 return NULL;
15854             }
15855             goto done;
15856         }
15857         p->mark = _mark;
15858         D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
15859                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
15860     }
15861     _res = NULL;
15862   done:
15863     D(p->level--);
15864     return _res;
15865 }
15866 
15867 // kwarg_or_double_starred: invalid_kwarg | NAME '=' expression | '**' expression
15868 static KeywordOrStarred*
kwarg_or_double_starred_rule(Parser * p)15869 kwarg_or_double_starred_rule(Parser *p)
15870 {
15871     D(p->level++);
15872     if (p->error_indicator) {
15873         D(p->level--);
15874         return NULL;
15875     }
15876     KeywordOrStarred* _res = NULL;
15877     int _mark = p->mark;
15878     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15879         p->error_indicator = 1;
15880         D(p->level--);
15881         return NULL;
15882     }
15883     int _start_lineno = p->tokens[_mark]->lineno;
15884     UNUSED(_start_lineno); // Only used by EXTRA macro
15885     int _start_col_offset = p->tokens[_mark]->col_offset;
15886     UNUSED(_start_col_offset); // Only used by EXTRA macro
15887     if (p->call_invalid_rules) { // invalid_kwarg
15888         if (p->error_indicator) {
15889             D(p->level--);
15890             return NULL;
15891         }
15892         D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
15893         void *invalid_kwarg_var;
15894         if (
15895             (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
15896         )
15897         {
15898             D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
15899             _res = invalid_kwarg_var;
15900             goto done;
15901         }
15902         p->mark = _mark;
15903         D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
15904                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
15905     }
15906     { // NAME '=' expression
15907         if (p->error_indicator) {
15908             D(p->level--);
15909             return NULL;
15910         }
15911         D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
15912         Token * _literal;
15913         expr_ty a;
15914         expr_ty b;
15915         if (
15916             (a = _PyPegen_name_token(p))  // NAME
15917             &&
15918             (_literal = _PyPegen_expect_token(p, 22))  // token='='
15919             &&
15920             (b = expression_rule(p))  // expression
15921         )
15922         {
15923             D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
15924             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15925             if (_token == NULL) {
15926                 D(p->level--);
15927                 return NULL;
15928             }
15929             int _end_lineno = _token->end_lineno;
15930             UNUSED(_end_lineno); // Only used by EXTRA macro
15931             int _end_col_offset = _token->end_col_offset;
15932             UNUSED(_end_col_offset); // Only used by EXTRA macro
15933             _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
15934             if (_res == NULL && PyErr_Occurred()) {
15935                 p->error_indicator = 1;
15936                 D(p->level--);
15937                 return NULL;
15938             }
15939             goto done;
15940         }
15941         p->mark = _mark;
15942         D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
15943                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
15944     }
15945     { // '**' expression
15946         if (p->error_indicator) {
15947             D(p->level--);
15948             return NULL;
15949         }
15950         D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
15951         Token * _literal;
15952         expr_ty a;
15953         if (
15954             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
15955             &&
15956             (a = expression_rule(p))  // expression
15957         )
15958         {
15959             D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
15960             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15961             if (_token == NULL) {
15962                 D(p->level--);
15963                 return NULL;
15964             }
15965             int _end_lineno = _token->end_lineno;
15966             UNUSED(_end_lineno); // Only used by EXTRA macro
15967             int _end_col_offset = _token->end_col_offset;
15968             UNUSED(_end_col_offset); // Only used by EXTRA macro
15969             _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( NULL , a , EXTRA ) ) , 1 );
15970             if (_res == NULL && PyErr_Occurred()) {
15971                 p->error_indicator = 1;
15972                 D(p->level--);
15973                 return NULL;
15974             }
15975             goto done;
15976         }
15977         p->mark = _mark;
15978         D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
15979                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
15980     }
15981     _res = NULL;
15982   done:
15983     D(p->level--);
15984     return _res;
15985 }
15986 
15987 // star_targets: star_target !',' | star_target ((',' star_target))* ','?
15988 static expr_ty
star_targets_rule(Parser * p)15989 star_targets_rule(Parser *p)
15990 {
15991     D(p->level++);
15992     if (p->error_indicator) {
15993         D(p->level--);
15994         return NULL;
15995     }
15996     expr_ty _res = NULL;
15997     int _mark = p->mark;
15998     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15999         p->error_indicator = 1;
16000         D(p->level--);
16001         return NULL;
16002     }
16003     int _start_lineno = p->tokens[_mark]->lineno;
16004     UNUSED(_start_lineno); // Only used by EXTRA macro
16005     int _start_col_offset = p->tokens[_mark]->col_offset;
16006     UNUSED(_start_col_offset); // Only used by EXTRA macro
16007     { // star_target !','
16008         if (p->error_indicator) {
16009             D(p->level--);
16010             return NULL;
16011         }
16012         D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target !','"));
16013         expr_ty a;
16014         if (
16015             (a = star_target_rule(p))  // star_target
16016             &&
16017             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
16018         )
16019         {
16020             D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target !','"));
16021             _res = a;
16022             if (_res == NULL && PyErr_Occurred()) {
16023                 p->error_indicator = 1;
16024                 D(p->level--);
16025                 return NULL;
16026             }
16027             goto done;
16028         }
16029         p->mark = _mark;
16030         D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
16031                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target !','"));
16032     }
16033     { // star_target ((',' star_target))* ','?
16034         if (p->error_indicator) {
16035             D(p->level--);
16036             return NULL;
16037         }
16038         D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
16039         void *_opt_var;
16040         UNUSED(_opt_var); // Silence compiler warnings
16041         expr_ty a;
16042         asdl_seq * b;
16043         if (
16044             (a = star_target_rule(p))  // star_target
16045             &&
16046             (b = _loop0_125_rule(p))  // ((',' star_target))*
16047             &&
16048             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
16049         )
16050         {
16051             D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
16052             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16053             if (_token == NULL) {
16054                 D(p->level--);
16055                 return NULL;
16056             }
16057             int _end_lineno = _token->end_lineno;
16058             UNUSED(_end_lineno); // Only used by EXTRA macro
16059             int _end_col_offset = _token->end_col_offset;
16060             UNUSED(_end_col_offset); // Only used by EXTRA macro
16061             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq* , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
16062             if (_res == NULL && PyErr_Occurred()) {
16063                 p->error_indicator = 1;
16064                 D(p->level--);
16065                 return NULL;
16066             }
16067             goto done;
16068         }
16069         p->mark = _mark;
16070         D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
16071                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))* ','?"));
16072     }
16073     _res = NULL;
16074   done:
16075     D(p->level--);
16076     return _res;
16077 }
16078 
16079 // star_targets_list_seq: ','.star_target+ ','?
16080 static asdl_expr_seq*
star_targets_list_seq_rule(Parser * p)16081 star_targets_list_seq_rule(Parser *p)
16082 {
16083     D(p->level++);
16084     if (p->error_indicator) {
16085         D(p->level--);
16086         return NULL;
16087     }
16088     asdl_expr_seq* _res = NULL;
16089     int _mark = p->mark;
16090     { // ','.star_target+ ','?
16091         if (p->error_indicator) {
16092             D(p->level--);
16093             return NULL;
16094         }
16095         D(fprintf(stderr, "%*c> star_targets_list_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
16096         void *_opt_var;
16097         UNUSED(_opt_var); // Silence compiler warnings
16098         asdl_expr_seq* a;
16099         if (
16100             (a = (asdl_expr_seq*)_gather_126_rule(p))  // ','.star_target+
16101             &&
16102             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
16103         )
16104         {
16105             D(fprintf(stderr, "%*c+ star_targets_list_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
16106             _res = a;
16107             if (_res == NULL && PyErr_Occurred()) {
16108                 p->error_indicator = 1;
16109                 D(p->level--);
16110                 return NULL;
16111             }
16112             goto done;
16113         }
16114         p->mark = _mark;
16115         D(fprintf(stderr, "%*c%s star_targets_list_seq[%d-%d]: %s failed!\n", p->level, ' ',
16116                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_target+ ','?"));
16117     }
16118     _res = NULL;
16119   done:
16120     D(p->level--);
16121     return _res;
16122 }
16123 
16124 // star_targets_tuple_seq: star_target ((',' star_target))+ ','? | star_target ','
16125 static asdl_expr_seq*
star_targets_tuple_seq_rule(Parser * p)16126 star_targets_tuple_seq_rule(Parser *p)
16127 {
16128     D(p->level++);
16129     if (p->error_indicator) {
16130         D(p->level--);
16131         return NULL;
16132     }
16133     asdl_expr_seq* _res = NULL;
16134     int _mark = p->mark;
16135     { // star_target ((',' star_target))+ ','?
16136         if (p->error_indicator) {
16137             D(p->level--);
16138             return NULL;
16139         }
16140         D(fprintf(stderr, "%*c> star_targets_tuple_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
16141         void *_opt_var;
16142         UNUSED(_opt_var); // Silence compiler warnings
16143         expr_ty a;
16144         asdl_seq * b;
16145         if (
16146             (a = star_target_rule(p))  // star_target
16147             &&
16148             (b = _loop1_128_rule(p))  // ((',' star_target))+
16149             &&
16150             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
16151         )
16152         {
16153             D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
16154             _res = ( asdl_expr_seq* ) _PyPegen_seq_insert_in_front ( p , a , b );
16155             if (_res == NULL && PyErr_Occurred()) {
16156                 p->error_indicator = 1;
16157                 D(p->level--);
16158                 return NULL;
16159             }
16160             goto done;
16161         }
16162         p->mark = _mark;
16163         D(fprintf(stderr, "%*c%s star_targets_tuple_seq[%d-%d]: %s failed!\n", p->level, ' ',
16164                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))+ ','?"));
16165     }
16166     { // star_target ','
16167         if (p->error_indicator) {
16168             D(p->level--);
16169             return NULL;
16170         }
16171         D(fprintf(stderr, "%*c> star_targets_tuple_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ','"));
16172         Token * _literal;
16173         expr_ty a;
16174         if (
16175             (a = star_target_rule(p))  // star_target
16176             &&
16177             (_literal = _PyPegen_expect_token(p, 12))  // token=','
16178         )
16179         {
16180             D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ','"));
16181             _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
16182             if (_res == NULL && PyErr_Occurred()) {
16183                 p->error_indicator = 1;
16184                 D(p->level--);
16185                 return NULL;
16186             }
16187             goto done;
16188         }
16189         p->mark = _mark;
16190         D(fprintf(stderr, "%*c%s star_targets_tuple_seq[%d-%d]: %s failed!\n", p->level, ' ',
16191                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ','"));
16192     }
16193     _res = NULL;
16194   done:
16195     D(p->level--);
16196     return _res;
16197 }
16198 
16199 // star_target: '*' (!'*' star_target) | target_with_star_atom
16200 static expr_ty
star_target_rule(Parser * p)16201 star_target_rule(Parser *p)
16202 {
16203     D(p->level++);
16204     if (p->error_indicator) {
16205         D(p->level--);
16206         return NULL;
16207     }
16208     expr_ty _res = NULL;
16209     if (_PyPegen_is_memoized(p, star_target_type, &_res)) {
16210         D(p->level--);
16211         return _res;
16212     }
16213     int _mark = p->mark;
16214     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16215         p->error_indicator = 1;
16216         D(p->level--);
16217         return NULL;
16218     }
16219     int _start_lineno = p->tokens[_mark]->lineno;
16220     UNUSED(_start_lineno); // Only used by EXTRA macro
16221     int _start_col_offset = p->tokens[_mark]->col_offset;
16222     UNUSED(_start_col_offset); // Only used by EXTRA macro
16223     { // '*' (!'*' star_target)
16224         if (p->error_indicator) {
16225             D(p->level--);
16226             return NULL;
16227         }
16228         D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
16229         Token * _literal;
16230         void *a;
16231         if (
16232             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
16233             &&
16234             (a = _tmp_129_rule(p))  // !'*' star_target
16235         )
16236         {
16237             D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
16238             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16239             if (_token == NULL) {
16240                 D(p->level--);
16241                 return NULL;
16242             }
16243             int _end_lineno = _token->end_lineno;
16244             UNUSED(_end_lineno); // Only used by EXTRA macro
16245             int _end_col_offset = _token->end_col_offset;
16246             UNUSED(_end_col_offset); // Only used by EXTRA macro
16247             _res = _PyAST_Starred ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
16248             if (_res == NULL && PyErr_Occurred()) {
16249                 p->error_indicator = 1;
16250                 D(p->level--);
16251                 return NULL;
16252             }
16253             goto done;
16254         }
16255         p->mark = _mark;
16256         D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
16257                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (!'*' star_target)"));
16258     }
16259     { // target_with_star_atom
16260         if (p->error_indicator) {
16261             D(p->level--);
16262             return NULL;
16263         }
16264         D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
16265         expr_ty target_with_star_atom_var;
16266         if (
16267             (target_with_star_atom_var = target_with_star_atom_rule(p))  // target_with_star_atom
16268         )
16269         {
16270             D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
16271             _res = target_with_star_atom_var;
16272             goto done;
16273         }
16274         p->mark = _mark;
16275         D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
16276                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target_with_star_atom"));
16277     }
16278     _res = NULL;
16279   done:
16280     _PyPegen_insert_memo(p, _mark, star_target_type, _res);
16281     D(p->level--);
16282     return _res;
16283 }
16284 
16285 // target_with_star_atom:
16286 //     | t_primary '.' NAME !t_lookahead
16287 //     | t_primary '[' slices ']' !t_lookahead
16288 //     | star_atom
16289 static expr_ty
target_with_star_atom_rule(Parser * p)16290 target_with_star_atom_rule(Parser *p)
16291 {
16292     D(p->level++);
16293     if (p->error_indicator) {
16294         D(p->level--);
16295         return NULL;
16296     }
16297     expr_ty _res = NULL;
16298     if (_PyPegen_is_memoized(p, target_with_star_atom_type, &_res)) {
16299         D(p->level--);
16300         return _res;
16301     }
16302     int _mark = p->mark;
16303     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16304         p->error_indicator = 1;
16305         D(p->level--);
16306         return NULL;
16307     }
16308     int _start_lineno = p->tokens[_mark]->lineno;
16309     UNUSED(_start_lineno); // Only used by EXTRA macro
16310     int _start_col_offset = p->tokens[_mark]->col_offset;
16311     UNUSED(_start_col_offset); // Only used by EXTRA macro
16312     { // t_primary '.' NAME !t_lookahead
16313         if (p->error_indicator) {
16314             D(p->level--);
16315             return NULL;
16316         }
16317         D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
16318         Token * _literal;
16319         expr_ty a;
16320         expr_ty b;
16321         if (
16322             (a = t_primary_rule(p))  // t_primary
16323             &&
16324             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
16325             &&
16326             (b = _PyPegen_name_token(p))  // NAME
16327             &&
16328             _PyPegen_lookahead(0, t_lookahead_rule, p)
16329         )
16330         {
16331             D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
16332             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16333             if (_token == NULL) {
16334                 D(p->level--);
16335                 return NULL;
16336             }
16337             int _end_lineno = _token->end_lineno;
16338             UNUSED(_end_lineno); // Only used by EXTRA macro
16339             int _end_col_offset = _token->end_col_offset;
16340             UNUSED(_end_col_offset); // Only used by EXTRA macro
16341             _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
16342             if (_res == NULL && PyErr_Occurred()) {
16343                 p->error_indicator = 1;
16344                 D(p->level--);
16345                 return NULL;
16346             }
16347             goto done;
16348         }
16349         p->mark = _mark;
16350         D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
16351                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
16352     }
16353     { // t_primary '[' slices ']' !t_lookahead
16354         if (p->error_indicator) {
16355             D(p->level--);
16356             return NULL;
16357         }
16358         D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
16359         Token * _literal;
16360         Token * _literal_1;
16361         expr_ty a;
16362         expr_ty b;
16363         if (
16364             (a = t_primary_rule(p))  // t_primary
16365             &&
16366             (_literal = _PyPegen_expect_token(p, 9))  // token='['
16367             &&
16368             (b = slices_rule(p))  // slices
16369             &&
16370             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
16371             &&
16372             _PyPegen_lookahead(0, t_lookahead_rule, p)
16373         )
16374         {
16375             D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
16376             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16377             if (_token == NULL) {
16378                 D(p->level--);
16379                 return NULL;
16380             }
16381             int _end_lineno = _token->end_lineno;
16382             UNUSED(_end_lineno); // Only used by EXTRA macro
16383             int _end_col_offset = _token->end_col_offset;
16384             UNUSED(_end_col_offset); // Only used by EXTRA macro
16385             _res = _PyAST_Subscript ( a , b , Store , EXTRA );
16386             if (_res == NULL && PyErr_Occurred()) {
16387                 p->error_indicator = 1;
16388                 D(p->level--);
16389                 return NULL;
16390             }
16391             goto done;
16392         }
16393         p->mark = _mark;
16394         D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
16395                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
16396     }
16397     { // star_atom
16398         if (p->error_indicator) {
16399             D(p->level--);
16400             return NULL;
16401         }
16402         D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_atom"));
16403         expr_ty star_atom_var;
16404         if (
16405             (star_atom_var = star_atom_rule(p))  // star_atom
16406         )
16407         {
16408             D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_atom"));
16409             _res = star_atom_var;
16410             goto done;
16411         }
16412         p->mark = _mark;
16413         D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
16414                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_atom"));
16415     }
16416     _res = NULL;
16417   done:
16418     _PyPegen_insert_memo(p, _mark, target_with_star_atom_type, _res);
16419     D(p->level--);
16420     return _res;
16421 }
16422 
16423 // star_atom:
16424 //     | NAME
16425 //     | '(' target_with_star_atom ')'
16426 //     | '(' star_targets_tuple_seq? ')'
16427 //     | '[' star_targets_list_seq? ']'
16428 static expr_ty
star_atom_rule(Parser * p)16429 star_atom_rule(Parser *p)
16430 {
16431     D(p->level++);
16432     if (p->error_indicator) {
16433         D(p->level--);
16434         return NULL;
16435     }
16436     expr_ty _res = NULL;
16437     int _mark = p->mark;
16438     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16439         p->error_indicator = 1;
16440         D(p->level--);
16441         return NULL;
16442     }
16443     int _start_lineno = p->tokens[_mark]->lineno;
16444     UNUSED(_start_lineno); // Only used by EXTRA macro
16445     int _start_col_offset = p->tokens[_mark]->col_offset;
16446     UNUSED(_start_col_offset); // Only used by EXTRA macro
16447     { // NAME
16448         if (p->error_indicator) {
16449             D(p->level--);
16450             return NULL;
16451         }
16452         D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
16453         expr_ty a;
16454         if (
16455             (a = _PyPegen_name_token(p))  // NAME
16456         )
16457         {
16458             D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
16459             _res = _PyPegen_set_expr_context ( p , a , Store );
16460             if (_res == NULL && PyErr_Occurred()) {
16461                 p->error_indicator = 1;
16462                 D(p->level--);
16463                 return NULL;
16464             }
16465             goto done;
16466         }
16467         p->mark = _mark;
16468         D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
16469                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
16470     }
16471     { // '(' target_with_star_atom ')'
16472         if (p->error_indicator) {
16473             D(p->level--);
16474             return NULL;
16475         }
16476         D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' target_with_star_atom ')'"));
16477         Token * _literal;
16478         Token * _literal_1;
16479         expr_ty a;
16480         if (
16481             (_literal = _PyPegen_expect_token(p, 7))  // token='('
16482             &&
16483             (a = target_with_star_atom_rule(p))  // target_with_star_atom
16484             &&
16485             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
16486         )
16487         {
16488             D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' target_with_star_atom ')'"));
16489             _res = _PyPegen_set_expr_context ( p , a , Store );
16490             if (_res == NULL && PyErr_Occurred()) {
16491                 p->error_indicator = 1;
16492                 D(p->level--);
16493                 return NULL;
16494             }
16495             goto done;
16496         }
16497         p->mark = _mark;
16498         D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
16499                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' target_with_star_atom ')'"));
16500     }
16501     { // '(' star_targets_tuple_seq? ')'
16502         if (p->error_indicator) {
16503             D(p->level--);
16504             return NULL;
16505         }
16506         D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
16507         Token * _literal;
16508         Token * _literal_1;
16509         void *a;
16510         if (
16511             (_literal = _PyPegen_expect_token(p, 7))  // token='('
16512             &&
16513             (a = star_targets_tuple_seq_rule(p), !p->error_indicator)  // star_targets_tuple_seq?
16514             &&
16515             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
16516         )
16517         {
16518             D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
16519             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16520             if (_token == NULL) {
16521                 D(p->level--);
16522                 return NULL;
16523             }
16524             int _end_lineno = _token->end_lineno;
16525             UNUSED(_end_lineno); // Only used by EXTRA macro
16526             int _end_col_offset = _token->end_col_offset;
16527             UNUSED(_end_col_offset); // Only used by EXTRA macro
16528             _res = _PyAST_Tuple ( a , Store , EXTRA );
16529             if (_res == NULL && PyErr_Occurred()) {
16530                 p->error_indicator = 1;
16531                 D(p->level--);
16532                 return NULL;
16533             }
16534             goto done;
16535         }
16536         p->mark = _mark;
16537         D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
16538                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
16539     }
16540     { // '[' star_targets_list_seq? ']'
16541         if (p->error_indicator) {
16542             D(p->level--);
16543             return NULL;
16544         }
16545         D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
16546         Token * _literal;
16547         Token * _literal_1;
16548         void *a;
16549         if (
16550             (_literal = _PyPegen_expect_token(p, 9))  // token='['
16551             &&
16552             (a = star_targets_list_seq_rule(p), !p->error_indicator)  // star_targets_list_seq?
16553             &&
16554             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
16555         )
16556         {
16557             D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
16558             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16559             if (_token == NULL) {
16560                 D(p->level--);
16561                 return NULL;
16562             }
16563             int _end_lineno = _token->end_lineno;
16564             UNUSED(_end_lineno); // Only used by EXTRA macro
16565             int _end_col_offset = _token->end_col_offset;
16566             UNUSED(_end_col_offset); // Only used by EXTRA macro
16567             _res = _PyAST_List ( a , Store , EXTRA );
16568             if (_res == NULL && PyErr_Occurred()) {
16569                 p->error_indicator = 1;
16570                 D(p->level--);
16571                 return NULL;
16572             }
16573             goto done;
16574         }
16575         p->mark = _mark;
16576         D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
16577                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_targets_list_seq? ']'"));
16578     }
16579     _res = NULL;
16580   done:
16581     D(p->level--);
16582     return _res;
16583 }
16584 
16585 // single_target: single_subscript_attribute_target | NAME | '(' single_target ')'
16586 static expr_ty
single_target_rule(Parser * p)16587 single_target_rule(Parser *p)
16588 {
16589     D(p->level++);
16590     if (p->error_indicator) {
16591         D(p->level--);
16592         return NULL;
16593     }
16594     expr_ty _res = NULL;
16595     int _mark = p->mark;
16596     { // single_subscript_attribute_target
16597         if (p->error_indicator) {
16598             D(p->level--);
16599             return NULL;
16600         }
16601         D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
16602         expr_ty single_subscript_attribute_target_var;
16603         if (
16604             (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
16605         )
16606         {
16607             D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
16608             _res = single_subscript_attribute_target_var;
16609             goto done;
16610         }
16611         p->mark = _mark;
16612         D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
16613                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
16614     }
16615     { // NAME
16616         if (p->error_indicator) {
16617             D(p->level--);
16618             return NULL;
16619         }
16620         D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
16621         expr_ty a;
16622         if (
16623             (a = _PyPegen_name_token(p))  // NAME
16624         )
16625         {
16626             D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
16627             _res = _PyPegen_set_expr_context ( p , a , Store );
16628             if (_res == NULL && PyErr_Occurred()) {
16629                 p->error_indicator = 1;
16630                 D(p->level--);
16631                 return NULL;
16632             }
16633             goto done;
16634         }
16635         p->mark = _mark;
16636         D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
16637                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
16638     }
16639     { // '(' single_target ')'
16640         if (p->error_indicator) {
16641             D(p->level--);
16642             return NULL;
16643         }
16644         D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
16645         Token * _literal;
16646         Token * _literal_1;
16647         expr_ty a;
16648         if (
16649             (_literal = _PyPegen_expect_token(p, 7))  // token='('
16650             &&
16651             (a = single_target_rule(p))  // single_target
16652             &&
16653             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
16654         )
16655         {
16656             D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
16657             _res = a;
16658             if (_res == NULL && PyErr_Occurred()) {
16659                 p->error_indicator = 1;
16660                 D(p->level--);
16661                 return NULL;
16662             }
16663             goto done;
16664         }
16665         p->mark = _mark;
16666         D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
16667                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
16668     }
16669     _res = NULL;
16670   done:
16671     D(p->level--);
16672     return _res;
16673 }
16674 
16675 // single_subscript_attribute_target:
16676 //     | t_primary '.' NAME !t_lookahead
16677 //     | t_primary '[' slices ']' !t_lookahead
16678 static expr_ty
single_subscript_attribute_target_rule(Parser * p)16679 single_subscript_attribute_target_rule(Parser *p)
16680 {
16681     D(p->level++);
16682     if (p->error_indicator) {
16683         D(p->level--);
16684         return NULL;
16685     }
16686     expr_ty _res = NULL;
16687     int _mark = p->mark;
16688     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16689         p->error_indicator = 1;
16690         D(p->level--);
16691         return NULL;
16692     }
16693     int _start_lineno = p->tokens[_mark]->lineno;
16694     UNUSED(_start_lineno); // Only used by EXTRA macro
16695     int _start_col_offset = p->tokens[_mark]->col_offset;
16696     UNUSED(_start_col_offset); // Only used by EXTRA macro
16697     { // t_primary '.' NAME !t_lookahead
16698         if (p->error_indicator) {
16699             D(p->level--);
16700             return NULL;
16701         }
16702         D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
16703         Token * _literal;
16704         expr_ty a;
16705         expr_ty b;
16706         if (
16707             (a = t_primary_rule(p))  // t_primary
16708             &&
16709             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
16710             &&
16711             (b = _PyPegen_name_token(p))  // NAME
16712             &&
16713             _PyPegen_lookahead(0, t_lookahead_rule, p)
16714         )
16715         {
16716             D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
16717             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16718             if (_token == NULL) {
16719                 D(p->level--);
16720                 return NULL;
16721             }
16722             int _end_lineno = _token->end_lineno;
16723             UNUSED(_end_lineno); // Only used by EXTRA macro
16724             int _end_col_offset = _token->end_col_offset;
16725             UNUSED(_end_col_offset); // Only used by EXTRA macro
16726             _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
16727             if (_res == NULL && PyErr_Occurred()) {
16728                 p->error_indicator = 1;
16729                 D(p->level--);
16730                 return NULL;
16731             }
16732             goto done;
16733         }
16734         p->mark = _mark;
16735         D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
16736                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
16737     }
16738     { // t_primary '[' slices ']' !t_lookahead
16739         if (p->error_indicator) {
16740             D(p->level--);
16741             return NULL;
16742         }
16743         D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
16744         Token * _literal;
16745         Token * _literal_1;
16746         expr_ty a;
16747         expr_ty b;
16748         if (
16749             (a = t_primary_rule(p))  // t_primary
16750             &&
16751             (_literal = _PyPegen_expect_token(p, 9))  // token='['
16752             &&
16753             (b = slices_rule(p))  // slices
16754             &&
16755             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
16756             &&
16757             _PyPegen_lookahead(0, t_lookahead_rule, p)
16758         )
16759         {
16760             D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
16761             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16762             if (_token == NULL) {
16763                 D(p->level--);
16764                 return NULL;
16765             }
16766             int _end_lineno = _token->end_lineno;
16767             UNUSED(_end_lineno); // Only used by EXTRA macro
16768             int _end_col_offset = _token->end_col_offset;
16769             UNUSED(_end_col_offset); // Only used by EXTRA macro
16770             _res = _PyAST_Subscript ( a , b , Store , EXTRA );
16771             if (_res == NULL && PyErr_Occurred()) {
16772                 p->error_indicator = 1;
16773                 D(p->level--);
16774                 return NULL;
16775             }
16776             goto done;
16777         }
16778         p->mark = _mark;
16779         D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
16780                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
16781     }
16782     _res = NULL;
16783   done:
16784     D(p->level--);
16785     return _res;
16786 }
16787 
16788 // Left-recursive
16789 // t_primary:
16790 //     | t_primary '.' NAME &t_lookahead
16791 //     | t_primary '[' slices ']' &t_lookahead
16792 //     | t_primary genexp &t_lookahead
16793 //     | t_primary '(' arguments? ')' &t_lookahead
16794 //     | atom &t_lookahead
16795 static expr_ty t_primary_raw(Parser *);
16796 static expr_ty
t_primary_rule(Parser * p)16797 t_primary_rule(Parser *p)
16798 {
16799     D(p->level++);
16800     expr_ty _res = NULL;
16801     if (_PyPegen_is_memoized(p, t_primary_type, &_res)) {
16802         D(p->level--);
16803         return _res;
16804     }
16805     int _mark = p->mark;
16806     int _resmark = p->mark;
16807     while (1) {
16808         int tmpvar_9 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
16809         if (tmpvar_9) {
16810             D(p->level--);
16811             return _res;
16812         }
16813         p->mark = _mark;
16814         p->in_raw_rule++;
16815         void *_raw = t_primary_raw(p);
16816         p->in_raw_rule--;
16817         if (p->error_indicator)
16818             return NULL;
16819         if (_raw == NULL || p->mark <= _resmark)
16820             break;
16821         _resmark = p->mark;
16822         _res = _raw;
16823     }
16824     p->mark = _resmark;
16825     D(p->level--);
16826     return _res;
16827 }
16828 static expr_ty
t_primary_raw(Parser * p)16829 t_primary_raw(Parser *p)
16830 {
16831     D(p->level++);
16832     if (p->error_indicator) {
16833         D(p->level--);
16834         return NULL;
16835     }
16836     expr_ty _res = NULL;
16837     int _mark = p->mark;
16838     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16839         p->error_indicator = 1;
16840         D(p->level--);
16841         return NULL;
16842     }
16843     int _start_lineno = p->tokens[_mark]->lineno;
16844     UNUSED(_start_lineno); // Only used by EXTRA macro
16845     int _start_col_offset = p->tokens[_mark]->col_offset;
16846     UNUSED(_start_col_offset); // Only used by EXTRA macro
16847     { // t_primary '.' NAME &t_lookahead
16848         if (p->error_indicator) {
16849             D(p->level--);
16850             return NULL;
16851         }
16852         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
16853         Token * _literal;
16854         expr_ty a;
16855         expr_ty b;
16856         if (
16857             (a = t_primary_rule(p))  // t_primary
16858             &&
16859             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
16860             &&
16861             (b = _PyPegen_name_token(p))  // NAME
16862             &&
16863             _PyPegen_lookahead(1, t_lookahead_rule, p)
16864         )
16865         {
16866             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
16867             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16868             if (_token == NULL) {
16869                 D(p->level--);
16870                 return NULL;
16871             }
16872             int _end_lineno = _token->end_lineno;
16873             UNUSED(_end_lineno); // Only used by EXTRA macro
16874             int _end_col_offset = _token->end_col_offset;
16875             UNUSED(_end_col_offset); // Only used by EXTRA macro
16876             _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
16877             if (_res == NULL && PyErr_Occurred()) {
16878                 p->error_indicator = 1;
16879                 D(p->level--);
16880                 return NULL;
16881             }
16882             goto done;
16883         }
16884         p->mark = _mark;
16885         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
16886                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
16887     }
16888     { // t_primary '[' slices ']' &t_lookahead
16889         if (p->error_indicator) {
16890             D(p->level--);
16891             return NULL;
16892         }
16893         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
16894         Token * _literal;
16895         Token * _literal_1;
16896         expr_ty a;
16897         expr_ty b;
16898         if (
16899             (a = t_primary_rule(p))  // t_primary
16900             &&
16901             (_literal = _PyPegen_expect_token(p, 9))  // token='['
16902             &&
16903             (b = slices_rule(p))  // slices
16904             &&
16905             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
16906             &&
16907             _PyPegen_lookahead(1, t_lookahead_rule, p)
16908         )
16909         {
16910             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
16911             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16912             if (_token == NULL) {
16913                 D(p->level--);
16914                 return NULL;
16915             }
16916             int _end_lineno = _token->end_lineno;
16917             UNUSED(_end_lineno); // Only used by EXTRA macro
16918             int _end_col_offset = _token->end_col_offset;
16919             UNUSED(_end_col_offset); // Only used by EXTRA macro
16920             _res = _PyAST_Subscript ( a , b , Load , EXTRA );
16921             if (_res == NULL && PyErr_Occurred()) {
16922                 p->error_indicator = 1;
16923                 D(p->level--);
16924                 return NULL;
16925             }
16926             goto done;
16927         }
16928         p->mark = _mark;
16929         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
16930                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
16931     }
16932     { // t_primary genexp &t_lookahead
16933         if (p->error_indicator) {
16934             D(p->level--);
16935             return NULL;
16936         }
16937         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
16938         expr_ty a;
16939         expr_ty b;
16940         if (
16941             (a = t_primary_rule(p))  // t_primary
16942             &&
16943             (b = genexp_rule(p))  // genexp
16944             &&
16945             _PyPegen_lookahead(1, t_lookahead_rule, p)
16946         )
16947         {
16948             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
16949             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16950             if (_token == NULL) {
16951                 D(p->level--);
16952                 return NULL;
16953             }
16954             int _end_lineno = _token->end_lineno;
16955             UNUSED(_end_lineno); // Only used by EXTRA macro
16956             int _end_col_offset = _token->end_col_offset;
16957             UNUSED(_end_col_offset); // Only used by EXTRA macro
16958             _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq* , ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
16959             if (_res == NULL && PyErr_Occurred()) {
16960                 p->error_indicator = 1;
16961                 D(p->level--);
16962                 return NULL;
16963             }
16964             goto done;
16965         }
16966         p->mark = _mark;
16967         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
16968                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary genexp &t_lookahead"));
16969     }
16970     { // t_primary '(' arguments? ')' &t_lookahead
16971         if (p->error_indicator) {
16972             D(p->level--);
16973             return NULL;
16974         }
16975         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
16976         Token * _literal;
16977         Token * _literal_1;
16978         expr_ty a;
16979         void *b;
16980         if (
16981             (a = t_primary_rule(p))  // t_primary
16982             &&
16983             (_literal = _PyPegen_expect_token(p, 7))  // token='('
16984             &&
16985             (b = arguments_rule(p), !p->error_indicator)  // arguments?
16986             &&
16987             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
16988             &&
16989             _PyPegen_lookahead(1, t_lookahead_rule, p)
16990         )
16991         {
16992             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
16993             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16994             if (_token == NULL) {
16995                 D(p->level--);
16996                 return NULL;
16997             }
16998             int _end_lineno = _token->end_lineno;
16999             UNUSED(_end_lineno); // Only used by EXTRA macro
17000             int _end_col_offset = _token->end_col_offset;
17001             UNUSED(_end_col_offset); // Only used by EXTRA macro
17002             _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
17003             if (_res == NULL && PyErr_Occurred()) {
17004                 p->error_indicator = 1;
17005                 D(p->level--);
17006                 return NULL;
17007             }
17008             goto done;
17009         }
17010         p->mark = _mark;
17011         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
17012                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
17013     }
17014     { // atom &t_lookahead
17015         if (p->error_indicator) {
17016             D(p->level--);
17017             return NULL;
17018         }
17019         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
17020         expr_ty a;
17021         if (
17022             (a = atom_rule(p))  // atom
17023             &&
17024             _PyPegen_lookahead(1, t_lookahead_rule, p)
17025         )
17026         {
17027             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
17028             _res = a;
17029             if (_res == NULL && PyErr_Occurred()) {
17030                 p->error_indicator = 1;
17031                 D(p->level--);
17032                 return NULL;
17033             }
17034             goto done;
17035         }
17036         p->mark = _mark;
17037         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
17038                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom &t_lookahead"));
17039     }
17040     _res = NULL;
17041   done:
17042     D(p->level--);
17043     return _res;
17044 }
17045 
17046 // t_lookahead: '(' | '[' | '.'
17047 static void *
t_lookahead_rule(Parser * p)17048 t_lookahead_rule(Parser *p)
17049 {
17050     D(p->level++);
17051     if (p->error_indicator) {
17052         D(p->level--);
17053         return NULL;
17054     }
17055     void * _res = NULL;
17056     int _mark = p->mark;
17057     { // '('
17058         if (p->error_indicator) {
17059             D(p->level--);
17060             return NULL;
17061         }
17062         D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
17063         Token * _literal;
17064         if (
17065             (_literal = _PyPegen_expect_token(p, 7))  // token='('
17066         )
17067         {
17068             D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
17069             _res = _literal;
17070             goto done;
17071         }
17072         p->mark = _mark;
17073         D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
17074                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
17075     }
17076     { // '['
17077         if (p->error_indicator) {
17078             D(p->level--);
17079             return NULL;
17080         }
17081         D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
17082         Token * _literal;
17083         if (
17084             (_literal = _PyPegen_expect_token(p, 9))  // token='['
17085         )
17086         {
17087             D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
17088             _res = _literal;
17089             goto done;
17090         }
17091         p->mark = _mark;
17092         D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
17093                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
17094     }
17095     { // '.'
17096         if (p->error_indicator) {
17097             D(p->level--);
17098             return NULL;
17099         }
17100         D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
17101         Token * _literal;
17102         if (
17103             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
17104         )
17105         {
17106             D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
17107             _res = _literal;
17108             goto done;
17109         }
17110         p->mark = _mark;
17111         D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
17112                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
17113     }
17114     _res = NULL;
17115   done:
17116     D(p->level--);
17117     return _res;
17118 }
17119 
17120 // del_targets: ','.del_target+ ','?
17121 static asdl_expr_seq*
del_targets_rule(Parser * p)17122 del_targets_rule(Parser *p)
17123 {
17124     D(p->level++);
17125     if (p->error_indicator) {
17126         D(p->level--);
17127         return NULL;
17128     }
17129     asdl_expr_seq* _res = NULL;
17130     int _mark = p->mark;
17131     { // ','.del_target+ ','?
17132         if (p->error_indicator) {
17133             D(p->level--);
17134             return NULL;
17135         }
17136         D(fprintf(stderr, "%*c> del_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
17137         void *_opt_var;
17138         UNUSED(_opt_var); // Silence compiler warnings
17139         asdl_expr_seq* a;
17140         if (
17141             (a = (asdl_expr_seq*)_gather_130_rule(p))  // ','.del_target+
17142             &&
17143             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
17144         )
17145         {
17146             D(fprintf(stderr, "%*c+ del_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
17147             _res = a;
17148             if (_res == NULL && PyErr_Occurred()) {
17149                 p->error_indicator = 1;
17150                 D(p->level--);
17151                 return NULL;
17152             }
17153             goto done;
17154         }
17155         p->mark = _mark;
17156         D(fprintf(stderr, "%*c%s del_targets[%d-%d]: %s failed!\n", p->level, ' ',
17157                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.del_target+ ','?"));
17158     }
17159     _res = NULL;
17160   done:
17161     D(p->level--);
17162     return _res;
17163 }
17164 
17165 // del_target:
17166 //     | t_primary '.' NAME !t_lookahead
17167 //     | t_primary '[' slices ']' !t_lookahead
17168 //     | del_t_atom
17169 static expr_ty
del_target_rule(Parser * p)17170 del_target_rule(Parser *p)
17171 {
17172     D(p->level++);
17173     if (p->error_indicator) {
17174         D(p->level--);
17175         return NULL;
17176     }
17177     expr_ty _res = NULL;
17178     if (_PyPegen_is_memoized(p, del_target_type, &_res)) {
17179         D(p->level--);
17180         return _res;
17181     }
17182     int _mark = p->mark;
17183     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17184         p->error_indicator = 1;
17185         D(p->level--);
17186         return NULL;
17187     }
17188     int _start_lineno = p->tokens[_mark]->lineno;
17189     UNUSED(_start_lineno); // Only used by EXTRA macro
17190     int _start_col_offset = p->tokens[_mark]->col_offset;
17191     UNUSED(_start_col_offset); // Only used by EXTRA macro
17192     { // t_primary '.' NAME !t_lookahead
17193         if (p->error_indicator) {
17194             D(p->level--);
17195             return NULL;
17196         }
17197         D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17198         Token * _literal;
17199         expr_ty a;
17200         expr_ty b;
17201         if (
17202             (a = t_primary_rule(p))  // t_primary
17203             &&
17204             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
17205             &&
17206             (b = _PyPegen_name_token(p))  // NAME
17207             &&
17208             _PyPegen_lookahead(0, t_lookahead_rule, p)
17209         )
17210         {
17211             D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17212             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17213             if (_token == NULL) {
17214                 D(p->level--);
17215                 return NULL;
17216             }
17217             int _end_lineno = _token->end_lineno;
17218             UNUSED(_end_lineno); // Only used by EXTRA macro
17219             int _end_col_offset = _token->end_col_offset;
17220             UNUSED(_end_col_offset); // Only used by EXTRA macro
17221             _res = _PyAST_Attribute ( a , b -> v . Name . id , Del , EXTRA );
17222             if (_res == NULL && PyErr_Occurred()) {
17223                 p->error_indicator = 1;
17224                 D(p->level--);
17225                 return NULL;
17226             }
17227             goto done;
17228         }
17229         p->mark = _mark;
17230         D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
17231                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17232     }
17233     { // t_primary '[' slices ']' !t_lookahead
17234         if (p->error_indicator) {
17235             D(p->level--);
17236             return NULL;
17237         }
17238         D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17239         Token * _literal;
17240         Token * _literal_1;
17241         expr_ty a;
17242         expr_ty b;
17243         if (
17244             (a = t_primary_rule(p))  // t_primary
17245             &&
17246             (_literal = _PyPegen_expect_token(p, 9))  // token='['
17247             &&
17248             (b = slices_rule(p))  // slices
17249             &&
17250             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17251             &&
17252             _PyPegen_lookahead(0, t_lookahead_rule, p)
17253         )
17254         {
17255             D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17256             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17257             if (_token == NULL) {
17258                 D(p->level--);
17259                 return NULL;
17260             }
17261             int _end_lineno = _token->end_lineno;
17262             UNUSED(_end_lineno); // Only used by EXTRA macro
17263             int _end_col_offset = _token->end_col_offset;
17264             UNUSED(_end_col_offset); // Only used by EXTRA macro
17265             _res = _PyAST_Subscript ( a , b , Del , EXTRA );
17266             if (_res == NULL && PyErr_Occurred()) {
17267                 p->error_indicator = 1;
17268                 D(p->level--);
17269                 return NULL;
17270             }
17271             goto done;
17272         }
17273         p->mark = _mark;
17274         D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
17275                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17276     }
17277     { // del_t_atom
17278         if (p->error_indicator) {
17279             D(p->level--);
17280             return NULL;
17281         }
17282         D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
17283         expr_ty del_t_atom_var;
17284         if (
17285             (del_t_atom_var = del_t_atom_rule(p))  // del_t_atom
17286         )
17287         {
17288             D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
17289             _res = del_t_atom_var;
17290             goto done;
17291         }
17292         p->mark = _mark;
17293         D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
17294                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_t_atom"));
17295     }
17296     _res = NULL;
17297   done:
17298     _PyPegen_insert_memo(p, _mark, del_target_type, _res);
17299     D(p->level--);
17300     return _res;
17301 }
17302 
17303 // del_t_atom: NAME | '(' del_target ')' | '(' del_targets? ')' | '[' del_targets? ']'
17304 static expr_ty
del_t_atom_rule(Parser * p)17305 del_t_atom_rule(Parser *p)
17306 {
17307     D(p->level++);
17308     if (p->error_indicator) {
17309         D(p->level--);
17310         return NULL;
17311     }
17312     expr_ty _res = NULL;
17313     int _mark = p->mark;
17314     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17315         p->error_indicator = 1;
17316         D(p->level--);
17317         return NULL;
17318     }
17319     int _start_lineno = p->tokens[_mark]->lineno;
17320     UNUSED(_start_lineno); // Only used by EXTRA macro
17321     int _start_col_offset = p->tokens[_mark]->col_offset;
17322     UNUSED(_start_col_offset); // Only used by EXTRA macro
17323     { // NAME
17324         if (p->error_indicator) {
17325             D(p->level--);
17326             return NULL;
17327         }
17328         D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
17329         expr_ty a;
17330         if (
17331             (a = _PyPegen_name_token(p))  // NAME
17332         )
17333         {
17334             D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
17335             _res = _PyPegen_set_expr_context ( p , a , Del );
17336             if (_res == NULL && PyErr_Occurred()) {
17337                 p->error_indicator = 1;
17338                 D(p->level--);
17339                 return NULL;
17340             }
17341             goto done;
17342         }
17343         p->mark = _mark;
17344         D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
17345                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
17346     }
17347     { // '(' del_target ')'
17348         if (p->error_indicator) {
17349             D(p->level--);
17350             return NULL;
17351         }
17352         D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
17353         Token * _literal;
17354         Token * _literal_1;
17355         expr_ty a;
17356         if (
17357             (_literal = _PyPegen_expect_token(p, 7))  // token='('
17358             &&
17359             (a = del_target_rule(p))  // del_target
17360             &&
17361             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17362         )
17363         {
17364             D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
17365             _res = _PyPegen_set_expr_context ( p , a , Del );
17366             if (_res == NULL && PyErr_Occurred()) {
17367                 p->error_indicator = 1;
17368                 D(p->level--);
17369                 return NULL;
17370             }
17371             goto done;
17372         }
17373         p->mark = _mark;
17374         D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
17375                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_target ')'"));
17376     }
17377     { // '(' del_targets? ')'
17378         if (p->error_indicator) {
17379             D(p->level--);
17380             return NULL;
17381         }
17382         D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
17383         Token * _literal;
17384         Token * _literal_1;
17385         void *a;
17386         if (
17387             (_literal = _PyPegen_expect_token(p, 7))  // token='('
17388             &&
17389             (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
17390             &&
17391             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17392         )
17393         {
17394             D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
17395             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17396             if (_token == NULL) {
17397                 D(p->level--);
17398                 return NULL;
17399             }
17400             int _end_lineno = _token->end_lineno;
17401             UNUSED(_end_lineno); // Only used by EXTRA macro
17402             int _end_col_offset = _token->end_col_offset;
17403             UNUSED(_end_col_offset); // Only used by EXTRA macro
17404             _res = _PyAST_Tuple ( a , Del , EXTRA );
17405             if (_res == NULL && PyErr_Occurred()) {
17406                 p->error_indicator = 1;
17407                 D(p->level--);
17408                 return NULL;
17409             }
17410             goto done;
17411         }
17412         p->mark = _mark;
17413         D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
17414                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_targets? ')'"));
17415     }
17416     { // '[' del_targets? ']'
17417         if (p->error_indicator) {
17418             D(p->level--);
17419             return NULL;
17420         }
17421         D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
17422         Token * _literal;
17423         Token * _literal_1;
17424         void *a;
17425         if (
17426             (_literal = _PyPegen_expect_token(p, 9))  // token='['
17427             &&
17428             (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
17429             &&
17430             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17431         )
17432         {
17433             D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
17434             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17435             if (_token == NULL) {
17436                 D(p->level--);
17437                 return NULL;
17438             }
17439             int _end_lineno = _token->end_lineno;
17440             UNUSED(_end_lineno); // Only used by EXTRA macro
17441             int _end_col_offset = _token->end_col_offset;
17442             UNUSED(_end_col_offset); // Only used by EXTRA macro
17443             _res = _PyAST_List ( a , Del , EXTRA );
17444             if (_res == NULL && PyErr_Occurred()) {
17445                 p->error_indicator = 1;
17446                 D(p->level--);
17447                 return NULL;
17448             }
17449             goto done;
17450         }
17451         p->mark = _mark;
17452         D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
17453                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' del_targets? ']'"));
17454     }
17455     _res = NULL;
17456   done:
17457     D(p->level--);
17458     return _res;
17459 }
17460 
17461 // type_expressions:
17462 //     | ','.expression+ ',' '*' expression ',' '**' expression
17463 //     | ','.expression+ ',' '*' expression
17464 //     | ','.expression+ ',' '**' expression
17465 //     | '*' expression ',' '**' expression
17466 //     | '*' expression
17467 //     | '**' expression
17468 //     | ','.expression+
17469 static asdl_expr_seq*
type_expressions_rule(Parser * p)17470 type_expressions_rule(Parser *p)
17471 {
17472     D(p->level++);
17473     if (p->error_indicator) {
17474         D(p->level--);
17475         return NULL;
17476     }
17477     asdl_expr_seq* _res = NULL;
17478     int _mark = p->mark;
17479     { // ','.expression+ ',' '*' expression ',' '**' expression
17480         if (p->error_indicator) {
17481             D(p->level--);
17482             return NULL;
17483         }
17484         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
17485         Token * _literal;
17486         Token * _literal_1;
17487         Token * _literal_2;
17488         Token * _literal_3;
17489         asdl_seq * a;
17490         expr_ty b;
17491         expr_ty c;
17492         if (
17493             (a = _gather_132_rule(p))  // ','.expression+
17494             &&
17495             (_literal = _PyPegen_expect_token(p, 12))  // token=','
17496             &&
17497             (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
17498             &&
17499             (b = expression_rule(p))  // expression
17500             &&
17501             (_literal_2 = _PyPegen_expect_token(p, 12))  // token=','
17502             &&
17503             (_literal_3 = _PyPegen_expect_token(p, 35))  // token='**'
17504             &&
17505             (c = expression_rule(p))  // expression
17506         )
17507         {
17508             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
17509             _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , CHECK ( asdl_seq* , _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
17510             if (_res == NULL && PyErr_Occurred()) {
17511                 p->error_indicator = 1;
17512                 D(p->level--);
17513                 return NULL;
17514             }
17515             goto done;
17516         }
17517         p->mark = _mark;
17518         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
17519                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
17520     }
17521     { // ','.expression+ ',' '*' expression
17522         if (p->error_indicator) {
17523             D(p->level--);
17524             return NULL;
17525         }
17526         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
17527         Token * _literal;
17528         Token * _literal_1;
17529         asdl_seq * a;
17530         expr_ty b;
17531         if (
17532             (a = _gather_134_rule(p))  // ','.expression+
17533             &&
17534             (_literal = _PyPegen_expect_token(p, 12))  // token=','
17535             &&
17536             (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
17537             &&
17538             (b = expression_rule(p))  // expression
17539         )
17540         {
17541             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
17542             _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , a , b );
17543             if (_res == NULL && PyErr_Occurred()) {
17544                 p->error_indicator = 1;
17545                 D(p->level--);
17546                 return NULL;
17547             }
17548             goto done;
17549         }
17550         p->mark = _mark;
17551         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
17552                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression"));
17553     }
17554     { // ','.expression+ ',' '**' expression
17555         if (p->error_indicator) {
17556             D(p->level--);
17557             return NULL;
17558         }
17559         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
17560         Token * _literal;
17561         Token * _literal_1;
17562         asdl_seq * a;
17563         expr_ty b;
17564         if (
17565             (a = _gather_136_rule(p))  // ','.expression+
17566             &&
17567             (_literal = _PyPegen_expect_token(p, 12))  // token=','
17568             &&
17569             (_literal_1 = _PyPegen_expect_token(p, 35))  // token='**'
17570             &&
17571             (b = expression_rule(p))  // expression
17572         )
17573         {
17574             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
17575             _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , a , b );
17576             if (_res == NULL && PyErr_Occurred()) {
17577                 p->error_indicator = 1;
17578                 D(p->level--);
17579                 return NULL;
17580             }
17581             goto done;
17582         }
17583         p->mark = _mark;
17584         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
17585                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '**' expression"));
17586     }
17587     { // '*' expression ',' '**' expression
17588         if (p->error_indicator) {
17589             D(p->level--);
17590             return NULL;
17591         }
17592         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
17593         Token * _literal;
17594         Token * _literal_1;
17595         Token * _literal_2;
17596         expr_ty a;
17597         expr_ty b;
17598         if (
17599             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
17600             &&
17601             (a = expression_rule(p))  // expression
17602             &&
17603             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
17604             &&
17605             (_literal_2 = _PyPegen_expect_token(p, 35))  // token='**'
17606             &&
17607             (b = expression_rule(p))  // expression
17608         )
17609         {
17610             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
17611             _res = ( asdl_expr_seq* ) _PyPegen_seq_append_to_end ( p , CHECK ( asdl_seq* , _PyPegen_singleton_seq ( p , a ) ) , b );
17612             if (_res == NULL && PyErr_Occurred()) {
17613                 p->error_indicator = 1;
17614                 D(p->level--);
17615                 return NULL;
17616             }
17617             goto done;
17618         }
17619         p->mark = _mark;
17620         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
17621                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression ',' '**' expression"));
17622     }
17623     { // '*' expression
17624         if (p->error_indicator) {
17625             D(p->level--);
17626             return NULL;
17627         }
17628         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
17629         Token * _literal;
17630         expr_ty a;
17631         if (
17632             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
17633             &&
17634             (a = expression_rule(p))  // expression
17635         )
17636         {
17637             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
17638             _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
17639             if (_res == NULL && PyErr_Occurred()) {
17640                 p->error_indicator = 1;
17641                 D(p->level--);
17642                 return NULL;
17643             }
17644             goto done;
17645         }
17646         p->mark = _mark;
17647         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
17648                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
17649     }
17650     { // '**' expression
17651         if (p->error_indicator) {
17652             D(p->level--);
17653             return NULL;
17654         }
17655         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
17656         Token * _literal;
17657         expr_ty a;
17658         if (
17659             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
17660             &&
17661             (a = expression_rule(p))  // expression
17662         )
17663         {
17664             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
17665             _res = ( asdl_expr_seq* ) _PyPegen_singleton_seq ( p , a );
17666             if (_res == NULL && PyErr_Occurred()) {
17667                 p->error_indicator = 1;
17668                 D(p->level--);
17669                 return NULL;
17670             }
17671             goto done;
17672         }
17673         p->mark = _mark;
17674         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
17675                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
17676     }
17677     { // ','.expression+
17678         if (p->error_indicator) {
17679             D(p->level--);
17680             return NULL;
17681         }
17682         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+"));
17683         asdl_expr_seq* a;
17684         if (
17685             (a = (asdl_expr_seq*)_gather_138_rule(p))  // ','.expression+
17686         )
17687         {
17688             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+"));
17689             _res = a;
17690             if (_res == NULL && PyErr_Occurred()) {
17691                 p->error_indicator = 1;
17692                 D(p->level--);
17693                 return NULL;
17694             }
17695             goto done;
17696         }
17697         p->mark = _mark;
17698         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
17699                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+"));
17700     }
17701     _res = NULL;
17702   done:
17703     D(p->level--);
17704     return _res;
17705 }
17706 
17707 // func_type_comment:
17708 //     | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
17709 //     | invalid_double_type_comments
17710 //     | TYPE_COMMENT
17711 static Token*
func_type_comment_rule(Parser * p)17712 func_type_comment_rule(Parser *p)
17713 {
17714     D(p->level++);
17715     if (p->error_indicator) {
17716         D(p->level--);
17717         return NULL;
17718     }
17719     Token* _res = NULL;
17720     int _mark = p->mark;
17721     { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
17722         if (p->error_indicator) {
17723             D(p->level--);
17724             return NULL;
17725         }
17726         D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
17727         Token * newline_var;
17728         Token * t;
17729         if (
17730             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
17731             &&
17732             (t = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
17733             &&
17734             _PyPegen_lookahead(1, _tmp_140_rule, p)
17735         )
17736         {
17737             D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
17738             _res = t;
17739             if (_res == NULL && PyErr_Occurred()) {
17740                 p->error_indicator = 1;
17741                 D(p->level--);
17742                 return NULL;
17743             }
17744             goto done;
17745         }
17746         p->mark = _mark;
17747         D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
17748                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
17749     }
17750     if (p->call_invalid_rules) { // invalid_double_type_comments
17751         if (p->error_indicator) {
17752             D(p->level--);
17753             return NULL;
17754         }
17755         D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
17756         void *invalid_double_type_comments_var;
17757         if (
17758             (invalid_double_type_comments_var = invalid_double_type_comments_rule(p))  // invalid_double_type_comments
17759         )
17760         {
17761             D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
17762             _res = invalid_double_type_comments_var;
17763             goto done;
17764         }
17765         p->mark = _mark;
17766         D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
17767                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_double_type_comments"));
17768     }
17769     { // TYPE_COMMENT
17770         if (p->error_indicator) {
17771             D(p->level--);
17772             return NULL;
17773         }
17774         D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
17775         Token * type_comment_var;
17776         if (
17777             (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
17778         )
17779         {
17780             D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
17781             _res = type_comment_var;
17782             goto done;
17783         }
17784         p->mark = _mark;
17785         D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
17786                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT"));
17787     }
17788     _res = NULL;
17789   done:
17790     D(p->level--);
17791     return _res;
17792 }
17793 
17794 // invalid_arguments:
17795 //     | args ',' '*'
17796 //     | expression for_if_clauses ',' [args | expression for_if_clauses]
17797 //     | NAME '=' expression for_if_clauses
17798 //     | args for_if_clauses
17799 //     | args ',' expression for_if_clauses
17800 //     | args ',' args
17801 static void *
invalid_arguments_rule(Parser * p)17802 invalid_arguments_rule(Parser *p)
17803 {
17804     D(p->level++);
17805     if (p->error_indicator) {
17806         D(p->level--);
17807         return NULL;
17808     }
17809     void * _res = NULL;
17810     int _mark = p->mark;
17811     { // args ',' '*'
17812         if (p->error_indicator) {
17813             D(p->level--);
17814             return NULL;
17815         }
17816         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' '*'"));
17817         Token * _literal;
17818         Token * _literal_1;
17819         expr_ty a;
17820         if (
17821             (a = args_rule(p))  // args
17822             &&
17823             (_literal = _PyPegen_expect_token(p, 12))  // token=','
17824             &&
17825             (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
17826         )
17827         {
17828             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' '*'"));
17829             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable argument unpacking follows keyword argument unpacking" );
17830             if (_res == NULL && PyErr_Occurred()) {
17831                 p->error_indicator = 1;
17832                 D(p->level--);
17833                 return NULL;
17834             }
17835             goto done;
17836         }
17837         p->mark = _mark;
17838         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
17839                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' '*'"));
17840     }
17841     { // expression for_if_clauses ',' [args | expression for_if_clauses]
17842         if (p->error_indicator) {
17843             D(p->level--);
17844             return NULL;
17845         }
17846         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
17847         Token * _literal;
17848         void *_opt_var;
17849         UNUSED(_opt_var); // Silence compiler warnings
17850         expr_ty a;
17851         asdl_comprehension_seq* b;
17852         if (
17853             (a = expression_rule(p))  // expression
17854             &&
17855             (b = for_if_clauses_rule(p))  // for_if_clauses
17856             &&
17857             (_literal = _PyPegen_expect_token(p, 12))  // token=','
17858             &&
17859             (_opt_var = _tmp_141_rule(p), !p->error_indicator)  // [args | expression for_if_clauses]
17860         )
17861         {
17862             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]"));
17863             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , PyPegen_last_item ( b , comprehension_ty ) -> target , "Generator expression must be parenthesized" );
17864             if (_res == NULL && PyErr_Occurred()) {
17865                 p->error_indicator = 1;
17866                 D(p->level--);
17867                 return NULL;
17868             }
17869             goto done;
17870         }
17871         p->mark = _mark;
17872         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
17873                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
17874     }
17875     { // NAME '=' expression for_if_clauses
17876         if (p->error_indicator) {
17877             D(p->level--);
17878             return NULL;
17879         }
17880         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
17881         expr_ty a;
17882         Token * b;
17883         expr_ty expression_var;
17884         asdl_comprehension_seq* for_if_clauses_var;
17885         if (
17886             (a = _PyPegen_name_token(p))  // NAME
17887             &&
17888             (b = _PyPegen_expect_token(p, 22))  // token='='
17889             &&
17890             (expression_var = expression_rule(p))  // expression
17891             &&
17892             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
17893         )
17894         {
17895             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
17896             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
17897             if (_res == NULL && PyErr_Occurred()) {
17898                 p->error_indicator = 1;
17899                 D(p->level--);
17900                 return NULL;
17901             }
17902             goto done;
17903         }
17904         p->mark = _mark;
17905         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
17906                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
17907     }
17908     { // args for_if_clauses
17909         if (p->error_indicator) {
17910             D(p->level--);
17911             return NULL;
17912         }
17913         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
17914         expr_ty a;
17915         asdl_comprehension_seq* b;
17916         if (
17917             (a = args_rule(p))  // args
17918             &&
17919             (b = for_if_clauses_rule(p))  // for_if_clauses
17920         )
17921         {
17922             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
17923             _res = _PyPegen_nonparen_genexp_in_call ( p , a , b );
17924             if (_res == NULL && PyErr_Occurred()) {
17925                 p->error_indicator = 1;
17926                 D(p->level--);
17927                 return NULL;
17928             }
17929             goto done;
17930         }
17931         p->mark = _mark;
17932         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
17933                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args for_if_clauses"));
17934     }
17935     { // args ',' expression for_if_clauses
17936         if (p->error_indicator) {
17937             D(p->level--);
17938             return NULL;
17939         }
17940         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
17941         Token * _literal;
17942         expr_ty a;
17943         expr_ty args_var;
17944         asdl_comprehension_seq* b;
17945         if (
17946             (args_var = args_rule(p))  // args
17947             &&
17948             (_literal = _PyPegen_expect_token(p, 12))  // token=','
17949             &&
17950             (a = expression_rule(p))  // expression
17951             &&
17952             (b = for_if_clauses_rule(p))  // for_if_clauses
17953         )
17954         {
17955             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
17956             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , asdl_seq_GET ( b , b -> size - 1 ) -> target , "Generator expression must be parenthesized" );
17957             if (_res == NULL && PyErr_Occurred()) {
17958                 p->error_indicator = 1;
17959                 D(p->level--);
17960                 return NULL;
17961             }
17962             goto done;
17963         }
17964         p->mark = _mark;
17965         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
17966                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' expression for_if_clauses"));
17967     }
17968     { // args ',' args
17969         if (p->error_indicator) {
17970             D(p->level--);
17971             return NULL;
17972         }
17973         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' args"));
17974         Token * _literal;
17975         expr_ty a;
17976         expr_ty args_var;
17977         if (
17978             (a = args_rule(p))  // args
17979             &&
17980             (_literal = _PyPegen_expect_token(p, 12))  // token=','
17981             &&
17982             (args_var = args_rule(p))  // args
17983         )
17984         {
17985             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' args"));
17986             _res = _PyPegen_arguments_parsing_error ( p , a );
17987             if (_res == NULL && PyErr_Occurred()) {
17988                 p->error_indicator = 1;
17989                 D(p->level--);
17990                 return NULL;
17991             }
17992             goto done;
17993         }
17994         p->mark = _mark;
17995         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
17996                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' args"));
17997     }
17998     _res = NULL;
17999   done:
18000     D(p->level--);
18001     return _res;
18002 }
18003 
18004 // invalid_kwarg:
18005 //     | ('True' | 'False' | 'None') '='
18006 //     | NAME '=' expression for_if_clauses
18007 //     | !(NAME '=') expression '='
18008 static void *
invalid_kwarg_rule(Parser * p)18009 invalid_kwarg_rule(Parser *p)
18010 {
18011     D(p->level++);
18012     if (p->error_indicator) {
18013         D(p->level--);
18014         return NULL;
18015     }
18016     void * _res = NULL;
18017     int _mark = p->mark;
18018     { // ('True' | 'False' | 'None') '='
18019         if (p->error_indicator) {
18020             D(p->level--);
18021             return NULL;
18022         }
18023         D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('True' | 'False' | 'None') '='"));
18024         Token* a;
18025         Token * b;
18026         if (
18027             (a = (Token*)_tmp_142_rule(p))  // 'True' | 'False' | 'None'
18028             &&
18029             (b = _PyPegen_expect_token(p, 22))  // token='='
18030         )
18031         {
18032             D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('True' | 'False' | 'None') '='"));
18033             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to %s" , PyBytes_AS_STRING ( a -> bytes ) );
18034             if (_res == NULL && PyErr_Occurred()) {
18035                 p->error_indicator = 1;
18036                 D(p->level--);
18037                 return NULL;
18038             }
18039             goto done;
18040         }
18041         p->mark = _mark;
18042         D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
18043                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('True' | 'False' | 'None') '='"));
18044     }
18045     { // NAME '=' expression for_if_clauses
18046         if (p->error_indicator) {
18047             D(p->level--);
18048             return NULL;
18049         }
18050         D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
18051         expr_ty a;
18052         Token * b;
18053         expr_ty expression_var;
18054         asdl_comprehension_seq* for_if_clauses_var;
18055         if (
18056             (a = _PyPegen_name_token(p))  // NAME
18057             &&
18058             (b = _PyPegen_expect_token(p, 22))  // token='='
18059             &&
18060             (expression_var = expression_rule(p))  // expression
18061             &&
18062             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
18063         )
18064         {
18065             D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
18066             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
18067             if (_res == NULL && PyErr_Occurred()) {
18068                 p->error_indicator = 1;
18069                 D(p->level--);
18070                 return NULL;
18071             }
18072             goto done;
18073         }
18074         p->mark = _mark;
18075         D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
18076                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
18077     }
18078     { // !(NAME '=') expression '='
18079         if (p->error_indicator) {
18080             D(p->level--);
18081             return NULL;
18082         }
18083         D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
18084         expr_ty a;
18085         Token * b;
18086         if (
18087             _PyPegen_lookahead(0, _tmp_143_rule, p)
18088             &&
18089             (a = expression_rule(p))  // expression
18090             &&
18091             (b = _PyPegen_expect_token(p, 22))  // token='='
18092         )
18093         {
18094             D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
18095             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expression cannot contain assignment, perhaps you meant \"==\"?" );
18096             if (_res == NULL && PyErr_Occurred()) {
18097                 p->error_indicator = 1;
18098                 D(p->level--);
18099                 return NULL;
18100             }
18101             goto done;
18102         }
18103         p->mark = _mark;
18104         D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
18105                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME '=') expression '='"));
18106     }
18107     _res = NULL;
18108   done:
18109     D(p->level--);
18110     return _res;
18111 }
18112 
18113 // expression_without_invalid:
18114 //     | disjunction 'if' disjunction 'else' expression
18115 //     | disjunction
18116 //     | lambdef
18117 static expr_ty
expression_without_invalid_rule(Parser * p)18118 expression_without_invalid_rule(Parser *p)
18119 {
18120     D(p->level++);
18121     if (p->error_indicator) {
18122         D(p->level--);
18123         return NULL;
18124     }
18125     expr_ty _res = NULL;
18126     int _mark = p->mark;
18127     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18128         p->error_indicator = 1;
18129         D(p->level--);
18130         return NULL;
18131     }
18132     int _start_lineno = p->tokens[_mark]->lineno;
18133     UNUSED(_start_lineno); // Only used by EXTRA macro
18134     int _start_col_offset = p->tokens[_mark]->col_offset;
18135     UNUSED(_start_col_offset); // Only used by EXTRA macro
18136     { // disjunction 'if' disjunction 'else' expression
18137         if (p->error_indicator) {
18138             D(p->level--);
18139             return NULL;
18140         }
18141         D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
18142         Token * _keyword;
18143         Token * _keyword_1;
18144         expr_ty a;
18145         expr_ty b;
18146         expr_ty c;
18147         if (
18148             (a = disjunction_rule(p))  // disjunction
18149             &&
18150             (_keyword = _PyPegen_expect_token(p, 627))  // token='if'
18151             &&
18152             (b = disjunction_rule(p))  // disjunction
18153             &&
18154             (_keyword_1 = _PyPegen_expect_token(p, 630))  // token='else'
18155             &&
18156             (c = expression_rule(p))  // expression
18157         )
18158         {
18159             D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
18160             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18161             if (_token == NULL) {
18162                 D(p->level--);
18163                 return NULL;
18164             }
18165             int _end_lineno = _token->end_lineno;
18166             UNUSED(_end_lineno); // Only used by EXTRA macro
18167             int _end_col_offset = _token->end_col_offset;
18168             UNUSED(_end_col_offset); // Only used by EXTRA macro
18169             _res = _PyAST_IfExp ( b , a , c , EXTRA );
18170             if (_res == NULL && PyErr_Occurred()) {
18171                 p->error_indicator = 1;
18172                 D(p->level--);
18173                 return NULL;
18174             }
18175             goto done;
18176         }
18177         p->mark = _mark;
18178         D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
18179                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
18180     }
18181     { // disjunction
18182         if (p->error_indicator) {
18183             D(p->level--);
18184             return NULL;
18185         }
18186         D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
18187         expr_ty disjunction_var;
18188         if (
18189             (disjunction_var = disjunction_rule(p))  // disjunction
18190         )
18191         {
18192             D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
18193             _res = disjunction_var;
18194             goto done;
18195         }
18196         p->mark = _mark;
18197         D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
18198                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
18199     }
18200     { // lambdef
18201         if (p->error_indicator) {
18202             D(p->level--);
18203             return NULL;
18204         }
18205         D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
18206         expr_ty lambdef_var;
18207         if (
18208             (lambdef_var = lambdef_rule(p))  // lambdef
18209         )
18210         {
18211             D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
18212             _res = lambdef_var;
18213             goto done;
18214         }
18215         p->mark = _mark;
18216         D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
18217                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
18218     }
18219     _res = NULL;
18220   done:
18221     D(p->level--);
18222     return _res;
18223 }
18224 
18225 // invalid_legacy_expression: NAME !'(' star_expressions
18226 static void *
invalid_legacy_expression_rule(Parser * p)18227 invalid_legacy_expression_rule(Parser *p)
18228 {
18229     D(p->level++);
18230     if (p->error_indicator) {
18231         D(p->level--);
18232         return NULL;
18233     }
18234     void * _res = NULL;
18235     int _mark = p->mark;
18236     { // NAME !'(' star_expressions
18237         if (p->error_indicator) {
18238             D(p->level--);
18239             return NULL;
18240         }
18241         D(fprintf(stderr, "%*c> invalid_legacy_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
18242         expr_ty a;
18243         expr_ty b;
18244         if (
18245             (a = _PyPegen_name_token(p))  // NAME
18246             &&
18247             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 7)  // token='('
18248             &&
18249             (b = star_expressions_rule(p))  // star_expressions
18250         )
18251         {
18252             D(fprintf(stderr, "%*c+ invalid_legacy_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
18253             _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;
18254             if (_res == NULL && PyErr_Occurred()) {
18255                 p->error_indicator = 1;
18256                 D(p->level--);
18257                 return NULL;
18258             }
18259             goto done;
18260         }
18261         p->mark = _mark;
18262         D(fprintf(stderr, "%*c%s invalid_legacy_expression[%d-%d]: %s failed!\n", p->level, ' ',
18263                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME !'(' star_expressions"));
18264     }
18265     _res = NULL;
18266   done:
18267     D(p->level--);
18268     return _res;
18269 }
18270 
18271 // invalid_expression:
18272 //     | !(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid
18273 //     | disjunction 'if' disjunction !('else' | ':')
18274 static void *
invalid_expression_rule(Parser * p)18275 invalid_expression_rule(Parser *p)
18276 {
18277     D(p->level++);
18278     if (p->error_indicator) {
18279         D(p->level--);
18280         return NULL;
18281     }
18282     void * _res = NULL;
18283     int _mark = p->mark;
18284     { // !(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid
18285         if (p->error_indicator) {
18286             D(p->level--);
18287             return NULL;
18288         }
18289         D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
18290         expr_ty a;
18291         expr_ty b;
18292         if (
18293             _PyPegen_lookahead(0, _tmp_144_rule, p)
18294             &&
18295             (a = disjunction_rule(p))  // disjunction
18296             &&
18297             (b = expression_without_invalid_rule(p))  // expression_without_invalid
18298         )
18299         {
18300             D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
18301             _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?" );
18302             if (_res == NULL && PyErr_Occurred()) {
18303                 p->error_indicator = 1;
18304                 D(p->level--);
18305                 return NULL;
18306             }
18307             goto done;
18308         }
18309         p->mark = _mark;
18310         D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
18311                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
18312     }
18313     { // disjunction 'if' disjunction !('else' | ':')
18314         if (p->error_indicator) {
18315             D(p->level--);
18316             return NULL;
18317         }
18318         D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
18319         Token * _keyword;
18320         expr_ty a;
18321         expr_ty b;
18322         if (
18323             (a = disjunction_rule(p))  // disjunction
18324             &&
18325             (_keyword = _PyPegen_expect_token(p, 627))  // token='if'
18326             &&
18327             (b = disjunction_rule(p))  // disjunction
18328             &&
18329             _PyPegen_lookahead(0, _tmp_145_rule, p)
18330         )
18331         {
18332             D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
18333             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expected 'else' after 'if' expression" );
18334             if (_res == NULL && PyErr_Occurred()) {
18335                 p->error_indicator = 1;
18336                 D(p->level--);
18337                 return NULL;
18338             }
18339             goto done;
18340         }
18341         p->mark = _mark;
18342         D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
18343                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
18344     }
18345     _res = NULL;
18346   done:
18347     D(p->level--);
18348     return _res;
18349 }
18350 
18351 // invalid_named_expression:
18352 //     | expression ':=' expression
18353 //     | NAME '=' bitwise_or !('=' | ':=')
18354 //     | !(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')
18355 static void *
invalid_named_expression_rule(Parser * p)18356 invalid_named_expression_rule(Parser *p)
18357 {
18358     D(p->level++);
18359     if (p->error_indicator) {
18360         D(p->level--);
18361         return NULL;
18362     }
18363     void * _res = NULL;
18364     int _mark = p->mark;
18365     { // expression ':=' expression
18366         if (p->error_indicator) {
18367             D(p->level--);
18368             return NULL;
18369         }
18370         D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
18371         Token * _literal;
18372         expr_ty a;
18373         expr_ty expression_var;
18374         if (
18375             (a = expression_rule(p))  // expression
18376             &&
18377             (_literal = _PyPegen_expect_token(p, 53))  // token=':='
18378             &&
18379             (expression_var = expression_rule(p))  // expression
18380         )
18381         {
18382             D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
18383             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use assignment expressions with %s" , _PyPegen_get_expr_name ( a ) );
18384             if (_res == NULL && PyErr_Occurred()) {
18385                 p->error_indicator = 1;
18386                 D(p->level--);
18387                 return NULL;
18388             }
18389             goto done;
18390         }
18391         p->mark = _mark;
18392         D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
18393                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':=' expression"));
18394     }
18395     { // NAME '=' bitwise_or !('=' | ':=')
18396         if (p->error_indicator) {
18397             D(p->level--);
18398             return NULL;
18399         }
18400         D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
18401         Token * _literal;
18402         expr_ty a;
18403         expr_ty b;
18404         if (
18405             (a = _PyPegen_name_token(p))  // NAME
18406             &&
18407             (_literal = _PyPegen_expect_token(p, 22))  // token='='
18408             &&
18409             (b = bitwise_or_rule(p))  // bitwise_or
18410             &&
18411             _PyPegen_lookahead(0, _tmp_146_rule, p)
18412         )
18413         {
18414             D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
18415             _res = p -> in_raw_rule ? NULL : RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
18416             if (_res == NULL && PyErr_Occurred()) {
18417                 p->error_indicator = 1;
18418                 D(p->level--);
18419                 return NULL;
18420             }
18421             goto done;
18422         }
18423         p->mark = _mark;
18424         D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
18425                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
18426     }
18427     { // !(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')
18428         if (p->error_indicator) {
18429             D(p->level--);
18430             return NULL;
18431         }
18432         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 !('=' | ':=')"));
18433         expr_ty a;
18434         Token * b;
18435         expr_ty bitwise_or_var;
18436         if (
18437             _PyPegen_lookahead(0, _tmp_147_rule, p)
18438             &&
18439             (a = bitwise_or_rule(p))  // bitwise_or
18440             &&
18441             (b = _PyPegen_expect_token(p, 22))  // token='='
18442             &&
18443             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
18444             &&
18445             _PyPegen_lookahead(0, _tmp_148_rule, p)
18446         )
18447         {
18448             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 !('=' | ':=')"));
18449             _res = p -> in_raw_rule ? NULL : RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot assign to %s here. Maybe you meant '==' instead of '='?" , _PyPegen_get_expr_name ( a ) );
18450             if (_res == NULL && PyErr_Occurred()) {
18451                 p->error_indicator = 1;
18452                 D(p->level--);
18453                 return NULL;
18454             }
18455             goto done;
18456         }
18457         p->mark = _mark;
18458         D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
18459                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')"));
18460     }
18461     _res = NULL;
18462   done:
18463     D(p->level--);
18464     return _res;
18465 }
18466 
18467 // invalid_assignment:
18468 //     | invalid_ann_assign_target ':' expression
18469 //     | star_named_expression ',' star_named_expressions* ':' expression
18470 //     | expression ':' expression
18471 //     | ((star_targets '='))* star_expressions '='
18472 //     | ((star_targets '='))* yield_expr '='
18473 //     | star_expressions augassign (yield_expr | star_expressions)
18474 static void *
invalid_assignment_rule(Parser * p)18475 invalid_assignment_rule(Parser *p)
18476 {
18477     D(p->level++);
18478     if (p->error_indicator) {
18479         D(p->level--);
18480         return NULL;
18481     }
18482     void * _res = NULL;
18483     int _mark = p->mark;
18484     { // invalid_ann_assign_target ':' expression
18485         if (p->error_indicator) {
18486             D(p->level--);
18487             return NULL;
18488         }
18489         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_ann_assign_target ':' expression"));
18490         Token * _literal;
18491         expr_ty a;
18492         expr_ty expression_var;
18493         if (
18494             (a = invalid_ann_assign_target_rule(p))  // invalid_ann_assign_target
18495             &&
18496             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
18497             &&
18498             (expression_var = expression_rule(p))  // expression
18499         )
18500         {
18501             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_ann_assign_target ':' expression"));
18502             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not %s) can be annotated" , _PyPegen_get_expr_name ( a ) );
18503             if (_res == NULL && PyErr_Occurred()) {
18504                 p->error_indicator = 1;
18505                 D(p->level--);
18506                 return NULL;
18507             }
18508             goto done;
18509         }
18510         p->mark = _mark;
18511         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
18512                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_ann_assign_target ':' expression"));
18513     }
18514     { // star_named_expression ',' star_named_expressions* ':' expression
18515         if (p->error_indicator) {
18516             D(p->level--);
18517             return NULL;
18518         }
18519         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
18520         Token * _literal;
18521         Token * _literal_1;
18522         asdl_seq * _loop0_149_var;
18523         expr_ty a;
18524         expr_ty expression_var;
18525         if (
18526             (a = star_named_expression_rule(p))  // star_named_expression
18527             &&
18528             (_literal = _PyPegen_expect_token(p, 12))  // token=','
18529             &&
18530             (_loop0_149_var = _loop0_149_rule(p))  // star_named_expressions*
18531             &&
18532             (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
18533             &&
18534             (expression_var = expression_rule(p))  // expression
18535         )
18536         {
18537             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
18538             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
18539             if (_res == NULL && PyErr_Occurred()) {
18540                 p->error_indicator = 1;
18541                 D(p->level--);
18542                 return NULL;
18543             }
18544             goto done;
18545         }
18546         p->mark = _mark;
18547         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
18548                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
18549     }
18550     { // expression ':' expression
18551         if (p->error_indicator) {
18552             D(p->level--);
18553             return NULL;
18554         }
18555         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
18556         Token * _literal;
18557         expr_ty a;
18558         expr_ty expression_var;
18559         if (
18560             (a = expression_rule(p))  // expression
18561             &&
18562             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
18563             &&
18564             (expression_var = expression_rule(p))  // expression
18565         )
18566         {
18567             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
18568             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
18569             if (_res == NULL && PyErr_Occurred()) {
18570                 p->error_indicator = 1;
18571                 D(p->level--);
18572                 return NULL;
18573             }
18574             goto done;
18575         }
18576         p->mark = _mark;
18577         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
18578                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
18579     }
18580     { // ((star_targets '='))* star_expressions '='
18581         if (p->error_indicator) {
18582             D(p->level--);
18583             return NULL;
18584         }
18585         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
18586         Token * _literal;
18587         asdl_seq * _loop0_150_var;
18588         expr_ty a;
18589         if (
18590             (_loop0_150_var = _loop0_150_rule(p))  // ((star_targets '='))*
18591             &&
18592             (a = star_expressions_rule(p))  // star_expressions
18593             &&
18594             (_literal = _PyPegen_expect_token(p, 22))  // token='='
18595         )
18596         {
18597             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
18598             _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( STAR_TARGETS , a );
18599             if (_res == NULL && PyErr_Occurred()) {
18600                 p->error_indicator = 1;
18601                 D(p->level--);
18602                 return NULL;
18603             }
18604             goto done;
18605         }
18606         p->mark = _mark;
18607         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
18608                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* star_expressions '='"));
18609     }
18610     { // ((star_targets '='))* yield_expr '='
18611         if (p->error_indicator) {
18612             D(p->level--);
18613             return NULL;
18614         }
18615         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
18616         Token * _literal;
18617         asdl_seq * _loop0_151_var;
18618         expr_ty a;
18619         if (
18620             (_loop0_151_var = _loop0_151_rule(p))  // ((star_targets '='))*
18621             &&
18622             (a = yield_expr_rule(p))  // yield_expr
18623             &&
18624             (_literal = _PyPegen_expect_token(p, 22))  // token='='
18625         )
18626         {
18627             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
18628             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "assignment to yield expression not possible" );
18629             if (_res == NULL && PyErr_Occurred()) {
18630                 p->error_indicator = 1;
18631                 D(p->level--);
18632                 return NULL;
18633             }
18634             goto done;
18635         }
18636         p->mark = _mark;
18637         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
18638                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* yield_expr '='"));
18639     }
18640     { // star_expressions augassign (yield_expr | star_expressions)
18641         if (p->error_indicator) {
18642             D(p->level--);
18643             return NULL;
18644         }
18645         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)"));
18646         void *_tmp_152_var;
18647         expr_ty a;
18648         AugOperator* augassign_var;
18649         if (
18650             (a = star_expressions_rule(p))  // star_expressions
18651             &&
18652             (augassign_var = augassign_rule(p))  // augassign
18653             &&
18654             (_tmp_152_var = _tmp_152_rule(p))  // yield_expr | star_expressions
18655         )
18656         {
18657             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)"));
18658             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "'%s' is an illegal expression for augmented assignment" , _PyPegen_get_expr_name ( a ) );
18659             if (_res == NULL && PyErr_Occurred()) {
18660                 p->error_indicator = 1;
18661                 D(p->level--);
18662                 return NULL;
18663             }
18664             goto done;
18665         }
18666         p->mark = _mark;
18667         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
18668                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)"));
18669     }
18670     _res = NULL;
18671   done:
18672     D(p->level--);
18673     return _res;
18674 }
18675 
18676 // invalid_ann_assign_target: list | tuple | '(' invalid_ann_assign_target ')'
18677 static expr_ty
invalid_ann_assign_target_rule(Parser * p)18678 invalid_ann_assign_target_rule(Parser *p)
18679 {
18680     D(p->level++);
18681     if (p->error_indicator) {
18682         D(p->level--);
18683         return NULL;
18684     }
18685     expr_ty _res = NULL;
18686     int _mark = p->mark;
18687     { // list
18688         if (p->error_indicator) {
18689             D(p->level--);
18690             return NULL;
18691         }
18692         D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
18693         expr_ty list_var;
18694         if (
18695             (list_var = list_rule(p))  // list
18696         )
18697         {
18698             D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
18699             _res = list_var;
18700             goto done;
18701         }
18702         p->mark = _mark;
18703         D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
18704                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
18705     }
18706     { // tuple
18707         if (p->error_indicator) {
18708             D(p->level--);
18709             return NULL;
18710         }
18711         D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
18712         expr_ty tuple_var;
18713         if (
18714             (tuple_var = tuple_rule(p))  // tuple
18715         )
18716         {
18717             D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
18718             _res = tuple_var;
18719             goto done;
18720         }
18721         p->mark = _mark;
18722         D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
18723                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
18724     }
18725     { // '(' invalid_ann_assign_target ')'
18726         if (p->error_indicator) {
18727             D(p->level--);
18728             return NULL;
18729         }
18730         D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
18731         Token * _literal;
18732         Token * _literal_1;
18733         expr_ty a;
18734         if (
18735             (_literal = _PyPegen_expect_token(p, 7))  // token='('
18736             &&
18737             (a = invalid_ann_assign_target_rule(p))  // invalid_ann_assign_target
18738             &&
18739             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
18740         )
18741         {
18742             D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
18743             _res = a;
18744             if (_res == NULL && PyErr_Occurred()) {
18745                 p->error_indicator = 1;
18746                 D(p->level--);
18747                 return NULL;
18748             }
18749             goto done;
18750         }
18751         p->mark = _mark;
18752         D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
18753                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
18754     }
18755     _res = NULL;
18756   done:
18757     D(p->level--);
18758     return _res;
18759 }
18760 
18761 // invalid_del_stmt: 'del' star_expressions
18762 static void *
invalid_del_stmt_rule(Parser * p)18763 invalid_del_stmt_rule(Parser *p)
18764 {
18765     D(p->level++);
18766     if (p->error_indicator) {
18767         D(p->level--);
18768         return NULL;
18769     }
18770     void * _res = NULL;
18771     int _mark = p->mark;
18772     { // 'del' star_expressions
18773         if (p->error_indicator) {
18774             D(p->level--);
18775             return NULL;
18776         }
18777         D(fprintf(stderr, "%*c> invalid_del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' star_expressions"));
18778         Token * _keyword;
18779         expr_ty a;
18780         if (
18781             (_keyword = _PyPegen_expect_token(p, 600))  // token='del'
18782             &&
18783             (a = star_expressions_rule(p))  // star_expressions
18784         )
18785         {
18786             D(fprintf(stderr, "%*c+ invalid_del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' star_expressions"));
18787             _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( DEL_TARGETS , a );
18788             if (_res == NULL && PyErr_Occurred()) {
18789                 p->error_indicator = 1;
18790                 D(p->level--);
18791                 return NULL;
18792             }
18793             goto done;
18794         }
18795         p->mark = _mark;
18796         D(fprintf(stderr, "%*c%s invalid_del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
18797                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' star_expressions"));
18798     }
18799     _res = NULL;
18800   done:
18801     D(p->level--);
18802     return _res;
18803 }
18804 
18805 // invalid_block: NEWLINE !INDENT
18806 static void *
invalid_block_rule(Parser * p)18807 invalid_block_rule(Parser *p)
18808 {
18809     D(p->level++);
18810     if (p->error_indicator) {
18811         D(p->level--);
18812         return NULL;
18813     }
18814     void * _res = NULL;
18815     int _mark = p->mark;
18816     { // NEWLINE !INDENT
18817         if (p->error_indicator) {
18818             D(p->level--);
18819             return NULL;
18820         }
18821         D(fprintf(stderr, "%*c> invalid_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
18822         Token * newline_var;
18823         if (
18824             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
18825             &&
18826             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
18827         )
18828         {
18829             D(fprintf(stderr, "%*c+ invalid_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
18830             _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
18831             if (_res == NULL && PyErr_Occurred()) {
18832                 p->error_indicator = 1;
18833                 D(p->level--);
18834                 return NULL;
18835             }
18836             goto done;
18837         }
18838         p->mark = _mark;
18839         D(fprintf(stderr, "%*c%s invalid_block[%d-%d]: %s failed!\n", p->level, ' ',
18840                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE !INDENT"));
18841     }
18842     _res = NULL;
18843   done:
18844     D(p->level--);
18845     return _res;
18846 }
18847 
18848 // invalid_comprehension:
18849 //     | ('[' | '(' | '{') starred_expression for_if_clauses
18850 //     | ('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses
18851 //     | ('[' | '{') star_named_expression ',' for_if_clauses
18852 static void *
invalid_comprehension_rule(Parser * p)18853 invalid_comprehension_rule(Parser *p)
18854 {
18855     D(p->level++);
18856     if (p->error_indicator) {
18857         D(p->level--);
18858         return NULL;
18859     }
18860     void * _res = NULL;
18861     int _mark = p->mark;
18862     { // ('[' | '(' | '{') starred_expression for_if_clauses
18863         if (p->error_indicator) {
18864             D(p->level--);
18865             return NULL;
18866         }
18867         D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
18868         void *_tmp_153_var;
18869         expr_ty a;
18870         asdl_comprehension_seq* for_if_clauses_var;
18871         if (
18872             (_tmp_153_var = _tmp_153_rule(p))  // '[' | '(' | '{'
18873             &&
18874             (a = starred_expression_rule(p))  // starred_expression
18875             &&
18876             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
18877         )
18878         {
18879             D(fprintf(stderr, "%*c+ invalid_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
18880             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable unpacking cannot be used in comprehension" );
18881             if (_res == NULL && PyErr_Occurred()) {
18882                 p->error_indicator = 1;
18883                 D(p->level--);
18884                 return NULL;
18885             }
18886             goto done;
18887         }
18888         p->mark = _mark;
18889         D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
18890                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
18891     }
18892     { // ('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses
18893         if (p->error_indicator) {
18894             D(p->level--);
18895             return NULL;
18896         }
18897         D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses"));
18898         Token * _literal;
18899         void *_tmp_154_var;
18900         expr_ty a;
18901         asdl_expr_seq* b;
18902         asdl_comprehension_seq* for_if_clauses_var;
18903         if (
18904             (_tmp_154_var = _tmp_154_rule(p))  // '[' | '{'
18905             &&
18906             (a = star_named_expression_rule(p))  // star_named_expression
18907             &&
18908             (_literal = _PyPegen_expect_token(p, 12))  // token=','
18909             &&
18910             (b = star_named_expressions_rule(p))  // star_named_expressions
18911             &&
18912             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
18913         )
18914         {
18915             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"));
18916             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , PyPegen_last_item ( b , expr_ty ) , "did you forget parentheses around the comprehension target?" );
18917             if (_res == NULL && PyErr_Occurred()) {
18918                 p->error_indicator = 1;
18919                 D(p->level--);
18920                 return NULL;
18921             }
18922             goto done;
18923         }
18924         p->mark = _mark;
18925         D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
18926                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses"));
18927     }
18928     { // ('[' | '{') star_named_expression ',' for_if_clauses
18929         if (p->error_indicator) {
18930             D(p->level--);
18931             return NULL;
18932         }
18933         D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
18934         void *_tmp_155_var;
18935         expr_ty a;
18936         Token * b;
18937         asdl_comprehension_seq* for_if_clauses_var;
18938         if (
18939             (_tmp_155_var = _tmp_155_rule(p))  // '[' | '{'
18940             &&
18941             (a = star_named_expression_rule(p))  // star_named_expression
18942             &&
18943             (b = _PyPegen_expect_token(p, 12))  // token=','
18944             &&
18945             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
18946         )
18947         {
18948             D(fprintf(stderr, "%*c+ invalid_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
18949             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "did you forget parentheses around the comprehension target?" );
18950             if (_res == NULL && PyErr_Occurred()) {
18951                 p->error_indicator = 1;
18952                 D(p->level--);
18953                 return NULL;
18954             }
18955             goto done;
18956         }
18957         p->mark = _mark;
18958         D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
18959                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
18960     }
18961     _res = NULL;
18962   done:
18963     D(p->level--);
18964     return _res;
18965 }
18966 
18967 // invalid_dict_comprehension: '{' '**' bitwise_or for_if_clauses '}'
18968 static void *
invalid_dict_comprehension_rule(Parser * p)18969 invalid_dict_comprehension_rule(Parser *p)
18970 {
18971     D(p->level++);
18972     if (p->error_indicator) {
18973         D(p->level--);
18974         return NULL;
18975     }
18976     void * _res = NULL;
18977     int _mark = p->mark;
18978     { // '{' '**' bitwise_or for_if_clauses '}'
18979         if (p->error_indicator) {
18980             D(p->level--);
18981             return NULL;
18982         }
18983         D(fprintf(stderr, "%*c> invalid_dict_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
18984         Token * _literal;
18985         Token * _literal_1;
18986         Token * a;
18987         expr_ty bitwise_or_var;
18988         asdl_comprehension_seq* for_if_clauses_var;
18989         if (
18990             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
18991             &&
18992             (a = _PyPegen_expect_token(p, 35))  // token='**'
18993             &&
18994             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
18995             &&
18996             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
18997             &&
18998             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
18999         )
19000         {
19001             D(fprintf(stderr, "%*c+ invalid_dict_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
19002             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "dict unpacking cannot be used in dict comprehension" );
19003             if (_res == NULL && PyErr_Occurred()) {
19004                 p->error_indicator = 1;
19005                 D(p->level--);
19006                 return NULL;
19007             }
19008             goto done;
19009         }
19010         p->mark = _mark;
19011         D(fprintf(stderr, "%*c%s invalid_dict_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
19012                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
19013     }
19014     _res = NULL;
19015   done:
19016     D(p->level--);
19017     return _res;
19018 }
19019 
19020 // invalid_parameters:
19021 //     | param_no_default* invalid_parameters_helper param_no_default
19022 //     | param_no_default* '(' param_no_default+ ','? ')'
19023 static void *
invalid_parameters_rule(Parser * p)19024 invalid_parameters_rule(Parser *p)
19025 {
19026     D(p->level++);
19027     if (p->error_indicator) {
19028         D(p->level--);
19029         return NULL;
19030     }
19031     void * _res = NULL;
19032     int _mark = p->mark;
19033     { // param_no_default* invalid_parameters_helper param_no_default
19034         if (p->error_indicator) {
19035             D(p->level--);
19036             return NULL;
19037         }
19038         D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* invalid_parameters_helper param_no_default"));
19039         asdl_seq * _loop0_156_var;
19040         arg_ty a;
19041         void *invalid_parameters_helper_var;
19042         if (
19043             (_loop0_156_var = _loop0_156_rule(p))  // param_no_default*
19044             &&
19045             (invalid_parameters_helper_var = invalid_parameters_helper_rule(p))  // invalid_parameters_helper
19046             &&
19047             (a = param_no_default_rule(p))  // param_no_default
19048         )
19049         {
19050             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"));
19051             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "non-default argument follows default argument" );
19052             if (_res == NULL && PyErr_Occurred()) {
19053                 p->error_indicator = 1;
19054                 D(p->level--);
19055                 return NULL;
19056             }
19057             goto done;
19058         }
19059         p->mark = _mark;
19060         D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
19061                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* invalid_parameters_helper param_no_default"));
19062     }
19063     { // param_no_default* '(' param_no_default+ ','? ')'
19064         if (p->error_indicator) {
19065             D(p->level--);
19066             return NULL;
19067         }
19068         D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
19069         asdl_seq * _loop0_157_var;
19070         asdl_seq * _loop1_158_var;
19071         void *_opt_var;
19072         UNUSED(_opt_var); // Silence compiler warnings
19073         Token * a;
19074         Token * b;
19075         if (
19076             (_loop0_157_var = _loop0_157_rule(p))  // param_no_default*
19077             &&
19078             (a = _PyPegen_expect_token(p, 7))  // token='('
19079             &&
19080             (_loop1_158_var = _loop1_158_rule(p))  // param_no_default+
19081             &&
19082             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
19083             &&
19084             (b = _PyPegen_expect_token(p, 8))  // token=')'
19085         )
19086         {
19087             D(fprintf(stderr, "%*c+ invalid_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
19088             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "Function parameters cannot be parenthesized" );
19089             if (_res == NULL && PyErr_Occurred()) {
19090                 p->error_indicator = 1;
19091                 D(p->level--);
19092                 return NULL;
19093             }
19094             goto done;
19095         }
19096         p->mark = _mark;
19097         D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
19098                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* '(' param_no_default+ ','? ')'"));
19099     }
19100     _res = NULL;
19101   done:
19102     D(p->level--);
19103     return _res;
19104 }
19105 
19106 // invalid_parameters_helper: slash_with_default | param_with_default+
19107 static void *
invalid_parameters_helper_rule(Parser * p)19108 invalid_parameters_helper_rule(Parser *p)
19109 {
19110     D(p->level++);
19111     if (p->error_indicator) {
19112         D(p->level--);
19113         return NULL;
19114     }
19115     void * _res = NULL;
19116     int _mark = p->mark;
19117     { // slash_with_default
19118         if (p->error_indicator) {
19119             D(p->level--);
19120             return NULL;
19121         }
19122         D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
19123         SlashWithDefault* a;
19124         if (
19125             (a = slash_with_default_rule(p))  // slash_with_default
19126         )
19127         {
19128             D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
19129             _res = _PyPegen_singleton_seq ( p , a );
19130             if (_res == NULL && PyErr_Occurred()) {
19131                 p->error_indicator = 1;
19132                 D(p->level--);
19133                 return NULL;
19134             }
19135             goto done;
19136         }
19137         p->mark = _mark;
19138         D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
19139                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
19140     }
19141     { // param_with_default+
19142         if (p->error_indicator) {
19143             D(p->level--);
19144             return NULL;
19145         }
19146         D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
19147         asdl_seq * _loop1_159_var;
19148         if (
19149             (_loop1_159_var = _loop1_159_rule(p))  // param_with_default+
19150         )
19151         {
19152             D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
19153             _res = _loop1_159_var;
19154             goto done;
19155         }
19156         p->mark = _mark;
19157         D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
19158                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+"));
19159     }
19160     _res = NULL;
19161   done:
19162     D(p->level--);
19163     return _res;
19164 }
19165 
19166 // invalid_lambda_parameters:
19167 //     | lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default
19168 //     | lambda_param_no_default* '(' ','.lambda_param+ ','? ')'
19169 static void *
invalid_lambda_parameters_rule(Parser * p)19170 invalid_lambda_parameters_rule(Parser *p)
19171 {
19172     D(p->level++);
19173     if (p->error_indicator) {
19174         D(p->level--);
19175         return NULL;
19176     }
19177     void * _res = NULL;
19178     int _mark = p->mark;
19179     { // lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default
19180         if (p->error_indicator) {
19181             D(p->level--);
19182             return NULL;
19183         }
19184         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"));
19185         asdl_seq * _loop0_160_var;
19186         arg_ty a;
19187         void *invalid_lambda_parameters_helper_var;
19188         if (
19189             (_loop0_160_var = _loop0_160_rule(p))  // lambda_param_no_default*
19190             &&
19191             (invalid_lambda_parameters_helper_var = invalid_lambda_parameters_helper_rule(p))  // invalid_lambda_parameters_helper
19192             &&
19193             (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
19194         )
19195         {
19196             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"));
19197             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "non-default argument follows default argument" );
19198             if (_res == NULL && PyErr_Occurred()) {
19199                 p->error_indicator = 1;
19200                 D(p->level--);
19201                 return NULL;
19202             }
19203             goto done;
19204         }
19205         p->mark = _mark;
19206         D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
19207                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default"));
19208     }
19209     { // lambda_param_no_default* '(' ','.lambda_param+ ','? ')'
19210         if (p->error_indicator) {
19211             D(p->level--);
19212             return NULL;
19213         }
19214         D(fprintf(stderr, "%*c> invalid_lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
19215         asdl_seq * _gather_162_var;
19216         asdl_seq * _loop0_161_var;
19217         void *_opt_var;
19218         UNUSED(_opt_var); // Silence compiler warnings
19219         Token * a;
19220         Token * b;
19221         if (
19222             (_loop0_161_var = _loop0_161_rule(p))  // lambda_param_no_default*
19223             &&
19224             (a = _PyPegen_expect_token(p, 7))  // token='('
19225             &&
19226             (_gather_162_var = _gather_162_rule(p))  // ','.lambda_param+
19227             &&
19228             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
19229             &&
19230             (b = _PyPegen_expect_token(p, 8))  // token=')'
19231         )
19232         {
19233             D(fprintf(stderr, "%*c+ invalid_lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
19234             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "Lambda expression parameters cannot be parenthesized" );
19235             if (_res == NULL && PyErr_Occurred()) {
19236                 p->error_indicator = 1;
19237                 D(p->level--);
19238                 return NULL;
19239             }
19240             goto done;
19241         }
19242         p->mark = _mark;
19243         D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
19244                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* '(' ','.lambda_param+ ','? ')'"));
19245     }
19246     _res = NULL;
19247   done:
19248     D(p->level--);
19249     return _res;
19250 }
19251 
19252 // invalid_lambda_parameters_helper:
19253 //     | lambda_slash_with_default
19254 //     | lambda_param_with_default+
19255 static void *
invalid_lambda_parameters_helper_rule(Parser * p)19256 invalid_lambda_parameters_helper_rule(Parser *p)
19257 {
19258     D(p->level++);
19259     if (p->error_indicator) {
19260         D(p->level--);
19261         return NULL;
19262     }
19263     void * _res = NULL;
19264     int _mark = p->mark;
19265     { // lambda_slash_with_default
19266         if (p->error_indicator) {
19267             D(p->level--);
19268             return NULL;
19269         }
19270         D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
19271         SlashWithDefault* a;
19272         if (
19273             (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
19274         )
19275         {
19276             D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
19277             _res = _PyPegen_singleton_seq ( p , a );
19278             if (_res == NULL && PyErr_Occurred()) {
19279                 p->error_indicator = 1;
19280                 D(p->level--);
19281                 return NULL;
19282             }
19283             goto done;
19284         }
19285         p->mark = _mark;
19286         D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
19287                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
19288     }
19289     { // lambda_param_with_default+
19290         if (p->error_indicator) {
19291             D(p->level--);
19292             return NULL;
19293         }
19294         D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
19295         asdl_seq * _loop1_164_var;
19296         if (
19297             (_loop1_164_var = _loop1_164_rule(p))  // lambda_param_with_default+
19298         )
19299         {
19300             D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
19301             _res = _loop1_164_var;
19302             goto done;
19303         }
19304         p->mark = _mark;
19305         D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
19306                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+"));
19307     }
19308     _res = NULL;
19309   done:
19310     D(p->level--);
19311     return _res;
19312 }
19313 
19314 // invalid_star_etc: '*' (')' | ',' (')' | '**')) | '*' ',' TYPE_COMMENT
19315 static void *
invalid_star_etc_rule(Parser * p)19316 invalid_star_etc_rule(Parser *p)
19317 {
19318     D(p->level++);
19319     if (p->error_indicator) {
19320         D(p->level--);
19321         return NULL;
19322     }
19323     void * _res = NULL;
19324     int _mark = p->mark;
19325     { // '*' (')' | ',' (')' | '**'))
19326         if (p->error_indicator) {
19327             D(p->level--);
19328             return NULL;
19329         }
19330         D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
19331         void *_tmp_165_var;
19332         Token * a;
19333         if (
19334             (a = _PyPegen_expect_token(p, 16))  // token='*'
19335             &&
19336             (_tmp_165_var = _tmp_165_rule(p))  // ')' | ',' (')' | '**')
19337         )
19338         {
19339             D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
19340             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "named arguments must follow bare *" );
19341             if (_res == NULL && PyErr_Occurred()) {
19342                 p->error_indicator = 1;
19343                 D(p->level--);
19344                 return NULL;
19345             }
19346             goto done;
19347         }
19348         p->mark = _mark;
19349         D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
19350                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
19351     }
19352     { // '*' ',' TYPE_COMMENT
19353         if (p->error_indicator) {
19354             D(p->level--);
19355             return NULL;
19356         }
19357         D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
19358         Token * _literal;
19359         Token * _literal_1;
19360         Token * type_comment_var;
19361         if (
19362             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
19363             &&
19364             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
19365             &&
19366             (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
19367         )
19368         {
19369             D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
19370             _res = RAISE_SYNTAX_ERROR ( "bare * has associated type comment" );
19371             if (_res == NULL && PyErr_Occurred()) {
19372                 p->error_indicator = 1;
19373                 D(p->level--);
19374                 return NULL;
19375             }
19376             goto done;
19377         }
19378         p->mark = _mark;
19379         D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
19380                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' TYPE_COMMENT"));
19381     }
19382     _res = NULL;
19383   done:
19384     D(p->level--);
19385     return _res;
19386 }
19387 
19388 // invalid_lambda_star_etc: '*' (':' | ',' (':' | '**'))
19389 static void *
invalid_lambda_star_etc_rule(Parser * p)19390 invalid_lambda_star_etc_rule(Parser *p)
19391 {
19392     D(p->level++);
19393     if (p->error_indicator) {
19394         D(p->level--);
19395         return NULL;
19396     }
19397     void * _res = NULL;
19398     int _mark = p->mark;
19399     { // '*' (':' | ',' (':' | '**'))
19400         if (p->error_indicator) {
19401             D(p->level--);
19402             return NULL;
19403         }
19404         D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
19405         Token * _literal;
19406         void *_tmp_166_var;
19407         if (
19408             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
19409             &&
19410             (_tmp_166_var = _tmp_166_rule(p))  // ':' | ',' (':' | '**')
19411         )
19412         {
19413             D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
19414             _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
19415             if (_res == NULL && PyErr_Occurred()) {
19416                 p->error_indicator = 1;
19417                 D(p->level--);
19418                 return NULL;
19419             }
19420             goto done;
19421         }
19422         p->mark = _mark;
19423         D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
19424                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
19425     }
19426     _res = NULL;
19427   done:
19428     D(p->level--);
19429     return _res;
19430 }
19431 
19432 // invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
19433 static void *
invalid_double_type_comments_rule(Parser * p)19434 invalid_double_type_comments_rule(Parser *p)
19435 {
19436     D(p->level++);
19437     if (p->error_indicator) {
19438         D(p->level--);
19439         return NULL;
19440     }
19441     void * _res = NULL;
19442     int _mark = p->mark;
19443     { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
19444         if (p->error_indicator) {
19445             D(p->level--);
19446             return NULL;
19447         }
19448         D(fprintf(stderr, "%*c> invalid_double_type_comments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
19449         Token * indent_var;
19450         Token * newline_var;
19451         Token * newline_var_1;
19452         Token * type_comment_var;
19453         Token * type_comment_var_1;
19454         if (
19455             (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
19456             &&
19457             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19458             &&
19459             (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
19460             &&
19461             (newline_var_1 = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19462             &&
19463             (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
19464         )
19465         {
19466             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"));
19467             _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
19468             if (_res == NULL && PyErr_Occurred()) {
19469                 p->error_indicator = 1;
19470                 D(p->level--);
19471                 return NULL;
19472             }
19473             goto done;
19474         }
19475         p->mark = _mark;
19476         D(fprintf(stderr, "%*c%s invalid_double_type_comments[%d-%d]: %s failed!\n", p->level, ' ',
19477                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
19478     }
19479     _res = NULL;
19480   done:
19481     D(p->level--);
19482     return _res;
19483 }
19484 
19485 // invalid_with_item: expression 'as' expression &(',' | ')' | ':')
19486 static void *
invalid_with_item_rule(Parser * p)19487 invalid_with_item_rule(Parser *p)
19488 {
19489     D(p->level++);
19490     if (p->error_indicator) {
19491         D(p->level--);
19492         return NULL;
19493     }
19494     void * _res = NULL;
19495     int _mark = p->mark;
19496     { // expression 'as' expression &(',' | ')' | ':')
19497         if (p->error_indicator) {
19498             D(p->level--);
19499             return NULL;
19500         }
19501         D(fprintf(stderr, "%*c> invalid_with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
19502         Token * _keyword;
19503         expr_ty a;
19504         expr_ty expression_var;
19505         if (
19506             (expression_var = expression_rule(p))  // expression
19507             &&
19508             (_keyword = _PyPegen_expect_token(p, 625))  // token='as'
19509             &&
19510             (a = expression_rule(p))  // expression
19511             &&
19512             _PyPegen_lookahead(1, _tmp_167_rule, p)
19513         )
19514         {
19515             D(fprintf(stderr, "%*c+ invalid_with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
19516             _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( STAR_TARGETS , a );
19517             if (_res == NULL && PyErr_Occurred()) {
19518                 p->error_indicator = 1;
19519                 D(p->level--);
19520                 return NULL;
19521             }
19522             goto done;
19523         }
19524         p->mark = _mark;
19525         D(fprintf(stderr, "%*c%s invalid_with_item[%d-%d]: %s failed!\n", p->level, ' ',
19526                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
19527     }
19528     _res = NULL;
19529   done:
19530     D(p->level--);
19531     return _res;
19532 }
19533 
19534 // invalid_for_target: ASYNC? 'for' star_expressions
19535 static void *
invalid_for_target_rule(Parser * p)19536 invalid_for_target_rule(Parser *p)
19537 {
19538     D(p->level++);
19539     if (p->error_indicator) {
19540         D(p->level--);
19541         return NULL;
19542     }
19543     void * _res = NULL;
19544     int _mark = p->mark;
19545     { // ASYNC? 'for' star_expressions
19546         if (p->error_indicator) {
19547             D(p->level--);
19548             return NULL;
19549         }
19550         D(fprintf(stderr, "%*c> invalid_for_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'for' star_expressions"));
19551         Token * _keyword;
19552         void *_opt_var;
19553         UNUSED(_opt_var); // Silence compiler warnings
19554         expr_ty a;
19555         if (
19556             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
19557             &&
19558             (_keyword = _PyPegen_expect_token(p, 633))  // token='for'
19559             &&
19560             (a = star_expressions_rule(p))  // star_expressions
19561         )
19562         {
19563             D(fprintf(stderr, "%*c+ invalid_for_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'for' star_expressions"));
19564             _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( FOR_TARGETS , a );
19565             if (_res == NULL && PyErr_Occurred()) {
19566                 p->error_indicator = 1;
19567                 D(p->level--);
19568                 return NULL;
19569             }
19570             goto done;
19571         }
19572         p->mark = _mark;
19573         D(fprintf(stderr, "%*c%s invalid_for_target[%d-%d]: %s failed!\n", p->level, ' ',
19574                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'for' star_expressions"));
19575     }
19576     _res = NULL;
19577   done:
19578     D(p->level--);
19579     return _res;
19580 }
19581 
19582 // invalid_group: '(' starred_expression ')' | '(' '**' expression ')'
19583 static void *
invalid_group_rule(Parser * p)19584 invalid_group_rule(Parser *p)
19585 {
19586     D(p->level++);
19587     if (p->error_indicator) {
19588         D(p->level--);
19589         return NULL;
19590     }
19591     void * _res = NULL;
19592     int _mark = p->mark;
19593     { // '(' starred_expression ')'
19594         if (p->error_indicator) {
19595             D(p->level--);
19596             return NULL;
19597         }
19598         D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' starred_expression ')'"));
19599         Token * _literal;
19600         Token * _literal_1;
19601         expr_ty a;
19602         if (
19603             (_literal = _PyPegen_expect_token(p, 7))  // token='('
19604             &&
19605             (a = starred_expression_rule(p))  // starred_expression
19606             &&
19607             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19608         )
19609         {
19610             D(fprintf(stderr, "%*c+ invalid_group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' starred_expression ')'"));
19611             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use starred expression here" );
19612             if (_res == NULL && PyErr_Occurred()) {
19613                 p->error_indicator = 1;
19614                 D(p->level--);
19615                 return NULL;
19616             }
19617             goto done;
19618         }
19619         p->mark = _mark;
19620         D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
19621                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' starred_expression ')'"));
19622     }
19623     { // '(' '**' expression ')'
19624         if (p->error_indicator) {
19625             D(p->level--);
19626             return NULL;
19627         }
19628         D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' '**' expression ')'"));
19629         Token * _literal;
19630         Token * _literal_1;
19631         Token * a;
19632         expr_ty expression_var;
19633         if (
19634             (_literal = _PyPegen_expect_token(p, 7))  // token='('
19635             &&
19636             (a = _PyPegen_expect_token(p, 35))  // token='**'
19637             &&
19638             (expression_var = expression_rule(p))  // expression
19639             &&
19640             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19641         )
19642         {
19643             D(fprintf(stderr, "%*c+ invalid_group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' '**' expression ')'"));
19644             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use double starred expression here" );
19645             if (_res == NULL && PyErr_Occurred()) {
19646                 p->error_indicator = 1;
19647                 D(p->level--);
19648                 return NULL;
19649             }
19650             goto done;
19651         }
19652         p->mark = _mark;
19653         D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
19654                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' '**' expression ')'"));
19655     }
19656     _res = NULL;
19657   done:
19658     D(p->level--);
19659     return _res;
19660 }
19661 
19662 // invalid_import_from_targets: import_from_as_names ',' NEWLINE
19663 static void *
invalid_import_from_targets_rule(Parser * p)19664 invalid_import_from_targets_rule(Parser *p)
19665 {
19666     D(p->level++);
19667     if (p->error_indicator) {
19668         D(p->level--);
19669         return NULL;
19670     }
19671     void * _res = NULL;
19672     int _mark = p->mark;
19673     { // import_from_as_names ',' NEWLINE
19674         if (p->error_indicator) {
19675             D(p->level--);
19676             return NULL;
19677         }
19678         D(fprintf(stderr, "%*c> invalid_import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names ',' NEWLINE"));
19679         Token * _literal;
19680         asdl_alias_seq* import_from_as_names_var;
19681         Token * newline_var;
19682         if (
19683             (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
19684             &&
19685             (_literal = _PyPegen_expect_token(p, 12))  // token=','
19686             &&
19687             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19688         )
19689         {
19690             D(fprintf(stderr, "%*c+ invalid_import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names ',' NEWLINE"));
19691             _res = RAISE_SYNTAX_ERROR ( "trailing comma not allowed without surrounding parentheses" );
19692             if (_res == NULL && PyErr_Occurred()) {
19693                 p->error_indicator = 1;
19694                 D(p->level--);
19695                 return NULL;
19696             }
19697             goto done;
19698         }
19699         p->mark = _mark;
19700         D(fprintf(stderr, "%*c%s invalid_import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
19701                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names ',' NEWLINE"));
19702     }
19703     _res = NULL;
19704   done:
19705     D(p->level--);
19706     return _res;
19707 }
19708 
19709 // invalid_with_stmt:
19710 //     | ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'
19711 //     | ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'
19712 static void *
invalid_with_stmt_rule(Parser * p)19713 invalid_with_stmt_rule(Parser *p)
19714 {
19715     D(p->level++);
19716     if (p->error_indicator) {
19717         D(p->level--);
19718         return NULL;
19719     }
19720     void * _res = NULL;
19721     int _mark = p->mark;
19722     { // ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'
19723         if (p->error_indicator) {
19724             D(p->level--);
19725             return NULL;
19726         }
19727         D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'"));
19728         asdl_seq * _gather_168_var;
19729         Token * _keyword;
19730         Token * _literal;
19731         void *_opt_var;
19732         UNUSED(_opt_var); // Silence compiler warnings
19733         if (
19734             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
19735             &&
19736             (_keyword = _PyPegen_expect_token(p, 609))  // token='with'
19737             &&
19738             (_gather_168_var = _gather_168_rule(p))  // ','.(expression ['as' star_target])+
19739             &&
19740             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
19741         )
19742         {
19743             D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'"));
19744             _res = _PyPegen_dummy_name(p, _opt_var, _keyword, _gather_168_var, _literal);
19745             goto done;
19746         }
19747         p->mark = _mark;
19748         D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
19749                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'"));
19750     }
19751     { // ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'
19752         if (p->error_indicator) {
19753             D(p->level--);
19754             return NULL;
19755         }
19756         D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'"));
19757         asdl_seq * _gather_170_var;
19758         Token * _keyword;
19759         Token * _literal;
19760         Token * _literal_1;
19761         Token * _literal_2;
19762         void *_opt_var;
19763         UNUSED(_opt_var); // Silence compiler warnings
19764         void *_opt_var_1;
19765         UNUSED(_opt_var_1); // Silence compiler warnings
19766         if (
19767             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
19768             &&
19769             (_keyword = _PyPegen_expect_token(p, 609))  // token='with'
19770             &&
19771             (_literal = _PyPegen_expect_token(p, 7))  // token='('
19772             &&
19773             (_gather_170_var = _gather_170_rule(p))  // ','.(expressions ['as' star_target])+
19774             &&
19775             (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
19776             &&
19777             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19778             &&
19779             (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
19780         )
19781         {
19782             D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'"));
19783             _res = _PyPegen_dummy_name(p, _opt_var, _keyword, _literal, _gather_170_var, _opt_var_1, _literal_1, _literal_2);
19784             goto done;
19785         }
19786         p->mark = _mark;
19787         D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
19788                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'"));
19789     }
19790     _res = NULL;
19791   done:
19792     D(p->level--);
19793     return _res;
19794 }
19795 
19796 // invalid_with_stmt_indent:
19797 //     | ASYNC? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT
19798 //     | ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT
19799 static void *
invalid_with_stmt_indent_rule(Parser * p)19800 invalid_with_stmt_indent_rule(Parser *p)
19801 {
19802     D(p->level++);
19803     if (p->error_indicator) {
19804         D(p->level--);
19805         return NULL;
19806     }
19807     void * _res = NULL;
19808     int _mark = p->mark;
19809     { // ASYNC? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT
19810         if (p->error_indicator) {
19811             D(p->level--);
19812             return NULL;
19813         }
19814         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"));
19815         asdl_seq * _gather_172_var;
19816         Token * _literal;
19817         void *_opt_var;
19818         UNUSED(_opt_var); // Silence compiler warnings
19819         Token * a;
19820         Token * newline_var;
19821         if (
19822             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
19823             &&
19824             (a = _PyPegen_expect_token(p, 609))  // token='with'
19825             &&
19826             (_gather_172_var = _gather_172_rule(p))  // ','.(expression ['as' star_target])+
19827             &&
19828             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
19829             &&
19830             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19831             &&
19832             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
19833         )
19834         {
19835             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"));
19836             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'with' statement on line %d" , a -> lineno );
19837             if (_res == NULL && PyErr_Occurred()) {
19838                 p->error_indicator = 1;
19839                 D(p->level--);
19840                 return NULL;
19841             }
19842             goto done;
19843         }
19844         p->mark = _mark;
19845         D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
19846                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT"));
19847     }
19848     { // ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT
19849         if (p->error_indicator) {
19850             D(p->level--);
19851             return NULL;
19852         }
19853         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"));
19854         asdl_seq * _gather_174_var;
19855         Token * _literal;
19856         Token * _literal_1;
19857         Token * _literal_2;
19858         void *_opt_var;
19859         UNUSED(_opt_var); // Silence compiler warnings
19860         void *_opt_var_1;
19861         UNUSED(_opt_var_1); // Silence compiler warnings
19862         Token * a;
19863         Token * newline_var;
19864         if (
19865             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
19866             &&
19867             (a = _PyPegen_expect_token(p, 609))  // token='with'
19868             &&
19869             (_literal = _PyPegen_expect_token(p, 7))  // token='('
19870             &&
19871             (_gather_174_var = _gather_174_rule(p))  // ','.(expressions ['as' star_target])+
19872             &&
19873             (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
19874             &&
19875             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19876             &&
19877             (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
19878             &&
19879             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19880             &&
19881             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
19882         )
19883         {
19884             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"));
19885             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'with' statement on line %d" , a -> lineno );
19886             if (_res == NULL && PyErr_Occurred()) {
19887                 p->error_indicator = 1;
19888                 D(p->level--);
19889                 return NULL;
19890             }
19891             goto done;
19892         }
19893         p->mark = _mark;
19894         D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
19895                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT"));
19896     }
19897     _res = NULL;
19898   done:
19899     D(p->level--);
19900     return _res;
19901 }
19902 
19903 // invalid_try_stmt: 'try' ':' NEWLINE !INDENT | 'try' ':' block !('except' | 'finally')
19904 static void *
invalid_try_stmt_rule(Parser * p)19905 invalid_try_stmt_rule(Parser *p)
19906 {
19907     D(p->level++);
19908     if (p->error_indicator) {
19909         D(p->level--);
19910         return NULL;
19911     }
19912     void * _res = NULL;
19913     int _mark = p->mark;
19914     { // 'try' ':' NEWLINE !INDENT
19915         if (p->error_indicator) {
19916             D(p->level--);
19917             return NULL;
19918         }
19919         D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
19920         Token * _literal;
19921         Token * a;
19922         Token * newline_var;
19923         if (
19924             (a = _PyPegen_expect_token(p, 612))  // token='try'
19925             &&
19926             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
19927             &&
19928             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19929             &&
19930             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
19931         )
19932         {
19933             D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
19934             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'try' statement on line %d" , a -> lineno );
19935             if (_res == NULL && PyErr_Occurred()) {
19936                 p->error_indicator = 1;
19937                 D(p->level--);
19938                 return NULL;
19939             }
19940             goto done;
19941         }
19942         p->mark = _mark;
19943         D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
19944                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
19945     }
19946     { // 'try' ':' block !('except' | 'finally')
19947         if (p->error_indicator) {
19948             D(p->level--);
19949             return NULL;
19950         }
19951         D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
19952         Token * _keyword;
19953         Token * _literal;
19954         asdl_stmt_seq* block_var;
19955         if (
19956             (_keyword = _PyPegen_expect_token(p, 612))  // token='try'
19957             &&
19958             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
19959             &&
19960             (block_var = block_rule(p))  // block
19961             &&
19962             _PyPegen_lookahead(0, _tmp_176_rule, p)
19963         )
19964         {
19965             D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
19966             _res = RAISE_SYNTAX_ERROR ( "expected 'except' or 'finally' block" );
19967             if (_res == NULL && PyErr_Occurred()) {
19968                 p->error_indicator = 1;
19969                 D(p->level--);
19970                 return NULL;
19971             }
19972             goto done;
19973         }
19974         p->mark = _mark;
19975         D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
19976                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
19977     }
19978     _res = NULL;
19979   done:
19980     D(p->level--);
19981     return _res;
19982 }
19983 
19984 // invalid_except_stmt:
19985 //     | 'except' expression ',' expressions ['as' NAME] ':'
19986 //     | 'except' expression ['as' NAME] NEWLINE
19987 //     | 'except' NEWLINE
19988 static void *
invalid_except_stmt_rule(Parser * p)19989 invalid_except_stmt_rule(Parser *p)
19990 {
19991     D(p->level++);
19992     if (p->error_indicator) {
19993         D(p->level--);
19994         return NULL;
19995     }
19996     void * _res = NULL;
19997     int _mark = p->mark;
19998     { // 'except' expression ',' expressions ['as' NAME] ':'
19999         if (p->error_indicator) {
20000             D(p->level--);
20001             return NULL;
20002         }
20003         D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ',' expressions ['as' NAME] ':'"));
20004         Token * _keyword;
20005         Token * _literal;
20006         Token * _literal_1;
20007         void *_opt_var;
20008         UNUSED(_opt_var); // Silence compiler warnings
20009         expr_ty a;
20010         expr_ty expressions_var;
20011         if (
20012             (_keyword = _PyPegen_expect_token(p, 623))  // token='except'
20013             &&
20014             (a = expression_rule(p))  // expression
20015             &&
20016             (_literal = _PyPegen_expect_token(p, 12))  // token=','
20017             &&
20018             (expressions_var = expressions_rule(p))  // expressions
20019             &&
20020             (_opt_var = _tmp_177_rule(p), !p->error_indicator)  // ['as' NAME]
20021             &&
20022             (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
20023         )
20024         {
20025             D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ',' expressions ['as' NAME] ':'"));
20026             _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "multiple exception types must be parenthesized" );
20027             if (_res == NULL && PyErr_Occurred()) {
20028                 p->error_indicator = 1;
20029                 D(p->level--);
20030                 return NULL;
20031             }
20032             goto done;
20033         }
20034         p->mark = _mark;
20035         D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20036                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ',' expressions ['as' NAME] ':'"));
20037     }
20038     { // 'except' expression ['as' NAME] NEWLINE
20039         if (p->error_indicator) {
20040             D(p->level--);
20041             return NULL;
20042         }
20043         D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
20044         void *_opt_var;
20045         UNUSED(_opt_var); // Silence compiler warnings
20046         Token * a;
20047         expr_ty expression_var;
20048         Token * newline_var;
20049         if (
20050             (a = _PyPegen_expect_token(p, 623))  // token='except'
20051             &&
20052             (expression_var = expression_rule(p))  // expression
20053             &&
20054             (_opt_var = _tmp_178_rule(p), !p->error_indicator)  // ['as' NAME]
20055             &&
20056             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20057         )
20058         {
20059             D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
20060             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
20061             if (_res == NULL && PyErr_Occurred()) {
20062                 p->error_indicator = 1;
20063                 D(p->level--);
20064                 return NULL;
20065             }
20066             goto done;
20067         }
20068         p->mark = _mark;
20069         D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20070                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
20071     }
20072     { // 'except' NEWLINE
20073         if (p->error_indicator) {
20074             D(p->level--);
20075             return NULL;
20076         }
20077         D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
20078         Token * a;
20079         Token * newline_var;
20080         if (
20081             (a = _PyPegen_expect_token(p, 623))  // token='except'
20082             &&
20083             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20084         )
20085         {
20086             D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
20087             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
20088             if (_res == NULL && PyErr_Occurred()) {
20089                 p->error_indicator = 1;
20090                 D(p->level--);
20091                 return NULL;
20092             }
20093             goto done;
20094         }
20095         p->mark = _mark;
20096         D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20097                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' NEWLINE"));
20098     }
20099     _res = NULL;
20100   done:
20101     D(p->level--);
20102     return _res;
20103 }
20104 
20105 // invalid_finally_stmt: 'finally' ':' NEWLINE !INDENT
20106 static void *
invalid_finally_stmt_rule(Parser * p)20107 invalid_finally_stmt_rule(Parser *p)
20108 {
20109     D(p->level++);
20110     if (p->error_indicator) {
20111         D(p->level--);
20112         return NULL;
20113     }
20114     void * _res = NULL;
20115     int _mark = p->mark;
20116     { // 'finally' ':' NEWLINE !INDENT
20117         if (p->error_indicator) {
20118             D(p->level--);
20119             return NULL;
20120         }
20121         D(fprintf(stderr, "%*c> invalid_finally_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
20122         Token * _literal;
20123         Token * a;
20124         Token * newline_var;
20125         if (
20126             (a = _PyPegen_expect_token(p, 620))  // token='finally'
20127             &&
20128             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20129             &&
20130             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20131             &&
20132             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20133         )
20134         {
20135             D(fprintf(stderr, "%*c+ invalid_finally_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
20136             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'finally' statement on line %d" , a -> lineno );
20137             if (_res == NULL && PyErr_Occurred()) {
20138                 p->error_indicator = 1;
20139                 D(p->level--);
20140                 return NULL;
20141             }
20142             goto done;
20143         }
20144         p->mark = _mark;
20145         D(fprintf(stderr, "%*c%s invalid_finally_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20146                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
20147     }
20148     _res = NULL;
20149   done:
20150     D(p->level--);
20151     return _res;
20152 }
20153 
20154 // invalid_except_stmt_indent:
20155 //     | 'except' expression ['as' NAME] ':' NEWLINE !INDENT
20156 //     | 'except' ':' NEWLINE !INDENT
20157 static void *
invalid_except_stmt_indent_rule(Parser * p)20158 invalid_except_stmt_indent_rule(Parser *p)
20159 {
20160     D(p->level++);
20161     if (p->error_indicator) {
20162         D(p->level--);
20163         return NULL;
20164     }
20165     void * _res = NULL;
20166     int _mark = p->mark;
20167     { // 'except' expression ['as' NAME] ':' NEWLINE !INDENT
20168         if (p->error_indicator) {
20169             D(p->level--);
20170             return NULL;
20171         }
20172         D(fprintf(stderr, "%*c> invalid_except_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
20173         Token * _literal;
20174         void *_opt_var;
20175         UNUSED(_opt_var); // Silence compiler warnings
20176         Token * a;
20177         expr_ty expression_var;
20178         Token * newline_var;
20179         if (
20180             (a = _PyPegen_expect_token(p, 623))  // token='except'
20181             &&
20182             (expression_var = expression_rule(p))  // expression
20183             &&
20184             (_opt_var = _tmp_179_rule(p), !p->error_indicator)  // ['as' NAME]
20185             &&
20186             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20187             &&
20188             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20189             &&
20190             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20191         )
20192         {
20193             D(fprintf(stderr, "%*c+ invalid_except_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
20194             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except' statement on line %d" , a -> lineno );
20195             if (_res == NULL && PyErr_Occurred()) {
20196                 p->error_indicator = 1;
20197                 D(p->level--);
20198                 return NULL;
20199             }
20200             goto done;
20201         }
20202         p->mark = _mark;
20203         D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
20204                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
20205     }
20206     { // 'except' ':' NEWLINE !INDENT
20207         if (p->error_indicator) {
20208             D(p->level--);
20209             return NULL;
20210         }
20211         D(fprintf(stderr, "%*c> invalid_except_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
20212         Token * _literal;
20213         Token * a;
20214         Token * newline_var;
20215         if (
20216             (a = _PyPegen_expect_token(p, 623))  // token='except'
20217             &&
20218             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20219             &&
20220             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20221             &&
20222             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20223         )
20224         {
20225             D(fprintf(stderr, "%*c+ invalid_except_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
20226             _res = RAISE_SYNTAX_ERROR ( "expected an indented block after except statement on line %d" , a -> lineno );
20227             if (_res == NULL && PyErr_Occurred()) {
20228                 p->error_indicator = 1;
20229                 D(p->level--);
20230                 return NULL;
20231             }
20232             goto done;
20233         }
20234         p->mark = _mark;
20235         D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
20236                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
20237     }
20238     _res = NULL;
20239   done:
20240     D(p->level--);
20241     return _res;
20242 }
20243 
20244 // invalid_match_stmt:
20245 //     | "match" subject_expr !':'
20246 //     | "match" subject_expr ':' NEWLINE !INDENT
20247 static void *
invalid_match_stmt_rule(Parser * p)20248 invalid_match_stmt_rule(Parser *p)
20249 {
20250     D(p->level++);
20251     if (p->error_indicator) {
20252         D(p->level--);
20253         return NULL;
20254     }
20255     void * _res = NULL;
20256     int _mark = p->mark;
20257     { // "match" subject_expr !':'
20258         if (p->error_indicator) {
20259             D(p->level--);
20260             return NULL;
20261         }
20262         D(fprintf(stderr, "%*c> invalid_match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr !':'"));
20263         expr_ty _keyword;
20264         expr_ty subject_expr_var;
20265         if (
20266             (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
20267             &&
20268             (subject_expr_var = subject_expr_rule(p))  // subject_expr
20269             &&
20270             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 11)  // token=':'
20271         )
20272         {
20273             D(fprintf(stderr, "%*c+ invalid_match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr !':'"));
20274             _res = CHECK_VERSION ( void* , 10 , "Pattern matching is" , RAISE_SYNTAX_ERROR ( "expected ':'" ) );
20275             if (_res == NULL && PyErr_Occurred()) {
20276                 p->error_indicator = 1;
20277                 D(p->level--);
20278                 return NULL;
20279             }
20280             goto done;
20281         }
20282         p->mark = _mark;
20283         D(fprintf(stderr, "%*c%s invalid_match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20284                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr !':'"));
20285     }
20286     { // "match" subject_expr ':' NEWLINE !INDENT
20287         if (p->error_indicator) {
20288             D(p->level--);
20289             return NULL;
20290         }
20291         D(fprintf(stderr, "%*c> invalid_match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
20292         Token * _literal;
20293         expr_ty a;
20294         Token * newline_var;
20295         expr_ty subject;
20296         if (
20297             (a = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
20298             &&
20299             (subject = subject_expr_rule(p))  // subject_expr
20300             &&
20301             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20302             &&
20303             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20304             &&
20305             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20306         )
20307         {
20308             D(fprintf(stderr, "%*c+ invalid_match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
20309             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'match' statement on line %d" , a -> lineno );
20310             if (_res == NULL && PyErr_Occurred()) {
20311                 p->error_indicator = 1;
20312                 D(p->level--);
20313                 return NULL;
20314             }
20315             goto done;
20316         }
20317         p->mark = _mark;
20318         D(fprintf(stderr, "%*c%s invalid_match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20319                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
20320     }
20321     _res = NULL;
20322   done:
20323     D(p->level--);
20324     return _res;
20325 }
20326 
20327 // invalid_case_block:
20328 //     | "case" patterns guard? !':'
20329 //     | "case" patterns guard? ':' NEWLINE !INDENT
20330 static void *
invalid_case_block_rule(Parser * p)20331 invalid_case_block_rule(Parser *p)
20332 {
20333     D(p->level++);
20334     if (p->error_indicator) {
20335         D(p->level--);
20336         return NULL;
20337     }
20338     void * _res = NULL;
20339     int _mark = p->mark;
20340     { // "case" patterns guard? !':'
20341         if (p->error_indicator) {
20342             D(p->level--);
20343             return NULL;
20344         }
20345         D(fprintf(stderr, "%*c> invalid_case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? !':'"));
20346         expr_ty _keyword;
20347         void *_opt_var;
20348         UNUSED(_opt_var); // Silence compiler warnings
20349         pattern_ty patterns_var;
20350         if (
20351             (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
20352             &&
20353             (patterns_var = patterns_rule(p))  // patterns
20354             &&
20355             (_opt_var = guard_rule(p), !p->error_indicator)  // guard?
20356             &&
20357             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 11)  // token=':'
20358         )
20359         {
20360             D(fprintf(stderr, "%*c+ invalid_case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? !':'"));
20361             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
20362             if (_res == NULL && PyErr_Occurred()) {
20363                 p->error_indicator = 1;
20364                 D(p->level--);
20365                 return NULL;
20366             }
20367             goto done;
20368         }
20369         p->mark = _mark;
20370         D(fprintf(stderr, "%*c%s invalid_case_block[%d-%d]: %s failed!\n", p->level, ' ',
20371                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? !':'"));
20372     }
20373     { // "case" patterns guard? ':' NEWLINE !INDENT
20374         if (p->error_indicator) {
20375             D(p->level--);
20376             return NULL;
20377         }
20378         D(fprintf(stderr, "%*c> invalid_case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
20379         Token * _literal;
20380         void *_opt_var;
20381         UNUSED(_opt_var); // Silence compiler warnings
20382         expr_ty a;
20383         Token * newline_var;
20384         pattern_ty patterns_var;
20385         if (
20386             (a = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
20387             &&
20388             (patterns_var = patterns_rule(p))  // patterns
20389             &&
20390             (_opt_var = guard_rule(p), !p->error_indicator)  // guard?
20391             &&
20392             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20393             &&
20394             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20395             &&
20396             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20397         )
20398         {
20399             D(fprintf(stderr, "%*c+ invalid_case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
20400             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'case' statement on line %d" , a -> lineno );
20401             if (_res == NULL && PyErr_Occurred()) {
20402                 p->error_indicator = 1;
20403                 D(p->level--);
20404                 return NULL;
20405             }
20406             goto done;
20407         }
20408         p->mark = _mark;
20409         D(fprintf(stderr, "%*c%s invalid_case_block[%d-%d]: %s failed!\n", p->level, ' ',
20410                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
20411     }
20412     _res = NULL;
20413   done:
20414     D(p->level--);
20415     return _res;
20416 }
20417 
20418 // invalid_as_pattern: or_pattern 'as' "_" | or_pattern 'as' !NAME expression
20419 static void *
invalid_as_pattern_rule(Parser * p)20420 invalid_as_pattern_rule(Parser *p)
20421 {
20422     D(p->level++);
20423     if (p->error_indicator) {
20424         D(p->level--);
20425         return NULL;
20426     }
20427     void * _res = NULL;
20428     int _mark = p->mark;
20429     { // or_pattern 'as' "_"
20430         if (p->error_indicator) {
20431             D(p->level--);
20432             return NULL;
20433         }
20434         D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\""));
20435         Token * _keyword;
20436         expr_ty a;
20437         pattern_ty or_pattern_var;
20438         if (
20439             (or_pattern_var = or_pattern_rule(p))  // or_pattern
20440             &&
20441             (_keyword = _PyPegen_expect_token(p, 625))  // token='as'
20442             &&
20443             (a = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
20444         )
20445         {
20446             D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\""));
20447             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use '_' as a target" );
20448             if (_res == NULL && PyErr_Occurred()) {
20449                 p->error_indicator = 1;
20450                 D(p->level--);
20451                 return NULL;
20452             }
20453             goto done;
20454         }
20455         p->mark = _mark;
20456         D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
20457                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' \"_\""));
20458     }
20459     { // or_pattern 'as' !NAME expression
20460         if (p->error_indicator) {
20461             D(p->level--);
20462             return NULL;
20463         }
20464         D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' !NAME expression"));
20465         Token * _keyword;
20466         expr_ty a;
20467         pattern_ty or_pattern_var;
20468         if (
20469             (or_pattern_var = or_pattern_rule(p))  // or_pattern
20470             &&
20471             (_keyword = _PyPegen_expect_token(p, 625))  // token='as'
20472             &&
20473             _PyPegen_lookahead_with_name(0, _PyPegen_name_token, p)
20474             &&
20475             (a = expression_rule(p))  // expression
20476         )
20477         {
20478             D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' !NAME expression"));
20479             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "invalid pattern target" );
20480             if (_res == NULL && PyErr_Occurred()) {
20481                 p->error_indicator = 1;
20482                 D(p->level--);
20483                 return NULL;
20484             }
20485             goto done;
20486         }
20487         p->mark = _mark;
20488         D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
20489                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' !NAME expression"));
20490     }
20491     _res = NULL;
20492   done:
20493     D(p->level--);
20494     return _res;
20495 }
20496 
20497 // invalid_class_pattern: name_or_attr '(' invalid_class_argument_pattern
20498 static void *
invalid_class_pattern_rule(Parser * p)20499 invalid_class_pattern_rule(Parser *p)
20500 {
20501     D(p->level++);
20502     if (p->error_indicator) {
20503         D(p->level--);
20504         return NULL;
20505     }
20506     void * _res = NULL;
20507     int _mark = p->mark;
20508     { // name_or_attr '(' invalid_class_argument_pattern
20509         if (p->error_indicator) {
20510             D(p->level--);
20511             return NULL;
20512         }
20513         D(fprintf(stderr, "%*c> invalid_class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
20514         Token * _literal;
20515         asdl_pattern_seq* a;
20516         expr_ty name_or_attr_var;
20517         if (
20518             (name_or_attr_var = name_or_attr_rule(p))  // name_or_attr
20519             &&
20520             (_literal = _PyPegen_expect_token(p, 7))  // token='('
20521             &&
20522             (a = invalid_class_argument_pattern_rule(p))  // invalid_class_argument_pattern
20523         )
20524         {
20525             D(fprintf(stderr, "%*c+ invalid_class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
20526             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( PyPegen_first_item ( a , pattern_ty ) , PyPegen_last_item ( a , pattern_ty ) , "positional patterns follow keyword patterns" );
20527             if (_res == NULL && PyErr_Occurred()) {
20528                 p->error_indicator = 1;
20529                 D(p->level--);
20530                 return NULL;
20531             }
20532             goto done;
20533         }
20534         p->mark = _mark;
20535         D(fprintf(stderr, "%*c%s invalid_class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
20536                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
20537     }
20538     _res = NULL;
20539   done:
20540     D(p->level--);
20541     return _res;
20542 }
20543 
20544 // invalid_class_argument_pattern:
20545 //     | [positional_patterns ','] keyword_patterns ',' positional_patterns
20546 static asdl_pattern_seq*
invalid_class_argument_pattern_rule(Parser * p)20547 invalid_class_argument_pattern_rule(Parser *p)
20548 {
20549     D(p->level++);
20550     if (p->error_indicator) {
20551         D(p->level--);
20552         return NULL;
20553     }
20554     asdl_pattern_seq* _res = NULL;
20555     int _mark = p->mark;
20556     { // [positional_patterns ','] keyword_patterns ',' positional_patterns
20557         if (p->error_indicator) {
20558             D(p->level--);
20559             return NULL;
20560         }
20561         D(fprintf(stderr, "%*c> invalid_class_argument_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
20562         Token * _literal;
20563         void *_opt_var;
20564         UNUSED(_opt_var); // Silence compiler warnings
20565         asdl_pattern_seq* a;
20566         asdl_seq* keyword_patterns_var;
20567         if (
20568             (_opt_var = _tmp_180_rule(p), !p->error_indicator)  // [positional_patterns ',']
20569             &&
20570             (keyword_patterns_var = keyword_patterns_rule(p))  // keyword_patterns
20571             &&
20572             (_literal = _PyPegen_expect_token(p, 12))  // token=','
20573             &&
20574             (a = positional_patterns_rule(p))  // positional_patterns
20575         )
20576         {
20577             D(fprintf(stderr, "%*c+ invalid_class_argument_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
20578             _res = a;
20579             if (_res == NULL && PyErr_Occurred()) {
20580                 p->error_indicator = 1;
20581                 D(p->level--);
20582                 return NULL;
20583             }
20584             goto done;
20585         }
20586         p->mark = _mark;
20587         D(fprintf(stderr, "%*c%s invalid_class_argument_pattern[%d-%d]: %s failed!\n", p->level, ' ',
20588                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
20589     }
20590     _res = NULL;
20591   done:
20592     D(p->level--);
20593     return _res;
20594 }
20595 
20596 // invalid_if_stmt:
20597 //     | 'if' named_expression NEWLINE
20598 //     | 'if' named_expression ':' NEWLINE !INDENT
20599 static void *
invalid_if_stmt_rule(Parser * p)20600 invalid_if_stmt_rule(Parser *p)
20601 {
20602     D(p->level++);
20603     if (p->error_indicator) {
20604         D(p->level--);
20605         return NULL;
20606     }
20607     void * _res = NULL;
20608     int _mark = p->mark;
20609     { // 'if' named_expression NEWLINE
20610         if (p->error_indicator) {
20611             D(p->level--);
20612             return NULL;
20613         }
20614         D(fprintf(stderr, "%*c> invalid_if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression NEWLINE"));
20615         Token * _keyword;
20616         expr_ty named_expression_var;
20617         Token * newline_var;
20618         if (
20619             (_keyword = _PyPegen_expect_token(p, 627))  // token='if'
20620             &&
20621             (named_expression_var = named_expression_rule(p))  // named_expression
20622             &&
20623             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20624         )
20625         {
20626             D(fprintf(stderr, "%*c+ invalid_if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression NEWLINE"));
20627             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
20628             if (_res == NULL && PyErr_Occurred()) {
20629                 p->error_indicator = 1;
20630                 D(p->level--);
20631                 return NULL;
20632             }
20633             goto done;
20634         }
20635         p->mark = _mark;
20636         D(fprintf(stderr, "%*c%s invalid_if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20637                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression NEWLINE"));
20638     }
20639     { // 'if' named_expression ':' NEWLINE !INDENT
20640         if (p->error_indicator) {
20641             D(p->level--);
20642             return NULL;
20643         }
20644         D(fprintf(stderr, "%*c> invalid_if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
20645         Token * _literal;
20646         Token * a;
20647         expr_ty a_1;
20648         Token * newline_var;
20649         if (
20650             (a = _PyPegen_expect_token(p, 627))  // token='if'
20651             &&
20652             (a_1 = named_expression_rule(p))  // named_expression
20653             &&
20654             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20655             &&
20656             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20657             &&
20658             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20659         )
20660         {
20661             D(fprintf(stderr, "%*c+ invalid_if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
20662             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'if' statement on line %d" , a -> lineno );
20663             if (_res == NULL && PyErr_Occurred()) {
20664                 p->error_indicator = 1;
20665                 D(p->level--);
20666                 return NULL;
20667             }
20668             goto done;
20669         }
20670         p->mark = _mark;
20671         D(fprintf(stderr, "%*c%s invalid_if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20672                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
20673     }
20674     _res = NULL;
20675   done:
20676     D(p->level--);
20677     return _res;
20678 }
20679 
20680 // invalid_elif_stmt:
20681 //     | 'elif' named_expression NEWLINE
20682 //     | 'elif' named_expression ':' NEWLINE !INDENT
20683 static void *
invalid_elif_stmt_rule(Parser * p)20684 invalid_elif_stmt_rule(Parser *p)
20685 {
20686     D(p->level++);
20687     if (p->error_indicator) {
20688         D(p->level--);
20689         return NULL;
20690     }
20691     void * _res = NULL;
20692     int _mark = p->mark;
20693     { // 'elif' named_expression NEWLINE
20694         if (p->error_indicator) {
20695             D(p->level--);
20696             return NULL;
20697         }
20698         D(fprintf(stderr, "%*c> invalid_elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression NEWLINE"));
20699         Token * _keyword;
20700         expr_ty named_expression_var;
20701         Token * newline_var;
20702         if (
20703             (_keyword = _PyPegen_expect_token(p, 629))  // token='elif'
20704             &&
20705             (named_expression_var = named_expression_rule(p))  // named_expression
20706             &&
20707             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20708         )
20709         {
20710             D(fprintf(stderr, "%*c+ invalid_elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression NEWLINE"));
20711             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
20712             if (_res == NULL && PyErr_Occurred()) {
20713                 p->error_indicator = 1;
20714                 D(p->level--);
20715                 return NULL;
20716             }
20717             goto done;
20718         }
20719         p->mark = _mark;
20720         D(fprintf(stderr, "%*c%s invalid_elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20721                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression NEWLINE"));
20722     }
20723     { // 'elif' named_expression ':' NEWLINE !INDENT
20724         if (p->error_indicator) {
20725             D(p->level--);
20726             return NULL;
20727         }
20728         D(fprintf(stderr, "%*c> invalid_elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
20729         Token * _literal;
20730         Token * a;
20731         expr_ty named_expression_var;
20732         Token * newline_var;
20733         if (
20734             (a = _PyPegen_expect_token(p, 629))  // token='elif'
20735             &&
20736             (named_expression_var = named_expression_rule(p))  // named_expression
20737             &&
20738             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20739             &&
20740             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20741             &&
20742             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20743         )
20744         {
20745             D(fprintf(stderr, "%*c+ invalid_elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
20746             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'elif' statement on line %d" , a -> lineno );
20747             if (_res == NULL && PyErr_Occurred()) {
20748                 p->error_indicator = 1;
20749                 D(p->level--);
20750                 return NULL;
20751             }
20752             goto done;
20753         }
20754         p->mark = _mark;
20755         D(fprintf(stderr, "%*c%s invalid_elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20756                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
20757     }
20758     _res = NULL;
20759   done:
20760     D(p->level--);
20761     return _res;
20762 }
20763 
20764 // invalid_else_stmt: 'else' ':' NEWLINE !INDENT
20765 static void *
invalid_else_stmt_rule(Parser * p)20766 invalid_else_stmt_rule(Parser *p)
20767 {
20768     D(p->level++);
20769     if (p->error_indicator) {
20770         D(p->level--);
20771         return NULL;
20772     }
20773     void * _res = NULL;
20774     int _mark = p->mark;
20775     { // 'else' ':' NEWLINE !INDENT
20776         if (p->error_indicator) {
20777             D(p->level--);
20778             return NULL;
20779         }
20780         D(fprintf(stderr, "%*c> invalid_else_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
20781         Token * _literal;
20782         Token * a;
20783         Token * newline_var;
20784         if (
20785             (a = _PyPegen_expect_token(p, 630))  // token='else'
20786             &&
20787             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20788             &&
20789             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20790             &&
20791             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20792         )
20793         {
20794             D(fprintf(stderr, "%*c+ invalid_else_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
20795             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'else' statement on line %d" , a -> lineno );
20796             if (_res == NULL && PyErr_Occurred()) {
20797                 p->error_indicator = 1;
20798                 D(p->level--);
20799                 return NULL;
20800             }
20801             goto done;
20802         }
20803         p->mark = _mark;
20804         D(fprintf(stderr, "%*c%s invalid_else_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20805                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
20806     }
20807     _res = NULL;
20808   done:
20809     D(p->level--);
20810     return _res;
20811 }
20812 
20813 // invalid_while_stmt:
20814 //     | 'while' named_expression NEWLINE
20815 //     | 'while' named_expression ':' NEWLINE !INDENT
20816 static void *
invalid_while_stmt_rule(Parser * p)20817 invalid_while_stmt_rule(Parser *p)
20818 {
20819     D(p->level++);
20820     if (p->error_indicator) {
20821         D(p->level--);
20822         return NULL;
20823     }
20824     void * _res = NULL;
20825     int _mark = p->mark;
20826     { // 'while' named_expression NEWLINE
20827         if (p->error_indicator) {
20828             D(p->level--);
20829             return NULL;
20830         }
20831         D(fprintf(stderr, "%*c> invalid_while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression NEWLINE"));
20832         Token * _keyword;
20833         expr_ty named_expression_var;
20834         Token * newline_var;
20835         if (
20836             (_keyword = _PyPegen_expect_token(p, 632))  // token='while'
20837             &&
20838             (named_expression_var = named_expression_rule(p))  // named_expression
20839             &&
20840             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20841         )
20842         {
20843             D(fprintf(stderr, "%*c+ invalid_while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression NEWLINE"));
20844             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
20845             if (_res == NULL && PyErr_Occurred()) {
20846                 p->error_indicator = 1;
20847                 D(p->level--);
20848                 return NULL;
20849             }
20850             goto done;
20851         }
20852         p->mark = _mark;
20853         D(fprintf(stderr, "%*c%s invalid_while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20854                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression NEWLINE"));
20855     }
20856     { // 'while' named_expression ':' NEWLINE !INDENT
20857         if (p->error_indicator) {
20858             D(p->level--);
20859             return NULL;
20860         }
20861         D(fprintf(stderr, "%*c> invalid_while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
20862         Token * _literal;
20863         Token * a;
20864         expr_ty named_expression_var;
20865         Token * newline_var;
20866         if (
20867             (a = _PyPegen_expect_token(p, 632))  // token='while'
20868             &&
20869             (named_expression_var = named_expression_rule(p))  // named_expression
20870             &&
20871             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20872             &&
20873             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20874             &&
20875             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20876         )
20877         {
20878             D(fprintf(stderr, "%*c+ invalid_while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
20879             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'while' statement on line %d" , a -> lineno );
20880             if (_res == NULL && PyErr_Occurred()) {
20881                 p->error_indicator = 1;
20882                 D(p->level--);
20883                 return NULL;
20884             }
20885             goto done;
20886         }
20887         p->mark = _mark;
20888         D(fprintf(stderr, "%*c%s invalid_while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20889                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
20890     }
20891     _res = NULL;
20892   done:
20893     D(p->level--);
20894     return _res;
20895 }
20896 
20897 // invalid_for_stmt: ASYNC? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT
20898 static void *
invalid_for_stmt_rule(Parser * p)20899 invalid_for_stmt_rule(Parser *p)
20900 {
20901     D(p->level++);
20902     if (p->error_indicator) {
20903         D(p->level--);
20904         return NULL;
20905     }
20906     void * _res = NULL;
20907     int _mark = p->mark;
20908     { // ASYNC? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT
20909         if (p->error_indicator) {
20910             D(p->level--);
20911             return NULL;
20912         }
20913         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"));
20914         Token * _keyword;
20915         Token * _literal;
20916         void *_opt_var;
20917         UNUSED(_opt_var); // Silence compiler warnings
20918         Token * a;
20919         Token * newline_var;
20920         expr_ty star_expressions_var;
20921         expr_ty star_targets_var;
20922         if (
20923             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
20924             &&
20925             (a = _PyPegen_expect_token(p, 633))  // token='for'
20926             &&
20927             (star_targets_var = star_targets_rule(p))  // star_targets
20928             &&
20929             (_keyword = _PyPegen_expect_token(p, 634))  // token='in'
20930             &&
20931             (star_expressions_var = star_expressions_rule(p))  // star_expressions
20932             &&
20933             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20934             &&
20935             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20936             &&
20937             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20938         )
20939         {
20940             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"));
20941             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'for' statement on line %d" , a -> lineno );
20942             if (_res == NULL && PyErr_Occurred()) {
20943                 p->error_indicator = 1;
20944                 D(p->level--);
20945                 return NULL;
20946             }
20947             goto done;
20948         }
20949         p->mark = _mark;
20950         D(fprintf(stderr, "%*c%s invalid_for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20951                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT"));
20952     }
20953     _res = NULL;
20954   done:
20955     D(p->level--);
20956     return _res;
20957 }
20958 
20959 // invalid_def_raw:
20960 //     | ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT
20961 static void *
invalid_def_raw_rule(Parser * p)20962 invalid_def_raw_rule(Parser *p)
20963 {
20964     D(p->level++);
20965     if (p->error_indicator) {
20966         D(p->level--);
20967         return NULL;
20968     }
20969     void * _res = NULL;
20970     int _mark = p->mark;
20971     { // ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT
20972         if (p->error_indicator) {
20973             D(p->level--);
20974             return NULL;
20975         }
20976         D(fprintf(stderr, "%*c> invalid_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
20977         Token * _literal;
20978         Token * _literal_1;
20979         Token * _literal_2;
20980         void *_opt_var;
20981         UNUSED(_opt_var); // Silence compiler warnings
20982         void *_opt_var_1;
20983         UNUSED(_opt_var_1); // Silence compiler warnings
20984         void *_opt_var_2;
20985         UNUSED(_opt_var_2); // Silence compiler warnings
20986         Token * a;
20987         expr_ty name_var;
20988         Token * newline_var;
20989         if (
20990             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
20991             &&
20992             (a = _PyPegen_expect_token(p, 635))  // token='def'
20993             &&
20994             (name_var = _PyPegen_name_token(p))  // NAME
20995             &&
20996             (_literal = _PyPegen_expect_token(p, 7))  // token='('
20997             &&
20998             (_opt_var_1 = params_rule(p), !p->error_indicator)  // params?
20999             &&
21000             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
21001             &&
21002             (_opt_var_2 = _tmp_181_rule(p), !p->error_indicator)  // ['->' expression]
21003             &&
21004             (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
21005             &&
21006             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21007             &&
21008             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
21009         )
21010         {
21011             D(fprintf(stderr, "%*c+ invalid_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
21012             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after function definition on line %d" , a -> lineno );
21013             if (_res == NULL && PyErr_Occurred()) {
21014                 p->error_indicator = 1;
21015                 D(p->level--);
21016                 return NULL;
21017             }
21018             goto done;
21019         }
21020         p->mark = _mark;
21021         D(fprintf(stderr, "%*c%s invalid_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
21022                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
21023     }
21024     _res = NULL;
21025   done:
21026     D(p->level--);
21027     return _res;
21028 }
21029 
21030 // invalid_class_def_raw: 'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT
21031 static void *
invalid_class_def_raw_rule(Parser * p)21032 invalid_class_def_raw_rule(Parser *p)
21033 {
21034     D(p->level++);
21035     if (p->error_indicator) {
21036         D(p->level--);
21037         return NULL;
21038     }
21039     void * _res = NULL;
21040     int _mark = p->mark;
21041     { // 'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT
21042         if (p->error_indicator) {
21043             D(p->level--);
21044             return NULL;
21045         }
21046         D(fprintf(stderr, "%*c> invalid_class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT"));
21047         Token * _literal;
21048         void *_opt_var;
21049         UNUSED(_opt_var); // Silence compiler warnings
21050         Token * a;
21051         expr_ty name_var;
21052         Token * newline_var;
21053         if (
21054             (a = _PyPegen_expect_token(p, 636))  // token='class'
21055             &&
21056             (name_var = _PyPegen_name_token(p))  // NAME
21057             &&
21058             (_opt_var = _tmp_182_rule(p), !p->error_indicator)  // ['(' arguments? ')']
21059             &&
21060             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21061             &&
21062             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21063             &&
21064             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
21065         )
21066         {
21067             D(fprintf(stderr, "%*c+ invalid_class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT"));
21068             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after class definition on line %d" , a -> lineno );
21069             if (_res == NULL && PyErr_Occurred()) {
21070                 p->error_indicator = 1;
21071                 D(p->level--);
21072                 return NULL;
21073             }
21074             goto done;
21075         }
21076         p->mark = _mark;
21077         D(fprintf(stderr, "%*c%s invalid_class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
21078                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT"));
21079     }
21080     _res = NULL;
21081   done:
21082     D(p->level--);
21083     return _res;
21084 }
21085 
21086 // invalid_double_starred_kvpairs:
21087 //     | ','.double_starred_kvpair+ ',' invalid_kvpair
21088 //     | expression ':' '*' bitwise_or
21089 //     | expression ':' &('}' | ',')
21090 static void *
invalid_double_starred_kvpairs_rule(Parser * p)21091 invalid_double_starred_kvpairs_rule(Parser *p)
21092 {
21093     D(p->level++);
21094     if (p->error_indicator) {
21095         D(p->level--);
21096         return NULL;
21097     }
21098     void * _res = NULL;
21099     int _mark = p->mark;
21100     { // ','.double_starred_kvpair+ ',' invalid_kvpair
21101         if (p->error_indicator) {
21102             D(p->level--);
21103             return NULL;
21104         }
21105         D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
21106         asdl_seq * _gather_183_var;
21107         Token * _literal;
21108         void *invalid_kvpair_var;
21109         if (
21110             (_gather_183_var = _gather_183_rule(p))  // ','.double_starred_kvpair+
21111             &&
21112             (_literal = _PyPegen_expect_token(p, 12))  // token=','
21113             &&
21114             (invalid_kvpair_var = invalid_kvpair_rule(p))  // invalid_kvpair
21115         )
21116         {
21117             D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
21118             _res = _PyPegen_dummy_name(p, _gather_183_var, _literal, invalid_kvpair_var);
21119             goto done;
21120         }
21121         p->mark = _mark;
21122         D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
21123                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
21124     }
21125     { // expression ':' '*' bitwise_or
21126         if (p->error_indicator) {
21127             D(p->level--);
21128             return NULL;
21129         }
21130         D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
21131         Token * _literal;
21132         Token * a;
21133         expr_ty bitwise_or_var;
21134         expr_ty expression_var;
21135         if (
21136             (expression_var = expression_rule(p))  // expression
21137             &&
21138             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21139             &&
21140             (a = _PyPegen_expect_token(p, 16))  // token='*'
21141             &&
21142             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
21143         )
21144         {
21145             D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
21146             _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "cannot use a starred expression in a dictionary value" );
21147             if (_res == NULL && PyErr_Occurred()) {
21148                 p->error_indicator = 1;
21149                 D(p->level--);
21150                 return NULL;
21151             }
21152             goto done;
21153         }
21154         p->mark = _mark;
21155         D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
21156                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
21157     }
21158     { // expression ':' &('}' | ',')
21159         if (p->error_indicator) {
21160             D(p->level--);
21161             return NULL;
21162         }
21163         D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
21164         Token * a;
21165         expr_ty expression_var;
21166         if (
21167             (expression_var = expression_rule(p))  // expression
21168             &&
21169             (a = _PyPegen_expect_token(p, 11))  // token=':'
21170             &&
21171             _PyPegen_lookahead(1, _tmp_185_rule, p)
21172         )
21173         {
21174             D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
21175             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression expected after dictionary key and ':'" );
21176             if (_res == NULL && PyErr_Occurred()) {
21177                 p->error_indicator = 1;
21178                 D(p->level--);
21179                 return NULL;
21180             }
21181             goto done;
21182         }
21183         p->mark = _mark;
21184         D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
21185                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' &('}' | ',')"));
21186     }
21187     _res = NULL;
21188   done:
21189     D(p->level--);
21190     return _res;
21191 }
21192 
21193 // invalid_kvpair: expression !(':') | expression ':' '*' bitwise_or | expression ':'
21194 static void *
invalid_kvpair_rule(Parser * p)21195 invalid_kvpair_rule(Parser *p)
21196 {
21197     D(p->level++);
21198     if (p->error_indicator) {
21199         D(p->level--);
21200         return NULL;
21201     }
21202     void * _res = NULL;
21203     int _mark = p->mark;
21204     { // expression !(':')
21205         if (p->error_indicator) {
21206             D(p->level--);
21207             return NULL;
21208         }
21209         D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
21210         expr_ty a;
21211         if (
21212             (a = expression_rule(p))  // expression
21213             &&
21214             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 11)  // token=(':')
21215         )
21216         {
21217             D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
21218             _res = RAISE_ERROR_KNOWN_LOCATION ( p , PyExc_SyntaxError , a -> lineno , a -> end_col_offset - 1 , a -> end_lineno , - 1 , "':' expected after dictionary key" );
21219             if (_res == NULL && PyErr_Occurred()) {
21220                 p->error_indicator = 1;
21221                 D(p->level--);
21222                 return NULL;
21223             }
21224             goto done;
21225         }
21226         p->mark = _mark;
21227         D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
21228                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !(':')"));
21229     }
21230     { // expression ':' '*' bitwise_or
21231         if (p->error_indicator) {
21232             D(p->level--);
21233             return NULL;
21234         }
21235         D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
21236         Token * _literal;
21237         Token * a;
21238         expr_ty bitwise_or_var;
21239         expr_ty expression_var;
21240         if (
21241             (expression_var = expression_rule(p))  // expression
21242             &&
21243             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21244             &&
21245             (a = _PyPegen_expect_token(p, 16))  // token='*'
21246             &&
21247             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
21248         )
21249         {
21250             D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
21251             _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "cannot use a starred expression in a dictionary value" );
21252             if (_res == NULL && PyErr_Occurred()) {
21253                 p->error_indicator = 1;
21254                 D(p->level--);
21255                 return NULL;
21256             }
21257             goto done;
21258         }
21259         p->mark = _mark;
21260         D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
21261                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
21262     }
21263     { // expression ':'
21264         if (p->error_indicator) {
21265             D(p->level--);
21266             return NULL;
21267         }
21268         D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':'"));
21269         Token * a;
21270         expr_ty expression_var;
21271         if (
21272             (expression_var = expression_rule(p))  // expression
21273             &&
21274             (a = _PyPegen_expect_token(p, 11))  // token=':'
21275         )
21276         {
21277             D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':'"));
21278             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression expected after dictionary key and ':'" );
21279             if (_res == NULL && PyErr_Occurred()) {
21280                 p->error_indicator = 1;
21281                 D(p->level--);
21282                 return NULL;
21283             }
21284             goto done;
21285         }
21286         p->mark = _mark;
21287         D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
21288                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':'"));
21289     }
21290     _res = NULL;
21291   done:
21292     D(p->level--);
21293     return _res;
21294 }
21295 
21296 // _loop0_1: NEWLINE
21297 static asdl_seq *
_loop0_1_rule(Parser * p)21298 _loop0_1_rule(Parser *p)
21299 {
21300     D(p->level++);
21301     if (p->error_indicator) {
21302         D(p->level--);
21303         return NULL;
21304     }
21305     void *_res = NULL;
21306     int _mark = p->mark;
21307     int _start_mark = p->mark;
21308     void **_children = PyMem_Malloc(sizeof(void *));
21309     if (!_children) {
21310         p->error_indicator = 1;
21311         PyErr_NoMemory();
21312         D(p->level--);
21313         return NULL;
21314     }
21315     Py_ssize_t _children_capacity = 1;
21316     Py_ssize_t _n = 0;
21317     { // NEWLINE
21318         if (p->error_indicator) {
21319             D(p->level--);
21320             return NULL;
21321         }
21322         D(fprintf(stderr, "%*c> _loop0_1[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
21323         Token * newline_var;
21324         while (
21325             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21326         )
21327         {
21328             _res = newline_var;
21329             if (_n == _children_capacity) {
21330                 _children_capacity *= 2;
21331                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21332                 if (!_new_children) {
21333                     p->error_indicator = 1;
21334                     PyErr_NoMemory();
21335                     D(p->level--);
21336                     return NULL;
21337                 }
21338                 _children = _new_children;
21339             }
21340             _children[_n++] = _res;
21341             _mark = p->mark;
21342         }
21343         p->mark = _mark;
21344         D(fprintf(stderr, "%*c%s _loop0_1[%d-%d]: %s failed!\n", p->level, ' ',
21345                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
21346     }
21347     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21348     if (!_seq) {
21349         PyMem_Free(_children);
21350         p->error_indicator = 1;
21351         PyErr_NoMemory();
21352         D(p->level--);
21353         return NULL;
21354     }
21355     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21356     PyMem_Free(_children);
21357     _PyPegen_insert_memo(p, _start_mark, _loop0_1_type, _seq);
21358     D(p->level--);
21359     return _seq;
21360 }
21361 
21362 // _loop0_2: NEWLINE
21363 static asdl_seq *
_loop0_2_rule(Parser * p)21364 _loop0_2_rule(Parser *p)
21365 {
21366     D(p->level++);
21367     if (p->error_indicator) {
21368         D(p->level--);
21369         return NULL;
21370     }
21371     void *_res = NULL;
21372     int _mark = p->mark;
21373     int _start_mark = p->mark;
21374     void **_children = PyMem_Malloc(sizeof(void *));
21375     if (!_children) {
21376         p->error_indicator = 1;
21377         PyErr_NoMemory();
21378         D(p->level--);
21379         return NULL;
21380     }
21381     Py_ssize_t _children_capacity = 1;
21382     Py_ssize_t _n = 0;
21383     { // NEWLINE
21384         if (p->error_indicator) {
21385             D(p->level--);
21386             return NULL;
21387         }
21388         D(fprintf(stderr, "%*c> _loop0_2[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
21389         Token * newline_var;
21390         while (
21391             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21392         )
21393         {
21394             _res = newline_var;
21395             if (_n == _children_capacity) {
21396                 _children_capacity *= 2;
21397                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21398                 if (!_new_children) {
21399                     p->error_indicator = 1;
21400                     PyErr_NoMemory();
21401                     D(p->level--);
21402                     return NULL;
21403                 }
21404                 _children = _new_children;
21405             }
21406             _children[_n++] = _res;
21407             _mark = p->mark;
21408         }
21409         p->mark = _mark;
21410         D(fprintf(stderr, "%*c%s _loop0_2[%d-%d]: %s failed!\n", p->level, ' ',
21411                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
21412     }
21413     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21414     if (!_seq) {
21415         PyMem_Free(_children);
21416         p->error_indicator = 1;
21417         PyErr_NoMemory();
21418         D(p->level--);
21419         return NULL;
21420     }
21421     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21422     PyMem_Free(_children);
21423     _PyPegen_insert_memo(p, _start_mark, _loop0_2_type, _seq);
21424     D(p->level--);
21425     return _seq;
21426 }
21427 
21428 // _loop1_3: statement
21429 static asdl_seq *
_loop1_3_rule(Parser * p)21430 _loop1_3_rule(Parser *p)
21431 {
21432     D(p->level++);
21433     if (p->error_indicator) {
21434         D(p->level--);
21435         return NULL;
21436     }
21437     void *_res = NULL;
21438     int _mark = p->mark;
21439     int _start_mark = p->mark;
21440     void **_children = PyMem_Malloc(sizeof(void *));
21441     if (!_children) {
21442         p->error_indicator = 1;
21443         PyErr_NoMemory();
21444         D(p->level--);
21445         return NULL;
21446     }
21447     Py_ssize_t _children_capacity = 1;
21448     Py_ssize_t _n = 0;
21449     { // statement
21450         if (p->error_indicator) {
21451             D(p->level--);
21452             return NULL;
21453         }
21454         D(fprintf(stderr, "%*c> _loop1_3[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement"));
21455         asdl_stmt_seq* statement_var;
21456         while (
21457             (statement_var = statement_rule(p))  // statement
21458         )
21459         {
21460             _res = statement_var;
21461             if (_n == _children_capacity) {
21462                 _children_capacity *= 2;
21463                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21464                 if (!_new_children) {
21465                     p->error_indicator = 1;
21466                     PyErr_NoMemory();
21467                     D(p->level--);
21468                     return NULL;
21469                 }
21470                 _children = _new_children;
21471             }
21472             _children[_n++] = _res;
21473             _mark = p->mark;
21474         }
21475         p->mark = _mark;
21476         D(fprintf(stderr, "%*c%s _loop1_3[%d-%d]: %s failed!\n", p->level, ' ',
21477                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement"));
21478     }
21479     if (_n == 0 || p->error_indicator) {
21480         PyMem_Free(_children);
21481         D(p->level--);
21482         return NULL;
21483     }
21484     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21485     if (!_seq) {
21486         PyMem_Free(_children);
21487         p->error_indicator = 1;
21488         PyErr_NoMemory();
21489         D(p->level--);
21490         return NULL;
21491     }
21492     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21493     PyMem_Free(_children);
21494     _PyPegen_insert_memo(p, _start_mark, _loop1_3_type, _seq);
21495     D(p->level--);
21496     return _seq;
21497 }
21498 
21499 // _loop0_5: ';' simple_stmt
21500 static asdl_seq *
_loop0_5_rule(Parser * p)21501 _loop0_5_rule(Parser *p)
21502 {
21503     D(p->level++);
21504     if (p->error_indicator) {
21505         D(p->level--);
21506         return NULL;
21507     }
21508     void *_res = NULL;
21509     int _mark = p->mark;
21510     int _start_mark = p->mark;
21511     void **_children = PyMem_Malloc(sizeof(void *));
21512     if (!_children) {
21513         p->error_indicator = 1;
21514         PyErr_NoMemory();
21515         D(p->level--);
21516         return NULL;
21517     }
21518     Py_ssize_t _children_capacity = 1;
21519     Py_ssize_t _n = 0;
21520     { // ';' simple_stmt
21521         if (p->error_indicator) {
21522             D(p->level--);
21523             return NULL;
21524         }
21525         D(fprintf(stderr, "%*c> _loop0_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';' simple_stmt"));
21526         Token * _literal;
21527         stmt_ty elem;
21528         while (
21529             (_literal = _PyPegen_expect_token(p, 13))  // token=';'
21530             &&
21531             (elem = simple_stmt_rule(p))  // simple_stmt
21532         )
21533         {
21534             _res = elem;
21535             if (_res == NULL && PyErr_Occurred()) {
21536                 p->error_indicator = 1;
21537                 PyMem_Free(_children);
21538                 D(p->level--);
21539                 return NULL;
21540             }
21541             if (_n == _children_capacity) {
21542                 _children_capacity *= 2;
21543                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21544                 if (!_new_children) {
21545                     p->error_indicator = 1;
21546                     PyErr_NoMemory();
21547                     D(p->level--);
21548                     return NULL;
21549                 }
21550                 _children = _new_children;
21551             }
21552             _children[_n++] = _res;
21553             _mark = p->mark;
21554         }
21555         p->mark = _mark;
21556         D(fprintf(stderr, "%*c%s _loop0_5[%d-%d]: %s failed!\n", p->level, ' ',
21557                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';' simple_stmt"));
21558     }
21559     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21560     if (!_seq) {
21561         PyMem_Free(_children);
21562         p->error_indicator = 1;
21563         PyErr_NoMemory();
21564         D(p->level--);
21565         return NULL;
21566     }
21567     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21568     PyMem_Free(_children);
21569     _PyPegen_insert_memo(p, _start_mark, _loop0_5_type, _seq);
21570     D(p->level--);
21571     return _seq;
21572 }
21573 
21574 // _gather_4: simple_stmt _loop0_5
21575 static asdl_seq *
_gather_4_rule(Parser * p)21576 _gather_4_rule(Parser *p)
21577 {
21578     D(p->level++);
21579     if (p->error_indicator) {
21580         D(p->level--);
21581         return NULL;
21582     }
21583     asdl_seq * _res = NULL;
21584     int _mark = p->mark;
21585     { // simple_stmt _loop0_5
21586         if (p->error_indicator) {
21587             D(p->level--);
21588             return NULL;
21589         }
21590         D(fprintf(stderr, "%*c> _gather_4[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_5"));
21591         stmt_ty elem;
21592         asdl_seq * seq;
21593         if (
21594             (elem = simple_stmt_rule(p))  // simple_stmt
21595             &&
21596             (seq = _loop0_5_rule(p))  // _loop0_5
21597         )
21598         {
21599             D(fprintf(stderr, "%*c+ _gather_4[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_5"));
21600             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
21601             goto done;
21602         }
21603         p->mark = _mark;
21604         D(fprintf(stderr, "%*c%s _gather_4[%d-%d]: %s failed!\n", p->level, ' ',
21605                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt _loop0_5"));
21606     }
21607     _res = NULL;
21608   done:
21609     D(p->level--);
21610     return _res;
21611 }
21612 
21613 // _tmp_6: 'import' | 'from'
21614 static void *
_tmp_6_rule(Parser * p)21615 _tmp_6_rule(Parser *p)
21616 {
21617     D(p->level++);
21618     if (p->error_indicator) {
21619         D(p->level--);
21620         return NULL;
21621     }
21622     void * _res = NULL;
21623     int _mark = p->mark;
21624     { // 'import'
21625         if (p->error_indicator) {
21626             D(p->level--);
21627             return NULL;
21628         }
21629         D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import'"));
21630         Token * _keyword;
21631         if (
21632             (_keyword = _PyPegen_expect_token(p, 531))  // token='import'
21633         )
21634         {
21635             D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import'"));
21636             _res = _keyword;
21637             goto done;
21638         }
21639         p->mark = _mark;
21640         D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
21641                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import'"));
21642     }
21643     { // 'from'
21644         if (p->error_indicator) {
21645             D(p->level--);
21646             return NULL;
21647         }
21648         D(fprintf(stderr, "%*c> _tmp_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from'"));
21649         Token * _keyword;
21650         if (
21651             (_keyword = _PyPegen_expect_token(p, 569))  // token='from'
21652         )
21653         {
21654             D(fprintf(stderr, "%*c+ _tmp_6[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from'"));
21655             _res = _keyword;
21656             goto done;
21657         }
21658         p->mark = _mark;
21659         D(fprintf(stderr, "%*c%s _tmp_6[%d-%d]: %s failed!\n", p->level, ' ',
21660                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from'"));
21661     }
21662     _res = NULL;
21663   done:
21664     D(p->level--);
21665     return _res;
21666 }
21667 
21668 // _tmp_7: 'def' | '@' | ASYNC
21669 static void *
_tmp_7_rule(Parser * p)21670 _tmp_7_rule(Parser *p)
21671 {
21672     D(p->level++);
21673     if (p->error_indicator) {
21674         D(p->level--);
21675         return NULL;
21676     }
21677     void * _res = NULL;
21678     int _mark = p->mark;
21679     { // 'def'
21680         if (p->error_indicator) {
21681             D(p->level--);
21682             return NULL;
21683         }
21684         D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def'"));
21685         Token * _keyword;
21686         if (
21687             (_keyword = _PyPegen_expect_token(p, 635))  // token='def'
21688         )
21689         {
21690             D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def'"));
21691             _res = _keyword;
21692             goto done;
21693         }
21694         p->mark = _mark;
21695         D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
21696                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def'"));
21697     }
21698     { // '@'
21699         if (p->error_indicator) {
21700             D(p->level--);
21701             return NULL;
21702         }
21703         D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
21704         Token * _literal;
21705         if (
21706             (_literal = _PyPegen_expect_token(p, 49))  // token='@'
21707         )
21708         {
21709             D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
21710             _res = _literal;
21711             goto done;
21712         }
21713         p->mark = _mark;
21714         D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
21715                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
21716     }
21717     { // ASYNC
21718         if (p->error_indicator) {
21719             D(p->level--);
21720             return NULL;
21721         }
21722         D(fprintf(stderr, "%*c> _tmp_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
21723         Token * async_var;
21724         if (
21725             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
21726         )
21727         {
21728             D(fprintf(stderr, "%*c+ _tmp_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
21729             _res = async_var;
21730             goto done;
21731         }
21732         p->mark = _mark;
21733         D(fprintf(stderr, "%*c%s _tmp_7[%d-%d]: %s failed!\n", p->level, ' ',
21734                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
21735     }
21736     _res = NULL;
21737   done:
21738     D(p->level--);
21739     return _res;
21740 }
21741 
21742 // _tmp_8: 'class' | '@'
21743 static void *
_tmp_8_rule(Parser * p)21744 _tmp_8_rule(Parser *p)
21745 {
21746     D(p->level++);
21747     if (p->error_indicator) {
21748         D(p->level--);
21749         return NULL;
21750     }
21751     void * _res = NULL;
21752     int _mark = p->mark;
21753     { // 'class'
21754         if (p->error_indicator) {
21755             D(p->level--);
21756             return NULL;
21757         }
21758         D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class'"));
21759         Token * _keyword;
21760         if (
21761             (_keyword = _PyPegen_expect_token(p, 636))  // token='class'
21762         )
21763         {
21764             D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class'"));
21765             _res = _keyword;
21766             goto done;
21767         }
21768         p->mark = _mark;
21769         D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ',
21770                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class'"));
21771     }
21772     { // '@'
21773         if (p->error_indicator) {
21774             D(p->level--);
21775             return NULL;
21776         }
21777         D(fprintf(stderr, "%*c> _tmp_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
21778         Token * _literal;
21779         if (
21780             (_literal = _PyPegen_expect_token(p, 49))  // token='@'
21781         )
21782         {
21783             D(fprintf(stderr, "%*c+ _tmp_8[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
21784             _res = _literal;
21785             goto done;
21786         }
21787         p->mark = _mark;
21788         D(fprintf(stderr, "%*c%s _tmp_8[%d-%d]: %s failed!\n", p->level, ' ',
21789                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
21790     }
21791     _res = NULL;
21792   done:
21793     D(p->level--);
21794     return _res;
21795 }
21796 
21797 // _tmp_9: 'with' | ASYNC
21798 static void *
_tmp_9_rule(Parser * p)21799 _tmp_9_rule(Parser *p)
21800 {
21801     D(p->level++);
21802     if (p->error_indicator) {
21803         D(p->level--);
21804         return NULL;
21805     }
21806     void * _res = NULL;
21807     int _mark = p->mark;
21808     { // 'with'
21809         if (p->error_indicator) {
21810             D(p->level--);
21811             return NULL;
21812         }
21813         D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with'"));
21814         Token * _keyword;
21815         if (
21816             (_keyword = _PyPegen_expect_token(p, 609))  // token='with'
21817         )
21818         {
21819             D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with'"));
21820             _res = _keyword;
21821             goto done;
21822         }
21823         p->mark = _mark;
21824         D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ',
21825                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with'"));
21826     }
21827     { // ASYNC
21828         if (p->error_indicator) {
21829             D(p->level--);
21830             return NULL;
21831         }
21832         D(fprintf(stderr, "%*c> _tmp_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
21833         Token * async_var;
21834         if (
21835             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
21836         )
21837         {
21838             D(fprintf(stderr, "%*c+ _tmp_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
21839             _res = async_var;
21840             goto done;
21841         }
21842         p->mark = _mark;
21843         D(fprintf(stderr, "%*c%s _tmp_9[%d-%d]: %s failed!\n", p->level, ' ',
21844                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
21845     }
21846     _res = NULL;
21847   done:
21848     D(p->level--);
21849     return _res;
21850 }
21851 
21852 // _tmp_10: 'for' | ASYNC
21853 static void *
_tmp_10_rule(Parser * p)21854 _tmp_10_rule(Parser *p)
21855 {
21856     D(p->level++);
21857     if (p->error_indicator) {
21858         D(p->level--);
21859         return NULL;
21860     }
21861     void * _res = NULL;
21862     int _mark = p->mark;
21863     { // 'for'
21864         if (p->error_indicator) {
21865             D(p->level--);
21866             return NULL;
21867         }
21868         D(fprintf(stderr, "%*c> _tmp_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for'"));
21869         Token * _keyword;
21870         if (
21871             (_keyword = _PyPegen_expect_token(p, 633))  // token='for'
21872         )
21873         {
21874             D(fprintf(stderr, "%*c+ _tmp_10[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for'"));
21875             _res = _keyword;
21876             goto done;
21877         }
21878         p->mark = _mark;
21879         D(fprintf(stderr, "%*c%s _tmp_10[%d-%d]: %s failed!\n", p->level, ' ',
21880                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for'"));
21881     }
21882     { // ASYNC
21883         if (p->error_indicator) {
21884             D(p->level--);
21885             return NULL;
21886         }
21887         D(fprintf(stderr, "%*c> _tmp_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
21888         Token * async_var;
21889         if (
21890             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
21891         )
21892         {
21893             D(fprintf(stderr, "%*c+ _tmp_10[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
21894             _res = async_var;
21895             goto done;
21896         }
21897         p->mark = _mark;
21898         D(fprintf(stderr, "%*c%s _tmp_10[%d-%d]: %s failed!\n", p->level, ' ',
21899                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
21900     }
21901     _res = NULL;
21902   done:
21903     D(p->level--);
21904     return _res;
21905 }
21906 
21907 // _tmp_11: '=' annotated_rhs
21908 static void *
_tmp_11_rule(Parser * p)21909 _tmp_11_rule(Parser *p)
21910 {
21911     D(p->level++);
21912     if (p->error_indicator) {
21913         D(p->level--);
21914         return NULL;
21915     }
21916     void * _res = NULL;
21917     int _mark = p->mark;
21918     { // '=' annotated_rhs
21919         if (p->error_indicator) {
21920             D(p->level--);
21921             return NULL;
21922         }
21923         D(fprintf(stderr, "%*c> _tmp_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
21924         Token * _literal;
21925         expr_ty d;
21926         if (
21927             (_literal = _PyPegen_expect_token(p, 22))  // token='='
21928             &&
21929             (d = annotated_rhs_rule(p))  // annotated_rhs
21930         )
21931         {
21932             D(fprintf(stderr, "%*c+ _tmp_11[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
21933             _res = d;
21934             if (_res == NULL && PyErr_Occurred()) {
21935                 p->error_indicator = 1;
21936                 D(p->level--);
21937                 return NULL;
21938             }
21939             goto done;
21940         }
21941         p->mark = _mark;
21942         D(fprintf(stderr, "%*c%s _tmp_11[%d-%d]: %s failed!\n", p->level, ' ',
21943                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
21944     }
21945     _res = NULL;
21946   done:
21947     D(p->level--);
21948     return _res;
21949 }
21950 
21951 // _tmp_12: '(' single_target ')' | single_subscript_attribute_target
21952 static void *
_tmp_12_rule(Parser * p)21953 _tmp_12_rule(Parser *p)
21954 {
21955     D(p->level++);
21956     if (p->error_indicator) {
21957         D(p->level--);
21958         return NULL;
21959     }
21960     void * _res = NULL;
21961     int _mark = p->mark;
21962     { // '(' single_target ')'
21963         if (p->error_indicator) {
21964             D(p->level--);
21965             return NULL;
21966         }
21967         D(fprintf(stderr, "%*c> _tmp_12[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
21968         Token * _literal;
21969         Token * _literal_1;
21970         expr_ty b;
21971         if (
21972             (_literal = _PyPegen_expect_token(p, 7))  // token='('
21973             &&
21974             (b = single_target_rule(p))  // single_target
21975             &&
21976             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
21977         )
21978         {
21979             D(fprintf(stderr, "%*c+ _tmp_12[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
21980             _res = b;
21981             if (_res == NULL && PyErr_Occurred()) {
21982                 p->error_indicator = 1;
21983                 D(p->level--);
21984                 return NULL;
21985             }
21986             goto done;
21987         }
21988         p->mark = _mark;
21989         D(fprintf(stderr, "%*c%s _tmp_12[%d-%d]: %s failed!\n", p->level, ' ',
21990                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
21991     }
21992     { // single_subscript_attribute_target
21993         if (p->error_indicator) {
21994             D(p->level--);
21995             return NULL;
21996         }
21997         D(fprintf(stderr, "%*c> _tmp_12[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
21998         expr_ty single_subscript_attribute_target_var;
21999         if (
22000             (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
22001         )
22002         {
22003             D(fprintf(stderr, "%*c+ _tmp_12[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
22004             _res = single_subscript_attribute_target_var;
22005             goto done;
22006         }
22007         p->mark = _mark;
22008         D(fprintf(stderr, "%*c%s _tmp_12[%d-%d]: %s failed!\n", p->level, ' ',
22009                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
22010     }
22011     _res = NULL;
22012   done:
22013     D(p->level--);
22014     return _res;
22015 }
22016 
22017 // _tmp_13: '=' annotated_rhs
22018 static void *
_tmp_13_rule(Parser * p)22019 _tmp_13_rule(Parser *p)
22020 {
22021     D(p->level++);
22022     if (p->error_indicator) {
22023         D(p->level--);
22024         return NULL;
22025     }
22026     void * _res = NULL;
22027     int _mark = p->mark;
22028     { // '=' annotated_rhs
22029         if (p->error_indicator) {
22030             D(p->level--);
22031             return NULL;
22032         }
22033         D(fprintf(stderr, "%*c> _tmp_13[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
22034         Token * _literal;
22035         expr_ty d;
22036         if (
22037             (_literal = _PyPegen_expect_token(p, 22))  // token='='
22038             &&
22039             (d = annotated_rhs_rule(p))  // annotated_rhs
22040         )
22041         {
22042             D(fprintf(stderr, "%*c+ _tmp_13[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
22043             _res = d;
22044             if (_res == NULL && PyErr_Occurred()) {
22045                 p->error_indicator = 1;
22046                 D(p->level--);
22047                 return NULL;
22048             }
22049             goto done;
22050         }
22051         p->mark = _mark;
22052         D(fprintf(stderr, "%*c%s _tmp_13[%d-%d]: %s failed!\n", p->level, ' ',
22053                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
22054     }
22055     _res = NULL;
22056   done:
22057     D(p->level--);
22058     return _res;
22059 }
22060 
22061 // _loop1_14: (star_targets '=')
22062 static asdl_seq *
_loop1_14_rule(Parser * p)22063 _loop1_14_rule(Parser *p)
22064 {
22065     D(p->level++);
22066     if (p->error_indicator) {
22067         D(p->level--);
22068         return NULL;
22069     }
22070     void *_res = NULL;
22071     int _mark = p->mark;
22072     int _start_mark = p->mark;
22073     void **_children = PyMem_Malloc(sizeof(void *));
22074     if (!_children) {
22075         p->error_indicator = 1;
22076         PyErr_NoMemory();
22077         D(p->level--);
22078         return NULL;
22079     }
22080     Py_ssize_t _children_capacity = 1;
22081     Py_ssize_t _n = 0;
22082     { // (star_targets '=')
22083         if (p->error_indicator) {
22084             D(p->level--);
22085             return NULL;
22086         }
22087         D(fprintf(stderr, "%*c> _loop1_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
22088         void *_tmp_186_var;
22089         while (
22090             (_tmp_186_var = _tmp_186_rule(p))  // star_targets '='
22091         )
22092         {
22093             _res = _tmp_186_var;
22094             if (_n == _children_capacity) {
22095                 _children_capacity *= 2;
22096                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22097                 if (!_new_children) {
22098                     p->error_indicator = 1;
22099                     PyErr_NoMemory();
22100                     D(p->level--);
22101                     return NULL;
22102                 }
22103                 _children = _new_children;
22104             }
22105             _children[_n++] = _res;
22106             _mark = p->mark;
22107         }
22108         p->mark = _mark;
22109         D(fprintf(stderr, "%*c%s _loop1_14[%d-%d]: %s failed!\n", p->level, ' ',
22110                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
22111     }
22112     if (_n == 0 || p->error_indicator) {
22113         PyMem_Free(_children);
22114         D(p->level--);
22115         return NULL;
22116     }
22117     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22118     if (!_seq) {
22119         PyMem_Free(_children);
22120         p->error_indicator = 1;
22121         PyErr_NoMemory();
22122         D(p->level--);
22123         return NULL;
22124     }
22125     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22126     PyMem_Free(_children);
22127     _PyPegen_insert_memo(p, _start_mark, _loop1_14_type, _seq);
22128     D(p->level--);
22129     return _seq;
22130 }
22131 
22132 // _tmp_15: yield_expr | star_expressions
22133 static void *
_tmp_15_rule(Parser * p)22134 _tmp_15_rule(Parser *p)
22135 {
22136     D(p->level++);
22137     if (p->error_indicator) {
22138         D(p->level--);
22139         return NULL;
22140     }
22141     void * _res = NULL;
22142     int _mark = p->mark;
22143     { // yield_expr
22144         if (p->error_indicator) {
22145             D(p->level--);
22146             return NULL;
22147         }
22148         D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
22149         expr_ty yield_expr_var;
22150         if (
22151             (yield_expr_var = yield_expr_rule(p))  // yield_expr
22152         )
22153         {
22154             D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
22155             _res = yield_expr_var;
22156             goto done;
22157         }
22158         p->mark = _mark;
22159         D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
22160                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
22161     }
22162     { // star_expressions
22163         if (p->error_indicator) {
22164             D(p->level--);
22165             return NULL;
22166         }
22167         D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
22168         expr_ty star_expressions_var;
22169         if (
22170             (star_expressions_var = star_expressions_rule(p))  // star_expressions
22171         )
22172         {
22173             D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
22174             _res = star_expressions_var;
22175             goto done;
22176         }
22177         p->mark = _mark;
22178         D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
22179                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
22180     }
22181     _res = NULL;
22182   done:
22183     D(p->level--);
22184     return _res;
22185 }
22186 
22187 // _tmp_16: yield_expr | star_expressions
22188 static void *
_tmp_16_rule(Parser * p)22189 _tmp_16_rule(Parser *p)
22190 {
22191     D(p->level++);
22192     if (p->error_indicator) {
22193         D(p->level--);
22194         return NULL;
22195     }
22196     void * _res = NULL;
22197     int _mark = p->mark;
22198     { // yield_expr
22199         if (p->error_indicator) {
22200             D(p->level--);
22201             return NULL;
22202         }
22203         D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
22204         expr_ty yield_expr_var;
22205         if (
22206             (yield_expr_var = yield_expr_rule(p))  // yield_expr
22207         )
22208         {
22209             D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
22210             _res = yield_expr_var;
22211             goto done;
22212         }
22213         p->mark = _mark;
22214         D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
22215                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
22216     }
22217     { // star_expressions
22218         if (p->error_indicator) {
22219             D(p->level--);
22220             return NULL;
22221         }
22222         D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
22223         expr_ty star_expressions_var;
22224         if (
22225             (star_expressions_var = star_expressions_rule(p))  // star_expressions
22226         )
22227         {
22228             D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
22229             _res = star_expressions_var;
22230             goto done;
22231         }
22232         p->mark = _mark;
22233         D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
22234                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
22235     }
22236     _res = NULL;
22237   done:
22238     D(p->level--);
22239     return _res;
22240 }
22241 
22242 // _tmp_17: 'from' expression
22243 static void *
_tmp_17_rule(Parser * p)22244 _tmp_17_rule(Parser *p)
22245 {
22246     D(p->level++);
22247     if (p->error_indicator) {
22248         D(p->level--);
22249         return NULL;
22250     }
22251     void * _res = NULL;
22252     int _mark = p->mark;
22253     { // 'from' expression
22254         if (p->error_indicator) {
22255             D(p->level--);
22256             return NULL;
22257         }
22258         D(fprintf(stderr, "%*c> _tmp_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' expression"));
22259         Token * _keyword;
22260         expr_ty z;
22261         if (
22262             (_keyword = _PyPegen_expect_token(p, 569))  // token='from'
22263             &&
22264             (z = expression_rule(p))  // expression
22265         )
22266         {
22267             D(fprintf(stderr, "%*c+ _tmp_17[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' expression"));
22268             _res = z;
22269             if (_res == NULL && PyErr_Occurred()) {
22270                 p->error_indicator = 1;
22271                 D(p->level--);
22272                 return NULL;
22273             }
22274             goto done;
22275         }
22276         p->mark = _mark;
22277         D(fprintf(stderr, "%*c%s _tmp_17[%d-%d]: %s failed!\n", p->level, ' ',
22278                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' expression"));
22279     }
22280     _res = NULL;
22281   done:
22282     D(p->level--);
22283     return _res;
22284 }
22285 
22286 // _loop0_19: ',' NAME
22287 static asdl_seq *
_loop0_19_rule(Parser * p)22288 _loop0_19_rule(Parser *p)
22289 {
22290     D(p->level++);
22291     if (p->error_indicator) {
22292         D(p->level--);
22293         return NULL;
22294     }
22295     void *_res = NULL;
22296     int _mark = p->mark;
22297     int _start_mark = p->mark;
22298     void **_children = PyMem_Malloc(sizeof(void *));
22299     if (!_children) {
22300         p->error_indicator = 1;
22301         PyErr_NoMemory();
22302         D(p->level--);
22303         return NULL;
22304     }
22305     Py_ssize_t _children_capacity = 1;
22306     Py_ssize_t _n = 0;
22307     { // ',' NAME
22308         if (p->error_indicator) {
22309             D(p->level--);
22310             return NULL;
22311         }
22312         D(fprintf(stderr, "%*c> _loop0_19[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
22313         Token * _literal;
22314         expr_ty elem;
22315         while (
22316             (_literal = _PyPegen_expect_token(p, 12))  // token=','
22317             &&
22318             (elem = _PyPegen_name_token(p))  // NAME
22319         )
22320         {
22321             _res = elem;
22322             if (_res == NULL && PyErr_Occurred()) {
22323                 p->error_indicator = 1;
22324                 PyMem_Free(_children);
22325                 D(p->level--);
22326                 return NULL;
22327             }
22328             if (_n == _children_capacity) {
22329                 _children_capacity *= 2;
22330                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22331                 if (!_new_children) {
22332                     p->error_indicator = 1;
22333                     PyErr_NoMemory();
22334                     D(p->level--);
22335                     return NULL;
22336                 }
22337                 _children = _new_children;
22338             }
22339             _children[_n++] = _res;
22340             _mark = p->mark;
22341         }
22342         p->mark = _mark;
22343         D(fprintf(stderr, "%*c%s _loop0_19[%d-%d]: %s failed!\n", p->level, ' ',
22344                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
22345     }
22346     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22347     if (!_seq) {
22348         PyMem_Free(_children);
22349         p->error_indicator = 1;
22350         PyErr_NoMemory();
22351         D(p->level--);
22352         return NULL;
22353     }
22354     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22355     PyMem_Free(_children);
22356     _PyPegen_insert_memo(p, _start_mark, _loop0_19_type, _seq);
22357     D(p->level--);
22358     return _seq;
22359 }
22360 
22361 // _gather_18: NAME _loop0_19
22362 static asdl_seq *
_gather_18_rule(Parser * p)22363 _gather_18_rule(Parser *p)
22364 {
22365     D(p->level++);
22366     if (p->error_indicator) {
22367         D(p->level--);
22368         return NULL;
22369     }
22370     asdl_seq * _res = NULL;
22371     int _mark = p->mark;
22372     { // NAME _loop0_19
22373         if (p->error_indicator) {
22374             D(p->level--);
22375             return NULL;
22376         }
22377         D(fprintf(stderr, "%*c> _gather_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_19"));
22378         expr_ty elem;
22379         asdl_seq * seq;
22380         if (
22381             (elem = _PyPegen_name_token(p))  // NAME
22382             &&
22383             (seq = _loop0_19_rule(p))  // _loop0_19
22384         )
22385         {
22386             D(fprintf(stderr, "%*c+ _gather_18[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_19"));
22387             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
22388             goto done;
22389         }
22390         p->mark = _mark;
22391         D(fprintf(stderr, "%*c%s _gather_18[%d-%d]: %s failed!\n", p->level, ' ',
22392                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_19"));
22393     }
22394     _res = NULL;
22395   done:
22396     D(p->level--);
22397     return _res;
22398 }
22399 
22400 // _loop0_21: ',' NAME
22401 static asdl_seq *
_loop0_21_rule(Parser * p)22402 _loop0_21_rule(Parser *p)
22403 {
22404     D(p->level++);
22405     if (p->error_indicator) {
22406         D(p->level--);
22407         return NULL;
22408     }
22409     void *_res = NULL;
22410     int _mark = p->mark;
22411     int _start_mark = p->mark;
22412     void **_children = PyMem_Malloc(sizeof(void *));
22413     if (!_children) {
22414         p->error_indicator = 1;
22415         PyErr_NoMemory();
22416         D(p->level--);
22417         return NULL;
22418     }
22419     Py_ssize_t _children_capacity = 1;
22420     Py_ssize_t _n = 0;
22421     { // ',' NAME
22422         if (p->error_indicator) {
22423             D(p->level--);
22424             return NULL;
22425         }
22426         D(fprintf(stderr, "%*c> _loop0_21[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
22427         Token * _literal;
22428         expr_ty elem;
22429         while (
22430             (_literal = _PyPegen_expect_token(p, 12))  // token=','
22431             &&
22432             (elem = _PyPegen_name_token(p))  // NAME
22433         )
22434         {
22435             _res = elem;
22436             if (_res == NULL && PyErr_Occurred()) {
22437                 p->error_indicator = 1;
22438                 PyMem_Free(_children);
22439                 D(p->level--);
22440                 return NULL;
22441             }
22442             if (_n == _children_capacity) {
22443                 _children_capacity *= 2;
22444                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22445                 if (!_new_children) {
22446                     p->error_indicator = 1;
22447                     PyErr_NoMemory();
22448                     D(p->level--);
22449                     return NULL;
22450                 }
22451                 _children = _new_children;
22452             }
22453             _children[_n++] = _res;
22454             _mark = p->mark;
22455         }
22456         p->mark = _mark;
22457         D(fprintf(stderr, "%*c%s _loop0_21[%d-%d]: %s failed!\n", p->level, ' ',
22458                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
22459     }
22460     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22461     if (!_seq) {
22462         PyMem_Free(_children);
22463         p->error_indicator = 1;
22464         PyErr_NoMemory();
22465         D(p->level--);
22466         return NULL;
22467     }
22468     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22469     PyMem_Free(_children);
22470     _PyPegen_insert_memo(p, _start_mark, _loop0_21_type, _seq);
22471     D(p->level--);
22472     return _seq;
22473 }
22474 
22475 // _gather_20: NAME _loop0_21
22476 static asdl_seq *
_gather_20_rule(Parser * p)22477 _gather_20_rule(Parser *p)
22478 {
22479     D(p->level++);
22480     if (p->error_indicator) {
22481         D(p->level--);
22482         return NULL;
22483     }
22484     asdl_seq * _res = NULL;
22485     int _mark = p->mark;
22486     { // NAME _loop0_21
22487         if (p->error_indicator) {
22488             D(p->level--);
22489             return NULL;
22490         }
22491         D(fprintf(stderr, "%*c> _gather_20[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_21"));
22492         expr_ty elem;
22493         asdl_seq * seq;
22494         if (
22495             (elem = _PyPegen_name_token(p))  // NAME
22496             &&
22497             (seq = _loop0_21_rule(p))  // _loop0_21
22498         )
22499         {
22500             D(fprintf(stderr, "%*c+ _gather_20[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_21"));
22501             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
22502             goto done;
22503         }
22504         p->mark = _mark;
22505         D(fprintf(stderr, "%*c%s _gather_20[%d-%d]: %s failed!\n", p->level, ' ',
22506                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_21"));
22507     }
22508     _res = NULL;
22509   done:
22510     D(p->level--);
22511     return _res;
22512 }
22513 
22514 // _tmp_22: ';' | NEWLINE
22515 static void *
_tmp_22_rule(Parser * p)22516 _tmp_22_rule(Parser *p)
22517 {
22518     D(p->level++);
22519     if (p->error_indicator) {
22520         D(p->level--);
22521         return NULL;
22522     }
22523     void * _res = NULL;
22524     int _mark = p->mark;
22525     { // ';'
22526         if (p->error_indicator) {
22527             D(p->level--);
22528             return NULL;
22529         }
22530         D(fprintf(stderr, "%*c> _tmp_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'"));
22531         Token * _literal;
22532         if (
22533             (_literal = _PyPegen_expect_token(p, 13))  // token=';'
22534         )
22535         {
22536             D(fprintf(stderr, "%*c+ _tmp_22[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'"));
22537             _res = _literal;
22538             goto done;
22539         }
22540         p->mark = _mark;
22541         D(fprintf(stderr, "%*c%s _tmp_22[%d-%d]: %s failed!\n", p->level, ' ',
22542                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'"));
22543     }
22544     { // NEWLINE
22545         if (p->error_indicator) {
22546             D(p->level--);
22547             return NULL;
22548         }
22549         D(fprintf(stderr, "%*c> _tmp_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
22550         Token * newline_var;
22551         if (
22552             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22553         )
22554         {
22555             D(fprintf(stderr, "%*c+ _tmp_22[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
22556             _res = newline_var;
22557             goto done;
22558         }
22559         p->mark = _mark;
22560         D(fprintf(stderr, "%*c%s _tmp_22[%d-%d]: %s failed!\n", p->level, ' ',
22561                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
22562     }
22563     _res = NULL;
22564   done:
22565     D(p->level--);
22566     return _res;
22567 }
22568 
22569 // _tmp_23: ',' expression
22570 static void *
_tmp_23_rule(Parser * p)22571 _tmp_23_rule(Parser *p)
22572 {
22573     D(p->level++);
22574     if (p->error_indicator) {
22575         D(p->level--);
22576         return NULL;
22577     }
22578     void * _res = NULL;
22579     int _mark = p->mark;
22580     { // ',' expression
22581         if (p->error_indicator) {
22582             D(p->level--);
22583             return NULL;
22584         }
22585         D(fprintf(stderr, "%*c> _tmp_23[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
22586         Token * _literal;
22587         expr_ty z;
22588         if (
22589             (_literal = _PyPegen_expect_token(p, 12))  // token=','
22590             &&
22591             (z = expression_rule(p))  // expression
22592         )
22593         {
22594             D(fprintf(stderr, "%*c+ _tmp_23[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression"));
22595             _res = z;
22596             if (_res == NULL && PyErr_Occurred()) {
22597                 p->error_indicator = 1;
22598                 D(p->level--);
22599                 return NULL;
22600             }
22601             goto done;
22602         }
22603         p->mark = _mark;
22604         D(fprintf(stderr, "%*c%s _tmp_23[%d-%d]: %s failed!\n", p->level, ' ',
22605                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
22606     }
22607     _res = NULL;
22608   done:
22609     D(p->level--);
22610     return _res;
22611 }
22612 
22613 // _loop0_24: ('.' | '...')
22614 static asdl_seq *
_loop0_24_rule(Parser * p)22615 _loop0_24_rule(Parser *p)
22616 {
22617     D(p->level++);
22618     if (p->error_indicator) {
22619         D(p->level--);
22620         return NULL;
22621     }
22622     void *_res = NULL;
22623     int _mark = p->mark;
22624     int _start_mark = p->mark;
22625     void **_children = PyMem_Malloc(sizeof(void *));
22626     if (!_children) {
22627         p->error_indicator = 1;
22628         PyErr_NoMemory();
22629         D(p->level--);
22630         return NULL;
22631     }
22632     Py_ssize_t _children_capacity = 1;
22633     Py_ssize_t _n = 0;
22634     { // ('.' | '...')
22635         if (p->error_indicator) {
22636             D(p->level--);
22637             return NULL;
22638         }
22639         D(fprintf(stderr, "%*c> _loop0_24[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
22640         void *_tmp_187_var;
22641         while (
22642             (_tmp_187_var = _tmp_187_rule(p))  // '.' | '...'
22643         )
22644         {
22645             _res = _tmp_187_var;
22646             if (_n == _children_capacity) {
22647                 _children_capacity *= 2;
22648                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22649                 if (!_new_children) {
22650                     p->error_indicator = 1;
22651                     PyErr_NoMemory();
22652                     D(p->level--);
22653                     return NULL;
22654                 }
22655                 _children = _new_children;
22656             }
22657             _children[_n++] = _res;
22658             _mark = p->mark;
22659         }
22660         p->mark = _mark;
22661         D(fprintf(stderr, "%*c%s _loop0_24[%d-%d]: %s failed!\n", p->level, ' ',
22662                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
22663     }
22664     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22665     if (!_seq) {
22666         PyMem_Free(_children);
22667         p->error_indicator = 1;
22668         PyErr_NoMemory();
22669         D(p->level--);
22670         return NULL;
22671     }
22672     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22673     PyMem_Free(_children);
22674     _PyPegen_insert_memo(p, _start_mark, _loop0_24_type, _seq);
22675     D(p->level--);
22676     return _seq;
22677 }
22678 
22679 // _loop1_25: ('.' | '...')
22680 static asdl_seq *
_loop1_25_rule(Parser * p)22681 _loop1_25_rule(Parser *p)
22682 {
22683     D(p->level++);
22684     if (p->error_indicator) {
22685         D(p->level--);
22686         return NULL;
22687     }
22688     void *_res = NULL;
22689     int _mark = p->mark;
22690     int _start_mark = p->mark;
22691     void **_children = PyMem_Malloc(sizeof(void *));
22692     if (!_children) {
22693         p->error_indicator = 1;
22694         PyErr_NoMemory();
22695         D(p->level--);
22696         return NULL;
22697     }
22698     Py_ssize_t _children_capacity = 1;
22699     Py_ssize_t _n = 0;
22700     { // ('.' | '...')
22701         if (p->error_indicator) {
22702             D(p->level--);
22703             return NULL;
22704         }
22705         D(fprintf(stderr, "%*c> _loop1_25[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
22706         void *_tmp_188_var;
22707         while (
22708             (_tmp_188_var = _tmp_188_rule(p))  // '.' | '...'
22709         )
22710         {
22711             _res = _tmp_188_var;
22712             if (_n == _children_capacity) {
22713                 _children_capacity *= 2;
22714                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22715                 if (!_new_children) {
22716                     p->error_indicator = 1;
22717                     PyErr_NoMemory();
22718                     D(p->level--);
22719                     return NULL;
22720                 }
22721                 _children = _new_children;
22722             }
22723             _children[_n++] = _res;
22724             _mark = p->mark;
22725         }
22726         p->mark = _mark;
22727         D(fprintf(stderr, "%*c%s _loop1_25[%d-%d]: %s failed!\n", p->level, ' ',
22728                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
22729     }
22730     if (_n == 0 || p->error_indicator) {
22731         PyMem_Free(_children);
22732         D(p->level--);
22733         return NULL;
22734     }
22735     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22736     if (!_seq) {
22737         PyMem_Free(_children);
22738         p->error_indicator = 1;
22739         PyErr_NoMemory();
22740         D(p->level--);
22741         return NULL;
22742     }
22743     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22744     PyMem_Free(_children);
22745     _PyPegen_insert_memo(p, _start_mark, _loop1_25_type, _seq);
22746     D(p->level--);
22747     return _seq;
22748 }
22749 
22750 // _loop0_27: ',' import_from_as_name
22751 static asdl_seq *
_loop0_27_rule(Parser * p)22752 _loop0_27_rule(Parser *p)
22753 {
22754     D(p->level++);
22755     if (p->error_indicator) {
22756         D(p->level--);
22757         return NULL;
22758     }
22759     void *_res = NULL;
22760     int _mark = p->mark;
22761     int _start_mark = p->mark;
22762     void **_children = PyMem_Malloc(sizeof(void *));
22763     if (!_children) {
22764         p->error_indicator = 1;
22765         PyErr_NoMemory();
22766         D(p->level--);
22767         return NULL;
22768     }
22769     Py_ssize_t _children_capacity = 1;
22770     Py_ssize_t _n = 0;
22771     { // ',' import_from_as_name
22772         if (p->error_indicator) {
22773             D(p->level--);
22774             return NULL;
22775         }
22776         D(fprintf(stderr, "%*c> _loop0_27[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' import_from_as_name"));
22777         Token * _literal;
22778         alias_ty elem;
22779         while (
22780             (_literal = _PyPegen_expect_token(p, 12))  // token=','
22781             &&
22782             (elem = import_from_as_name_rule(p))  // import_from_as_name
22783         )
22784         {
22785             _res = elem;
22786             if (_res == NULL && PyErr_Occurred()) {
22787                 p->error_indicator = 1;
22788                 PyMem_Free(_children);
22789                 D(p->level--);
22790                 return NULL;
22791             }
22792             if (_n == _children_capacity) {
22793                 _children_capacity *= 2;
22794                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22795                 if (!_new_children) {
22796                     p->error_indicator = 1;
22797                     PyErr_NoMemory();
22798                     D(p->level--);
22799                     return NULL;
22800                 }
22801                 _children = _new_children;
22802             }
22803             _children[_n++] = _res;
22804             _mark = p->mark;
22805         }
22806         p->mark = _mark;
22807         D(fprintf(stderr, "%*c%s _loop0_27[%d-%d]: %s failed!\n", p->level, ' ',
22808                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' import_from_as_name"));
22809     }
22810     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22811     if (!_seq) {
22812         PyMem_Free(_children);
22813         p->error_indicator = 1;
22814         PyErr_NoMemory();
22815         D(p->level--);
22816         return NULL;
22817     }
22818     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22819     PyMem_Free(_children);
22820     _PyPegen_insert_memo(p, _start_mark, _loop0_27_type, _seq);
22821     D(p->level--);
22822     return _seq;
22823 }
22824 
22825 // _gather_26: import_from_as_name _loop0_27
22826 static asdl_seq *
_gather_26_rule(Parser * p)22827 _gather_26_rule(Parser *p)
22828 {
22829     D(p->level++);
22830     if (p->error_indicator) {
22831         D(p->level--);
22832         return NULL;
22833     }
22834     asdl_seq * _res = NULL;
22835     int _mark = p->mark;
22836     { // import_from_as_name _loop0_27
22837         if (p->error_indicator) {
22838             D(p->level--);
22839             return NULL;
22840         }
22841         D(fprintf(stderr, "%*c> _gather_26[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_27"));
22842         alias_ty elem;
22843         asdl_seq * seq;
22844         if (
22845             (elem = import_from_as_name_rule(p))  // import_from_as_name
22846             &&
22847             (seq = _loop0_27_rule(p))  // _loop0_27
22848         )
22849         {
22850             D(fprintf(stderr, "%*c+ _gather_26[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_27"));
22851             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
22852             goto done;
22853         }
22854         p->mark = _mark;
22855         D(fprintf(stderr, "%*c%s _gather_26[%d-%d]: %s failed!\n", p->level, ' ',
22856                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_name _loop0_27"));
22857     }
22858     _res = NULL;
22859   done:
22860     D(p->level--);
22861     return _res;
22862 }
22863 
22864 // _tmp_28: 'as' NAME
22865 static void *
_tmp_28_rule(Parser * p)22866 _tmp_28_rule(Parser *p)
22867 {
22868     D(p->level++);
22869     if (p->error_indicator) {
22870         D(p->level--);
22871         return NULL;
22872     }
22873     void * _res = NULL;
22874     int _mark = p->mark;
22875     { // 'as' NAME
22876         if (p->error_indicator) {
22877             D(p->level--);
22878             return NULL;
22879         }
22880         D(fprintf(stderr, "%*c> _tmp_28[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
22881         Token * _keyword;
22882         expr_ty z;
22883         if (
22884             (_keyword = _PyPegen_expect_token(p, 625))  // token='as'
22885             &&
22886             (z = _PyPegen_name_token(p))  // NAME
22887         )
22888         {
22889             D(fprintf(stderr, "%*c+ _tmp_28[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
22890             _res = z;
22891             if (_res == NULL && PyErr_Occurred()) {
22892                 p->error_indicator = 1;
22893                 D(p->level--);
22894                 return NULL;
22895             }
22896             goto done;
22897         }
22898         p->mark = _mark;
22899         D(fprintf(stderr, "%*c%s _tmp_28[%d-%d]: %s failed!\n", p->level, ' ',
22900                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
22901     }
22902     _res = NULL;
22903   done:
22904     D(p->level--);
22905     return _res;
22906 }
22907 
22908 // _loop0_30: ',' dotted_as_name
22909 static asdl_seq *
_loop0_30_rule(Parser * p)22910 _loop0_30_rule(Parser *p)
22911 {
22912     D(p->level++);
22913     if (p->error_indicator) {
22914         D(p->level--);
22915         return NULL;
22916     }
22917     void *_res = NULL;
22918     int _mark = p->mark;
22919     int _start_mark = p->mark;
22920     void **_children = PyMem_Malloc(sizeof(void *));
22921     if (!_children) {
22922         p->error_indicator = 1;
22923         PyErr_NoMemory();
22924         D(p->level--);
22925         return NULL;
22926     }
22927     Py_ssize_t _children_capacity = 1;
22928     Py_ssize_t _n = 0;
22929     { // ',' dotted_as_name
22930         if (p->error_indicator) {
22931             D(p->level--);
22932             return NULL;
22933         }
22934         D(fprintf(stderr, "%*c> _loop0_30[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' dotted_as_name"));
22935         Token * _literal;
22936         alias_ty elem;
22937         while (
22938             (_literal = _PyPegen_expect_token(p, 12))  // token=','
22939             &&
22940             (elem = dotted_as_name_rule(p))  // dotted_as_name
22941         )
22942         {
22943             _res = elem;
22944             if (_res == NULL && PyErr_Occurred()) {
22945                 p->error_indicator = 1;
22946                 PyMem_Free(_children);
22947                 D(p->level--);
22948                 return NULL;
22949             }
22950             if (_n == _children_capacity) {
22951                 _children_capacity *= 2;
22952                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22953                 if (!_new_children) {
22954                     p->error_indicator = 1;
22955                     PyErr_NoMemory();
22956                     D(p->level--);
22957                     return NULL;
22958                 }
22959                 _children = _new_children;
22960             }
22961             _children[_n++] = _res;
22962             _mark = p->mark;
22963         }
22964         p->mark = _mark;
22965         D(fprintf(stderr, "%*c%s _loop0_30[%d-%d]: %s failed!\n", p->level, ' ',
22966                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' dotted_as_name"));
22967     }
22968     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22969     if (!_seq) {
22970         PyMem_Free(_children);
22971         p->error_indicator = 1;
22972         PyErr_NoMemory();
22973         D(p->level--);
22974         return NULL;
22975     }
22976     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22977     PyMem_Free(_children);
22978     _PyPegen_insert_memo(p, _start_mark, _loop0_30_type, _seq);
22979     D(p->level--);
22980     return _seq;
22981 }
22982 
22983 // _gather_29: dotted_as_name _loop0_30
22984 static asdl_seq *
_gather_29_rule(Parser * p)22985 _gather_29_rule(Parser *p)
22986 {
22987     D(p->level++);
22988     if (p->error_indicator) {
22989         D(p->level--);
22990         return NULL;
22991     }
22992     asdl_seq * _res = NULL;
22993     int _mark = p->mark;
22994     { // dotted_as_name _loop0_30
22995         if (p->error_indicator) {
22996             D(p->level--);
22997             return NULL;
22998         }
22999         D(fprintf(stderr, "%*c> _gather_29[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_30"));
23000         alias_ty elem;
23001         asdl_seq * seq;
23002         if (
23003             (elem = dotted_as_name_rule(p))  // dotted_as_name
23004             &&
23005             (seq = _loop0_30_rule(p))  // _loop0_30
23006         )
23007         {
23008             D(fprintf(stderr, "%*c+ _gather_29[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_30"));
23009             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
23010             goto done;
23011         }
23012         p->mark = _mark;
23013         D(fprintf(stderr, "%*c%s _gather_29[%d-%d]: %s failed!\n", p->level, ' ',
23014                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_as_name _loop0_30"));
23015     }
23016     _res = NULL;
23017   done:
23018     D(p->level--);
23019     return _res;
23020 }
23021 
23022 // _tmp_31: 'as' NAME
23023 static void *
_tmp_31_rule(Parser * p)23024 _tmp_31_rule(Parser *p)
23025 {
23026     D(p->level++);
23027     if (p->error_indicator) {
23028         D(p->level--);
23029         return NULL;
23030     }
23031     void * _res = NULL;
23032     int _mark = p->mark;
23033     { // 'as' NAME
23034         if (p->error_indicator) {
23035             D(p->level--);
23036             return NULL;
23037         }
23038         D(fprintf(stderr, "%*c> _tmp_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
23039         Token * _keyword;
23040         expr_ty z;
23041         if (
23042             (_keyword = _PyPegen_expect_token(p, 625))  // token='as'
23043             &&
23044             (z = _PyPegen_name_token(p))  // NAME
23045         )
23046         {
23047             D(fprintf(stderr, "%*c+ _tmp_31[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
23048             _res = z;
23049             if (_res == NULL && PyErr_Occurred()) {
23050                 p->error_indicator = 1;
23051                 D(p->level--);
23052                 return NULL;
23053             }
23054             goto done;
23055         }
23056         p->mark = _mark;
23057         D(fprintf(stderr, "%*c%s _tmp_31[%d-%d]: %s failed!\n", p->level, ' ',
23058                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
23059     }
23060     _res = NULL;
23061   done:
23062     D(p->level--);
23063     return _res;
23064 }
23065 
23066 // _loop1_32: ('@' named_expression NEWLINE)
23067 static asdl_seq *
_loop1_32_rule(Parser * p)23068 _loop1_32_rule(Parser *p)
23069 {
23070     D(p->level++);
23071     if (p->error_indicator) {
23072         D(p->level--);
23073         return NULL;
23074     }
23075     void *_res = NULL;
23076     int _mark = p->mark;
23077     int _start_mark = p->mark;
23078     void **_children = PyMem_Malloc(sizeof(void *));
23079     if (!_children) {
23080         p->error_indicator = 1;
23081         PyErr_NoMemory();
23082         D(p->level--);
23083         return NULL;
23084     }
23085     Py_ssize_t _children_capacity = 1;
23086     Py_ssize_t _n = 0;
23087     { // ('@' named_expression NEWLINE)
23088         if (p->error_indicator) {
23089             D(p->level--);
23090             return NULL;
23091         }
23092         D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)"));
23093         void *_tmp_189_var;
23094         while (
23095             (_tmp_189_var = _tmp_189_rule(p))  // '@' named_expression NEWLINE
23096         )
23097         {
23098             _res = _tmp_189_var;
23099             if (_n == _children_capacity) {
23100                 _children_capacity *= 2;
23101                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23102                 if (!_new_children) {
23103                     p->error_indicator = 1;
23104                     PyErr_NoMemory();
23105                     D(p->level--);
23106                     return NULL;
23107                 }
23108                 _children = _new_children;
23109             }
23110             _children[_n++] = _res;
23111             _mark = p->mark;
23112         }
23113         p->mark = _mark;
23114         D(fprintf(stderr, "%*c%s _loop1_32[%d-%d]: %s failed!\n", p->level, ' ',
23115                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('@' named_expression NEWLINE)"));
23116     }
23117     if (_n == 0 || p->error_indicator) {
23118         PyMem_Free(_children);
23119         D(p->level--);
23120         return NULL;
23121     }
23122     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23123     if (!_seq) {
23124         PyMem_Free(_children);
23125         p->error_indicator = 1;
23126         PyErr_NoMemory();
23127         D(p->level--);
23128         return NULL;
23129     }
23130     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23131     PyMem_Free(_children);
23132     _PyPegen_insert_memo(p, _start_mark, _loop1_32_type, _seq);
23133     D(p->level--);
23134     return _seq;
23135 }
23136 
23137 // _tmp_33: '(' arguments? ')'
23138 static void *
_tmp_33_rule(Parser * p)23139 _tmp_33_rule(Parser *p)
23140 {
23141     D(p->level++);
23142     if (p->error_indicator) {
23143         D(p->level--);
23144         return NULL;
23145     }
23146     void * _res = NULL;
23147     int _mark = p->mark;
23148     { // '(' arguments? ')'
23149         if (p->error_indicator) {
23150             D(p->level--);
23151             return NULL;
23152         }
23153         D(fprintf(stderr, "%*c> _tmp_33[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
23154         Token * _literal;
23155         Token * _literal_1;
23156         void *z;
23157         if (
23158             (_literal = _PyPegen_expect_token(p, 7))  // token='('
23159             &&
23160             (z = arguments_rule(p), !p->error_indicator)  // arguments?
23161             &&
23162             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
23163         )
23164         {
23165             D(fprintf(stderr, "%*c+ _tmp_33[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
23166             _res = z;
23167             if (_res == NULL && PyErr_Occurred()) {
23168                 p->error_indicator = 1;
23169                 D(p->level--);
23170                 return NULL;
23171             }
23172             goto done;
23173         }
23174         p->mark = _mark;
23175         D(fprintf(stderr, "%*c%s _tmp_33[%d-%d]: %s failed!\n", p->level, ' ',
23176                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'"));
23177     }
23178     _res = NULL;
23179   done:
23180     D(p->level--);
23181     return _res;
23182 }
23183 
23184 // _tmp_34: '->' expression
23185 static void *
_tmp_34_rule(Parser * p)23186 _tmp_34_rule(Parser *p)
23187 {
23188     D(p->level++);
23189     if (p->error_indicator) {
23190         D(p->level--);
23191         return NULL;
23192     }
23193     void * _res = NULL;
23194     int _mark = p->mark;
23195     { // '->' expression
23196         if (p->error_indicator) {
23197             D(p->level--);
23198             return NULL;
23199         }
23200         D(fprintf(stderr, "%*c> _tmp_34[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
23201         Token * _literal;
23202         expr_ty z;
23203         if (
23204             (_literal = _PyPegen_expect_token(p, 51))  // token='->'
23205             &&
23206             (z = expression_rule(p))  // expression
23207         )
23208         {
23209             D(fprintf(stderr, "%*c+ _tmp_34[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
23210             _res = z;
23211             if (_res == NULL && PyErr_Occurred()) {
23212                 p->error_indicator = 1;
23213                 D(p->level--);
23214                 return NULL;
23215             }
23216             goto done;
23217         }
23218         p->mark = _mark;
23219         D(fprintf(stderr, "%*c%s _tmp_34[%d-%d]: %s failed!\n", p->level, ' ',
23220                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
23221     }
23222     _res = NULL;
23223   done:
23224     D(p->level--);
23225     return _res;
23226 }
23227 
23228 // _tmp_35: '->' expression
23229 static void *
_tmp_35_rule(Parser * p)23230 _tmp_35_rule(Parser *p)
23231 {
23232     D(p->level++);
23233     if (p->error_indicator) {
23234         D(p->level--);
23235         return NULL;
23236     }
23237     void * _res = NULL;
23238     int _mark = p->mark;
23239     { // '->' expression
23240         if (p->error_indicator) {
23241             D(p->level--);
23242             return NULL;
23243         }
23244         D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
23245         Token * _literal;
23246         expr_ty z;
23247         if (
23248             (_literal = _PyPegen_expect_token(p, 51))  // token='->'
23249             &&
23250             (z = expression_rule(p))  // expression
23251         )
23252         {
23253             D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
23254             _res = z;
23255             if (_res == NULL && PyErr_Occurred()) {
23256                 p->error_indicator = 1;
23257                 D(p->level--);
23258                 return NULL;
23259             }
23260             goto done;
23261         }
23262         p->mark = _mark;
23263         D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
23264                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
23265     }
23266     _res = NULL;
23267   done:
23268     D(p->level--);
23269     return _res;
23270 }
23271 
23272 // _loop0_36: param_no_default
23273 static asdl_seq *
_loop0_36_rule(Parser * p)23274 _loop0_36_rule(Parser *p)
23275 {
23276     D(p->level++);
23277     if (p->error_indicator) {
23278         D(p->level--);
23279         return NULL;
23280     }
23281     void *_res = NULL;
23282     int _mark = p->mark;
23283     int _start_mark = p->mark;
23284     void **_children = PyMem_Malloc(sizeof(void *));
23285     if (!_children) {
23286         p->error_indicator = 1;
23287         PyErr_NoMemory();
23288         D(p->level--);
23289         return NULL;
23290     }
23291     Py_ssize_t _children_capacity = 1;
23292     Py_ssize_t _n = 0;
23293     { // param_no_default
23294         if (p->error_indicator) {
23295             D(p->level--);
23296             return NULL;
23297         }
23298         D(fprintf(stderr, "%*c> _loop0_36[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
23299         arg_ty param_no_default_var;
23300         while (
23301             (param_no_default_var = param_no_default_rule(p))  // param_no_default
23302         )
23303         {
23304             _res = param_no_default_var;
23305             if (_n == _children_capacity) {
23306                 _children_capacity *= 2;
23307                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23308                 if (!_new_children) {
23309                     p->error_indicator = 1;
23310                     PyErr_NoMemory();
23311                     D(p->level--);
23312                     return NULL;
23313                 }
23314                 _children = _new_children;
23315             }
23316             _children[_n++] = _res;
23317             _mark = p->mark;
23318         }
23319         p->mark = _mark;
23320         D(fprintf(stderr, "%*c%s _loop0_36[%d-%d]: %s failed!\n", p->level, ' ',
23321                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
23322     }
23323     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23324     if (!_seq) {
23325         PyMem_Free(_children);
23326         p->error_indicator = 1;
23327         PyErr_NoMemory();
23328         D(p->level--);
23329         return NULL;
23330     }
23331     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23332     PyMem_Free(_children);
23333     _PyPegen_insert_memo(p, _start_mark, _loop0_36_type, _seq);
23334     D(p->level--);
23335     return _seq;
23336 }
23337 
23338 // _loop0_37: param_with_default
23339 static asdl_seq *
_loop0_37_rule(Parser * p)23340 _loop0_37_rule(Parser *p)
23341 {
23342     D(p->level++);
23343     if (p->error_indicator) {
23344         D(p->level--);
23345         return NULL;
23346     }
23347     void *_res = NULL;
23348     int _mark = p->mark;
23349     int _start_mark = p->mark;
23350     void **_children = PyMem_Malloc(sizeof(void *));
23351     if (!_children) {
23352         p->error_indicator = 1;
23353         PyErr_NoMemory();
23354         D(p->level--);
23355         return NULL;
23356     }
23357     Py_ssize_t _children_capacity = 1;
23358     Py_ssize_t _n = 0;
23359     { // param_with_default
23360         if (p->error_indicator) {
23361             D(p->level--);
23362             return NULL;
23363         }
23364         D(fprintf(stderr, "%*c> _loop0_37[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
23365         NameDefaultPair* param_with_default_var;
23366         while (
23367             (param_with_default_var = param_with_default_rule(p))  // param_with_default
23368         )
23369         {
23370             _res = param_with_default_var;
23371             if (_n == _children_capacity) {
23372                 _children_capacity *= 2;
23373                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23374                 if (!_new_children) {
23375                     p->error_indicator = 1;
23376                     PyErr_NoMemory();
23377                     D(p->level--);
23378                     return NULL;
23379                 }
23380                 _children = _new_children;
23381             }
23382             _children[_n++] = _res;
23383             _mark = p->mark;
23384         }
23385         p->mark = _mark;
23386         D(fprintf(stderr, "%*c%s _loop0_37[%d-%d]: %s failed!\n", p->level, ' ',
23387                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
23388     }
23389     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23390     if (!_seq) {
23391         PyMem_Free(_children);
23392         p->error_indicator = 1;
23393         PyErr_NoMemory();
23394         D(p->level--);
23395         return NULL;
23396     }
23397     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23398     PyMem_Free(_children);
23399     _PyPegen_insert_memo(p, _start_mark, _loop0_37_type, _seq);
23400     D(p->level--);
23401     return _seq;
23402 }
23403 
23404 // _loop0_38: param_with_default
23405 static asdl_seq *
_loop0_38_rule(Parser * p)23406 _loop0_38_rule(Parser *p)
23407 {
23408     D(p->level++);
23409     if (p->error_indicator) {
23410         D(p->level--);
23411         return NULL;
23412     }
23413     void *_res = NULL;
23414     int _mark = p->mark;
23415     int _start_mark = p->mark;
23416     void **_children = PyMem_Malloc(sizeof(void *));
23417     if (!_children) {
23418         p->error_indicator = 1;
23419         PyErr_NoMemory();
23420         D(p->level--);
23421         return NULL;
23422     }
23423     Py_ssize_t _children_capacity = 1;
23424     Py_ssize_t _n = 0;
23425     { // param_with_default
23426         if (p->error_indicator) {
23427             D(p->level--);
23428             return NULL;
23429         }
23430         D(fprintf(stderr, "%*c> _loop0_38[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
23431         NameDefaultPair* param_with_default_var;
23432         while (
23433             (param_with_default_var = param_with_default_rule(p))  // param_with_default
23434         )
23435         {
23436             _res = param_with_default_var;
23437             if (_n == _children_capacity) {
23438                 _children_capacity *= 2;
23439                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23440                 if (!_new_children) {
23441                     p->error_indicator = 1;
23442                     PyErr_NoMemory();
23443                     D(p->level--);
23444                     return NULL;
23445                 }
23446                 _children = _new_children;
23447             }
23448             _children[_n++] = _res;
23449             _mark = p->mark;
23450         }
23451         p->mark = _mark;
23452         D(fprintf(stderr, "%*c%s _loop0_38[%d-%d]: %s failed!\n", p->level, ' ',
23453                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
23454     }
23455     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23456     if (!_seq) {
23457         PyMem_Free(_children);
23458         p->error_indicator = 1;
23459         PyErr_NoMemory();
23460         D(p->level--);
23461         return NULL;
23462     }
23463     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23464     PyMem_Free(_children);
23465     _PyPegen_insert_memo(p, _start_mark, _loop0_38_type, _seq);
23466     D(p->level--);
23467     return _seq;
23468 }
23469 
23470 // _loop1_39: param_no_default
23471 static asdl_seq *
_loop1_39_rule(Parser * p)23472 _loop1_39_rule(Parser *p)
23473 {
23474     D(p->level++);
23475     if (p->error_indicator) {
23476         D(p->level--);
23477         return NULL;
23478     }
23479     void *_res = NULL;
23480     int _mark = p->mark;
23481     int _start_mark = p->mark;
23482     void **_children = PyMem_Malloc(sizeof(void *));
23483     if (!_children) {
23484         p->error_indicator = 1;
23485         PyErr_NoMemory();
23486         D(p->level--);
23487         return NULL;
23488     }
23489     Py_ssize_t _children_capacity = 1;
23490     Py_ssize_t _n = 0;
23491     { // param_no_default
23492         if (p->error_indicator) {
23493             D(p->level--);
23494             return NULL;
23495         }
23496         D(fprintf(stderr, "%*c> _loop1_39[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
23497         arg_ty param_no_default_var;
23498         while (
23499             (param_no_default_var = param_no_default_rule(p))  // param_no_default
23500         )
23501         {
23502             _res = param_no_default_var;
23503             if (_n == _children_capacity) {
23504                 _children_capacity *= 2;
23505                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23506                 if (!_new_children) {
23507                     p->error_indicator = 1;
23508                     PyErr_NoMemory();
23509                     D(p->level--);
23510                     return NULL;
23511                 }
23512                 _children = _new_children;
23513             }
23514             _children[_n++] = _res;
23515             _mark = p->mark;
23516         }
23517         p->mark = _mark;
23518         D(fprintf(stderr, "%*c%s _loop1_39[%d-%d]: %s failed!\n", p->level, ' ',
23519                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
23520     }
23521     if (_n == 0 || p->error_indicator) {
23522         PyMem_Free(_children);
23523         D(p->level--);
23524         return NULL;
23525     }
23526     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23527     if (!_seq) {
23528         PyMem_Free(_children);
23529         p->error_indicator = 1;
23530         PyErr_NoMemory();
23531         D(p->level--);
23532         return NULL;
23533     }
23534     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23535     PyMem_Free(_children);
23536     _PyPegen_insert_memo(p, _start_mark, _loop1_39_type, _seq);
23537     D(p->level--);
23538     return _seq;
23539 }
23540 
23541 // _loop0_40: param_with_default
23542 static asdl_seq *
_loop0_40_rule(Parser * p)23543 _loop0_40_rule(Parser *p)
23544 {
23545     D(p->level++);
23546     if (p->error_indicator) {
23547         D(p->level--);
23548         return NULL;
23549     }
23550     void *_res = NULL;
23551     int _mark = p->mark;
23552     int _start_mark = p->mark;
23553     void **_children = PyMem_Malloc(sizeof(void *));
23554     if (!_children) {
23555         p->error_indicator = 1;
23556         PyErr_NoMemory();
23557         D(p->level--);
23558         return NULL;
23559     }
23560     Py_ssize_t _children_capacity = 1;
23561     Py_ssize_t _n = 0;
23562     { // param_with_default
23563         if (p->error_indicator) {
23564             D(p->level--);
23565             return NULL;
23566         }
23567         D(fprintf(stderr, "%*c> _loop0_40[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
23568         NameDefaultPair* param_with_default_var;
23569         while (
23570             (param_with_default_var = param_with_default_rule(p))  // param_with_default
23571         )
23572         {
23573             _res = param_with_default_var;
23574             if (_n == _children_capacity) {
23575                 _children_capacity *= 2;
23576                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23577                 if (!_new_children) {
23578                     p->error_indicator = 1;
23579                     PyErr_NoMemory();
23580                     D(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_40[%d-%d]: %s failed!\n", p->level, ' ',
23590                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
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         D(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     _PyPegen_insert_memo(p, _start_mark, _loop0_40_type, _seq);
23603     D(p->level--);
23604     return _seq;
23605 }
23606 
23607 // _loop1_41: param_with_default
23608 static asdl_seq *
_loop1_41_rule(Parser * p)23609 _loop1_41_rule(Parser *p)
23610 {
23611     D(p->level++);
23612     if (p->error_indicator) {
23613         D(p->level--);
23614         return NULL;
23615     }
23616     void *_res = NULL;
23617     int _mark = p->mark;
23618     int _start_mark = p->mark;
23619     void **_children = PyMem_Malloc(sizeof(void *));
23620     if (!_children) {
23621         p->error_indicator = 1;
23622         PyErr_NoMemory();
23623         D(p->level--);
23624         return NULL;
23625     }
23626     Py_ssize_t _children_capacity = 1;
23627     Py_ssize_t _n = 0;
23628     { // param_with_default
23629         if (p->error_indicator) {
23630             D(p->level--);
23631             return NULL;
23632         }
23633         D(fprintf(stderr, "%*c> _loop1_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
23634         NameDefaultPair* param_with_default_var;
23635         while (
23636             (param_with_default_var = param_with_default_rule(p))  // param_with_default
23637         )
23638         {
23639             _res = param_with_default_var;
23640             if (_n == _children_capacity) {
23641                 _children_capacity *= 2;
23642                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23643                 if (!_new_children) {
23644                     p->error_indicator = 1;
23645                     PyErr_NoMemory();
23646                     D(p->level--);
23647                     return NULL;
23648                 }
23649                 _children = _new_children;
23650             }
23651             _children[_n++] = _res;
23652             _mark = p->mark;
23653         }
23654         p->mark = _mark;
23655         D(fprintf(stderr, "%*c%s _loop1_41[%d-%d]: %s failed!\n", p->level, ' ',
23656                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
23657     }
23658     if (_n == 0 || p->error_indicator) {
23659         PyMem_Free(_children);
23660         D(p->level--);
23661         return NULL;
23662     }
23663     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23664     if (!_seq) {
23665         PyMem_Free(_children);
23666         p->error_indicator = 1;
23667         PyErr_NoMemory();
23668         D(p->level--);
23669         return NULL;
23670     }
23671     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23672     PyMem_Free(_children);
23673     _PyPegen_insert_memo(p, _start_mark, _loop1_41_type, _seq);
23674     D(p->level--);
23675     return _seq;
23676 }
23677 
23678 // _loop1_42: param_no_default
23679 static asdl_seq *
_loop1_42_rule(Parser * p)23680 _loop1_42_rule(Parser *p)
23681 {
23682     D(p->level++);
23683     if (p->error_indicator) {
23684         D(p->level--);
23685         return NULL;
23686     }
23687     void *_res = NULL;
23688     int _mark = p->mark;
23689     int _start_mark = p->mark;
23690     void **_children = PyMem_Malloc(sizeof(void *));
23691     if (!_children) {
23692         p->error_indicator = 1;
23693         PyErr_NoMemory();
23694         D(p->level--);
23695         return NULL;
23696     }
23697     Py_ssize_t _children_capacity = 1;
23698     Py_ssize_t _n = 0;
23699     { // param_no_default
23700         if (p->error_indicator) {
23701             D(p->level--);
23702             return NULL;
23703         }
23704         D(fprintf(stderr, "%*c> _loop1_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
23705         arg_ty param_no_default_var;
23706         while (
23707             (param_no_default_var = param_no_default_rule(p))  // param_no_default
23708         )
23709         {
23710             _res = param_no_default_var;
23711             if (_n == _children_capacity) {
23712                 _children_capacity *= 2;
23713                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23714                 if (!_new_children) {
23715                     p->error_indicator = 1;
23716                     PyErr_NoMemory();
23717                     D(p->level--);
23718                     return NULL;
23719                 }
23720                 _children = _new_children;
23721             }
23722             _children[_n++] = _res;
23723             _mark = p->mark;
23724         }
23725         p->mark = _mark;
23726         D(fprintf(stderr, "%*c%s _loop1_42[%d-%d]: %s failed!\n", p->level, ' ',
23727                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
23728     }
23729     if (_n == 0 || p->error_indicator) {
23730         PyMem_Free(_children);
23731         D(p->level--);
23732         return NULL;
23733     }
23734     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23735     if (!_seq) {
23736         PyMem_Free(_children);
23737         p->error_indicator = 1;
23738         PyErr_NoMemory();
23739         D(p->level--);
23740         return NULL;
23741     }
23742     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23743     PyMem_Free(_children);
23744     _PyPegen_insert_memo(p, _start_mark, _loop1_42_type, _seq);
23745     D(p->level--);
23746     return _seq;
23747 }
23748 
23749 // _loop1_43: param_no_default
23750 static asdl_seq *
_loop1_43_rule(Parser * p)23751 _loop1_43_rule(Parser *p)
23752 {
23753     D(p->level++);
23754     if (p->error_indicator) {
23755         D(p->level--);
23756         return NULL;
23757     }
23758     void *_res = NULL;
23759     int _mark = p->mark;
23760     int _start_mark = p->mark;
23761     void **_children = PyMem_Malloc(sizeof(void *));
23762     if (!_children) {
23763         p->error_indicator = 1;
23764         PyErr_NoMemory();
23765         D(p->level--);
23766         return NULL;
23767     }
23768     Py_ssize_t _children_capacity = 1;
23769     Py_ssize_t _n = 0;
23770     { // param_no_default
23771         if (p->error_indicator) {
23772             D(p->level--);
23773             return NULL;
23774         }
23775         D(fprintf(stderr, "%*c> _loop1_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
23776         arg_ty param_no_default_var;
23777         while (
23778             (param_no_default_var = param_no_default_rule(p))  // param_no_default
23779         )
23780         {
23781             _res = param_no_default_var;
23782             if (_n == _children_capacity) {
23783                 _children_capacity *= 2;
23784                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23785                 if (!_new_children) {
23786                     p->error_indicator = 1;
23787                     PyErr_NoMemory();
23788                     D(p->level--);
23789                     return NULL;
23790                 }
23791                 _children = _new_children;
23792             }
23793             _children[_n++] = _res;
23794             _mark = p->mark;
23795         }
23796         p->mark = _mark;
23797         D(fprintf(stderr, "%*c%s _loop1_43[%d-%d]: %s failed!\n", p->level, ' ',
23798                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
23799     }
23800     if (_n == 0 || p->error_indicator) {
23801         PyMem_Free(_children);
23802         D(p->level--);
23803         return NULL;
23804     }
23805     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23806     if (!_seq) {
23807         PyMem_Free(_children);
23808         p->error_indicator = 1;
23809         PyErr_NoMemory();
23810         D(p->level--);
23811         return NULL;
23812     }
23813     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23814     PyMem_Free(_children);
23815     _PyPegen_insert_memo(p, _start_mark, _loop1_43_type, _seq);
23816     D(p->level--);
23817     return _seq;
23818 }
23819 
23820 // _loop0_44: param_no_default
23821 static asdl_seq *
_loop0_44_rule(Parser * p)23822 _loop0_44_rule(Parser *p)
23823 {
23824     D(p->level++);
23825     if (p->error_indicator) {
23826         D(p->level--);
23827         return NULL;
23828     }
23829     void *_res = NULL;
23830     int _mark = p->mark;
23831     int _start_mark = p->mark;
23832     void **_children = PyMem_Malloc(sizeof(void *));
23833     if (!_children) {
23834         p->error_indicator = 1;
23835         PyErr_NoMemory();
23836         D(p->level--);
23837         return NULL;
23838     }
23839     Py_ssize_t _children_capacity = 1;
23840     Py_ssize_t _n = 0;
23841     { // param_no_default
23842         if (p->error_indicator) {
23843             D(p->level--);
23844             return NULL;
23845         }
23846         D(fprintf(stderr, "%*c> _loop0_44[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
23847         arg_ty param_no_default_var;
23848         while (
23849             (param_no_default_var = param_no_default_rule(p))  // param_no_default
23850         )
23851         {
23852             _res = param_no_default_var;
23853             if (_n == _children_capacity) {
23854                 _children_capacity *= 2;
23855                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23856                 if (!_new_children) {
23857                     p->error_indicator = 1;
23858                     PyErr_NoMemory();
23859                     D(p->level--);
23860                     return NULL;
23861                 }
23862                 _children = _new_children;
23863             }
23864             _children[_n++] = _res;
23865             _mark = p->mark;
23866         }
23867         p->mark = _mark;
23868         D(fprintf(stderr, "%*c%s _loop0_44[%d-%d]: %s failed!\n", p->level, ' ',
23869                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
23870     }
23871     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23872     if (!_seq) {
23873         PyMem_Free(_children);
23874         p->error_indicator = 1;
23875         PyErr_NoMemory();
23876         D(p->level--);
23877         return NULL;
23878     }
23879     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23880     PyMem_Free(_children);
23881     _PyPegen_insert_memo(p, _start_mark, _loop0_44_type, _seq);
23882     D(p->level--);
23883     return _seq;
23884 }
23885 
23886 // _loop1_45: param_with_default
23887 static asdl_seq *
_loop1_45_rule(Parser * p)23888 _loop1_45_rule(Parser *p)
23889 {
23890     D(p->level++);
23891     if (p->error_indicator) {
23892         D(p->level--);
23893         return NULL;
23894     }
23895     void *_res = NULL;
23896     int _mark = p->mark;
23897     int _start_mark = p->mark;
23898     void **_children = PyMem_Malloc(sizeof(void *));
23899     if (!_children) {
23900         p->error_indicator = 1;
23901         PyErr_NoMemory();
23902         D(p->level--);
23903         return NULL;
23904     }
23905     Py_ssize_t _children_capacity = 1;
23906     Py_ssize_t _n = 0;
23907     { // param_with_default
23908         if (p->error_indicator) {
23909             D(p->level--);
23910             return NULL;
23911         }
23912         D(fprintf(stderr, "%*c> _loop1_45[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
23913         NameDefaultPair* param_with_default_var;
23914         while (
23915             (param_with_default_var = param_with_default_rule(p))  // param_with_default
23916         )
23917         {
23918             _res = param_with_default_var;
23919             if (_n == _children_capacity) {
23920                 _children_capacity *= 2;
23921                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23922                 if (!_new_children) {
23923                     p->error_indicator = 1;
23924                     PyErr_NoMemory();
23925                     D(p->level--);
23926                     return NULL;
23927                 }
23928                 _children = _new_children;
23929             }
23930             _children[_n++] = _res;
23931             _mark = p->mark;
23932         }
23933         p->mark = _mark;
23934         D(fprintf(stderr, "%*c%s _loop1_45[%d-%d]: %s failed!\n", p->level, ' ',
23935                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
23936     }
23937     if (_n == 0 || p->error_indicator) {
23938         PyMem_Free(_children);
23939         D(p->level--);
23940         return NULL;
23941     }
23942     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23943     if (!_seq) {
23944         PyMem_Free(_children);
23945         p->error_indicator = 1;
23946         PyErr_NoMemory();
23947         D(p->level--);
23948         return NULL;
23949     }
23950     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23951     PyMem_Free(_children);
23952     _PyPegen_insert_memo(p, _start_mark, _loop1_45_type, _seq);
23953     D(p->level--);
23954     return _seq;
23955 }
23956 
23957 // _loop0_46: param_no_default
23958 static asdl_seq *
_loop0_46_rule(Parser * p)23959 _loop0_46_rule(Parser *p)
23960 {
23961     D(p->level++);
23962     if (p->error_indicator) {
23963         D(p->level--);
23964         return NULL;
23965     }
23966     void *_res = NULL;
23967     int _mark = p->mark;
23968     int _start_mark = p->mark;
23969     void **_children = PyMem_Malloc(sizeof(void *));
23970     if (!_children) {
23971         p->error_indicator = 1;
23972         PyErr_NoMemory();
23973         D(p->level--);
23974         return NULL;
23975     }
23976     Py_ssize_t _children_capacity = 1;
23977     Py_ssize_t _n = 0;
23978     { // param_no_default
23979         if (p->error_indicator) {
23980             D(p->level--);
23981             return NULL;
23982         }
23983         D(fprintf(stderr, "%*c> _loop0_46[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
23984         arg_ty param_no_default_var;
23985         while (
23986             (param_no_default_var = param_no_default_rule(p))  // param_no_default
23987         )
23988         {
23989             _res = param_no_default_var;
23990             if (_n == _children_capacity) {
23991                 _children_capacity *= 2;
23992                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23993                 if (!_new_children) {
23994                     p->error_indicator = 1;
23995                     PyErr_NoMemory();
23996                     D(p->level--);
23997                     return NULL;
23998                 }
23999                 _children = _new_children;
24000             }
24001             _children[_n++] = _res;
24002             _mark = p->mark;
24003         }
24004         p->mark = _mark;
24005         D(fprintf(stderr, "%*c%s _loop0_46[%d-%d]: %s failed!\n", p->level, ' ',
24006                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
24007     }
24008     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24009     if (!_seq) {
24010         PyMem_Free(_children);
24011         p->error_indicator = 1;
24012         PyErr_NoMemory();
24013         D(p->level--);
24014         return NULL;
24015     }
24016     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24017     PyMem_Free(_children);
24018     _PyPegen_insert_memo(p, _start_mark, _loop0_46_type, _seq);
24019     D(p->level--);
24020     return _seq;
24021 }
24022 
24023 // _loop1_47: param_with_default
24024 static asdl_seq *
_loop1_47_rule(Parser * p)24025 _loop1_47_rule(Parser *p)
24026 {
24027     D(p->level++);
24028     if (p->error_indicator) {
24029         D(p->level--);
24030         return NULL;
24031     }
24032     void *_res = NULL;
24033     int _mark = p->mark;
24034     int _start_mark = p->mark;
24035     void **_children = PyMem_Malloc(sizeof(void *));
24036     if (!_children) {
24037         p->error_indicator = 1;
24038         PyErr_NoMemory();
24039         D(p->level--);
24040         return NULL;
24041     }
24042     Py_ssize_t _children_capacity = 1;
24043     Py_ssize_t _n = 0;
24044     { // param_with_default
24045         if (p->error_indicator) {
24046             D(p->level--);
24047             return NULL;
24048         }
24049         D(fprintf(stderr, "%*c> _loop1_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
24050         NameDefaultPair* param_with_default_var;
24051         while (
24052             (param_with_default_var = param_with_default_rule(p))  // param_with_default
24053         )
24054         {
24055             _res = param_with_default_var;
24056             if (_n == _children_capacity) {
24057                 _children_capacity *= 2;
24058                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24059                 if (!_new_children) {
24060                     p->error_indicator = 1;
24061                     PyErr_NoMemory();
24062                     D(p->level--);
24063                     return NULL;
24064                 }
24065                 _children = _new_children;
24066             }
24067             _children[_n++] = _res;
24068             _mark = p->mark;
24069         }
24070         p->mark = _mark;
24071         D(fprintf(stderr, "%*c%s _loop1_47[%d-%d]: %s failed!\n", p->level, ' ',
24072                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
24073     }
24074     if (_n == 0 || p->error_indicator) {
24075         PyMem_Free(_children);
24076         D(p->level--);
24077         return NULL;
24078     }
24079     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24080     if (!_seq) {
24081         PyMem_Free(_children);
24082         p->error_indicator = 1;
24083         PyErr_NoMemory();
24084         D(p->level--);
24085         return NULL;
24086     }
24087     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24088     PyMem_Free(_children);
24089     _PyPegen_insert_memo(p, _start_mark, _loop1_47_type, _seq);
24090     D(p->level--);
24091     return _seq;
24092 }
24093 
24094 // _loop0_48: param_maybe_default
24095 static asdl_seq *
_loop0_48_rule(Parser * p)24096 _loop0_48_rule(Parser *p)
24097 {
24098     D(p->level++);
24099     if (p->error_indicator) {
24100         D(p->level--);
24101         return NULL;
24102     }
24103     void *_res = NULL;
24104     int _mark = p->mark;
24105     int _start_mark = p->mark;
24106     void **_children = PyMem_Malloc(sizeof(void *));
24107     if (!_children) {
24108         p->error_indicator = 1;
24109         PyErr_NoMemory();
24110         D(p->level--);
24111         return NULL;
24112     }
24113     Py_ssize_t _children_capacity = 1;
24114     Py_ssize_t _n = 0;
24115     { // param_maybe_default
24116         if (p->error_indicator) {
24117             D(p->level--);
24118             return NULL;
24119         }
24120         D(fprintf(stderr, "%*c> _loop0_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
24121         NameDefaultPair* param_maybe_default_var;
24122         while (
24123             (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
24124         )
24125         {
24126             _res = param_maybe_default_var;
24127             if (_n == _children_capacity) {
24128                 _children_capacity *= 2;
24129                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24130                 if (!_new_children) {
24131                     p->error_indicator = 1;
24132                     PyErr_NoMemory();
24133                     D(p->level--);
24134                     return NULL;
24135                 }
24136                 _children = _new_children;
24137             }
24138             _children[_n++] = _res;
24139             _mark = p->mark;
24140         }
24141         p->mark = _mark;
24142         D(fprintf(stderr, "%*c%s _loop0_48[%d-%d]: %s failed!\n", p->level, ' ',
24143                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
24144     }
24145     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24146     if (!_seq) {
24147         PyMem_Free(_children);
24148         p->error_indicator = 1;
24149         PyErr_NoMemory();
24150         D(p->level--);
24151         return NULL;
24152     }
24153     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24154     PyMem_Free(_children);
24155     _PyPegen_insert_memo(p, _start_mark, _loop0_48_type, _seq);
24156     D(p->level--);
24157     return _seq;
24158 }
24159 
24160 // _loop1_49: param_maybe_default
24161 static asdl_seq *
_loop1_49_rule(Parser * p)24162 _loop1_49_rule(Parser *p)
24163 {
24164     D(p->level++);
24165     if (p->error_indicator) {
24166         D(p->level--);
24167         return NULL;
24168     }
24169     void *_res = NULL;
24170     int _mark = p->mark;
24171     int _start_mark = p->mark;
24172     void **_children = PyMem_Malloc(sizeof(void *));
24173     if (!_children) {
24174         p->error_indicator = 1;
24175         PyErr_NoMemory();
24176         D(p->level--);
24177         return NULL;
24178     }
24179     Py_ssize_t _children_capacity = 1;
24180     Py_ssize_t _n = 0;
24181     { // param_maybe_default
24182         if (p->error_indicator) {
24183             D(p->level--);
24184             return NULL;
24185         }
24186         D(fprintf(stderr, "%*c> _loop1_49[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
24187         NameDefaultPair* param_maybe_default_var;
24188         while (
24189             (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
24190         )
24191         {
24192             _res = param_maybe_default_var;
24193             if (_n == _children_capacity) {
24194                 _children_capacity *= 2;
24195                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24196                 if (!_new_children) {
24197                     p->error_indicator = 1;
24198                     PyErr_NoMemory();
24199                     D(p->level--);
24200                     return NULL;
24201                 }
24202                 _children = _new_children;
24203             }
24204             _children[_n++] = _res;
24205             _mark = p->mark;
24206         }
24207         p->mark = _mark;
24208         D(fprintf(stderr, "%*c%s _loop1_49[%d-%d]: %s failed!\n", p->level, ' ',
24209                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
24210     }
24211     if (_n == 0 || p->error_indicator) {
24212         PyMem_Free(_children);
24213         D(p->level--);
24214         return NULL;
24215     }
24216     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24217     if (!_seq) {
24218         PyMem_Free(_children);
24219         p->error_indicator = 1;
24220         PyErr_NoMemory();
24221         D(p->level--);
24222         return NULL;
24223     }
24224     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24225     PyMem_Free(_children);
24226     _PyPegen_insert_memo(p, _start_mark, _loop1_49_type, _seq);
24227     D(p->level--);
24228     return _seq;
24229 }
24230 
24231 // _loop0_51: ',' with_item
24232 static asdl_seq *
_loop0_51_rule(Parser * p)24233 _loop0_51_rule(Parser *p)
24234 {
24235     D(p->level++);
24236     if (p->error_indicator) {
24237         D(p->level--);
24238         return NULL;
24239     }
24240     void *_res = NULL;
24241     int _mark = p->mark;
24242     int _start_mark = p->mark;
24243     void **_children = PyMem_Malloc(sizeof(void *));
24244     if (!_children) {
24245         p->error_indicator = 1;
24246         PyErr_NoMemory();
24247         D(p->level--);
24248         return NULL;
24249     }
24250     Py_ssize_t _children_capacity = 1;
24251     Py_ssize_t _n = 0;
24252     { // ',' with_item
24253         if (p->error_indicator) {
24254             D(p->level--);
24255             return NULL;
24256         }
24257         D(fprintf(stderr, "%*c> _loop0_51[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
24258         Token * _literal;
24259         withitem_ty elem;
24260         while (
24261             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24262             &&
24263             (elem = with_item_rule(p))  // with_item
24264         )
24265         {
24266             _res = elem;
24267             if (_res == NULL && PyErr_Occurred()) {
24268                 p->error_indicator = 1;
24269                 PyMem_Free(_children);
24270                 D(p->level--);
24271                 return NULL;
24272             }
24273             if (_n == _children_capacity) {
24274                 _children_capacity *= 2;
24275                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24276                 if (!_new_children) {
24277                     p->error_indicator = 1;
24278                     PyErr_NoMemory();
24279                     D(p->level--);
24280                     return NULL;
24281                 }
24282                 _children = _new_children;
24283             }
24284             _children[_n++] = _res;
24285             _mark = p->mark;
24286         }
24287         p->mark = _mark;
24288         D(fprintf(stderr, "%*c%s _loop0_51[%d-%d]: %s failed!\n", p->level, ' ',
24289                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
24290     }
24291     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24292     if (!_seq) {
24293         PyMem_Free(_children);
24294         p->error_indicator = 1;
24295         PyErr_NoMemory();
24296         D(p->level--);
24297         return NULL;
24298     }
24299     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24300     PyMem_Free(_children);
24301     _PyPegen_insert_memo(p, _start_mark, _loop0_51_type, _seq);
24302     D(p->level--);
24303     return _seq;
24304 }
24305 
24306 // _gather_50: with_item _loop0_51
24307 static asdl_seq *
_gather_50_rule(Parser * p)24308 _gather_50_rule(Parser *p)
24309 {
24310     D(p->level++);
24311     if (p->error_indicator) {
24312         D(p->level--);
24313         return NULL;
24314     }
24315     asdl_seq * _res = NULL;
24316     int _mark = p->mark;
24317     { // with_item _loop0_51
24318         if (p->error_indicator) {
24319             D(p->level--);
24320             return NULL;
24321         }
24322         D(fprintf(stderr, "%*c> _gather_50[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_51"));
24323         withitem_ty elem;
24324         asdl_seq * seq;
24325         if (
24326             (elem = with_item_rule(p))  // with_item
24327             &&
24328             (seq = _loop0_51_rule(p))  // _loop0_51
24329         )
24330         {
24331             D(fprintf(stderr, "%*c+ _gather_50[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_51"));
24332             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24333             goto done;
24334         }
24335         p->mark = _mark;
24336         D(fprintf(stderr, "%*c%s _gather_50[%d-%d]: %s failed!\n", p->level, ' ',
24337                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_51"));
24338     }
24339     _res = NULL;
24340   done:
24341     D(p->level--);
24342     return _res;
24343 }
24344 
24345 // _loop0_53: ',' with_item
24346 static asdl_seq *
_loop0_53_rule(Parser * p)24347 _loop0_53_rule(Parser *p)
24348 {
24349     D(p->level++);
24350     if (p->error_indicator) {
24351         D(p->level--);
24352         return NULL;
24353     }
24354     void *_res = NULL;
24355     int _mark = p->mark;
24356     int _start_mark = p->mark;
24357     void **_children = PyMem_Malloc(sizeof(void *));
24358     if (!_children) {
24359         p->error_indicator = 1;
24360         PyErr_NoMemory();
24361         D(p->level--);
24362         return NULL;
24363     }
24364     Py_ssize_t _children_capacity = 1;
24365     Py_ssize_t _n = 0;
24366     { // ',' with_item
24367         if (p->error_indicator) {
24368             D(p->level--);
24369             return NULL;
24370         }
24371         D(fprintf(stderr, "%*c> _loop0_53[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
24372         Token * _literal;
24373         withitem_ty elem;
24374         while (
24375             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24376             &&
24377             (elem = with_item_rule(p))  // with_item
24378         )
24379         {
24380             _res = elem;
24381             if (_res == NULL && PyErr_Occurred()) {
24382                 p->error_indicator = 1;
24383                 PyMem_Free(_children);
24384                 D(p->level--);
24385                 return NULL;
24386             }
24387             if (_n == _children_capacity) {
24388                 _children_capacity *= 2;
24389                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24390                 if (!_new_children) {
24391                     p->error_indicator = 1;
24392                     PyErr_NoMemory();
24393                     D(p->level--);
24394                     return NULL;
24395                 }
24396                 _children = _new_children;
24397             }
24398             _children[_n++] = _res;
24399             _mark = p->mark;
24400         }
24401         p->mark = _mark;
24402         D(fprintf(stderr, "%*c%s _loop0_53[%d-%d]: %s failed!\n", p->level, ' ',
24403                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
24404     }
24405     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24406     if (!_seq) {
24407         PyMem_Free(_children);
24408         p->error_indicator = 1;
24409         PyErr_NoMemory();
24410         D(p->level--);
24411         return NULL;
24412     }
24413     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24414     PyMem_Free(_children);
24415     _PyPegen_insert_memo(p, _start_mark, _loop0_53_type, _seq);
24416     D(p->level--);
24417     return _seq;
24418 }
24419 
24420 // _gather_52: with_item _loop0_53
24421 static asdl_seq *
_gather_52_rule(Parser * p)24422 _gather_52_rule(Parser *p)
24423 {
24424     D(p->level++);
24425     if (p->error_indicator) {
24426         D(p->level--);
24427         return NULL;
24428     }
24429     asdl_seq * _res = NULL;
24430     int _mark = p->mark;
24431     { // with_item _loop0_53
24432         if (p->error_indicator) {
24433             D(p->level--);
24434             return NULL;
24435         }
24436         D(fprintf(stderr, "%*c> _gather_52[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_53"));
24437         withitem_ty elem;
24438         asdl_seq * seq;
24439         if (
24440             (elem = with_item_rule(p))  // with_item
24441             &&
24442             (seq = _loop0_53_rule(p))  // _loop0_53
24443         )
24444         {
24445             D(fprintf(stderr, "%*c+ _gather_52[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_53"));
24446             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24447             goto done;
24448         }
24449         p->mark = _mark;
24450         D(fprintf(stderr, "%*c%s _gather_52[%d-%d]: %s failed!\n", p->level, ' ',
24451                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_53"));
24452     }
24453     _res = NULL;
24454   done:
24455     D(p->level--);
24456     return _res;
24457 }
24458 
24459 // _loop0_55: ',' with_item
24460 static asdl_seq *
_loop0_55_rule(Parser * p)24461 _loop0_55_rule(Parser *p)
24462 {
24463     D(p->level++);
24464     if (p->error_indicator) {
24465         D(p->level--);
24466         return NULL;
24467     }
24468     void *_res = NULL;
24469     int _mark = p->mark;
24470     int _start_mark = p->mark;
24471     void **_children = PyMem_Malloc(sizeof(void *));
24472     if (!_children) {
24473         p->error_indicator = 1;
24474         PyErr_NoMemory();
24475         D(p->level--);
24476         return NULL;
24477     }
24478     Py_ssize_t _children_capacity = 1;
24479     Py_ssize_t _n = 0;
24480     { // ',' with_item
24481         if (p->error_indicator) {
24482             D(p->level--);
24483             return NULL;
24484         }
24485         D(fprintf(stderr, "%*c> _loop0_55[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
24486         Token * _literal;
24487         withitem_ty elem;
24488         while (
24489             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24490             &&
24491             (elem = with_item_rule(p))  // with_item
24492         )
24493         {
24494             _res = elem;
24495             if (_res == NULL && PyErr_Occurred()) {
24496                 p->error_indicator = 1;
24497                 PyMem_Free(_children);
24498                 D(p->level--);
24499                 return NULL;
24500             }
24501             if (_n == _children_capacity) {
24502                 _children_capacity *= 2;
24503                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24504                 if (!_new_children) {
24505                     p->error_indicator = 1;
24506                     PyErr_NoMemory();
24507                     D(p->level--);
24508                     return NULL;
24509                 }
24510                 _children = _new_children;
24511             }
24512             _children[_n++] = _res;
24513             _mark = p->mark;
24514         }
24515         p->mark = _mark;
24516         D(fprintf(stderr, "%*c%s _loop0_55[%d-%d]: %s failed!\n", p->level, ' ',
24517                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
24518     }
24519     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24520     if (!_seq) {
24521         PyMem_Free(_children);
24522         p->error_indicator = 1;
24523         PyErr_NoMemory();
24524         D(p->level--);
24525         return NULL;
24526     }
24527     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24528     PyMem_Free(_children);
24529     _PyPegen_insert_memo(p, _start_mark, _loop0_55_type, _seq);
24530     D(p->level--);
24531     return _seq;
24532 }
24533 
24534 // _gather_54: with_item _loop0_55
24535 static asdl_seq *
_gather_54_rule(Parser * p)24536 _gather_54_rule(Parser *p)
24537 {
24538     D(p->level++);
24539     if (p->error_indicator) {
24540         D(p->level--);
24541         return NULL;
24542     }
24543     asdl_seq * _res = NULL;
24544     int _mark = p->mark;
24545     { // with_item _loop0_55
24546         if (p->error_indicator) {
24547             D(p->level--);
24548             return NULL;
24549         }
24550         D(fprintf(stderr, "%*c> _gather_54[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_55"));
24551         withitem_ty elem;
24552         asdl_seq * seq;
24553         if (
24554             (elem = with_item_rule(p))  // with_item
24555             &&
24556             (seq = _loop0_55_rule(p))  // _loop0_55
24557         )
24558         {
24559             D(fprintf(stderr, "%*c+ _gather_54[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_55"));
24560             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24561             goto done;
24562         }
24563         p->mark = _mark;
24564         D(fprintf(stderr, "%*c%s _gather_54[%d-%d]: %s failed!\n", p->level, ' ',
24565                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_55"));
24566     }
24567     _res = NULL;
24568   done:
24569     D(p->level--);
24570     return _res;
24571 }
24572 
24573 // _loop0_57: ',' with_item
24574 static asdl_seq *
_loop0_57_rule(Parser * p)24575 _loop0_57_rule(Parser *p)
24576 {
24577     D(p->level++);
24578     if (p->error_indicator) {
24579         D(p->level--);
24580         return NULL;
24581     }
24582     void *_res = NULL;
24583     int _mark = p->mark;
24584     int _start_mark = p->mark;
24585     void **_children = PyMem_Malloc(sizeof(void *));
24586     if (!_children) {
24587         p->error_indicator = 1;
24588         PyErr_NoMemory();
24589         D(p->level--);
24590         return NULL;
24591     }
24592     Py_ssize_t _children_capacity = 1;
24593     Py_ssize_t _n = 0;
24594     { // ',' with_item
24595         if (p->error_indicator) {
24596             D(p->level--);
24597             return NULL;
24598         }
24599         D(fprintf(stderr, "%*c> _loop0_57[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
24600         Token * _literal;
24601         withitem_ty elem;
24602         while (
24603             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24604             &&
24605             (elem = with_item_rule(p))  // with_item
24606         )
24607         {
24608             _res = elem;
24609             if (_res == NULL && PyErr_Occurred()) {
24610                 p->error_indicator = 1;
24611                 PyMem_Free(_children);
24612                 D(p->level--);
24613                 return NULL;
24614             }
24615             if (_n == _children_capacity) {
24616                 _children_capacity *= 2;
24617                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24618                 if (!_new_children) {
24619                     p->error_indicator = 1;
24620                     PyErr_NoMemory();
24621                     D(p->level--);
24622                     return NULL;
24623                 }
24624                 _children = _new_children;
24625             }
24626             _children[_n++] = _res;
24627             _mark = p->mark;
24628         }
24629         p->mark = _mark;
24630         D(fprintf(stderr, "%*c%s _loop0_57[%d-%d]: %s failed!\n", p->level, ' ',
24631                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
24632     }
24633     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24634     if (!_seq) {
24635         PyMem_Free(_children);
24636         p->error_indicator = 1;
24637         PyErr_NoMemory();
24638         D(p->level--);
24639         return NULL;
24640     }
24641     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24642     PyMem_Free(_children);
24643     _PyPegen_insert_memo(p, _start_mark, _loop0_57_type, _seq);
24644     D(p->level--);
24645     return _seq;
24646 }
24647 
24648 // _gather_56: with_item _loop0_57
24649 static asdl_seq *
_gather_56_rule(Parser * p)24650 _gather_56_rule(Parser *p)
24651 {
24652     D(p->level++);
24653     if (p->error_indicator) {
24654         D(p->level--);
24655         return NULL;
24656     }
24657     asdl_seq * _res = NULL;
24658     int _mark = p->mark;
24659     { // with_item _loop0_57
24660         if (p->error_indicator) {
24661             D(p->level--);
24662             return NULL;
24663         }
24664         D(fprintf(stderr, "%*c> _gather_56[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_57"));
24665         withitem_ty elem;
24666         asdl_seq * seq;
24667         if (
24668             (elem = with_item_rule(p))  // with_item
24669             &&
24670             (seq = _loop0_57_rule(p))  // _loop0_57
24671         )
24672         {
24673             D(fprintf(stderr, "%*c+ _gather_56[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_57"));
24674             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24675             goto done;
24676         }
24677         p->mark = _mark;
24678         D(fprintf(stderr, "%*c%s _gather_56[%d-%d]: %s failed!\n", p->level, ' ',
24679                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_57"));
24680     }
24681     _res = NULL;
24682   done:
24683     D(p->level--);
24684     return _res;
24685 }
24686 
24687 // _tmp_58: ',' | ')' | ':'
24688 static void *
_tmp_58_rule(Parser * p)24689 _tmp_58_rule(Parser *p)
24690 {
24691     D(p->level++);
24692     if (p->error_indicator) {
24693         D(p->level--);
24694         return NULL;
24695     }
24696     void * _res = NULL;
24697     int _mark = p->mark;
24698     { // ','
24699         if (p->error_indicator) {
24700             D(p->level--);
24701             return NULL;
24702         }
24703         D(fprintf(stderr, "%*c> _tmp_58[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
24704         Token * _literal;
24705         if (
24706             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24707         )
24708         {
24709             D(fprintf(stderr, "%*c+ _tmp_58[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
24710             _res = _literal;
24711             goto done;
24712         }
24713         p->mark = _mark;
24714         D(fprintf(stderr, "%*c%s _tmp_58[%d-%d]: %s failed!\n", p->level, ' ',
24715                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
24716     }
24717     { // ')'
24718         if (p->error_indicator) {
24719             D(p->level--);
24720             return NULL;
24721         }
24722         D(fprintf(stderr, "%*c> _tmp_58[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
24723         Token * _literal;
24724         if (
24725             (_literal = _PyPegen_expect_token(p, 8))  // token=')'
24726         )
24727         {
24728             D(fprintf(stderr, "%*c+ _tmp_58[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
24729             _res = _literal;
24730             goto done;
24731         }
24732         p->mark = _mark;
24733         D(fprintf(stderr, "%*c%s _tmp_58[%d-%d]: %s failed!\n", p->level, ' ',
24734                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
24735     }
24736     { // ':'
24737         if (p->error_indicator) {
24738             D(p->level--);
24739             return NULL;
24740         }
24741         D(fprintf(stderr, "%*c> _tmp_58[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
24742         Token * _literal;
24743         if (
24744             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
24745         )
24746         {
24747             D(fprintf(stderr, "%*c+ _tmp_58[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
24748             _res = _literal;
24749             goto done;
24750         }
24751         p->mark = _mark;
24752         D(fprintf(stderr, "%*c%s _tmp_58[%d-%d]: %s failed!\n", p->level, ' ',
24753                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
24754     }
24755     _res = NULL;
24756   done:
24757     D(p->level--);
24758     return _res;
24759 }
24760 
24761 // _loop1_59: except_block
24762 static asdl_seq *
_loop1_59_rule(Parser * p)24763 _loop1_59_rule(Parser *p)
24764 {
24765     D(p->level++);
24766     if (p->error_indicator) {
24767         D(p->level--);
24768         return NULL;
24769     }
24770     void *_res = NULL;
24771     int _mark = p->mark;
24772     int _start_mark = p->mark;
24773     void **_children = PyMem_Malloc(sizeof(void *));
24774     if (!_children) {
24775         p->error_indicator = 1;
24776         PyErr_NoMemory();
24777         D(p->level--);
24778         return NULL;
24779     }
24780     Py_ssize_t _children_capacity = 1;
24781     Py_ssize_t _n = 0;
24782     { // except_block
24783         if (p->error_indicator) {
24784             D(p->level--);
24785             return NULL;
24786         }
24787         D(fprintf(stderr, "%*c> _loop1_59[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block"));
24788         excepthandler_ty except_block_var;
24789         while (
24790             (except_block_var = except_block_rule(p))  // except_block
24791         )
24792         {
24793             _res = except_block_var;
24794             if (_n == _children_capacity) {
24795                 _children_capacity *= 2;
24796                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24797                 if (!_new_children) {
24798                     p->error_indicator = 1;
24799                     PyErr_NoMemory();
24800                     D(p->level--);
24801                     return NULL;
24802                 }
24803                 _children = _new_children;
24804             }
24805             _children[_n++] = _res;
24806             _mark = p->mark;
24807         }
24808         p->mark = _mark;
24809         D(fprintf(stderr, "%*c%s _loop1_59[%d-%d]: %s failed!\n", p->level, ' ',
24810                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_block"));
24811     }
24812     if (_n == 0 || p->error_indicator) {
24813         PyMem_Free(_children);
24814         D(p->level--);
24815         return NULL;
24816     }
24817     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24818     if (!_seq) {
24819         PyMem_Free(_children);
24820         p->error_indicator = 1;
24821         PyErr_NoMemory();
24822         D(p->level--);
24823         return NULL;
24824     }
24825     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24826     PyMem_Free(_children);
24827     _PyPegen_insert_memo(p, _start_mark, _loop1_59_type, _seq);
24828     D(p->level--);
24829     return _seq;
24830 }
24831 
24832 // _tmp_60: 'as' NAME
24833 static void *
_tmp_60_rule(Parser * p)24834 _tmp_60_rule(Parser *p)
24835 {
24836     D(p->level++);
24837     if (p->error_indicator) {
24838         D(p->level--);
24839         return NULL;
24840     }
24841     void * _res = NULL;
24842     int _mark = p->mark;
24843     { // 'as' NAME
24844         if (p->error_indicator) {
24845             D(p->level--);
24846             return NULL;
24847         }
24848         D(fprintf(stderr, "%*c> _tmp_60[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
24849         Token * _keyword;
24850         expr_ty z;
24851         if (
24852             (_keyword = _PyPegen_expect_token(p, 625))  // token='as'
24853             &&
24854             (z = _PyPegen_name_token(p))  // NAME
24855         )
24856         {
24857             D(fprintf(stderr, "%*c+ _tmp_60[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
24858             _res = z;
24859             if (_res == NULL && PyErr_Occurred()) {
24860                 p->error_indicator = 1;
24861                 D(p->level--);
24862                 return NULL;
24863             }
24864             goto done;
24865         }
24866         p->mark = _mark;
24867         D(fprintf(stderr, "%*c%s _tmp_60[%d-%d]: %s failed!\n", p->level, ' ',
24868                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
24869     }
24870     _res = NULL;
24871   done:
24872     D(p->level--);
24873     return _res;
24874 }
24875 
24876 // _loop1_61: case_block
24877 static asdl_seq *
_loop1_61_rule(Parser * p)24878 _loop1_61_rule(Parser *p)
24879 {
24880     D(p->level++);
24881     if (p->error_indicator) {
24882         D(p->level--);
24883         return NULL;
24884     }
24885     void *_res = NULL;
24886     int _mark = p->mark;
24887     int _start_mark = p->mark;
24888     void **_children = PyMem_Malloc(sizeof(void *));
24889     if (!_children) {
24890         p->error_indicator = 1;
24891         PyErr_NoMemory();
24892         D(p->level--);
24893         return NULL;
24894     }
24895     Py_ssize_t _children_capacity = 1;
24896     Py_ssize_t _n = 0;
24897     { // case_block
24898         if (p->error_indicator) {
24899             D(p->level--);
24900             return NULL;
24901         }
24902         D(fprintf(stderr, "%*c> _loop1_61[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "case_block"));
24903         match_case_ty case_block_var;
24904         while (
24905             (case_block_var = case_block_rule(p))  // case_block
24906         )
24907         {
24908             _res = case_block_var;
24909             if (_n == _children_capacity) {
24910                 _children_capacity *= 2;
24911                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24912                 if (!_new_children) {
24913                     p->error_indicator = 1;
24914                     PyErr_NoMemory();
24915                     D(p->level--);
24916                     return NULL;
24917                 }
24918                 _children = _new_children;
24919             }
24920             _children[_n++] = _res;
24921             _mark = p->mark;
24922         }
24923         p->mark = _mark;
24924         D(fprintf(stderr, "%*c%s _loop1_61[%d-%d]: %s failed!\n", p->level, ' ',
24925                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "case_block"));
24926     }
24927     if (_n == 0 || p->error_indicator) {
24928         PyMem_Free(_children);
24929         D(p->level--);
24930         return NULL;
24931     }
24932     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24933     if (!_seq) {
24934         PyMem_Free(_children);
24935         p->error_indicator = 1;
24936         PyErr_NoMemory();
24937         D(p->level--);
24938         return NULL;
24939     }
24940     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24941     PyMem_Free(_children);
24942     _PyPegen_insert_memo(p, _start_mark, _loop1_61_type, _seq);
24943     D(p->level--);
24944     return _seq;
24945 }
24946 
24947 // _loop0_63: '|' closed_pattern
24948 static asdl_seq *
_loop0_63_rule(Parser * p)24949 _loop0_63_rule(Parser *p)
24950 {
24951     D(p->level++);
24952     if (p->error_indicator) {
24953         D(p->level--);
24954         return NULL;
24955     }
24956     void *_res = NULL;
24957     int _mark = p->mark;
24958     int _start_mark = p->mark;
24959     void **_children = PyMem_Malloc(sizeof(void *));
24960     if (!_children) {
24961         p->error_indicator = 1;
24962         PyErr_NoMemory();
24963         D(p->level--);
24964         return NULL;
24965     }
24966     Py_ssize_t _children_capacity = 1;
24967     Py_ssize_t _n = 0;
24968     { // '|' closed_pattern
24969         if (p->error_indicator) {
24970             D(p->level--);
24971             return NULL;
24972         }
24973         D(fprintf(stderr, "%*c> _loop0_63[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|' closed_pattern"));
24974         Token * _literal;
24975         pattern_ty elem;
24976         while (
24977             (_literal = _PyPegen_expect_token(p, 18))  // token='|'
24978             &&
24979             (elem = closed_pattern_rule(p))  // closed_pattern
24980         )
24981         {
24982             _res = elem;
24983             if (_res == NULL && PyErr_Occurred()) {
24984                 p->error_indicator = 1;
24985                 PyMem_Free(_children);
24986                 D(p->level--);
24987                 return NULL;
24988             }
24989             if (_n == _children_capacity) {
24990                 _children_capacity *= 2;
24991                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24992                 if (!_new_children) {
24993                     p->error_indicator = 1;
24994                     PyErr_NoMemory();
24995                     D(p->level--);
24996                     return NULL;
24997                 }
24998                 _children = _new_children;
24999             }
25000             _children[_n++] = _res;
25001             _mark = p->mark;
25002         }
25003         p->mark = _mark;
25004         D(fprintf(stderr, "%*c%s _loop0_63[%d-%d]: %s failed!\n", p->level, ' ',
25005                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|' closed_pattern"));
25006     }
25007     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25008     if (!_seq) {
25009         PyMem_Free(_children);
25010         p->error_indicator = 1;
25011         PyErr_NoMemory();
25012         D(p->level--);
25013         return NULL;
25014     }
25015     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25016     PyMem_Free(_children);
25017     _PyPegen_insert_memo(p, _start_mark, _loop0_63_type, _seq);
25018     D(p->level--);
25019     return _seq;
25020 }
25021 
25022 // _gather_62: closed_pattern _loop0_63
25023 static asdl_seq *
_gather_62_rule(Parser * p)25024 _gather_62_rule(Parser *p)
25025 {
25026     D(p->level++);
25027     if (p->error_indicator) {
25028         D(p->level--);
25029         return NULL;
25030     }
25031     asdl_seq * _res = NULL;
25032     int _mark = p->mark;
25033     { // closed_pattern _loop0_63
25034         if (p->error_indicator) {
25035             D(p->level--);
25036             return NULL;
25037         }
25038         D(fprintf(stderr, "%*c> _gather_62[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_63"));
25039         pattern_ty elem;
25040         asdl_seq * seq;
25041         if (
25042             (elem = closed_pattern_rule(p))  // closed_pattern
25043             &&
25044             (seq = _loop0_63_rule(p))  // _loop0_63
25045         )
25046         {
25047             D(fprintf(stderr, "%*c+ _gather_62[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_63"));
25048             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
25049             goto done;
25050         }
25051         p->mark = _mark;
25052         D(fprintf(stderr, "%*c%s _gather_62[%d-%d]: %s failed!\n", p->level, ' ',
25053                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "closed_pattern _loop0_63"));
25054     }
25055     _res = NULL;
25056   done:
25057     D(p->level--);
25058     return _res;
25059 }
25060 
25061 // _tmp_64: '+' | '-'
25062 static void *
_tmp_64_rule(Parser * p)25063 _tmp_64_rule(Parser *p)
25064 {
25065     D(p->level++);
25066     if (p->error_indicator) {
25067         D(p->level--);
25068         return NULL;
25069     }
25070     void * _res = NULL;
25071     int _mark = p->mark;
25072     { // '+'
25073         if (p->error_indicator) {
25074             D(p->level--);
25075             return NULL;
25076         }
25077         D(fprintf(stderr, "%*c> _tmp_64[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
25078         Token * _literal;
25079         if (
25080             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
25081         )
25082         {
25083             D(fprintf(stderr, "%*c+ _tmp_64[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
25084             _res = _literal;
25085             goto done;
25086         }
25087         p->mark = _mark;
25088         D(fprintf(stderr, "%*c%s _tmp_64[%d-%d]: %s failed!\n", p->level, ' ',
25089                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
25090     }
25091     { // '-'
25092         if (p->error_indicator) {
25093             D(p->level--);
25094             return NULL;
25095         }
25096         D(fprintf(stderr, "%*c> _tmp_64[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
25097         Token * _literal;
25098         if (
25099             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
25100         )
25101         {
25102             D(fprintf(stderr, "%*c+ _tmp_64[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
25103             _res = _literal;
25104             goto done;
25105         }
25106         p->mark = _mark;
25107         D(fprintf(stderr, "%*c%s _tmp_64[%d-%d]: %s failed!\n", p->level, ' ',
25108                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
25109     }
25110     _res = NULL;
25111   done:
25112     D(p->level--);
25113     return _res;
25114 }
25115 
25116 // _tmp_65: '+' | '-'
25117 static void *
_tmp_65_rule(Parser * p)25118 _tmp_65_rule(Parser *p)
25119 {
25120     D(p->level++);
25121     if (p->error_indicator) {
25122         D(p->level--);
25123         return NULL;
25124     }
25125     void * _res = NULL;
25126     int _mark = p->mark;
25127     { // '+'
25128         if (p->error_indicator) {
25129             D(p->level--);
25130             return NULL;
25131         }
25132         D(fprintf(stderr, "%*c> _tmp_65[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
25133         Token * _literal;
25134         if (
25135             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
25136         )
25137         {
25138             D(fprintf(stderr, "%*c+ _tmp_65[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
25139             _res = _literal;
25140             goto done;
25141         }
25142         p->mark = _mark;
25143         D(fprintf(stderr, "%*c%s _tmp_65[%d-%d]: %s failed!\n", p->level, ' ',
25144                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
25145     }
25146     { // '-'
25147         if (p->error_indicator) {
25148             D(p->level--);
25149             return NULL;
25150         }
25151         D(fprintf(stderr, "%*c> _tmp_65[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
25152         Token * _literal;
25153         if (
25154             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
25155         )
25156         {
25157             D(fprintf(stderr, "%*c+ _tmp_65[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
25158             _res = _literal;
25159             goto done;
25160         }
25161         p->mark = _mark;
25162         D(fprintf(stderr, "%*c%s _tmp_65[%d-%d]: %s failed!\n", p->level, ' ',
25163                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
25164     }
25165     _res = NULL;
25166   done:
25167     D(p->level--);
25168     return _res;
25169 }
25170 
25171 // _tmp_66: '.' | '(' | '='
25172 static void *
_tmp_66_rule(Parser * p)25173 _tmp_66_rule(Parser *p)
25174 {
25175     D(p->level++);
25176     if (p->error_indicator) {
25177         D(p->level--);
25178         return NULL;
25179     }
25180     void * _res = NULL;
25181     int _mark = p->mark;
25182     { // '.'
25183         if (p->error_indicator) {
25184             D(p->level--);
25185             return NULL;
25186         }
25187         D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
25188         Token * _literal;
25189         if (
25190             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
25191         )
25192         {
25193             D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
25194             _res = _literal;
25195             goto done;
25196         }
25197         p->mark = _mark;
25198         D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
25199                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
25200     }
25201     { // '('
25202         if (p->error_indicator) {
25203             D(p->level--);
25204             return NULL;
25205         }
25206         D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
25207         Token * _literal;
25208         if (
25209             (_literal = _PyPegen_expect_token(p, 7))  // token='('
25210         )
25211         {
25212             D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
25213             _res = _literal;
25214             goto done;
25215         }
25216         p->mark = _mark;
25217         D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
25218                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
25219     }
25220     { // '='
25221         if (p->error_indicator) {
25222             D(p->level--);
25223             return NULL;
25224         }
25225         D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
25226         Token * _literal;
25227         if (
25228             (_literal = _PyPegen_expect_token(p, 22))  // token='='
25229         )
25230         {
25231             D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
25232             _res = _literal;
25233             goto done;
25234         }
25235         p->mark = _mark;
25236         D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
25237                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
25238     }
25239     _res = NULL;
25240   done:
25241     D(p->level--);
25242     return _res;
25243 }
25244 
25245 // _tmp_67: '.' | '(' | '='
25246 static void *
_tmp_67_rule(Parser * p)25247 _tmp_67_rule(Parser *p)
25248 {
25249     D(p->level++);
25250     if (p->error_indicator) {
25251         D(p->level--);
25252         return NULL;
25253     }
25254     void * _res = NULL;
25255     int _mark = p->mark;
25256     { // '.'
25257         if (p->error_indicator) {
25258             D(p->level--);
25259             return NULL;
25260         }
25261         D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
25262         Token * _literal;
25263         if (
25264             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
25265         )
25266         {
25267             D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
25268             _res = _literal;
25269             goto done;
25270         }
25271         p->mark = _mark;
25272         D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
25273                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
25274     }
25275     { // '('
25276         if (p->error_indicator) {
25277             D(p->level--);
25278             return NULL;
25279         }
25280         D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
25281         Token * _literal;
25282         if (
25283             (_literal = _PyPegen_expect_token(p, 7))  // token='('
25284         )
25285         {
25286             D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
25287             _res = _literal;
25288             goto done;
25289         }
25290         p->mark = _mark;
25291         D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
25292                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
25293     }
25294     { // '='
25295         if (p->error_indicator) {
25296             D(p->level--);
25297             return NULL;
25298         }
25299         D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
25300         Token * _literal;
25301         if (
25302             (_literal = _PyPegen_expect_token(p, 22))  // token='='
25303         )
25304         {
25305             D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
25306             _res = _literal;
25307             goto done;
25308         }
25309         p->mark = _mark;
25310         D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
25311                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
25312     }
25313     _res = NULL;
25314   done:
25315     D(p->level--);
25316     return _res;
25317 }
25318 
25319 // _loop0_69: ',' maybe_star_pattern
25320 static asdl_seq *
_loop0_69_rule(Parser * p)25321 _loop0_69_rule(Parser *p)
25322 {
25323     D(p->level++);
25324     if (p->error_indicator) {
25325         D(p->level--);
25326         return NULL;
25327     }
25328     void *_res = NULL;
25329     int _mark = p->mark;
25330     int _start_mark = p->mark;
25331     void **_children = PyMem_Malloc(sizeof(void *));
25332     if (!_children) {
25333         p->error_indicator = 1;
25334         PyErr_NoMemory();
25335         D(p->level--);
25336         return NULL;
25337     }
25338     Py_ssize_t _children_capacity = 1;
25339     Py_ssize_t _n = 0;
25340     { // ',' maybe_star_pattern
25341         if (p->error_indicator) {
25342             D(p->level--);
25343             return NULL;
25344         }
25345         D(fprintf(stderr, "%*c> _loop0_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' maybe_star_pattern"));
25346         Token * _literal;
25347         pattern_ty elem;
25348         while (
25349             (_literal = _PyPegen_expect_token(p, 12))  // token=','
25350             &&
25351             (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
25352         )
25353         {
25354             _res = elem;
25355             if (_res == NULL && PyErr_Occurred()) {
25356                 p->error_indicator = 1;
25357                 PyMem_Free(_children);
25358                 D(p->level--);
25359                 return NULL;
25360             }
25361             if (_n == _children_capacity) {
25362                 _children_capacity *= 2;
25363                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25364                 if (!_new_children) {
25365                     p->error_indicator = 1;
25366                     PyErr_NoMemory();
25367                     D(p->level--);
25368                     return NULL;
25369                 }
25370                 _children = _new_children;
25371             }
25372             _children[_n++] = _res;
25373             _mark = p->mark;
25374         }
25375         p->mark = _mark;
25376         D(fprintf(stderr, "%*c%s _loop0_69[%d-%d]: %s failed!\n", p->level, ' ',
25377                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' maybe_star_pattern"));
25378     }
25379     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25380     if (!_seq) {
25381         PyMem_Free(_children);
25382         p->error_indicator = 1;
25383         PyErr_NoMemory();
25384         D(p->level--);
25385         return NULL;
25386     }
25387     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25388     PyMem_Free(_children);
25389     _PyPegen_insert_memo(p, _start_mark, _loop0_69_type, _seq);
25390     D(p->level--);
25391     return _seq;
25392 }
25393 
25394 // _gather_68: maybe_star_pattern _loop0_69
25395 static asdl_seq *
_gather_68_rule(Parser * p)25396 _gather_68_rule(Parser *p)
25397 {
25398     D(p->level++);
25399     if (p->error_indicator) {
25400         D(p->level--);
25401         return NULL;
25402     }
25403     asdl_seq * _res = NULL;
25404     int _mark = p->mark;
25405     { // maybe_star_pattern _loop0_69
25406         if (p->error_indicator) {
25407             D(p->level--);
25408             return NULL;
25409         }
25410         D(fprintf(stderr, "%*c> _gather_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_69"));
25411         pattern_ty elem;
25412         asdl_seq * seq;
25413         if (
25414             (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
25415             &&
25416             (seq = _loop0_69_rule(p))  // _loop0_69
25417         )
25418         {
25419             D(fprintf(stderr, "%*c+ _gather_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_69"));
25420             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
25421             goto done;
25422         }
25423         p->mark = _mark;
25424         D(fprintf(stderr, "%*c%s _gather_68[%d-%d]: %s failed!\n", p->level, ' ',
25425                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern _loop0_69"));
25426     }
25427     _res = NULL;
25428   done:
25429     D(p->level--);
25430     return _res;
25431 }
25432 
25433 // _loop0_71: ',' key_value_pattern
25434 static asdl_seq *
_loop0_71_rule(Parser * p)25435 _loop0_71_rule(Parser *p)
25436 {
25437     D(p->level++);
25438     if (p->error_indicator) {
25439         D(p->level--);
25440         return NULL;
25441     }
25442     void *_res = NULL;
25443     int _mark = p->mark;
25444     int _start_mark = p->mark;
25445     void **_children = PyMem_Malloc(sizeof(void *));
25446     if (!_children) {
25447         p->error_indicator = 1;
25448         PyErr_NoMemory();
25449         D(p->level--);
25450         return NULL;
25451     }
25452     Py_ssize_t _children_capacity = 1;
25453     Py_ssize_t _n = 0;
25454     { // ',' key_value_pattern
25455         if (p->error_indicator) {
25456             D(p->level--);
25457             return NULL;
25458         }
25459         D(fprintf(stderr, "%*c> _loop0_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' key_value_pattern"));
25460         Token * _literal;
25461         KeyPatternPair* elem;
25462         while (
25463             (_literal = _PyPegen_expect_token(p, 12))  // token=','
25464             &&
25465             (elem = key_value_pattern_rule(p))  // key_value_pattern
25466         )
25467         {
25468             _res = elem;
25469             if (_res == NULL && PyErr_Occurred()) {
25470                 p->error_indicator = 1;
25471                 PyMem_Free(_children);
25472                 D(p->level--);
25473                 return NULL;
25474             }
25475             if (_n == _children_capacity) {
25476                 _children_capacity *= 2;
25477                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25478                 if (!_new_children) {
25479                     p->error_indicator = 1;
25480                     PyErr_NoMemory();
25481                     D(p->level--);
25482                     return NULL;
25483                 }
25484                 _children = _new_children;
25485             }
25486             _children[_n++] = _res;
25487             _mark = p->mark;
25488         }
25489         p->mark = _mark;
25490         D(fprintf(stderr, "%*c%s _loop0_71[%d-%d]: %s failed!\n", p->level, ' ',
25491                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' key_value_pattern"));
25492     }
25493     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25494     if (!_seq) {
25495         PyMem_Free(_children);
25496         p->error_indicator = 1;
25497         PyErr_NoMemory();
25498         D(p->level--);
25499         return NULL;
25500     }
25501     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25502     PyMem_Free(_children);
25503     _PyPegen_insert_memo(p, _start_mark, _loop0_71_type, _seq);
25504     D(p->level--);
25505     return _seq;
25506 }
25507 
25508 // _gather_70: key_value_pattern _loop0_71
25509 static asdl_seq *
_gather_70_rule(Parser * p)25510 _gather_70_rule(Parser *p)
25511 {
25512     D(p->level++);
25513     if (p->error_indicator) {
25514         D(p->level--);
25515         return NULL;
25516     }
25517     asdl_seq * _res = NULL;
25518     int _mark = p->mark;
25519     { // key_value_pattern _loop0_71
25520         if (p->error_indicator) {
25521             D(p->level--);
25522             return NULL;
25523         }
25524         D(fprintf(stderr, "%*c> _gather_70[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_71"));
25525         KeyPatternPair* elem;
25526         asdl_seq * seq;
25527         if (
25528             (elem = key_value_pattern_rule(p))  // key_value_pattern
25529             &&
25530             (seq = _loop0_71_rule(p))  // _loop0_71
25531         )
25532         {
25533             D(fprintf(stderr, "%*c+ _gather_70[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_71"));
25534             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
25535             goto done;
25536         }
25537         p->mark = _mark;
25538         D(fprintf(stderr, "%*c%s _gather_70[%d-%d]: %s failed!\n", p->level, ' ',
25539                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "key_value_pattern _loop0_71"));
25540     }
25541     _res = NULL;
25542   done:
25543     D(p->level--);
25544     return _res;
25545 }
25546 
25547 // _tmp_72: literal_expr | attr
25548 static void *
_tmp_72_rule(Parser * p)25549 _tmp_72_rule(Parser *p)
25550 {
25551     D(p->level++);
25552     if (p->error_indicator) {
25553         D(p->level--);
25554         return NULL;
25555     }
25556     void * _res = NULL;
25557     int _mark = p->mark;
25558     { // literal_expr
25559         if (p->error_indicator) {
25560             D(p->level--);
25561             return NULL;
25562         }
25563         D(fprintf(stderr, "%*c> _tmp_72[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_expr"));
25564         expr_ty literal_expr_var;
25565         if (
25566             (literal_expr_var = literal_expr_rule(p))  // literal_expr
25567         )
25568         {
25569             D(fprintf(stderr, "%*c+ _tmp_72[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_expr"));
25570             _res = literal_expr_var;
25571             goto done;
25572         }
25573         p->mark = _mark;
25574         D(fprintf(stderr, "%*c%s _tmp_72[%d-%d]: %s failed!\n", p->level, ' ',
25575                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_expr"));
25576     }
25577     { // attr
25578         if (p->error_indicator) {
25579             D(p->level--);
25580             return NULL;
25581         }
25582         D(fprintf(stderr, "%*c> _tmp_72[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
25583         expr_ty attr_var;
25584         if (
25585             (attr_var = attr_rule(p))  // attr
25586         )
25587         {
25588             D(fprintf(stderr, "%*c+ _tmp_72[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
25589             _res = attr_var;
25590             goto done;
25591         }
25592         p->mark = _mark;
25593         D(fprintf(stderr, "%*c%s _tmp_72[%d-%d]: %s failed!\n", p->level, ' ',
25594                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
25595     }
25596     _res = NULL;
25597   done:
25598     D(p->level--);
25599     return _res;
25600 }
25601 
25602 // _loop0_74: ',' pattern
25603 static asdl_seq *
_loop0_74_rule(Parser * p)25604 _loop0_74_rule(Parser *p)
25605 {
25606     D(p->level++);
25607     if (p->error_indicator) {
25608         D(p->level--);
25609         return NULL;
25610     }
25611     void *_res = NULL;
25612     int _mark = p->mark;
25613     int _start_mark = p->mark;
25614     void **_children = PyMem_Malloc(sizeof(void *));
25615     if (!_children) {
25616         p->error_indicator = 1;
25617         PyErr_NoMemory();
25618         D(p->level--);
25619         return NULL;
25620     }
25621     Py_ssize_t _children_capacity = 1;
25622     Py_ssize_t _n = 0;
25623     { // ',' pattern
25624         if (p->error_indicator) {
25625             D(p->level--);
25626             return NULL;
25627         }
25628         D(fprintf(stderr, "%*c> _loop0_74[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' pattern"));
25629         Token * _literal;
25630         pattern_ty elem;
25631         while (
25632             (_literal = _PyPegen_expect_token(p, 12))  // token=','
25633             &&
25634             (elem = pattern_rule(p))  // pattern
25635         )
25636         {
25637             _res = elem;
25638             if (_res == NULL && PyErr_Occurred()) {
25639                 p->error_indicator = 1;
25640                 PyMem_Free(_children);
25641                 D(p->level--);
25642                 return NULL;
25643             }
25644             if (_n == _children_capacity) {
25645                 _children_capacity *= 2;
25646                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25647                 if (!_new_children) {
25648                     p->error_indicator = 1;
25649                     PyErr_NoMemory();
25650                     D(p->level--);
25651                     return NULL;
25652                 }
25653                 _children = _new_children;
25654             }
25655             _children[_n++] = _res;
25656             _mark = p->mark;
25657         }
25658         p->mark = _mark;
25659         D(fprintf(stderr, "%*c%s _loop0_74[%d-%d]: %s failed!\n", p->level, ' ',
25660                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' pattern"));
25661     }
25662     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25663     if (!_seq) {
25664         PyMem_Free(_children);
25665         p->error_indicator = 1;
25666         PyErr_NoMemory();
25667         D(p->level--);
25668         return NULL;
25669     }
25670     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25671     PyMem_Free(_children);
25672     _PyPegen_insert_memo(p, _start_mark, _loop0_74_type, _seq);
25673     D(p->level--);
25674     return _seq;
25675 }
25676 
25677 // _gather_73: pattern _loop0_74
25678 static asdl_seq *
_gather_73_rule(Parser * p)25679 _gather_73_rule(Parser *p)
25680 {
25681     D(p->level++);
25682     if (p->error_indicator) {
25683         D(p->level--);
25684         return NULL;
25685     }
25686     asdl_seq * _res = NULL;
25687     int _mark = p->mark;
25688     { // pattern _loop0_74
25689         if (p->error_indicator) {
25690             D(p->level--);
25691             return NULL;
25692         }
25693         D(fprintf(stderr, "%*c> _gather_73[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern _loop0_74"));
25694         pattern_ty elem;
25695         asdl_seq * seq;
25696         if (
25697             (elem = pattern_rule(p))  // pattern
25698             &&
25699             (seq = _loop0_74_rule(p))  // _loop0_74
25700         )
25701         {
25702             D(fprintf(stderr, "%*c+ _gather_73[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern _loop0_74"));
25703             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
25704             goto done;
25705         }
25706         p->mark = _mark;
25707         D(fprintf(stderr, "%*c%s _gather_73[%d-%d]: %s failed!\n", p->level, ' ',
25708                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern _loop0_74"));
25709     }
25710     _res = NULL;
25711   done:
25712     D(p->level--);
25713     return _res;
25714 }
25715 
25716 // _loop0_76: ',' keyword_pattern
25717 static asdl_seq *
_loop0_76_rule(Parser * p)25718 _loop0_76_rule(Parser *p)
25719 {
25720     D(p->level++);
25721     if (p->error_indicator) {
25722         D(p->level--);
25723         return NULL;
25724     }
25725     void *_res = NULL;
25726     int _mark = p->mark;
25727     int _start_mark = p->mark;
25728     void **_children = PyMem_Malloc(sizeof(void *));
25729     if (!_children) {
25730         p->error_indicator = 1;
25731         PyErr_NoMemory();
25732         D(p->level--);
25733         return NULL;
25734     }
25735     Py_ssize_t _children_capacity = 1;
25736     Py_ssize_t _n = 0;
25737     { // ',' keyword_pattern
25738         if (p->error_indicator) {
25739             D(p->level--);
25740             return NULL;
25741         }
25742         D(fprintf(stderr, "%*c> _loop0_76[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' keyword_pattern"));
25743         Token * _literal;
25744         KeyPatternPair* elem;
25745         while (
25746             (_literal = _PyPegen_expect_token(p, 12))  // token=','
25747             &&
25748             (elem = keyword_pattern_rule(p))  // keyword_pattern
25749         )
25750         {
25751             _res = elem;
25752             if (_res == NULL && PyErr_Occurred()) {
25753                 p->error_indicator = 1;
25754                 PyMem_Free(_children);
25755                 D(p->level--);
25756                 return NULL;
25757             }
25758             if (_n == _children_capacity) {
25759                 _children_capacity *= 2;
25760                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25761                 if (!_new_children) {
25762                     p->error_indicator = 1;
25763                     PyErr_NoMemory();
25764                     D(p->level--);
25765                     return NULL;
25766                 }
25767                 _children = _new_children;
25768             }
25769             _children[_n++] = _res;
25770             _mark = p->mark;
25771         }
25772         p->mark = _mark;
25773         D(fprintf(stderr, "%*c%s _loop0_76[%d-%d]: %s failed!\n", p->level, ' ',
25774                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' keyword_pattern"));
25775     }
25776     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25777     if (!_seq) {
25778         PyMem_Free(_children);
25779         p->error_indicator = 1;
25780         PyErr_NoMemory();
25781         D(p->level--);
25782         return NULL;
25783     }
25784     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25785     PyMem_Free(_children);
25786     _PyPegen_insert_memo(p, _start_mark, _loop0_76_type, _seq);
25787     D(p->level--);
25788     return _seq;
25789 }
25790 
25791 // _gather_75: keyword_pattern _loop0_76
25792 static asdl_seq *
_gather_75_rule(Parser * p)25793 _gather_75_rule(Parser *p)
25794 {
25795     D(p->level++);
25796     if (p->error_indicator) {
25797         D(p->level--);
25798         return NULL;
25799     }
25800     asdl_seq * _res = NULL;
25801     int _mark = p->mark;
25802     { // keyword_pattern _loop0_76
25803         if (p->error_indicator) {
25804             D(p->level--);
25805             return NULL;
25806         }
25807         D(fprintf(stderr, "%*c> _gather_75[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_76"));
25808         KeyPatternPair* elem;
25809         asdl_seq * seq;
25810         if (
25811             (elem = keyword_pattern_rule(p))  // keyword_pattern
25812             &&
25813             (seq = _loop0_76_rule(p))  // _loop0_76
25814         )
25815         {
25816             D(fprintf(stderr, "%*c+ _gather_75[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_76"));
25817             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
25818             goto done;
25819         }
25820         p->mark = _mark;
25821         D(fprintf(stderr, "%*c%s _gather_75[%d-%d]: %s failed!\n", p->level, ' ',
25822                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "keyword_pattern _loop0_76"));
25823     }
25824     _res = NULL;
25825   done:
25826     D(p->level--);
25827     return _res;
25828 }
25829 
25830 // _loop1_77: (',' expression)
25831 static asdl_seq *
_loop1_77_rule(Parser * p)25832 _loop1_77_rule(Parser *p)
25833 {
25834     D(p->level++);
25835     if (p->error_indicator) {
25836         D(p->level--);
25837         return NULL;
25838     }
25839     void *_res = NULL;
25840     int _mark = p->mark;
25841     int _start_mark = p->mark;
25842     void **_children = PyMem_Malloc(sizeof(void *));
25843     if (!_children) {
25844         p->error_indicator = 1;
25845         PyErr_NoMemory();
25846         D(p->level--);
25847         return NULL;
25848     }
25849     Py_ssize_t _children_capacity = 1;
25850     Py_ssize_t _n = 0;
25851     { // (',' expression)
25852         if (p->error_indicator) {
25853             D(p->level--);
25854             return NULL;
25855         }
25856         D(fprintf(stderr, "%*c> _loop1_77[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)"));
25857         void *_tmp_190_var;
25858         while (
25859             (_tmp_190_var = _tmp_190_rule(p))  // ',' expression
25860         )
25861         {
25862             _res = _tmp_190_var;
25863             if (_n == _children_capacity) {
25864                 _children_capacity *= 2;
25865                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25866                 if (!_new_children) {
25867                     p->error_indicator = 1;
25868                     PyErr_NoMemory();
25869                     D(p->level--);
25870                     return NULL;
25871                 }
25872                 _children = _new_children;
25873             }
25874             _children[_n++] = _res;
25875             _mark = p->mark;
25876         }
25877         p->mark = _mark;
25878         D(fprintf(stderr, "%*c%s _loop1_77[%d-%d]: %s failed!\n", p->level, ' ',
25879                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' expression)"));
25880     }
25881     if (_n == 0 || p->error_indicator) {
25882         PyMem_Free(_children);
25883         D(p->level--);
25884         return NULL;
25885     }
25886     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25887     if (!_seq) {
25888         PyMem_Free(_children);
25889         p->error_indicator = 1;
25890         PyErr_NoMemory();
25891         D(p->level--);
25892         return NULL;
25893     }
25894     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25895     PyMem_Free(_children);
25896     _PyPegen_insert_memo(p, _start_mark, _loop1_77_type, _seq);
25897     D(p->level--);
25898     return _seq;
25899 }
25900 
25901 // _loop1_78: (',' star_expression)
25902 static asdl_seq *
_loop1_78_rule(Parser * p)25903 _loop1_78_rule(Parser *p)
25904 {
25905     D(p->level++);
25906     if (p->error_indicator) {
25907         D(p->level--);
25908         return NULL;
25909     }
25910     void *_res = NULL;
25911     int _mark = p->mark;
25912     int _start_mark = p->mark;
25913     void **_children = PyMem_Malloc(sizeof(void *));
25914     if (!_children) {
25915         p->error_indicator = 1;
25916         PyErr_NoMemory();
25917         D(p->level--);
25918         return NULL;
25919     }
25920     Py_ssize_t _children_capacity = 1;
25921     Py_ssize_t _n = 0;
25922     { // (',' star_expression)
25923         if (p->error_indicator) {
25924             D(p->level--);
25925             return NULL;
25926         }
25927         D(fprintf(stderr, "%*c> _loop1_78[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)"));
25928         void *_tmp_191_var;
25929         while (
25930             (_tmp_191_var = _tmp_191_rule(p))  // ',' star_expression
25931         )
25932         {
25933             _res = _tmp_191_var;
25934             if (_n == _children_capacity) {
25935                 _children_capacity *= 2;
25936                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25937                 if (!_new_children) {
25938                     p->error_indicator = 1;
25939                     PyErr_NoMemory();
25940                     D(p->level--);
25941                     return NULL;
25942                 }
25943                 _children = _new_children;
25944             }
25945             _children[_n++] = _res;
25946             _mark = p->mark;
25947         }
25948         p->mark = _mark;
25949         D(fprintf(stderr, "%*c%s _loop1_78[%d-%d]: %s failed!\n", p->level, ' ',
25950                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_expression)"));
25951     }
25952     if (_n == 0 || p->error_indicator) {
25953         PyMem_Free(_children);
25954         D(p->level--);
25955         return NULL;
25956     }
25957     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25958     if (!_seq) {
25959         PyMem_Free(_children);
25960         p->error_indicator = 1;
25961         PyErr_NoMemory();
25962         D(p->level--);
25963         return NULL;
25964     }
25965     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25966     PyMem_Free(_children);
25967     _PyPegen_insert_memo(p, _start_mark, _loop1_78_type, _seq);
25968     D(p->level--);
25969     return _seq;
25970 }
25971 
25972 // _loop0_80: ',' star_named_expression
25973 static asdl_seq *
_loop0_80_rule(Parser * p)25974 _loop0_80_rule(Parser *p)
25975 {
25976     D(p->level++);
25977     if (p->error_indicator) {
25978         D(p->level--);
25979         return NULL;
25980     }
25981     void *_res = NULL;
25982     int _mark = p->mark;
25983     int _start_mark = p->mark;
25984     void **_children = PyMem_Malloc(sizeof(void *));
25985     if (!_children) {
25986         p->error_indicator = 1;
25987         PyErr_NoMemory();
25988         D(p->level--);
25989         return NULL;
25990     }
25991     Py_ssize_t _children_capacity = 1;
25992     Py_ssize_t _n = 0;
25993     { // ',' star_named_expression
25994         if (p->error_indicator) {
25995             D(p->level--);
25996             return NULL;
25997         }
25998         D(fprintf(stderr, "%*c> _loop0_80[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_named_expression"));
25999         Token * _literal;
26000         expr_ty elem;
26001         while (
26002             (_literal = _PyPegen_expect_token(p, 12))  // token=','
26003             &&
26004             (elem = star_named_expression_rule(p))  // star_named_expression
26005         )
26006         {
26007             _res = elem;
26008             if (_res == NULL && PyErr_Occurred()) {
26009                 p->error_indicator = 1;
26010                 PyMem_Free(_children);
26011                 D(p->level--);
26012                 return NULL;
26013             }
26014             if (_n == _children_capacity) {
26015                 _children_capacity *= 2;
26016                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26017                 if (!_new_children) {
26018                     p->error_indicator = 1;
26019                     PyErr_NoMemory();
26020                     D(p->level--);
26021                     return NULL;
26022                 }
26023                 _children = _new_children;
26024             }
26025             _children[_n++] = _res;
26026             _mark = p->mark;
26027         }
26028         p->mark = _mark;
26029         D(fprintf(stderr, "%*c%s _loop0_80[%d-%d]: %s failed!\n", p->level, ' ',
26030                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_named_expression"));
26031     }
26032     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26033     if (!_seq) {
26034         PyMem_Free(_children);
26035         p->error_indicator = 1;
26036         PyErr_NoMemory();
26037         D(p->level--);
26038         return NULL;
26039     }
26040     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26041     PyMem_Free(_children);
26042     _PyPegen_insert_memo(p, _start_mark, _loop0_80_type, _seq);
26043     D(p->level--);
26044     return _seq;
26045 }
26046 
26047 // _gather_79: star_named_expression _loop0_80
26048 static asdl_seq *
_gather_79_rule(Parser * p)26049 _gather_79_rule(Parser *p)
26050 {
26051     D(p->level++);
26052     if (p->error_indicator) {
26053         D(p->level--);
26054         return NULL;
26055     }
26056     asdl_seq * _res = NULL;
26057     int _mark = p->mark;
26058     { // star_named_expression _loop0_80
26059         if (p->error_indicator) {
26060             D(p->level--);
26061             return NULL;
26062         }
26063         D(fprintf(stderr, "%*c> _gather_79[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_80"));
26064         expr_ty elem;
26065         asdl_seq * seq;
26066         if (
26067             (elem = star_named_expression_rule(p))  // star_named_expression
26068             &&
26069             (seq = _loop0_80_rule(p))  // _loop0_80
26070         )
26071         {
26072             D(fprintf(stderr, "%*c+ _gather_79[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_80"));
26073             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
26074             goto done;
26075         }
26076         p->mark = _mark;
26077         D(fprintf(stderr, "%*c%s _gather_79[%d-%d]: %s failed!\n", p->level, ' ',
26078                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression _loop0_80"));
26079     }
26080     _res = NULL;
26081   done:
26082     D(p->level--);
26083     return _res;
26084 }
26085 
26086 // _loop1_81: ('or' conjunction)
26087 static asdl_seq *
_loop1_81_rule(Parser * p)26088 _loop1_81_rule(Parser *p)
26089 {
26090     D(p->level++);
26091     if (p->error_indicator) {
26092         D(p->level--);
26093         return NULL;
26094     }
26095     void *_res = NULL;
26096     int _mark = p->mark;
26097     int _start_mark = p->mark;
26098     void **_children = PyMem_Malloc(sizeof(void *));
26099     if (!_children) {
26100         p->error_indicator = 1;
26101         PyErr_NoMemory();
26102         D(p->level--);
26103         return NULL;
26104     }
26105     Py_ssize_t _children_capacity = 1;
26106     Py_ssize_t _n = 0;
26107     { // ('or' conjunction)
26108         if (p->error_indicator) {
26109             D(p->level--);
26110             return NULL;
26111         }
26112         D(fprintf(stderr, "%*c> _loop1_81[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)"));
26113         void *_tmp_192_var;
26114         while (
26115             (_tmp_192_var = _tmp_192_rule(p))  // 'or' conjunction
26116         )
26117         {
26118             _res = _tmp_192_var;
26119             if (_n == _children_capacity) {
26120                 _children_capacity *= 2;
26121                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26122                 if (!_new_children) {
26123                     p->error_indicator = 1;
26124                     PyErr_NoMemory();
26125                     D(p->level--);
26126                     return NULL;
26127                 }
26128                 _children = _new_children;
26129             }
26130             _children[_n++] = _res;
26131             _mark = p->mark;
26132         }
26133         p->mark = _mark;
26134         D(fprintf(stderr, "%*c%s _loop1_81[%d-%d]: %s failed!\n", p->level, ' ',
26135                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('or' conjunction)"));
26136     }
26137     if (_n == 0 || p->error_indicator) {
26138         PyMem_Free(_children);
26139         D(p->level--);
26140         return NULL;
26141     }
26142     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26143     if (!_seq) {
26144         PyMem_Free(_children);
26145         p->error_indicator = 1;
26146         PyErr_NoMemory();
26147         D(p->level--);
26148         return NULL;
26149     }
26150     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26151     PyMem_Free(_children);
26152     _PyPegen_insert_memo(p, _start_mark, _loop1_81_type, _seq);
26153     D(p->level--);
26154     return _seq;
26155 }
26156 
26157 // _loop1_82: ('and' inversion)
26158 static asdl_seq *
_loop1_82_rule(Parser * p)26159 _loop1_82_rule(Parser *p)
26160 {
26161     D(p->level++);
26162     if (p->error_indicator) {
26163         D(p->level--);
26164         return NULL;
26165     }
26166     void *_res = NULL;
26167     int _mark = p->mark;
26168     int _start_mark = p->mark;
26169     void **_children = PyMem_Malloc(sizeof(void *));
26170     if (!_children) {
26171         p->error_indicator = 1;
26172         PyErr_NoMemory();
26173         D(p->level--);
26174         return NULL;
26175     }
26176     Py_ssize_t _children_capacity = 1;
26177     Py_ssize_t _n = 0;
26178     { // ('and' inversion)
26179         if (p->error_indicator) {
26180             D(p->level--);
26181             return NULL;
26182         }
26183         D(fprintf(stderr, "%*c> _loop1_82[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)"));
26184         void *_tmp_193_var;
26185         while (
26186             (_tmp_193_var = _tmp_193_rule(p))  // 'and' inversion
26187         )
26188         {
26189             _res = _tmp_193_var;
26190             if (_n == _children_capacity) {
26191                 _children_capacity *= 2;
26192                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26193                 if (!_new_children) {
26194                     p->error_indicator = 1;
26195                     PyErr_NoMemory();
26196                     D(p->level--);
26197                     return NULL;
26198                 }
26199                 _children = _new_children;
26200             }
26201             _children[_n++] = _res;
26202             _mark = p->mark;
26203         }
26204         p->mark = _mark;
26205         D(fprintf(stderr, "%*c%s _loop1_82[%d-%d]: %s failed!\n", p->level, ' ',
26206                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('and' inversion)"));
26207     }
26208     if (_n == 0 || p->error_indicator) {
26209         PyMem_Free(_children);
26210         D(p->level--);
26211         return NULL;
26212     }
26213     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26214     if (!_seq) {
26215         PyMem_Free(_children);
26216         p->error_indicator = 1;
26217         PyErr_NoMemory();
26218         D(p->level--);
26219         return NULL;
26220     }
26221     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26222     PyMem_Free(_children);
26223     _PyPegen_insert_memo(p, _start_mark, _loop1_82_type, _seq);
26224     D(p->level--);
26225     return _seq;
26226 }
26227 
26228 // _loop1_83: compare_op_bitwise_or_pair
26229 static asdl_seq *
_loop1_83_rule(Parser * p)26230 _loop1_83_rule(Parser *p)
26231 {
26232     D(p->level++);
26233     if (p->error_indicator) {
26234         D(p->level--);
26235         return NULL;
26236     }
26237     void *_res = NULL;
26238     int _mark = p->mark;
26239     int _start_mark = p->mark;
26240     void **_children = PyMem_Malloc(sizeof(void *));
26241     if (!_children) {
26242         p->error_indicator = 1;
26243         PyErr_NoMemory();
26244         D(p->level--);
26245         return NULL;
26246     }
26247     Py_ssize_t _children_capacity = 1;
26248     Py_ssize_t _n = 0;
26249     { // compare_op_bitwise_or_pair
26250         if (p->error_indicator) {
26251             D(p->level--);
26252             return NULL;
26253         }
26254         D(fprintf(stderr, "%*c> _loop1_83[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compare_op_bitwise_or_pair"));
26255         CmpopExprPair* compare_op_bitwise_or_pair_var;
26256         while (
26257             (compare_op_bitwise_or_pair_var = compare_op_bitwise_or_pair_rule(p))  // compare_op_bitwise_or_pair
26258         )
26259         {
26260             _res = compare_op_bitwise_or_pair_var;
26261             if (_n == _children_capacity) {
26262                 _children_capacity *= 2;
26263                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26264                 if (!_new_children) {
26265                     p->error_indicator = 1;
26266                     PyErr_NoMemory();
26267                     D(p->level--);
26268                     return NULL;
26269                 }
26270                 _children = _new_children;
26271             }
26272             _children[_n++] = _res;
26273             _mark = p->mark;
26274         }
26275         p->mark = _mark;
26276         D(fprintf(stderr, "%*c%s _loop1_83[%d-%d]: %s failed!\n", p->level, ' ',
26277                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compare_op_bitwise_or_pair"));
26278     }
26279     if (_n == 0 || p->error_indicator) {
26280         PyMem_Free(_children);
26281         D(p->level--);
26282         return NULL;
26283     }
26284     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26285     if (!_seq) {
26286         PyMem_Free(_children);
26287         p->error_indicator = 1;
26288         PyErr_NoMemory();
26289         D(p->level--);
26290         return NULL;
26291     }
26292     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26293     PyMem_Free(_children);
26294     _PyPegen_insert_memo(p, _start_mark, _loop1_83_type, _seq);
26295     D(p->level--);
26296     return _seq;
26297 }
26298 
26299 // _tmp_84: '!='
26300 static void *
_tmp_84_rule(Parser * p)26301 _tmp_84_rule(Parser *p)
26302 {
26303     D(p->level++);
26304     if (p->error_indicator) {
26305         D(p->level--);
26306         return NULL;
26307     }
26308     void * _res = NULL;
26309     int _mark = p->mark;
26310     { // '!='
26311         if (p->error_indicator) {
26312             D(p->level--);
26313             return NULL;
26314         }
26315         D(fprintf(stderr, "%*c> _tmp_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!='"));
26316         Token * tok;
26317         if (
26318             (tok = _PyPegen_expect_token(p, 28))  // token='!='
26319         )
26320         {
26321             D(fprintf(stderr, "%*c+ _tmp_84[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!='"));
26322             _res = _PyPegen_check_barry_as_flufl ( p , tok ) ? NULL : tok;
26323             if (_res == NULL && PyErr_Occurred()) {
26324                 p->error_indicator = 1;
26325                 D(p->level--);
26326                 return NULL;
26327             }
26328             goto done;
26329         }
26330         p->mark = _mark;
26331         D(fprintf(stderr, "%*c%s _tmp_84[%d-%d]: %s failed!\n", p->level, ' ',
26332                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!='"));
26333     }
26334     _res = NULL;
26335   done:
26336     D(p->level--);
26337     return _res;
26338 }
26339 
26340 // _loop0_86: ',' slice
26341 static asdl_seq *
_loop0_86_rule(Parser * p)26342 _loop0_86_rule(Parser *p)
26343 {
26344     D(p->level++);
26345     if (p->error_indicator) {
26346         D(p->level--);
26347         return NULL;
26348     }
26349     void *_res = NULL;
26350     int _mark = p->mark;
26351     int _start_mark = p->mark;
26352     void **_children = PyMem_Malloc(sizeof(void *));
26353     if (!_children) {
26354         p->error_indicator = 1;
26355         PyErr_NoMemory();
26356         D(p->level--);
26357         return NULL;
26358     }
26359     Py_ssize_t _children_capacity = 1;
26360     Py_ssize_t _n = 0;
26361     { // ',' slice
26362         if (p->error_indicator) {
26363             D(p->level--);
26364             return NULL;
26365         }
26366         D(fprintf(stderr, "%*c> _loop0_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' slice"));
26367         Token * _literal;
26368         expr_ty elem;
26369         while (
26370             (_literal = _PyPegen_expect_token(p, 12))  // token=','
26371             &&
26372             (elem = slice_rule(p))  // slice
26373         )
26374         {
26375             _res = elem;
26376             if (_res == NULL && PyErr_Occurred()) {
26377                 p->error_indicator = 1;
26378                 PyMem_Free(_children);
26379                 D(p->level--);
26380                 return NULL;
26381             }
26382             if (_n == _children_capacity) {
26383                 _children_capacity *= 2;
26384                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26385                 if (!_new_children) {
26386                     p->error_indicator = 1;
26387                     PyErr_NoMemory();
26388                     D(p->level--);
26389                     return NULL;
26390                 }
26391                 _children = _new_children;
26392             }
26393             _children[_n++] = _res;
26394             _mark = p->mark;
26395         }
26396         p->mark = _mark;
26397         D(fprintf(stderr, "%*c%s _loop0_86[%d-%d]: %s failed!\n", p->level, ' ',
26398                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' slice"));
26399     }
26400     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26401     if (!_seq) {
26402         PyMem_Free(_children);
26403         p->error_indicator = 1;
26404         PyErr_NoMemory();
26405         D(p->level--);
26406         return NULL;
26407     }
26408     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26409     PyMem_Free(_children);
26410     _PyPegen_insert_memo(p, _start_mark, _loop0_86_type, _seq);
26411     D(p->level--);
26412     return _seq;
26413 }
26414 
26415 // _gather_85: slice _loop0_86
26416 static asdl_seq *
_gather_85_rule(Parser * p)26417 _gather_85_rule(Parser *p)
26418 {
26419     D(p->level++);
26420     if (p->error_indicator) {
26421         D(p->level--);
26422         return NULL;
26423     }
26424     asdl_seq * _res = NULL;
26425     int _mark = p->mark;
26426     { // slice _loop0_86
26427         if (p->error_indicator) {
26428             D(p->level--);
26429             return NULL;
26430         }
26431         D(fprintf(stderr, "%*c> _gather_85[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice _loop0_86"));
26432         expr_ty elem;
26433         asdl_seq * seq;
26434         if (
26435             (elem = slice_rule(p))  // slice
26436             &&
26437             (seq = _loop0_86_rule(p))  // _loop0_86
26438         )
26439         {
26440             D(fprintf(stderr, "%*c+ _gather_85[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice _loop0_86"));
26441             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
26442             goto done;
26443         }
26444         p->mark = _mark;
26445         D(fprintf(stderr, "%*c%s _gather_85[%d-%d]: %s failed!\n", p->level, ' ',
26446                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice _loop0_86"));
26447     }
26448     _res = NULL;
26449   done:
26450     D(p->level--);
26451     return _res;
26452 }
26453 
26454 // _tmp_87: ':' expression?
26455 static void *
_tmp_87_rule(Parser * p)26456 _tmp_87_rule(Parser *p)
26457 {
26458     D(p->level++);
26459     if (p->error_indicator) {
26460         D(p->level--);
26461         return NULL;
26462     }
26463     void * _res = NULL;
26464     int _mark = p->mark;
26465     { // ':' expression?
26466         if (p->error_indicator) {
26467             D(p->level--);
26468             return NULL;
26469         }
26470         D(fprintf(stderr, "%*c> _tmp_87[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression?"));
26471         Token * _literal;
26472         void *d;
26473         if (
26474             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
26475             &&
26476             (d = expression_rule(p), !p->error_indicator)  // expression?
26477         )
26478         {
26479             D(fprintf(stderr, "%*c+ _tmp_87[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?"));
26480             _res = d;
26481             if (_res == NULL && PyErr_Occurred()) {
26482                 p->error_indicator = 1;
26483                 D(p->level--);
26484                 return NULL;
26485             }
26486             goto done;
26487         }
26488         p->mark = _mark;
26489         D(fprintf(stderr, "%*c%s _tmp_87[%d-%d]: %s failed!\n", p->level, ' ',
26490                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression?"));
26491     }
26492     _res = NULL;
26493   done:
26494     D(p->level--);
26495     return _res;
26496 }
26497 
26498 // _tmp_88: tuple | group | genexp
26499 static void *
_tmp_88_rule(Parser * p)26500 _tmp_88_rule(Parser *p)
26501 {
26502     D(p->level++);
26503     if (p->error_indicator) {
26504         D(p->level--);
26505         return NULL;
26506     }
26507     void * _res = NULL;
26508     int _mark = p->mark;
26509     { // tuple
26510         if (p->error_indicator) {
26511             D(p->level--);
26512             return NULL;
26513         }
26514         D(fprintf(stderr, "%*c> _tmp_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
26515         expr_ty tuple_var;
26516         if (
26517             (tuple_var = tuple_rule(p))  // tuple
26518         )
26519         {
26520             D(fprintf(stderr, "%*c+ _tmp_88[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
26521             _res = tuple_var;
26522             goto done;
26523         }
26524         p->mark = _mark;
26525         D(fprintf(stderr, "%*c%s _tmp_88[%d-%d]: %s failed!\n", p->level, ' ',
26526                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
26527     }
26528     { // group
26529         if (p->error_indicator) {
26530             D(p->level--);
26531             return NULL;
26532         }
26533         D(fprintf(stderr, "%*c> _tmp_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group"));
26534         expr_ty group_var;
26535         if (
26536             (group_var = group_rule(p))  // group
26537         )
26538         {
26539             D(fprintf(stderr, "%*c+ _tmp_88[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group"));
26540             _res = group_var;
26541             goto done;
26542         }
26543         p->mark = _mark;
26544         D(fprintf(stderr, "%*c%s _tmp_88[%d-%d]: %s failed!\n", p->level, ' ',
26545                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group"));
26546     }
26547     { // genexp
26548         if (p->error_indicator) {
26549             D(p->level--);
26550             return NULL;
26551         }
26552         D(fprintf(stderr, "%*c> _tmp_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
26553         expr_ty genexp_var;
26554         if (
26555             (genexp_var = genexp_rule(p))  // genexp
26556         )
26557         {
26558             D(fprintf(stderr, "%*c+ _tmp_88[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
26559             _res = genexp_var;
26560             goto done;
26561         }
26562         p->mark = _mark;
26563         D(fprintf(stderr, "%*c%s _tmp_88[%d-%d]: %s failed!\n", p->level, ' ',
26564                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
26565     }
26566     _res = NULL;
26567   done:
26568     D(p->level--);
26569     return _res;
26570 }
26571 
26572 // _tmp_89: list | listcomp
26573 static void *
_tmp_89_rule(Parser * p)26574 _tmp_89_rule(Parser *p)
26575 {
26576     D(p->level++);
26577     if (p->error_indicator) {
26578         D(p->level--);
26579         return NULL;
26580     }
26581     void * _res = NULL;
26582     int _mark = p->mark;
26583     { // list
26584         if (p->error_indicator) {
26585             D(p->level--);
26586             return NULL;
26587         }
26588         D(fprintf(stderr, "%*c> _tmp_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
26589         expr_ty list_var;
26590         if (
26591             (list_var = list_rule(p))  // list
26592         )
26593         {
26594             D(fprintf(stderr, "%*c+ _tmp_89[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
26595             _res = list_var;
26596             goto done;
26597         }
26598         p->mark = _mark;
26599         D(fprintf(stderr, "%*c%s _tmp_89[%d-%d]: %s failed!\n", p->level, ' ',
26600                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
26601     }
26602     { // listcomp
26603         if (p->error_indicator) {
26604             D(p->level--);
26605             return NULL;
26606         }
26607         D(fprintf(stderr, "%*c> _tmp_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "listcomp"));
26608         expr_ty listcomp_var;
26609         if (
26610             (listcomp_var = listcomp_rule(p))  // listcomp
26611         )
26612         {
26613             D(fprintf(stderr, "%*c+ _tmp_89[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "listcomp"));
26614             _res = listcomp_var;
26615             goto done;
26616         }
26617         p->mark = _mark;
26618         D(fprintf(stderr, "%*c%s _tmp_89[%d-%d]: %s failed!\n", p->level, ' ',
26619                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "listcomp"));
26620     }
26621     _res = NULL;
26622   done:
26623     D(p->level--);
26624     return _res;
26625 }
26626 
26627 // _tmp_90: dict | set | dictcomp | setcomp
26628 static void *
_tmp_90_rule(Parser * p)26629 _tmp_90_rule(Parser *p)
26630 {
26631     D(p->level++);
26632     if (p->error_indicator) {
26633         D(p->level--);
26634         return NULL;
26635     }
26636     void * _res = NULL;
26637     int _mark = p->mark;
26638     { // dict
26639         if (p->error_indicator) {
26640             D(p->level--);
26641             return NULL;
26642         }
26643         D(fprintf(stderr, "%*c> _tmp_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dict"));
26644         expr_ty dict_var;
26645         if (
26646             (dict_var = dict_rule(p))  // dict
26647         )
26648         {
26649             D(fprintf(stderr, "%*c+ _tmp_90[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dict"));
26650             _res = dict_var;
26651             goto done;
26652         }
26653         p->mark = _mark;
26654         D(fprintf(stderr, "%*c%s _tmp_90[%d-%d]: %s failed!\n", p->level, ' ',
26655                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dict"));
26656     }
26657     { // set
26658         if (p->error_indicator) {
26659             D(p->level--);
26660             return NULL;
26661         }
26662         D(fprintf(stderr, "%*c> _tmp_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "set"));
26663         expr_ty set_var;
26664         if (
26665             (set_var = set_rule(p))  // set
26666         )
26667         {
26668             D(fprintf(stderr, "%*c+ _tmp_90[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "set"));
26669             _res = set_var;
26670             goto done;
26671         }
26672         p->mark = _mark;
26673         D(fprintf(stderr, "%*c%s _tmp_90[%d-%d]: %s failed!\n", p->level, ' ',
26674                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "set"));
26675     }
26676     { // dictcomp
26677         if (p->error_indicator) {
26678             D(p->level--);
26679             return NULL;
26680         }
26681         D(fprintf(stderr, "%*c> _tmp_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dictcomp"));
26682         expr_ty dictcomp_var;
26683         if (
26684             (dictcomp_var = dictcomp_rule(p))  // dictcomp
26685         )
26686         {
26687             D(fprintf(stderr, "%*c+ _tmp_90[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dictcomp"));
26688             _res = dictcomp_var;
26689             goto done;
26690         }
26691         p->mark = _mark;
26692         D(fprintf(stderr, "%*c%s _tmp_90[%d-%d]: %s failed!\n", p->level, ' ',
26693                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dictcomp"));
26694     }
26695     { // setcomp
26696         if (p->error_indicator) {
26697             D(p->level--);
26698             return NULL;
26699         }
26700         D(fprintf(stderr, "%*c> _tmp_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "setcomp"));
26701         expr_ty setcomp_var;
26702         if (
26703             (setcomp_var = setcomp_rule(p))  // setcomp
26704         )
26705         {
26706             D(fprintf(stderr, "%*c+ _tmp_90[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "setcomp"));
26707             _res = setcomp_var;
26708             goto done;
26709         }
26710         p->mark = _mark;
26711         D(fprintf(stderr, "%*c%s _tmp_90[%d-%d]: %s failed!\n", p->level, ' ',
26712                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "setcomp"));
26713     }
26714     _res = NULL;
26715   done:
26716     D(p->level--);
26717     return _res;
26718 }
26719 
26720 // _tmp_91: yield_expr | named_expression
26721 static void *
_tmp_91_rule(Parser * p)26722 _tmp_91_rule(Parser *p)
26723 {
26724     D(p->level++);
26725     if (p->error_indicator) {
26726         D(p->level--);
26727         return NULL;
26728     }
26729     void * _res = NULL;
26730     int _mark = p->mark;
26731     { // yield_expr
26732         if (p->error_indicator) {
26733             D(p->level--);
26734             return NULL;
26735         }
26736         D(fprintf(stderr, "%*c> _tmp_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
26737         expr_ty yield_expr_var;
26738         if (
26739             (yield_expr_var = yield_expr_rule(p))  // yield_expr
26740         )
26741         {
26742             D(fprintf(stderr, "%*c+ _tmp_91[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
26743             _res = yield_expr_var;
26744             goto done;
26745         }
26746         p->mark = _mark;
26747         D(fprintf(stderr, "%*c%s _tmp_91[%d-%d]: %s failed!\n", p->level, ' ',
26748                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
26749     }
26750     { // named_expression
26751         if (p->error_indicator) {
26752             D(p->level--);
26753             return NULL;
26754         }
26755         D(fprintf(stderr, "%*c> _tmp_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
26756         expr_ty named_expression_var;
26757         if (
26758             (named_expression_var = named_expression_rule(p))  // named_expression
26759         )
26760         {
26761             D(fprintf(stderr, "%*c+ _tmp_91[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
26762             _res = named_expression_var;
26763             goto done;
26764         }
26765         p->mark = _mark;
26766         D(fprintf(stderr, "%*c%s _tmp_91[%d-%d]: %s failed!\n", p->level, ' ',
26767                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
26768     }
26769     _res = NULL;
26770   done:
26771     D(p->level--);
26772     return _res;
26773 }
26774 
26775 // _loop0_92: lambda_param_no_default
26776 static asdl_seq *
_loop0_92_rule(Parser * p)26777 _loop0_92_rule(Parser *p)
26778 {
26779     D(p->level++);
26780     if (p->error_indicator) {
26781         D(p->level--);
26782         return NULL;
26783     }
26784     void *_res = NULL;
26785     int _mark = p->mark;
26786     int _start_mark = p->mark;
26787     void **_children = PyMem_Malloc(sizeof(void *));
26788     if (!_children) {
26789         p->error_indicator = 1;
26790         PyErr_NoMemory();
26791         D(p->level--);
26792         return NULL;
26793     }
26794     Py_ssize_t _children_capacity = 1;
26795     Py_ssize_t _n = 0;
26796     { // lambda_param_no_default
26797         if (p->error_indicator) {
26798             D(p->level--);
26799             return NULL;
26800         }
26801         D(fprintf(stderr, "%*c> _loop0_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
26802         arg_ty lambda_param_no_default_var;
26803         while (
26804             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
26805         )
26806         {
26807             _res = lambda_param_no_default_var;
26808             if (_n == _children_capacity) {
26809                 _children_capacity *= 2;
26810                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26811                 if (!_new_children) {
26812                     p->error_indicator = 1;
26813                     PyErr_NoMemory();
26814                     D(p->level--);
26815                     return NULL;
26816                 }
26817                 _children = _new_children;
26818             }
26819             _children[_n++] = _res;
26820             _mark = p->mark;
26821         }
26822         p->mark = _mark;
26823         D(fprintf(stderr, "%*c%s _loop0_92[%d-%d]: %s failed!\n", p->level, ' ',
26824                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
26825     }
26826     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26827     if (!_seq) {
26828         PyMem_Free(_children);
26829         p->error_indicator = 1;
26830         PyErr_NoMemory();
26831         D(p->level--);
26832         return NULL;
26833     }
26834     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26835     PyMem_Free(_children);
26836     _PyPegen_insert_memo(p, _start_mark, _loop0_92_type, _seq);
26837     D(p->level--);
26838     return _seq;
26839 }
26840 
26841 // _loop0_93: lambda_param_with_default
26842 static asdl_seq *
_loop0_93_rule(Parser * p)26843 _loop0_93_rule(Parser *p)
26844 {
26845     D(p->level++);
26846     if (p->error_indicator) {
26847         D(p->level--);
26848         return NULL;
26849     }
26850     void *_res = NULL;
26851     int _mark = p->mark;
26852     int _start_mark = p->mark;
26853     void **_children = PyMem_Malloc(sizeof(void *));
26854     if (!_children) {
26855         p->error_indicator = 1;
26856         PyErr_NoMemory();
26857         D(p->level--);
26858         return NULL;
26859     }
26860     Py_ssize_t _children_capacity = 1;
26861     Py_ssize_t _n = 0;
26862     { // lambda_param_with_default
26863         if (p->error_indicator) {
26864             D(p->level--);
26865             return NULL;
26866         }
26867         D(fprintf(stderr, "%*c> _loop0_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
26868         NameDefaultPair* lambda_param_with_default_var;
26869         while (
26870             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
26871         )
26872         {
26873             _res = lambda_param_with_default_var;
26874             if (_n == _children_capacity) {
26875                 _children_capacity *= 2;
26876                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26877                 if (!_new_children) {
26878                     p->error_indicator = 1;
26879                     PyErr_NoMemory();
26880                     D(p->level--);
26881                     return NULL;
26882                 }
26883                 _children = _new_children;
26884             }
26885             _children[_n++] = _res;
26886             _mark = p->mark;
26887         }
26888         p->mark = _mark;
26889         D(fprintf(stderr, "%*c%s _loop0_93[%d-%d]: %s failed!\n", p->level, ' ',
26890                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
26891     }
26892     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26893     if (!_seq) {
26894         PyMem_Free(_children);
26895         p->error_indicator = 1;
26896         PyErr_NoMemory();
26897         D(p->level--);
26898         return NULL;
26899     }
26900     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26901     PyMem_Free(_children);
26902     _PyPegen_insert_memo(p, _start_mark, _loop0_93_type, _seq);
26903     D(p->level--);
26904     return _seq;
26905 }
26906 
26907 // _loop0_94: lambda_param_with_default
26908 static asdl_seq *
_loop0_94_rule(Parser * p)26909 _loop0_94_rule(Parser *p)
26910 {
26911     D(p->level++);
26912     if (p->error_indicator) {
26913         D(p->level--);
26914         return NULL;
26915     }
26916     void *_res = NULL;
26917     int _mark = p->mark;
26918     int _start_mark = p->mark;
26919     void **_children = PyMem_Malloc(sizeof(void *));
26920     if (!_children) {
26921         p->error_indicator = 1;
26922         PyErr_NoMemory();
26923         D(p->level--);
26924         return NULL;
26925     }
26926     Py_ssize_t _children_capacity = 1;
26927     Py_ssize_t _n = 0;
26928     { // lambda_param_with_default
26929         if (p->error_indicator) {
26930             D(p->level--);
26931             return NULL;
26932         }
26933         D(fprintf(stderr, "%*c> _loop0_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
26934         NameDefaultPair* lambda_param_with_default_var;
26935         while (
26936             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
26937         )
26938         {
26939             _res = lambda_param_with_default_var;
26940             if (_n == _children_capacity) {
26941                 _children_capacity *= 2;
26942                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26943                 if (!_new_children) {
26944                     p->error_indicator = 1;
26945                     PyErr_NoMemory();
26946                     D(p->level--);
26947                     return NULL;
26948                 }
26949                 _children = _new_children;
26950             }
26951             _children[_n++] = _res;
26952             _mark = p->mark;
26953         }
26954         p->mark = _mark;
26955         D(fprintf(stderr, "%*c%s _loop0_94[%d-%d]: %s failed!\n", p->level, ' ',
26956                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
26957     }
26958     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26959     if (!_seq) {
26960         PyMem_Free(_children);
26961         p->error_indicator = 1;
26962         PyErr_NoMemory();
26963         D(p->level--);
26964         return NULL;
26965     }
26966     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26967     PyMem_Free(_children);
26968     _PyPegen_insert_memo(p, _start_mark, _loop0_94_type, _seq);
26969     D(p->level--);
26970     return _seq;
26971 }
26972 
26973 // _loop1_95: lambda_param_no_default
26974 static asdl_seq *
_loop1_95_rule(Parser * p)26975 _loop1_95_rule(Parser *p)
26976 {
26977     D(p->level++);
26978     if (p->error_indicator) {
26979         D(p->level--);
26980         return NULL;
26981     }
26982     void *_res = NULL;
26983     int _mark = p->mark;
26984     int _start_mark = p->mark;
26985     void **_children = PyMem_Malloc(sizeof(void *));
26986     if (!_children) {
26987         p->error_indicator = 1;
26988         PyErr_NoMemory();
26989         D(p->level--);
26990         return NULL;
26991     }
26992     Py_ssize_t _children_capacity = 1;
26993     Py_ssize_t _n = 0;
26994     { // lambda_param_no_default
26995         if (p->error_indicator) {
26996             D(p->level--);
26997             return NULL;
26998         }
26999         D(fprintf(stderr, "%*c> _loop1_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
27000         arg_ty lambda_param_no_default_var;
27001         while (
27002             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
27003         )
27004         {
27005             _res = lambda_param_no_default_var;
27006             if (_n == _children_capacity) {
27007                 _children_capacity *= 2;
27008                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27009                 if (!_new_children) {
27010                     p->error_indicator = 1;
27011                     PyErr_NoMemory();
27012                     D(p->level--);
27013                     return NULL;
27014                 }
27015                 _children = _new_children;
27016             }
27017             _children[_n++] = _res;
27018             _mark = p->mark;
27019         }
27020         p->mark = _mark;
27021         D(fprintf(stderr, "%*c%s _loop1_95[%d-%d]: %s failed!\n", p->level, ' ',
27022                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
27023     }
27024     if (_n == 0 || p->error_indicator) {
27025         PyMem_Free(_children);
27026         D(p->level--);
27027         return NULL;
27028     }
27029     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27030     if (!_seq) {
27031         PyMem_Free(_children);
27032         p->error_indicator = 1;
27033         PyErr_NoMemory();
27034         D(p->level--);
27035         return NULL;
27036     }
27037     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27038     PyMem_Free(_children);
27039     _PyPegen_insert_memo(p, _start_mark, _loop1_95_type, _seq);
27040     D(p->level--);
27041     return _seq;
27042 }
27043 
27044 // _loop0_96: lambda_param_with_default
27045 static asdl_seq *
_loop0_96_rule(Parser * p)27046 _loop0_96_rule(Parser *p)
27047 {
27048     D(p->level++);
27049     if (p->error_indicator) {
27050         D(p->level--);
27051         return NULL;
27052     }
27053     void *_res = NULL;
27054     int _mark = p->mark;
27055     int _start_mark = p->mark;
27056     void **_children = PyMem_Malloc(sizeof(void *));
27057     if (!_children) {
27058         p->error_indicator = 1;
27059         PyErr_NoMemory();
27060         D(p->level--);
27061         return NULL;
27062     }
27063     Py_ssize_t _children_capacity = 1;
27064     Py_ssize_t _n = 0;
27065     { // lambda_param_with_default
27066         if (p->error_indicator) {
27067             D(p->level--);
27068             return NULL;
27069         }
27070         D(fprintf(stderr, "%*c> _loop0_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
27071         NameDefaultPair* lambda_param_with_default_var;
27072         while (
27073             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
27074         )
27075         {
27076             _res = lambda_param_with_default_var;
27077             if (_n == _children_capacity) {
27078                 _children_capacity *= 2;
27079                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27080                 if (!_new_children) {
27081                     p->error_indicator = 1;
27082                     PyErr_NoMemory();
27083                     D(p->level--);
27084                     return NULL;
27085                 }
27086                 _children = _new_children;
27087             }
27088             _children[_n++] = _res;
27089             _mark = p->mark;
27090         }
27091         p->mark = _mark;
27092         D(fprintf(stderr, "%*c%s _loop0_96[%d-%d]: %s failed!\n", p->level, ' ',
27093                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
27094     }
27095     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27096     if (!_seq) {
27097         PyMem_Free(_children);
27098         p->error_indicator = 1;
27099         PyErr_NoMemory();
27100         D(p->level--);
27101         return NULL;
27102     }
27103     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27104     PyMem_Free(_children);
27105     _PyPegen_insert_memo(p, _start_mark, _loop0_96_type, _seq);
27106     D(p->level--);
27107     return _seq;
27108 }
27109 
27110 // _loop1_97: lambda_param_with_default
27111 static asdl_seq *
_loop1_97_rule(Parser * p)27112 _loop1_97_rule(Parser *p)
27113 {
27114     D(p->level++);
27115     if (p->error_indicator) {
27116         D(p->level--);
27117         return NULL;
27118     }
27119     void *_res = NULL;
27120     int _mark = p->mark;
27121     int _start_mark = p->mark;
27122     void **_children = PyMem_Malloc(sizeof(void *));
27123     if (!_children) {
27124         p->error_indicator = 1;
27125         PyErr_NoMemory();
27126         D(p->level--);
27127         return NULL;
27128     }
27129     Py_ssize_t _children_capacity = 1;
27130     Py_ssize_t _n = 0;
27131     { // lambda_param_with_default
27132         if (p->error_indicator) {
27133             D(p->level--);
27134             return NULL;
27135         }
27136         D(fprintf(stderr, "%*c> _loop1_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
27137         NameDefaultPair* lambda_param_with_default_var;
27138         while (
27139             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
27140         )
27141         {
27142             _res = lambda_param_with_default_var;
27143             if (_n == _children_capacity) {
27144                 _children_capacity *= 2;
27145                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27146                 if (!_new_children) {
27147                     p->error_indicator = 1;
27148                     PyErr_NoMemory();
27149                     D(p->level--);
27150                     return NULL;
27151                 }
27152                 _children = _new_children;
27153             }
27154             _children[_n++] = _res;
27155             _mark = p->mark;
27156         }
27157         p->mark = _mark;
27158         D(fprintf(stderr, "%*c%s _loop1_97[%d-%d]: %s failed!\n", p->level, ' ',
27159                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
27160     }
27161     if (_n == 0 || p->error_indicator) {
27162         PyMem_Free(_children);
27163         D(p->level--);
27164         return NULL;
27165     }
27166     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27167     if (!_seq) {
27168         PyMem_Free(_children);
27169         p->error_indicator = 1;
27170         PyErr_NoMemory();
27171         D(p->level--);
27172         return NULL;
27173     }
27174     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27175     PyMem_Free(_children);
27176     _PyPegen_insert_memo(p, _start_mark, _loop1_97_type, _seq);
27177     D(p->level--);
27178     return _seq;
27179 }
27180 
27181 // _loop1_98: lambda_param_no_default
27182 static asdl_seq *
_loop1_98_rule(Parser * p)27183 _loop1_98_rule(Parser *p)
27184 {
27185     D(p->level++);
27186     if (p->error_indicator) {
27187         D(p->level--);
27188         return NULL;
27189     }
27190     void *_res = NULL;
27191     int _mark = p->mark;
27192     int _start_mark = p->mark;
27193     void **_children = PyMem_Malloc(sizeof(void *));
27194     if (!_children) {
27195         p->error_indicator = 1;
27196         PyErr_NoMemory();
27197         D(p->level--);
27198         return NULL;
27199     }
27200     Py_ssize_t _children_capacity = 1;
27201     Py_ssize_t _n = 0;
27202     { // lambda_param_no_default
27203         if (p->error_indicator) {
27204             D(p->level--);
27205             return NULL;
27206         }
27207         D(fprintf(stderr, "%*c> _loop1_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
27208         arg_ty lambda_param_no_default_var;
27209         while (
27210             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
27211         )
27212         {
27213             _res = lambda_param_no_default_var;
27214             if (_n == _children_capacity) {
27215                 _children_capacity *= 2;
27216                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27217                 if (!_new_children) {
27218                     p->error_indicator = 1;
27219                     PyErr_NoMemory();
27220                     D(p->level--);
27221                     return NULL;
27222                 }
27223                 _children = _new_children;
27224             }
27225             _children[_n++] = _res;
27226             _mark = p->mark;
27227         }
27228         p->mark = _mark;
27229         D(fprintf(stderr, "%*c%s _loop1_98[%d-%d]: %s failed!\n", p->level, ' ',
27230                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
27231     }
27232     if (_n == 0 || p->error_indicator) {
27233         PyMem_Free(_children);
27234         D(p->level--);
27235         return NULL;
27236     }
27237     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27238     if (!_seq) {
27239         PyMem_Free(_children);
27240         p->error_indicator = 1;
27241         PyErr_NoMemory();
27242         D(p->level--);
27243         return NULL;
27244     }
27245     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27246     PyMem_Free(_children);
27247     _PyPegen_insert_memo(p, _start_mark, _loop1_98_type, _seq);
27248     D(p->level--);
27249     return _seq;
27250 }
27251 
27252 // _loop1_99: lambda_param_no_default
27253 static asdl_seq *
_loop1_99_rule(Parser * p)27254 _loop1_99_rule(Parser *p)
27255 {
27256     D(p->level++);
27257     if (p->error_indicator) {
27258         D(p->level--);
27259         return NULL;
27260     }
27261     void *_res = NULL;
27262     int _mark = p->mark;
27263     int _start_mark = p->mark;
27264     void **_children = PyMem_Malloc(sizeof(void *));
27265     if (!_children) {
27266         p->error_indicator = 1;
27267         PyErr_NoMemory();
27268         D(p->level--);
27269         return NULL;
27270     }
27271     Py_ssize_t _children_capacity = 1;
27272     Py_ssize_t _n = 0;
27273     { // lambda_param_no_default
27274         if (p->error_indicator) {
27275             D(p->level--);
27276             return NULL;
27277         }
27278         D(fprintf(stderr, "%*c> _loop1_99[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
27279         arg_ty lambda_param_no_default_var;
27280         while (
27281             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
27282         )
27283         {
27284             _res = lambda_param_no_default_var;
27285             if (_n == _children_capacity) {
27286                 _children_capacity *= 2;
27287                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27288                 if (!_new_children) {
27289                     p->error_indicator = 1;
27290                     PyErr_NoMemory();
27291                     D(p->level--);
27292                     return NULL;
27293                 }
27294                 _children = _new_children;
27295             }
27296             _children[_n++] = _res;
27297             _mark = p->mark;
27298         }
27299         p->mark = _mark;
27300         D(fprintf(stderr, "%*c%s _loop1_99[%d-%d]: %s failed!\n", p->level, ' ',
27301                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
27302     }
27303     if (_n == 0 || p->error_indicator) {
27304         PyMem_Free(_children);
27305         D(p->level--);
27306         return NULL;
27307     }
27308     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27309     if (!_seq) {
27310         PyMem_Free(_children);
27311         p->error_indicator = 1;
27312         PyErr_NoMemory();
27313         D(p->level--);
27314         return NULL;
27315     }
27316     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27317     PyMem_Free(_children);
27318     _PyPegen_insert_memo(p, _start_mark, _loop1_99_type, _seq);
27319     D(p->level--);
27320     return _seq;
27321 }
27322 
27323 // _loop0_100: lambda_param_no_default
27324 static asdl_seq *
_loop0_100_rule(Parser * p)27325 _loop0_100_rule(Parser *p)
27326 {
27327     D(p->level++);
27328     if (p->error_indicator) {
27329         D(p->level--);
27330         return NULL;
27331     }
27332     void *_res = NULL;
27333     int _mark = p->mark;
27334     int _start_mark = p->mark;
27335     void **_children = PyMem_Malloc(sizeof(void *));
27336     if (!_children) {
27337         p->error_indicator = 1;
27338         PyErr_NoMemory();
27339         D(p->level--);
27340         return NULL;
27341     }
27342     Py_ssize_t _children_capacity = 1;
27343     Py_ssize_t _n = 0;
27344     { // lambda_param_no_default
27345         if (p->error_indicator) {
27346             D(p->level--);
27347             return NULL;
27348         }
27349         D(fprintf(stderr, "%*c> _loop0_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
27350         arg_ty lambda_param_no_default_var;
27351         while (
27352             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
27353         )
27354         {
27355             _res = lambda_param_no_default_var;
27356             if (_n == _children_capacity) {
27357                 _children_capacity *= 2;
27358                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27359                 if (!_new_children) {
27360                     p->error_indicator = 1;
27361                     PyErr_NoMemory();
27362                     D(p->level--);
27363                     return NULL;
27364                 }
27365                 _children = _new_children;
27366             }
27367             _children[_n++] = _res;
27368             _mark = p->mark;
27369         }
27370         p->mark = _mark;
27371         D(fprintf(stderr, "%*c%s _loop0_100[%d-%d]: %s failed!\n", p->level, ' ',
27372                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
27373     }
27374     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27375     if (!_seq) {
27376         PyMem_Free(_children);
27377         p->error_indicator = 1;
27378         PyErr_NoMemory();
27379         D(p->level--);
27380         return NULL;
27381     }
27382     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27383     PyMem_Free(_children);
27384     _PyPegen_insert_memo(p, _start_mark, _loop0_100_type, _seq);
27385     D(p->level--);
27386     return _seq;
27387 }
27388 
27389 // _loop1_101: lambda_param_with_default
27390 static asdl_seq *
_loop1_101_rule(Parser * p)27391 _loop1_101_rule(Parser *p)
27392 {
27393     D(p->level++);
27394     if (p->error_indicator) {
27395         D(p->level--);
27396         return NULL;
27397     }
27398     void *_res = NULL;
27399     int _mark = p->mark;
27400     int _start_mark = p->mark;
27401     void **_children = PyMem_Malloc(sizeof(void *));
27402     if (!_children) {
27403         p->error_indicator = 1;
27404         PyErr_NoMemory();
27405         D(p->level--);
27406         return NULL;
27407     }
27408     Py_ssize_t _children_capacity = 1;
27409     Py_ssize_t _n = 0;
27410     { // lambda_param_with_default
27411         if (p->error_indicator) {
27412             D(p->level--);
27413             return NULL;
27414         }
27415         D(fprintf(stderr, "%*c> _loop1_101[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
27416         NameDefaultPair* lambda_param_with_default_var;
27417         while (
27418             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
27419         )
27420         {
27421             _res = lambda_param_with_default_var;
27422             if (_n == _children_capacity) {
27423                 _children_capacity *= 2;
27424                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27425                 if (!_new_children) {
27426                     p->error_indicator = 1;
27427                     PyErr_NoMemory();
27428                     D(p->level--);
27429                     return NULL;
27430                 }
27431                 _children = _new_children;
27432             }
27433             _children[_n++] = _res;
27434             _mark = p->mark;
27435         }
27436         p->mark = _mark;
27437         D(fprintf(stderr, "%*c%s _loop1_101[%d-%d]: %s failed!\n", p->level, ' ',
27438                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
27439     }
27440     if (_n == 0 || p->error_indicator) {
27441         PyMem_Free(_children);
27442         D(p->level--);
27443         return NULL;
27444     }
27445     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27446     if (!_seq) {
27447         PyMem_Free(_children);
27448         p->error_indicator = 1;
27449         PyErr_NoMemory();
27450         D(p->level--);
27451         return NULL;
27452     }
27453     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27454     PyMem_Free(_children);
27455     _PyPegen_insert_memo(p, _start_mark, _loop1_101_type, _seq);
27456     D(p->level--);
27457     return _seq;
27458 }
27459 
27460 // _loop0_102: lambda_param_no_default
27461 static asdl_seq *
_loop0_102_rule(Parser * p)27462 _loop0_102_rule(Parser *p)
27463 {
27464     D(p->level++);
27465     if (p->error_indicator) {
27466         D(p->level--);
27467         return NULL;
27468     }
27469     void *_res = NULL;
27470     int _mark = p->mark;
27471     int _start_mark = p->mark;
27472     void **_children = PyMem_Malloc(sizeof(void *));
27473     if (!_children) {
27474         p->error_indicator = 1;
27475         PyErr_NoMemory();
27476         D(p->level--);
27477         return NULL;
27478     }
27479     Py_ssize_t _children_capacity = 1;
27480     Py_ssize_t _n = 0;
27481     { // lambda_param_no_default
27482         if (p->error_indicator) {
27483             D(p->level--);
27484             return NULL;
27485         }
27486         D(fprintf(stderr, "%*c> _loop0_102[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
27487         arg_ty lambda_param_no_default_var;
27488         while (
27489             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
27490         )
27491         {
27492             _res = lambda_param_no_default_var;
27493             if (_n == _children_capacity) {
27494                 _children_capacity *= 2;
27495                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27496                 if (!_new_children) {
27497                     p->error_indicator = 1;
27498                     PyErr_NoMemory();
27499                     D(p->level--);
27500                     return NULL;
27501                 }
27502                 _children = _new_children;
27503             }
27504             _children[_n++] = _res;
27505             _mark = p->mark;
27506         }
27507         p->mark = _mark;
27508         D(fprintf(stderr, "%*c%s _loop0_102[%d-%d]: %s failed!\n", p->level, ' ',
27509                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
27510     }
27511     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27512     if (!_seq) {
27513         PyMem_Free(_children);
27514         p->error_indicator = 1;
27515         PyErr_NoMemory();
27516         D(p->level--);
27517         return NULL;
27518     }
27519     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27520     PyMem_Free(_children);
27521     _PyPegen_insert_memo(p, _start_mark, _loop0_102_type, _seq);
27522     D(p->level--);
27523     return _seq;
27524 }
27525 
27526 // _loop1_103: lambda_param_with_default
27527 static asdl_seq *
_loop1_103_rule(Parser * p)27528 _loop1_103_rule(Parser *p)
27529 {
27530     D(p->level++);
27531     if (p->error_indicator) {
27532         D(p->level--);
27533         return NULL;
27534     }
27535     void *_res = NULL;
27536     int _mark = p->mark;
27537     int _start_mark = p->mark;
27538     void **_children = PyMem_Malloc(sizeof(void *));
27539     if (!_children) {
27540         p->error_indicator = 1;
27541         PyErr_NoMemory();
27542         D(p->level--);
27543         return NULL;
27544     }
27545     Py_ssize_t _children_capacity = 1;
27546     Py_ssize_t _n = 0;
27547     { // lambda_param_with_default
27548         if (p->error_indicator) {
27549             D(p->level--);
27550             return NULL;
27551         }
27552         D(fprintf(stderr, "%*c> _loop1_103[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
27553         NameDefaultPair* lambda_param_with_default_var;
27554         while (
27555             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
27556         )
27557         {
27558             _res = lambda_param_with_default_var;
27559             if (_n == _children_capacity) {
27560                 _children_capacity *= 2;
27561                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27562                 if (!_new_children) {
27563                     p->error_indicator = 1;
27564                     PyErr_NoMemory();
27565                     D(p->level--);
27566                     return NULL;
27567                 }
27568                 _children = _new_children;
27569             }
27570             _children[_n++] = _res;
27571             _mark = p->mark;
27572         }
27573         p->mark = _mark;
27574         D(fprintf(stderr, "%*c%s _loop1_103[%d-%d]: %s failed!\n", p->level, ' ',
27575                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
27576     }
27577     if (_n == 0 || p->error_indicator) {
27578         PyMem_Free(_children);
27579         D(p->level--);
27580         return NULL;
27581     }
27582     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27583     if (!_seq) {
27584         PyMem_Free(_children);
27585         p->error_indicator = 1;
27586         PyErr_NoMemory();
27587         D(p->level--);
27588         return NULL;
27589     }
27590     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27591     PyMem_Free(_children);
27592     _PyPegen_insert_memo(p, _start_mark, _loop1_103_type, _seq);
27593     D(p->level--);
27594     return _seq;
27595 }
27596 
27597 // _loop0_104: lambda_param_maybe_default
27598 static asdl_seq *
_loop0_104_rule(Parser * p)27599 _loop0_104_rule(Parser *p)
27600 {
27601     D(p->level++);
27602     if (p->error_indicator) {
27603         D(p->level--);
27604         return NULL;
27605     }
27606     void *_res = NULL;
27607     int _mark = p->mark;
27608     int _start_mark = p->mark;
27609     void **_children = PyMem_Malloc(sizeof(void *));
27610     if (!_children) {
27611         p->error_indicator = 1;
27612         PyErr_NoMemory();
27613         D(p->level--);
27614         return NULL;
27615     }
27616     Py_ssize_t _children_capacity = 1;
27617     Py_ssize_t _n = 0;
27618     { // lambda_param_maybe_default
27619         if (p->error_indicator) {
27620             D(p->level--);
27621             return NULL;
27622         }
27623         D(fprintf(stderr, "%*c> _loop0_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
27624         NameDefaultPair* lambda_param_maybe_default_var;
27625         while (
27626             (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
27627         )
27628         {
27629             _res = lambda_param_maybe_default_var;
27630             if (_n == _children_capacity) {
27631                 _children_capacity *= 2;
27632                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27633                 if (!_new_children) {
27634                     p->error_indicator = 1;
27635                     PyErr_NoMemory();
27636                     D(p->level--);
27637                     return NULL;
27638                 }
27639                 _children = _new_children;
27640             }
27641             _children[_n++] = _res;
27642             _mark = p->mark;
27643         }
27644         p->mark = _mark;
27645         D(fprintf(stderr, "%*c%s _loop0_104[%d-%d]: %s failed!\n", p->level, ' ',
27646                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
27647     }
27648     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27649     if (!_seq) {
27650         PyMem_Free(_children);
27651         p->error_indicator = 1;
27652         PyErr_NoMemory();
27653         D(p->level--);
27654         return NULL;
27655     }
27656     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27657     PyMem_Free(_children);
27658     _PyPegen_insert_memo(p, _start_mark, _loop0_104_type, _seq);
27659     D(p->level--);
27660     return _seq;
27661 }
27662 
27663 // _loop1_105: lambda_param_maybe_default
27664 static asdl_seq *
_loop1_105_rule(Parser * p)27665 _loop1_105_rule(Parser *p)
27666 {
27667     D(p->level++);
27668     if (p->error_indicator) {
27669         D(p->level--);
27670         return NULL;
27671     }
27672     void *_res = NULL;
27673     int _mark = p->mark;
27674     int _start_mark = p->mark;
27675     void **_children = PyMem_Malloc(sizeof(void *));
27676     if (!_children) {
27677         p->error_indicator = 1;
27678         PyErr_NoMemory();
27679         D(p->level--);
27680         return NULL;
27681     }
27682     Py_ssize_t _children_capacity = 1;
27683     Py_ssize_t _n = 0;
27684     { // lambda_param_maybe_default
27685         if (p->error_indicator) {
27686             D(p->level--);
27687             return NULL;
27688         }
27689         D(fprintf(stderr, "%*c> _loop1_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
27690         NameDefaultPair* lambda_param_maybe_default_var;
27691         while (
27692             (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
27693         )
27694         {
27695             _res = lambda_param_maybe_default_var;
27696             if (_n == _children_capacity) {
27697                 _children_capacity *= 2;
27698                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27699                 if (!_new_children) {
27700                     p->error_indicator = 1;
27701                     PyErr_NoMemory();
27702                     D(p->level--);
27703                     return NULL;
27704                 }
27705                 _children = _new_children;
27706             }
27707             _children[_n++] = _res;
27708             _mark = p->mark;
27709         }
27710         p->mark = _mark;
27711         D(fprintf(stderr, "%*c%s _loop1_105[%d-%d]: %s failed!\n", p->level, ' ',
27712                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
27713     }
27714     if (_n == 0 || p->error_indicator) {
27715         PyMem_Free(_children);
27716         D(p->level--);
27717         return NULL;
27718     }
27719     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27720     if (!_seq) {
27721         PyMem_Free(_children);
27722         p->error_indicator = 1;
27723         PyErr_NoMemory();
27724         D(p->level--);
27725         return NULL;
27726     }
27727     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27728     PyMem_Free(_children);
27729     _PyPegen_insert_memo(p, _start_mark, _loop1_105_type, _seq);
27730     D(p->level--);
27731     return _seq;
27732 }
27733 
27734 // _loop1_106: STRING
27735 static asdl_seq *
_loop1_106_rule(Parser * p)27736 _loop1_106_rule(Parser *p)
27737 {
27738     D(p->level++);
27739     if (p->error_indicator) {
27740         D(p->level--);
27741         return NULL;
27742     }
27743     void *_res = NULL;
27744     int _mark = p->mark;
27745     int _start_mark = p->mark;
27746     void **_children = PyMem_Malloc(sizeof(void *));
27747     if (!_children) {
27748         p->error_indicator = 1;
27749         PyErr_NoMemory();
27750         D(p->level--);
27751         return NULL;
27752     }
27753     Py_ssize_t _children_capacity = 1;
27754     Py_ssize_t _n = 0;
27755     { // STRING
27756         if (p->error_indicator) {
27757             D(p->level--);
27758             return NULL;
27759         }
27760         D(fprintf(stderr, "%*c> _loop1_106[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
27761         expr_ty string_var;
27762         while (
27763             (string_var = _PyPegen_string_token(p))  // STRING
27764         )
27765         {
27766             _res = string_var;
27767             if (_n == _children_capacity) {
27768                 _children_capacity *= 2;
27769                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27770                 if (!_new_children) {
27771                     p->error_indicator = 1;
27772                     PyErr_NoMemory();
27773                     D(p->level--);
27774                     return NULL;
27775                 }
27776                 _children = _new_children;
27777             }
27778             _children[_n++] = _res;
27779             _mark = p->mark;
27780         }
27781         p->mark = _mark;
27782         D(fprintf(stderr, "%*c%s _loop1_106[%d-%d]: %s failed!\n", p->level, ' ',
27783                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
27784     }
27785     if (_n == 0 || p->error_indicator) {
27786         PyMem_Free(_children);
27787         D(p->level--);
27788         return NULL;
27789     }
27790     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27791     if (!_seq) {
27792         PyMem_Free(_children);
27793         p->error_indicator = 1;
27794         PyErr_NoMemory();
27795         D(p->level--);
27796         return NULL;
27797     }
27798     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27799     PyMem_Free(_children);
27800     _PyPegen_insert_memo(p, _start_mark, _loop1_106_type, _seq);
27801     D(p->level--);
27802     return _seq;
27803 }
27804 
27805 // _tmp_107: star_named_expression ',' star_named_expressions?
27806 static void *
_tmp_107_rule(Parser * p)27807 _tmp_107_rule(Parser *p)
27808 {
27809     D(p->level++);
27810     if (p->error_indicator) {
27811         D(p->level--);
27812         return NULL;
27813     }
27814     void * _res = NULL;
27815     int _mark = p->mark;
27816     { // star_named_expression ',' star_named_expressions?
27817         if (p->error_indicator) {
27818             D(p->level--);
27819             return NULL;
27820         }
27821         D(fprintf(stderr, "%*c> _tmp_107[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
27822         Token * _literal;
27823         expr_ty y;
27824         void *z;
27825         if (
27826             (y = star_named_expression_rule(p))  // star_named_expression
27827             &&
27828             (_literal = _PyPegen_expect_token(p, 12))  // token=','
27829             &&
27830             (z = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
27831         )
27832         {
27833             D(fprintf(stderr, "%*c+ _tmp_107[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
27834             _res = _PyPegen_seq_insert_in_front ( p , y , z );
27835             if (_res == NULL && PyErr_Occurred()) {
27836                 p->error_indicator = 1;
27837                 D(p->level--);
27838                 return NULL;
27839             }
27840             goto done;
27841         }
27842         p->mark = _mark;
27843         D(fprintf(stderr, "%*c%s _tmp_107[%d-%d]: %s failed!\n", p->level, ' ',
27844                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
27845     }
27846     _res = NULL;
27847   done:
27848     D(p->level--);
27849     return _res;
27850 }
27851 
27852 // _loop0_109: ',' double_starred_kvpair
27853 static asdl_seq *
_loop0_109_rule(Parser * p)27854 _loop0_109_rule(Parser *p)
27855 {
27856     D(p->level++);
27857     if (p->error_indicator) {
27858         D(p->level--);
27859         return NULL;
27860     }
27861     void *_res = NULL;
27862     int _mark = p->mark;
27863     int _start_mark = p->mark;
27864     void **_children = PyMem_Malloc(sizeof(void *));
27865     if (!_children) {
27866         p->error_indicator = 1;
27867         PyErr_NoMemory();
27868         D(p->level--);
27869         return NULL;
27870     }
27871     Py_ssize_t _children_capacity = 1;
27872     Py_ssize_t _n = 0;
27873     { // ',' double_starred_kvpair
27874         if (p->error_indicator) {
27875             D(p->level--);
27876             return NULL;
27877         }
27878         D(fprintf(stderr, "%*c> _loop0_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair"));
27879         Token * _literal;
27880         KeyValuePair* elem;
27881         while (
27882             (_literal = _PyPegen_expect_token(p, 12))  // token=','
27883             &&
27884             (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
27885         )
27886         {
27887             _res = elem;
27888             if (_res == NULL && PyErr_Occurred()) {
27889                 p->error_indicator = 1;
27890                 PyMem_Free(_children);
27891                 D(p->level--);
27892                 return NULL;
27893             }
27894             if (_n == _children_capacity) {
27895                 _children_capacity *= 2;
27896                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27897                 if (!_new_children) {
27898                     p->error_indicator = 1;
27899                     PyErr_NoMemory();
27900                     D(p->level--);
27901                     return NULL;
27902                 }
27903                 _children = _new_children;
27904             }
27905             _children[_n++] = _res;
27906             _mark = p->mark;
27907         }
27908         p->mark = _mark;
27909         D(fprintf(stderr, "%*c%s _loop0_109[%d-%d]: %s failed!\n", p->level, ' ',
27910                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair"));
27911     }
27912     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27913     if (!_seq) {
27914         PyMem_Free(_children);
27915         p->error_indicator = 1;
27916         PyErr_NoMemory();
27917         D(p->level--);
27918         return NULL;
27919     }
27920     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27921     PyMem_Free(_children);
27922     _PyPegen_insert_memo(p, _start_mark, _loop0_109_type, _seq);
27923     D(p->level--);
27924     return _seq;
27925 }
27926 
27927 // _gather_108: double_starred_kvpair _loop0_109
27928 static asdl_seq *
_gather_108_rule(Parser * p)27929 _gather_108_rule(Parser *p)
27930 {
27931     D(p->level++);
27932     if (p->error_indicator) {
27933         D(p->level--);
27934         return NULL;
27935     }
27936     asdl_seq * _res = NULL;
27937     int _mark = p->mark;
27938     { // double_starred_kvpair _loop0_109
27939         if (p->error_indicator) {
27940             D(p->level--);
27941             return NULL;
27942         }
27943         D(fprintf(stderr, "%*c> _gather_108[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_109"));
27944         KeyValuePair* elem;
27945         asdl_seq * seq;
27946         if (
27947             (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
27948             &&
27949             (seq = _loop0_109_rule(p))  // _loop0_109
27950         )
27951         {
27952             D(fprintf(stderr, "%*c+ _gather_108[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_109"));
27953             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
27954             goto done;
27955         }
27956         p->mark = _mark;
27957         D(fprintf(stderr, "%*c%s _gather_108[%d-%d]: %s failed!\n", p->level, ' ',
27958                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_109"));
27959     }
27960     _res = NULL;
27961   done:
27962     D(p->level--);
27963     return _res;
27964 }
27965 
27966 // _loop1_110: for_if_clause
27967 static asdl_seq *
_loop1_110_rule(Parser * p)27968 _loop1_110_rule(Parser *p)
27969 {
27970     D(p->level++);
27971     if (p->error_indicator) {
27972         D(p->level--);
27973         return NULL;
27974     }
27975     void *_res = NULL;
27976     int _mark = p->mark;
27977     int _start_mark = p->mark;
27978     void **_children = PyMem_Malloc(sizeof(void *));
27979     if (!_children) {
27980         p->error_indicator = 1;
27981         PyErr_NoMemory();
27982         D(p->level--);
27983         return NULL;
27984     }
27985     Py_ssize_t _children_capacity = 1;
27986     Py_ssize_t _n = 0;
27987     { // for_if_clause
27988         if (p->error_indicator) {
27989             D(p->level--);
27990             return NULL;
27991         }
27992         D(fprintf(stderr, "%*c> _loop1_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause"));
27993         comprehension_ty for_if_clause_var;
27994         while (
27995             (for_if_clause_var = for_if_clause_rule(p))  // for_if_clause
27996         )
27997         {
27998             _res = for_if_clause_var;
27999             if (_n == _children_capacity) {
28000                 _children_capacity *= 2;
28001                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28002                 if (!_new_children) {
28003                     p->error_indicator = 1;
28004                     PyErr_NoMemory();
28005                     D(p->level--);
28006                     return NULL;
28007                 }
28008                 _children = _new_children;
28009             }
28010             _children[_n++] = _res;
28011             _mark = p->mark;
28012         }
28013         p->mark = _mark;
28014         D(fprintf(stderr, "%*c%s _loop1_110[%d-%d]: %s failed!\n", p->level, ' ',
28015                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause"));
28016     }
28017     if (_n == 0 || p->error_indicator) {
28018         PyMem_Free(_children);
28019         D(p->level--);
28020         return NULL;
28021     }
28022     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28023     if (!_seq) {
28024         PyMem_Free(_children);
28025         p->error_indicator = 1;
28026         PyErr_NoMemory();
28027         D(p->level--);
28028         return NULL;
28029     }
28030     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28031     PyMem_Free(_children);
28032     _PyPegen_insert_memo(p, _start_mark, _loop1_110_type, _seq);
28033     D(p->level--);
28034     return _seq;
28035 }
28036 
28037 // _loop0_111: ('if' disjunction)
28038 static asdl_seq *
_loop0_111_rule(Parser * p)28039 _loop0_111_rule(Parser *p)
28040 {
28041     D(p->level++);
28042     if (p->error_indicator) {
28043         D(p->level--);
28044         return NULL;
28045     }
28046     void *_res = NULL;
28047     int _mark = p->mark;
28048     int _start_mark = p->mark;
28049     void **_children = PyMem_Malloc(sizeof(void *));
28050     if (!_children) {
28051         p->error_indicator = 1;
28052         PyErr_NoMemory();
28053         D(p->level--);
28054         return NULL;
28055     }
28056     Py_ssize_t _children_capacity = 1;
28057     Py_ssize_t _n = 0;
28058     { // ('if' disjunction)
28059         if (p->error_indicator) {
28060             D(p->level--);
28061             return NULL;
28062         }
28063         D(fprintf(stderr, "%*c> _loop0_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
28064         void *_tmp_194_var;
28065         while (
28066             (_tmp_194_var = _tmp_194_rule(p))  // 'if' disjunction
28067         )
28068         {
28069             _res = _tmp_194_var;
28070             if (_n == _children_capacity) {
28071                 _children_capacity *= 2;
28072                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28073                 if (!_new_children) {
28074                     p->error_indicator = 1;
28075                     PyErr_NoMemory();
28076                     D(p->level--);
28077                     return NULL;
28078                 }
28079                 _children = _new_children;
28080             }
28081             _children[_n++] = _res;
28082             _mark = p->mark;
28083         }
28084         p->mark = _mark;
28085         D(fprintf(stderr, "%*c%s _loop0_111[%d-%d]: %s failed!\n", p->level, ' ',
28086                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
28087     }
28088     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28089     if (!_seq) {
28090         PyMem_Free(_children);
28091         p->error_indicator = 1;
28092         PyErr_NoMemory();
28093         D(p->level--);
28094         return NULL;
28095     }
28096     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28097     PyMem_Free(_children);
28098     _PyPegen_insert_memo(p, _start_mark, _loop0_111_type, _seq);
28099     D(p->level--);
28100     return _seq;
28101 }
28102 
28103 // _loop0_112: ('if' disjunction)
28104 static asdl_seq *
_loop0_112_rule(Parser * p)28105 _loop0_112_rule(Parser *p)
28106 {
28107     D(p->level++);
28108     if (p->error_indicator) {
28109         D(p->level--);
28110         return NULL;
28111     }
28112     void *_res = NULL;
28113     int _mark = p->mark;
28114     int _start_mark = p->mark;
28115     void **_children = PyMem_Malloc(sizeof(void *));
28116     if (!_children) {
28117         p->error_indicator = 1;
28118         PyErr_NoMemory();
28119         D(p->level--);
28120         return NULL;
28121     }
28122     Py_ssize_t _children_capacity = 1;
28123     Py_ssize_t _n = 0;
28124     { // ('if' disjunction)
28125         if (p->error_indicator) {
28126             D(p->level--);
28127             return NULL;
28128         }
28129         D(fprintf(stderr, "%*c> _loop0_112[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
28130         void *_tmp_195_var;
28131         while (
28132             (_tmp_195_var = _tmp_195_rule(p))  // 'if' disjunction
28133         )
28134         {
28135             _res = _tmp_195_var;
28136             if (_n == _children_capacity) {
28137                 _children_capacity *= 2;
28138                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28139                 if (!_new_children) {
28140                     p->error_indicator = 1;
28141                     PyErr_NoMemory();
28142                     D(p->level--);
28143                     return NULL;
28144                 }
28145                 _children = _new_children;
28146             }
28147             _children[_n++] = _res;
28148             _mark = p->mark;
28149         }
28150         p->mark = _mark;
28151         D(fprintf(stderr, "%*c%s _loop0_112[%d-%d]: %s failed!\n", p->level, ' ',
28152                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
28153     }
28154     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28155     if (!_seq) {
28156         PyMem_Free(_children);
28157         p->error_indicator = 1;
28158         PyErr_NoMemory();
28159         D(p->level--);
28160         return NULL;
28161     }
28162     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28163     PyMem_Free(_children);
28164     _PyPegen_insert_memo(p, _start_mark, _loop0_112_type, _seq);
28165     D(p->level--);
28166     return _seq;
28167 }
28168 
28169 // _tmp_113: assignment_expression | expression !':='
28170 static void *
_tmp_113_rule(Parser * p)28171 _tmp_113_rule(Parser *p)
28172 {
28173     D(p->level++);
28174     if (p->error_indicator) {
28175         D(p->level--);
28176         return NULL;
28177     }
28178     void * _res = NULL;
28179     int _mark = p->mark;
28180     { // assignment_expression
28181         if (p->error_indicator) {
28182             D(p->level--);
28183             return NULL;
28184         }
28185         D(fprintf(stderr, "%*c> _tmp_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
28186         expr_ty assignment_expression_var;
28187         if (
28188             (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
28189         )
28190         {
28191             D(fprintf(stderr, "%*c+ _tmp_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
28192             _res = assignment_expression_var;
28193             goto done;
28194         }
28195         p->mark = _mark;
28196         D(fprintf(stderr, "%*c%s _tmp_113[%d-%d]: %s failed!\n", p->level, ' ',
28197                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
28198     }
28199     { // expression !':='
28200         if (p->error_indicator) {
28201             D(p->level--);
28202             return NULL;
28203         }
28204         D(fprintf(stderr, "%*c> _tmp_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
28205         expr_ty expression_var;
28206         if (
28207             (expression_var = expression_rule(p))  // expression
28208             &&
28209             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
28210         )
28211         {
28212             D(fprintf(stderr, "%*c+ _tmp_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
28213             _res = expression_var;
28214             goto done;
28215         }
28216         p->mark = _mark;
28217         D(fprintf(stderr, "%*c%s _tmp_113[%d-%d]: %s failed!\n", p->level, ' ',
28218                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
28219     }
28220     _res = NULL;
28221   done:
28222     D(p->level--);
28223     return _res;
28224 }
28225 
28226 // _loop0_115: ',' (starred_expression | (assignment_expression | expression !':=') !'=')
28227 static asdl_seq *
_loop0_115_rule(Parser * p)28228 _loop0_115_rule(Parser *p)
28229 {
28230     D(p->level++);
28231     if (p->error_indicator) {
28232         D(p->level--);
28233         return NULL;
28234     }
28235     void *_res = NULL;
28236     int _mark = p->mark;
28237     int _start_mark = p->mark;
28238     void **_children = PyMem_Malloc(sizeof(void *));
28239     if (!_children) {
28240         p->error_indicator = 1;
28241         PyErr_NoMemory();
28242         D(p->level--);
28243         return NULL;
28244     }
28245     Py_ssize_t _children_capacity = 1;
28246     Py_ssize_t _n = 0;
28247     { // ',' (starred_expression | (assignment_expression | expression !':=') !'=')
28248         if (p->error_indicator) {
28249             D(p->level--);
28250             return NULL;
28251         }
28252         D(fprintf(stderr, "%*c> _loop0_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
28253         Token * _literal;
28254         void *elem;
28255         while (
28256             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28257             &&
28258             (elem = _tmp_196_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
28259         )
28260         {
28261             _res = elem;
28262             if (_res == NULL && PyErr_Occurred()) {
28263                 p->error_indicator = 1;
28264                 PyMem_Free(_children);
28265                 D(p->level--);
28266                 return NULL;
28267             }
28268             if (_n == _children_capacity) {
28269                 _children_capacity *= 2;
28270                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28271                 if (!_new_children) {
28272                     p->error_indicator = 1;
28273                     PyErr_NoMemory();
28274                     D(p->level--);
28275                     return NULL;
28276                 }
28277                 _children = _new_children;
28278             }
28279             _children[_n++] = _res;
28280             _mark = p->mark;
28281         }
28282         p->mark = _mark;
28283         D(fprintf(stderr, "%*c%s _loop0_115[%d-%d]: %s failed!\n", p->level, ' ',
28284                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
28285     }
28286     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28287     if (!_seq) {
28288         PyMem_Free(_children);
28289         p->error_indicator = 1;
28290         PyErr_NoMemory();
28291         D(p->level--);
28292         return NULL;
28293     }
28294     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28295     PyMem_Free(_children);
28296     _PyPegen_insert_memo(p, _start_mark, _loop0_115_type, _seq);
28297     D(p->level--);
28298     return _seq;
28299 }
28300 
28301 // _gather_114:
28302 //     | (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_115
28303 static asdl_seq *
_gather_114_rule(Parser * p)28304 _gather_114_rule(Parser *p)
28305 {
28306     D(p->level++);
28307     if (p->error_indicator) {
28308         D(p->level--);
28309         return NULL;
28310     }
28311     asdl_seq * _res = NULL;
28312     int _mark = p->mark;
28313     { // (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_115
28314         if (p->error_indicator) {
28315             D(p->level--);
28316             return NULL;
28317         }
28318         D(fprintf(stderr, "%*c> _gather_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_115"));
28319         void *elem;
28320         asdl_seq * seq;
28321         if (
28322             (elem = _tmp_196_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
28323             &&
28324             (seq = _loop0_115_rule(p))  // _loop0_115
28325         )
28326         {
28327             D(fprintf(stderr, "%*c+ _gather_114[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_115"));
28328             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28329             goto done;
28330         }
28331         p->mark = _mark;
28332         D(fprintf(stderr, "%*c%s _gather_114[%d-%d]: %s failed!\n", p->level, ' ',
28333                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_115"));
28334     }
28335     _res = NULL;
28336   done:
28337     D(p->level--);
28338     return _res;
28339 }
28340 
28341 // _tmp_116: ',' kwargs
28342 static void *
_tmp_116_rule(Parser * p)28343 _tmp_116_rule(Parser *p)
28344 {
28345     D(p->level++);
28346     if (p->error_indicator) {
28347         D(p->level--);
28348         return NULL;
28349     }
28350     void * _res = NULL;
28351     int _mark = p->mark;
28352     { // ',' kwargs
28353         if (p->error_indicator) {
28354             D(p->level--);
28355             return NULL;
28356         }
28357         D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
28358         Token * _literal;
28359         asdl_seq* k;
28360         if (
28361             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28362             &&
28363             (k = kwargs_rule(p))  // kwargs
28364         )
28365         {
28366             D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
28367             _res = k;
28368             if (_res == NULL && PyErr_Occurred()) {
28369                 p->error_indicator = 1;
28370                 D(p->level--);
28371                 return NULL;
28372             }
28373             goto done;
28374         }
28375         p->mark = _mark;
28376         D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ',
28377                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwargs"));
28378     }
28379     _res = NULL;
28380   done:
28381     D(p->level--);
28382     return _res;
28383 }
28384 
28385 // _loop0_118: ',' kwarg_or_starred
28386 static asdl_seq *
_loop0_118_rule(Parser * p)28387 _loop0_118_rule(Parser *p)
28388 {
28389     D(p->level++);
28390     if (p->error_indicator) {
28391         D(p->level--);
28392         return NULL;
28393     }
28394     void *_res = NULL;
28395     int _mark = p->mark;
28396     int _start_mark = p->mark;
28397     void **_children = PyMem_Malloc(sizeof(void *));
28398     if (!_children) {
28399         p->error_indicator = 1;
28400         PyErr_NoMemory();
28401         D(p->level--);
28402         return NULL;
28403     }
28404     Py_ssize_t _children_capacity = 1;
28405     Py_ssize_t _n = 0;
28406     { // ',' kwarg_or_starred
28407         if (p->error_indicator) {
28408             D(p->level--);
28409             return NULL;
28410         }
28411         D(fprintf(stderr, "%*c> _loop0_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred"));
28412         Token * _literal;
28413         KeywordOrStarred* elem;
28414         while (
28415             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28416             &&
28417             (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
28418         )
28419         {
28420             _res = elem;
28421             if (_res == NULL && PyErr_Occurred()) {
28422                 p->error_indicator = 1;
28423                 PyMem_Free(_children);
28424                 D(p->level--);
28425                 return NULL;
28426             }
28427             if (_n == _children_capacity) {
28428                 _children_capacity *= 2;
28429                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28430                 if (!_new_children) {
28431                     p->error_indicator = 1;
28432                     PyErr_NoMemory();
28433                     D(p->level--);
28434                     return NULL;
28435                 }
28436                 _children = _new_children;
28437             }
28438             _children[_n++] = _res;
28439             _mark = p->mark;
28440         }
28441         p->mark = _mark;
28442         D(fprintf(stderr, "%*c%s _loop0_118[%d-%d]: %s failed!\n", p->level, ' ',
28443                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred"));
28444     }
28445     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28446     if (!_seq) {
28447         PyMem_Free(_children);
28448         p->error_indicator = 1;
28449         PyErr_NoMemory();
28450         D(p->level--);
28451         return NULL;
28452     }
28453     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28454     PyMem_Free(_children);
28455     _PyPegen_insert_memo(p, _start_mark, _loop0_118_type, _seq);
28456     D(p->level--);
28457     return _seq;
28458 }
28459 
28460 // _gather_117: kwarg_or_starred _loop0_118
28461 static asdl_seq *
_gather_117_rule(Parser * p)28462 _gather_117_rule(Parser *p)
28463 {
28464     D(p->level++);
28465     if (p->error_indicator) {
28466         D(p->level--);
28467         return NULL;
28468     }
28469     asdl_seq * _res = NULL;
28470     int _mark = p->mark;
28471     { // kwarg_or_starred _loop0_118
28472         if (p->error_indicator) {
28473             D(p->level--);
28474             return NULL;
28475         }
28476         D(fprintf(stderr, "%*c> _gather_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_118"));
28477         KeywordOrStarred* elem;
28478         asdl_seq * seq;
28479         if (
28480             (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
28481             &&
28482             (seq = _loop0_118_rule(p))  // _loop0_118
28483         )
28484         {
28485             D(fprintf(stderr, "%*c+ _gather_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_118"));
28486             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28487             goto done;
28488         }
28489         p->mark = _mark;
28490         D(fprintf(stderr, "%*c%s _gather_117[%d-%d]: %s failed!\n", p->level, ' ',
28491                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_118"));
28492     }
28493     _res = NULL;
28494   done:
28495     D(p->level--);
28496     return _res;
28497 }
28498 
28499 // _loop0_120: ',' kwarg_or_double_starred
28500 static asdl_seq *
_loop0_120_rule(Parser * p)28501 _loop0_120_rule(Parser *p)
28502 {
28503     D(p->level++);
28504     if (p->error_indicator) {
28505         D(p->level--);
28506         return NULL;
28507     }
28508     void *_res = NULL;
28509     int _mark = p->mark;
28510     int _start_mark = p->mark;
28511     void **_children = PyMem_Malloc(sizeof(void *));
28512     if (!_children) {
28513         p->error_indicator = 1;
28514         PyErr_NoMemory();
28515         D(p->level--);
28516         return NULL;
28517     }
28518     Py_ssize_t _children_capacity = 1;
28519     Py_ssize_t _n = 0;
28520     { // ',' kwarg_or_double_starred
28521         if (p->error_indicator) {
28522             D(p->level--);
28523             return NULL;
28524         }
28525         D(fprintf(stderr, "%*c> _loop0_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred"));
28526         Token * _literal;
28527         KeywordOrStarred* elem;
28528         while (
28529             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28530             &&
28531             (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
28532         )
28533         {
28534             _res = elem;
28535             if (_res == NULL && PyErr_Occurred()) {
28536                 p->error_indicator = 1;
28537                 PyMem_Free(_children);
28538                 D(p->level--);
28539                 return NULL;
28540             }
28541             if (_n == _children_capacity) {
28542                 _children_capacity *= 2;
28543                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28544                 if (!_new_children) {
28545                     p->error_indicator = 1;
28546                     PyErr_NoMemory();
28547                     D(p->level--);
28548                     return NULL;
28549                 }
28550                 _children = _new_children;
28551             }
28552             _children[_n++] = _res;
28553             _mark = p->mark;
28554         }
28555         p->mark = _mark;
28556         D(fprintf(stderr, "%*c%s _loop0_120[%d-%d]: %s failed!\n", p->level, ' ',
28557                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
28558     }
28559     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28560     if (!_seq) {
28561         PyMem_Free(_children);
28562         p->error_indicator = 1;
28563         PyErr_NoMemory();
28564         D(p->level--);
28565         return NULL;
28566     }
28567     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28568     PyMem_Free(_children);
28569     _PyPegen_insert_memo(p, _start_mark, _loop0_120_type, _seq);
28570     D(p->level--);
28571     return _seq;
28572 }
28573 
28574 // _gather_119: kwarg_or_double_starred _loop0_120
28575 static asdl_seq *
_gather_119_rule(Parser * p)28576 _gather_119_rule(Parser *p)
28577 {
28578     D(p->level++);
28579     if (p->error_indicator) {
28580         D(p->level--);
28581         return NULL;
28582     }
28583     asdl_seq * _res = NULL;
28584     int _mark = p->mark;
28585     { // kwarg_or_double_starred _loop0_120
28586         if (p->error_indicator) {
28587             D(p->level--);
28588             return NULL;
28589         }
28590         D(fprintf(stderr, "%*c> _gather_119[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_120"));
28591         KeywordOrStarred* elem;
28592         asdl_seq * seq;
28593         if (
28594             (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
28595             &&
28596             (seq = _loop0_120_rule(p))  // _loop0_120
28597         )
28598         {
28599             D(fprintf(stderr, "%*c+ _gather_119[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_120"));
28600             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28601             goto done;
28602         }
28603         p->mark = _mark;
28604         D(fprintf(stderr, "%*c%s _gather_119[%d-%d]: %s failed!\n", p->level, ' ',
28605                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_120"));
28606     }
28607     _res = NULL;
28608   done:
28609     D(p->level--);
28610     return _res;
28611 }
28612 
28613 // _loop0_122: ',' kwarg_or_starred
28614 static asdl_seq *
_loop0_122_rule(Parser * p)28615 _loop0_122_rule(Parser *p)
28616 {
28617     D(p->level++);
28618     if (p->error_indicator) {
28619         D(p->level--);
28620         return NULL;
28621     }
28622     void *_res = NULL;
28623     int _mark = p->mark;
28624     int _start_mark = p->mark;
28625     void **_children = PyMem_Malloc(sizeof(void *));
28626     if (!_children) {
28627         p->error_indicator = 1;
28628         PyErr_NoMemory();
28629         D(p->level--);
28630         return NULL;
28631     }
28632     Py_ssize_t _children_capacity = 1;
28633     Py_ssize_t _n = 0;
28634     { // ',' kwarg_or_starred
28635         if (p->error_indicator) {
28636             D(p->level--);
28637             return NULL;
28638         }
28639         D(fprintf(stderr, "%*c> _loop0_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred"));
28640         Token * _literal;
28641         KeywordOrStarred* elem;
28642         while (
28643             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28644             &&
28645             (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
28646         )
28647         {
28648             _res = elem;
28649             if (_res == NULL && PyErr_Occurred()) {
28650                 p->error_indicator = 1;
28651                 PyMem_Free(_children);
28652                 D(p->level--);
28653                 return NULL;
28654             }
28655             if (_n == _children_capacity) {
28656                 _children_capacity *= 2;
28657                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28658                 if (!_new_children) {
28659                     p->error_indicator = 1;
28660                     PyErr_NoMemory();
28661                     D(p->level--);
28662                     return NULL;
28663                 }
28664                 _children = _new_children;
28665             }
28666             _children[_n++] = _res;
28667             _mark = p->mark;
28668         }
28669         p->mark = _mark;
28670         D(fprintf(stderr, "%*c%s _loop0_122[%d-%d]: %s failed!\n", p->level, ' ',
28671                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred"));
28672     }
28673     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28674     if (!_seq) {
28675         PyMem_Free(_children);
28676         p->error_indicator = 1;
28677         PyErr_NoMemory();
28678         D(p->level--);
28679         return NULL;
28680     }
28681     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28682     PyMem_Free(_children);
28683     _PyPegen_insert_memo(p, _start_mark, _loop0_122_type, _seq);
28684     D(p->level--);
28685     return _seq;
28686 }
28687 
28688 // _gather_121: kwarg_or_starred _loop0_122
28689 static asdl_seq *
_gather_121_rule(Parser * p)28690 _gather_121_rule(Parser *p)
28691 {
28692     D(p->level++);
28693     if (p->error_indicator) {
28694         D(p->level--);
28695         return NULL;
28696     }
28697     asdl_seq * _res = NULL;
28698     int _mark = p->mark;
28699     { // kwarg_or_starred _loop0_122
28700         if (p->error_indicator) {
28701             D(p->level--);
28702             return NULL;
28703         }
28704         D(fprintf(stderr, "%*c> _gather_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_122"));
28705         KeywordOrStarred* elem;
28706         asdl_seq * seq;
28707         if (
28708             (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
28709             &&
28710             (seq = _loop0_122_rule(p))  // _loop0_122
28711         )
28712         {
28713             D(fprintf(stderr, "%*c+ _gather_121[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_122"));
28714             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28715             goto done;
28716         }
28717         p->mark = _mark;
28718         D(fprintf(stderr, "%*c%s _gather_121[%d-%d]: %s failed!\n", p->level, ' ',
28719                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_122"));
28720     }
28721     _res = NULL;
28722   done:
28723     D(p->level--);
28724     return _res;
28725 }
28726 
28727 // _loop0_124: ',' kwarg_or_double_starred
28728 static asdl_seq *
_loop0_124_rule(Parser * p)28729 _loop0_124_rule(Parser *p)
28730 {
28731     D(p->level++);
28732     if (p->error_indicator) {
28733         D(p->level--);
28734         return NULL;
28735     }
28736     void *_res = NULL;
28737     int _mark = p->mark;
28738     int _start_mark = p->mark;
28739     void **_children = PyMem_Malloc(sizeof(void *));
28740     if (!_children) {
28741         p->error_indicator = 1;
28742         PyErr_NoMemory();
28743         D(p->level--);
28744         return NULL;
28745     }
28746     Py_ssize_t _children_capacity = 1;
28747     Py_ssize_t _n = 0;
28748     { // ',' kwarg_or_double_starred
28749         if (p->error_indicator) {
28750             D(p->level--);
28751             return NULL;
28752         }
28753         D(fprintf(stderr, "%*c> _loop0_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred"));
28754         Token * _literal;
28755         KeywordOrStarred* elem;
28756         while (
28757             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28758             &&
28759             (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
28760         )
28761         {
28762             _res = elem;
28763             if (_res == NULL && PyErr_Occurred()) {
28764                 p->error_indicator = 1;
28765                 PyMem_Free(_children);
28766                 D(p->level--);
28767                 return NULL;
28768             }
28769             if (_n == _children_capacity) {
28770                 _children_capacity *= 2;
28771                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28772                 if (!_new_children) {
28773                     p->error_indicator = 1;
28774                     PyErr_NoMemory();
28775                     D(p->level--);
28776                     return NULL;
28777                 }
28778                 _children = _new_children;
28779             }
28780             _children[_n++] = _res;
28781             _mark = p->mark;
28782         }
28783         p->mark = _mark;
28784         D(fprintf(stderr, "%*c%s _loop0_124[%d-%d]: %s failed!\n", p->level, ' ',
28785                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
28786     }
28787     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28788     if (!_seq) {
28789         PyMem_Free(_children);
28790         p->error_indicator = 1;
28791         PyErr_NoMemory();
28792         D(p->level--);
28793         return NULL;
28794     }
28795     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28796     PyMem_Free(_children);
28797     _PyPegen_insert_memo(p, _start_mark, _loop0_124_type, _seq);
28798     D(p->level--);
28799     return _seq;
28800 }
28801 
28802 // _gather_123: kwarg_or_double_starred _loop0_124
28803 static asdl_seq *
_gather_123_rule(Parser * p)28804 _gather_123_rule(Parser *p)
28805 {
28806     D(p->level++);
28807     if (p->error_indicator) {
28808         D(p->level--);
28809         return NULL;
28810     }
28811     asdl_seq * _res = NULL;
28812     int _mark = p->mark;
28813     { // kwarg_or_double_starred _loop0_124
28814         if (p->error_indicator) {
28815             D(p->level--);
28816             return NULL;
28817         }
28818         D(fprintf(stderr, "%*c> _gather_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_124"));
28819         KeywordOrStarred* elem;
28820         asdl_seq * seq;
28821         if (
28822             (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
28823             &&
28824             (seq = _loop0_124_rule(p))  // _loop0_124
28825         )
28826         {
28827             D(fprintf(stderr, "%*c+ _gather_123[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_124"));
28828             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28829             goto done;
28830         }
28831         p->mark = _mark;
28832         D(fprintf(stderr, "%*c%s _gather_123[%d-%d]: %s failed!\n", p->level, ' ',
28833                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_124"));
28834     }
28835     _res = NULL;
28836   done:
28837     D(p->level--);
28838     return _res;
28839 }
28840 
28841 // _loop0_125: (',' star_target)
28842 static asdl_seq *
_loop0_125_rule(Parser * p)28843 _loop0_125_rule(Parser *p)
28844 {
28845     D(p->level++);
28846     if (p->error_indicator) {
28847         D(p->level--);
28848         return NULL;
28849     }
28850     void *_res = NULL;
28851     int _mark = p->mark;
28852     int _start_mark = p->mark;
28853     void **_children = PyMem_Malloc(sizeof(void *));
28854     if (!_children) {
28855         p->error_indicator = 1;
28856         PyErr_NoMemory();
28857         D(p->level--);
28858         return NULL;
28859     }
28860     Py_ssize_t _children_capacity = 1;
28861     Py_ssize_t _n = 0;
28862     { // (',' star_target)
28863         if (p->error_indicator) {
28864             D(p->level--);
28865             return NULL;
28866         }
28867         D(fprintf(stderr, "%*c> _loop0_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
28868         void *_tmp_197_var;
28869         while (
28870             (_tmp_197_var = _tmp_197_rule(p))  // ',' star_target
28871         )
28872         {
28873             _res = _tmp_197_var;
28874             if (_n == _children_capacity) {
28875                 _children_capacity *= 2;
28876                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28877                 if (!_new_children) {
28878                     p->error_indicator = 1;
28879                     PyErr_NoMemory();
28880                     D(p->level--);
28881                     return NULL;
28882                 }
28883                 _children = _new_children;
28884             }
28885             _children[_n++] = _res;
28886             _mark = p->mark;
28887         }
28888         p->mark = _mark;
28889         D(fprintf(stderr, "%*c%s _loop0_125[%d-%d]: %s failed!\n", p->level, ' ',
28890                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
28891     }
28892     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28893     if (!_seq) {
28894         PyMem_Free(_children);
28895         p->error_indicator = 1;
28896         PyErr_NoMemory();
28897         D(p->level--);
28898         return NULL;
28899     }
28900     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28901     PyMem_Free(_children);
28902     _PyPegen_insert_memo(p, _start_mark, _loop0_125_type, _seq);
28903     D(p->level--);
28904     return _seq;
28905 }
28906 
28907 // _loop0_127: ',' star_target
28908 static asdl_seq *
_loop0_127_rule(Parser * p)28909 _loop0_127_rule(Parser *p)
28910 {
28911     D(p->level++);
28912     if (p->error_indicator) {
28913         D(p->level--);
28914         return NULL;
28915     }
28916     void *_res = NULL;
28917     int _mark = p->mark;
28918     int _start_mark = p->mark;
28919     void **_children = PyMem_Malloc(sizeof(void *));
28920     if (!_children) {
28921         p->error_indicator = 1;
28922         PyErr_NoMemory();
28923         D(p->level--);
28924         return NULL;
28925     }
28926     Py_ssize_t _children_capacity = 1;
28927     Py_ssize_t _n = 0;
28928     { // ',' star_target
28929         if (p->error_indicator) {
28930             D(p->level--);
28931             return NULL;
28932         }
28933         D(fprintf(stderr, "%*c> _loop0_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
28934         Token * _literal;
28935         expr_ty elem;
28936         while (
28937             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28938             &&
28939             (elem = star_target_rule(p))  // star_target
28940         )
28941         {
28942             _res = elem;
28943             if (_res == NULL && PyErr_Occurred()) {
28944                 p->error_indicator = 1;
28945                 PyMem_Free(_children);
28946                 D(p->level--);
28947                 return NULL;
28948             }
28949             if (_n == _children_capacity) {
28950                 _children_capacity *= 2;
28951                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28952                 if (!_new_children) {
28953                     p->error_indicator = 1;
28954                     PyErr_NoMemory();
28955                     D(p->level--);
28956                     return NULL;
28957                 }
28958                 _children = _new_children;
28959             }
28960             _children[_n++] = _res;
28961             _mark = p->mark;
28962         }
28963         p->mark = _mark;
28964         D(fprintf(stderr, "%*c%s _loop0_127[%d-%d]: %s failed!\n", p->level, ' ',
28965                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
28966     }
28967     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28968     if (!_seq) {
28969         PyMem_Free(_children);
28970         p->error_indicator = 1;
28971         PyErr_NoMemory();
28972         D(p->level--);
28973         return NULL;
28974     }
28975     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28976     PyMem_Free(_children);
28977     _PyPegen_insert_memo(p, _start_mark, _loop0_127_type, _seq);
28978     D(p->level--);
28979     return _seq;
28980 }
28981 
28982 // _gather_126: star_target _loop0_127
28983 static asdl_seq *
_gather_126_rule(Parser * p)28984 _gather_126_rule(Parser *p)
28985 {
28986     D(p->level++);
28987     if (p->error_indicator) {
28988         D(p->level--);
28989         return NULL;
28990     }
28991     asdl_seq * _res = NULL;
28992     int _mark = p->mark;
28993     { // star_target _loop0_127
28994         if (p->error_indicator) {
28995             D(p->level--);
28996             return NULL;
28997         }
28998         D(fprintf(stderr, "%*c> _gather_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target _loop0_127"));
28999         expr_ty elem;
29000         asdl_seq * seq;
29001         if (
29002             (elem = star_target_rule(p))  // star_target
29003             &&
29004             (seq = _loop0_127_rule(p))  // _loop0_127
29005         )
29006         {
29007             D(fprintf(stderr, "%*c+ _gather_126[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target _loop0_127"));
29008             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29009             goto done;
29010         }
29011         p->mark = _mark;
29012         D(fprintf(stderr, "%*c%s _gather_126[%d-%d]: %s failed!\n", p->level, ' ',
29013                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target _loop0_127"));
29014     }
29015     _res = NULL;
29016   done:
29017     D(p->level--);
29018     return _res;
29019 }
29020 
29021 // _loop1_128: (',' star_target)
29022 static asdl_seq *
_loop1_128_rule(Parser * p)29023 _loop1_128_rule(Parser *p)
29024 {
29025     D(p->level++);
29026     if (p->error_indicator) {
29027         D(p->level--);
29028         return NULL;
29029     }
29030     void *_res = NULL;
29031     int _mark = p->mark;
29032     int _start_mark = p->mark;
29033     void **_children = PyMem_Malloc(sizeof(void *));
29034     if (!_children) {
29035         p->error_indicator = 1;
29036         PyErr_NoMemory();
29037         D(p->level--);
29038         return NULL;
29039     }
29040     Py_ssize_t _children_capacity = 1;
29041     Py_ssize_t _n = 0;
29042     { // (',' star_target)
29043         if (p->error_indicator) {
29044             D(p->level--);
29045             return NULL;
29046         }
29047         D(fprintf(stderr, "%*c> _loop1_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
29048         void *_tmp_198_var;
29049         while (
29050             (_tmp_198_var = _tmp_198_rule(p))  // ',' star_target
29051         )
29052         {
29053             _res = _tmp_198_var;
29054             if (_n == _children_capacity) {
29055                 _children_capacity *= 2;
29056                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29057                 if (!_new_children) {
29058                     p->error_indicator = 1;
29059                     PyErr_NoMemory();
29060                     D(p->level--);
29061                     return NULL;
29062                 }
29063                 _children = _new_children;
29064             }
29065             _children[_n++] = _res;
29066             _mark = p->mark;
29067         }
29068         p->mark = _mark;
29069         D(fprintf(stderr, "%*c%s _loop1_128[%d-%d]: %s failed!\n", p->level, ' ',
29070                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
29071     }
29072     if (_n == 0 || p->error_indicator) {
29073         PyMem_Free(_children);
29074         D(p->level--);
29075         return NULL;
29076     }
29077     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29078     if (!_seq) {
29079         PyMem_Free(_children);
29080         p->error_indicator = 1;
29081         PyErr_NoMemory();
29082         D(p->level--);
29083         return NULL;
29084     }
29085     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29086     PyMem_Free(_children);
29087     _PyPegen_insert_memo(p, _start_mark, _loop1_128_type, _seq);
29088     D(p->level--);
29089     return _seq;
29090 }
29091 
29092 // _tmp_129: !'*' star_target
29093 static void *
_tmp_129_rule(Parser * p)29094 _tmp_129_rule(Parser *p)
29095 {
29096     D(p->level++);
29097     if (p->error_indicator) {
29098         D(p->level--);
29099         return NULL;
29100     }
29101     void * _res = NULL;
29102     int _mark = p->mark;
29103     { // !'*' star_target
29104         if (p->error_indicator) {
29105             D(p->level--);
29106             return NULL;
29107         }
29108         D(fprintf(stderr, "%*c> _tmp_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
29109         expr_ty star_target_var;
29110         if (
29111             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16)  // token='*'
29112             &&
29113             (star_target_var = star_target_rule(p))  // star_target
29114         )
29115         {
29116             D(fprintf(stderr, "%*c+ _tmp_129[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
29117             _res = star_target_var;
29118             goto done;
29119         }
29120         p->mark = _mark;
29121         D(fprintf(stderr, "%*c%s _tmp_129[%d-%d]: %s failed!\n", p->level, ' ',
29122                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!'*' star_target"));
29123     }
29124     _res = NULL;
29125   done:
29126     D(p->level--);
29127     return _res;
29128 }
29129 
29130 // _loop0_131: ',' del_target
29131 static asdl_seq *
_loop0_131_rule(Parser * p)29132 _loop0_131_rule(Parser *p)
29133 {
29134     D(p->level++);
29135     if (p->error_indicator) {
29136         D(p->level--);
29137         return NULL;
29138     }
29139     void *_res = NULL;
29140     int _mark = p->mark;
29141     int _start_mark = p->mark;
29142     void **_children = PyMem_Malloc(sizeof(void *));
29143     if (!_children) {
29144         p->error_indicator = 1;
29145         PyErr_NoMemory();
29146         D(p->level--);
29147         return NULL;
29148     }
29149     Py_ssize_t _children_capacity = 1;
29150     Py_ssize_t _n = 0;
29151     { // ',' del_target
29152         if (p->error_indicator) {
29153             D(p->level--);
29154             return NULL;
29155         }
29156         D(fprintf(stderr, "%*c> _loop0_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' del_target"));
29157         Token * _literal;
29158         expr_ty elem;
29159         while (
29160             (_literal = _PyPegen_expect_token(p, 12))  // token=','
29161             &&
29162             (elem = del_target_rule(p))  // del_target
29163         )
29164         {
29165             _res = elem;
29166             if (_res == NULL && PyErr_Occurred()) {
29167                 p->error_indicator = 1;
29168                 PyMem_Free(_children);
29169                 D(p->level--);
29170                 return NULL;
29171             }
29172             if (_n == _children_capacity) {
29173                 _children_capacity *= 2;
29174                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29175                 if (!_new_children) {
29176                     p->error_indicator = 1;
29177                     PyErr_NoMemory();
29178                     D(p->level--);
29179                     return NULL;
29180                 }
29181                 _children = _new_children;
29182             }
29183             _children[_n++] = _res;
29184             _mark = p->mark;
29185         }
29186         p->mark = _mark;
29187         D(fprintf(stderr, "%*c%s _loop0_131[%d-%d]: %s failed!\n", p->level, ' ',
29188                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' del_target"));
29189     }
29190     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29191     if (!_seq) {
29192         PyMem_Free(_children);
29193         p->error_indicator = 1;
29194         PyErr_NoMemory();
29195         D(p->level--);
29196         return NULL;
29197     }
29198     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29199     PyMem_Free(_children);
29200     _PyPegen_insert_memo(p, _start_mark, _loop0_131_type, _seq);
29201     D(p->level--);
29202     return _seq;
29203 }
29204 
29205 // _gather_130: del_target _loop0_131
29206 static asdl_seq *
_gather_130_rule(Parser * p)29207 _gather_130_rule(Parser *p)
29208 {
29209     D(p->level++);
29210     if (p->error_indicator) {
29211         D(p->level--);
29212         return NULL;
29213     }
29214     asdl_seq * _res = NULL;
29215     int _mark = p->mark;
29216     { // del_target _loop0_131
29217         if (p->error_indicator) {
29218             D(p->level--);
29219             return NULL;
29220         }
29221         D(fprintf(stderr, "%*c> _gather_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_target _loop0_131"));
29222         expr_ty elem;
29223         asdl_seq * seq;
29224         if (
29225             (elem = del_target_rule(p))  // del_target
29226             &&
29227             (seq = _loop0_131_rule(p))  // _loop0_131
29228         )
29229         {
29230             D(fprintf(stderr, "%*c+ _gather_130[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_target _loop0_131"));
29231             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29232             goto done;
29233         }
29234         p->mark = _mark;
29235         D(fprintf(stderr, "%*c%s _gather_130[%d-%d]: %s failed!\n", p->level, ' ',
29236                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_target _loop0_131"));
29237     }
29238     _res = NULL;
29239   done:
29240     D(p->level--);
29241     return _res;
29242 }
29243 
29244 // _loop0_133: ',' expression
29245 static asdl_seq *
_loop0_133_rule(Parser * p)29246 _loop0_133_rule(Parser *p)
29247 {
29248     D(p->level++);
29249     if (p->error_indicator) {
29250         D(p->level--);
29251         return NULL;
29252     }
29253     void *_res = NULL;
29254     int _mark = p->mark;
29255     int _start_mark = p->mark;
29256     void **_children = PyMem_Malloc(sizeof(void *));
29257     if (!_children) {
29258         p->error_indicator = 1;
29259         PyErr_NoMemory();
29260         D(p->level--);
29261         return NULL;
29262     }
29263     Py_ssize_t _children_capacity = 1;
29264     Py_ssize_t _n = 0;
29265     { // ',' expression
29266         if (p->error_indicator) {
29267             D(p->level--);
29268             return NULL;
29269         }
29270         D(fprintf(stderr, "%*c> _loop0_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
29271         Token * _literal;
29272         expr_ty elem;
29273         while (
29274             (_literal = _PyPegen_expect_token(p, 12))  // token=','
29275             &&
29276             (elem = expression_rule(p))  // expression
29277         )
29278         {
29279             _res = elem;
29280             if (_res == NULL && PyErr_Occurred()) {
29281                 p->error_indicator = 1;
29282                 PyMem_Free(_children);
29283                 D(p->level--);
29284                 return NULL;
29285             }
29286             if (_n == _children_capacity) {
29287                 _children_capacity *= 2;
29288                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29289                 if (!_new_children) {
29290                     p->error_indicator = 1;
29291                     PyErr_NoMemory();
29292                     D(p->level--);
29293                     return NULL;
29294                 }
29295                 _children = _new_children;
29296             }
29297             _children[_n++] = _res;
29298             _mark = p->mark;
29299         }
29300         p->mark = _mark;
29301         D(fprintf(stderr, "%*c%s _loop0_133[%d-%d]: %s failed!\n", p->level, ' ',
29302                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
29303     }
29304     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29305     if (!_seq) {
29306         PyMem_Free(_children);
29307         p->error_indicator = 1;
29308         PyErr_NoMemory();
29309         D(p->level--);
29310         return NULL;
29311     }
29312     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29313     PyMem_Free(_children);
29314     _PyPegen_insert_memo(p, _start_mark, _loop0_133_type, _seq);
29315     D(p->level--);
29316     return _seq;
29317 }
29318 
29319 // _gather_132: expression _loop0_133
29320 static asdl_seq *
_gather_132_rule(Parser * p)29321 _gather_132_rule(Parser *p)
29322 {
29323     D(p->level++);
29324     if (p->error_indicator) {
29325         D(p->level--);
29326         return NULL;
29327     }
29328     asdl_seq * _res = NULL;
29329     int _mark = p->mark;
29330     { // expression _loop0_133
29331         if (p->error_indicator) {
29332             D(p->level--);
29333             return NULL;
29334         }
29335         D(fprintf(stderr, "%*c> _gather_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_133"));
29336         expr_ty elem;
29337         asdl_seq * seq;
29338         if (
29339             (elem = expression_rule(p))  // expression
29340             &&
29341             (seq = _loop0_133_rule(p))  // _loop0_133
29342         )
29343         {
29344             D(fprintf(stderr, "%*c+ _gather_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_133"));
29345             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29346             goto done;
29347         }
29348         p->mark = _mark;
29349         D(fprintf(stderr, "%*c%s _gather_132[%d-%d]: %s failed!\n", p->level, ' ',
29350                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_133"));
29351     }
29352     _res = NULL;
29353   done:
29354     D(p->level--);
29355     return _res;
29356 }
29357 
29358 // _loop0_135: ',' expression
29359 static asdl_seq *
_loop0_135_rule(Parser * p)29360 _loop0_135_rule(Parser *p)
29361 {
29362     D(p->level++);
29363     if (p->error_indicator) {
29364         D(p->level--);
29365         return NULL;
29366     }
29367     void *_res = NULL;
29368     int _mark = p->mark;
29369     int _start_mark = p->mark;
29370     void **_children = PyMem_Malloc(sizeof(void *));
29371     if (!_children) {
29372         p->error_indicator = 1;
29373         PyErr_NoMemory();
29374         D(p->level--);
29375         return NULL;
29376     }
29377     Py_ssize_t _children_capacity = 1;
29378     Py_ssize_t _n = 0;
29379     { // ',' expression
29380         if (p->error_indicator) {
29381             D(p->level--);
29382             return NULL;
29383         }
29384         D(fprintf(stderr, "%*c> _loop0_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
29385         Token * _literal;
29386         expr_ty elem;
29387         while (
29388             (_literal = _PyPegen_expect_token(p, 12))  // token=','
29389             &&
29390             (elem = expression_rule(p))  // expression
29391         )
29392         {
29393             _res = elem;
29394             if (_res == NULL && PyErr_Occurred()) {
29395                 p->error_indicator = 1;
29396                 PyMem_Free(_children);
29397                 D(p->level--);
29398                 return NULL;
29399             }
29400             if (_n == _children_capacity) {
29401                 _children_capacity *= 2;
29402                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29403                 if (!_new_children) {
29404                     p->error_indicator = 1;
29405                     PyErr_NoMemory();
29406                     D(p->level--);
29407                     return NULL;
29408                 }
29409                 _children = _new_children;
29410             }
29411             _children[_n++] = _res;
29412             _mark = p->mark;
29413         }
29414         p->mark = _mark;
29415         D(fprintf(stderr, "%*c%s _loop0_135[%d-%d]: %s failed!\n", p->level, ' ',
29416                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
29417     }
29418     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29419     if (!_seq) {
29420         PyMem_Free(_children);
29421         p->error_indicator = 1;
29422         PyErr_NoMemory();
29423         D(p->level--);
29424         return NULL;
29425     }
29426     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29427     PyMem_Free(_children);
29428     _PyPegen_insert_memo(p, _start_mark, _loop0_135_type, _seq);
29429     D(p->level--);
29430     return _seq;
29431 }
29432 
29433 // _gather_134: expression _loop0_135
29434 static asdl_seq *
_gather_134_rule(Parser * p)29435 _gather_134_rule(Parser *p)
29436 {
29437     D(p->level++);
29438     if (p->error_indicator) {
29439         D(p->level--);
29440         return NULL;
29441     }
29442     asdl_seq * _res = NULL;
29443     int _mark = p->mark;
29444     { // expression _loop0_135
29445         if (p->error_indicator) {
29446             D(p->level--);
29447             return NULL;
29448         }
29449         D(fprintf(stderr, "%*c> _gather_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_135"));
29450         expr_ty elem;
29451         asdl_seq * seq;
29452         if (
29453             (elem = expression_rule(p))  // expression
29454             &&
29455             (seq = _loop0_135_rule(p))  // _loop0_135
29456         )
29457         {
29458             D(fprintf(stderr, "%*c+ _gather_134[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_135"));
29459             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29460             goto done;
29461         }
29462         p->mark = _mark;
29463         D(fprintf(stderr, "%*c%s _gather_134[%d-%d]: %s failed!\n", p->level, ' ',
29464                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_135"));
29465     }
29466     _res = NULL;
29467   done:
29468     D(p->level--);
29469     return _res;
29470 }
29471 
29472 // _loop0_137: ',' expression
29473 static asdl_seq *
_loop0_137_rule(Parser * p)29474 _loop0_137_rule(Parser *p)
29475 {
29476     D(p->level++);
29477     if (p->error_indicator) {
29478         D(p->level--);
29479         return NULL;
29480     }
29481     void *_res = NULL;
29482     int _mark = p->mark;
29483     int _start_mark = p->mark;
29484     void **_children = PyMem_Malloc(sizeof(void *));
29485     if (!_children) {
29486         p->error_indicator = 1;
29487         PyErr_NoMemory();
29488         D(p->level--);
29489         return NULL;
29490     }
29491     Py_ssize_t _children_capacity = 1;
29492     Py_ssize_t _n = 0;
29493     { // ',' expression
29494         if (p->error_indicator) {
29495             D(p->level--);
29496             return NULL;
29497         }
29498         D(fprintf(stderr, "%*c> _loop0_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
29499         Token * _literal;
29500         expr_ty elem;
29501         while (
29502             (_literal = _PyPegen_expect_token(p, 12))  // token=','
29503             &&
29504             (elem = expression_rule(p))  // expression
29505         )
29506         {
29507             _res = elem;
29508             if (_res == NULL && PyErr_Occurred()) {
29509                 p->error_indicator = 1;
29510                 PyMem_Free(_children);
29511                 D(p->level--);
29512                 return NULL;
29513             }
29514             if (_n == _children_capacity) {
29515                 _children_capacity *= 2;
29516                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29517                 if (!_new_children) {
29518                     p->error_indicator = 1;
29519                     PyErr_NoMemory();
29520                     D(p->level--);
29521                     return NULL;
29522                 }
29523                 _children = _new_children;
29524             }
29525             _children[_n++] = _res;
29526             _mark = p->mark;
29527         }
29528         p->mark = _mark;
29529         D(fprintf(stderr, "%*c%s _loop0_137[%d-%d]: %s failed!\n", p->level, ' ',
29530                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
29531     }
29532     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29533     if (!_seq) {
29534         PyMem_Free(_children);
29535         p->error_indicator = 1;
29536         PyErr_NoMemory();
29537         D(p->level--);
29538         return NULL;
29539     }
29540     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29541     PyMem_Free(_children);
29542     _PyPegen_insert_memo(p, _start_mark, _loop0_137_type, _seq);
29543     D(p->level--);
29544     return _seq;
29545 }
29546 
29547 // _gather_136: expression _loop0_137
29548 static asdl_seq *
_gather_136_rule(Parser * p)29549 _gather_136_rule(Parser *p)
29550 {
29551     D(p->level++);
29552     if (p->error_indicator) {
29553         D(p->level--);
29554         return NULL;
29555     }
29556     asdl_seq * _res = NULL;
29557     int _mark = p->mark;
29558     { // expression _loop0_137
29559         if (p->error_indicator) {
29560             D(p->level--);
29561             return NULL;
29562         }
29563         D(fprintf(stderr, "%*c> _gather_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_137"));
29564         expr_ty elem;
29565         asdl_seq * seq;
29566         if (
29567             (elem = expression_rule(p))  // expression
29568             &&
29569             (seq = _loop0_137_rule(p))  // _loop0_137
29570         )
29571         {
29572             D(fprintf(stderr, "%*c+ _gather_136[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_137"));
29573             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29574             goto done;
29575         }
29576         p->mark = _mark;
29577         D(fprintf(stderr, "%*c%s _gather_136[%d-%d]: %s failed!\n", p->level, ' ',
29578                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_137"));
29579     }
29580     _res = NULL;
29581   done:
29582     D(p->level--);
29583     return _res;
29584 }
29585 
29586 // _loop0_139: ',' expression
29587 static asdl_seq *
_loop0_139_rule(Parser * p)29588 _loop0_139_rule(Parser *p)
29589 {
29590     D(p->level++);
29591     if (p->error_indicator) {
29592         D(p->level--);
29593         return NULL;
29594     }
29595     void *_res = NULL;
29596     int _mark = p->mark;
29597     int _start_mark = p->mark;
29598     void **_children = PyMem_Malloc(sizeof(void *));
29599     if (!_children) {
29600         p->error_indicator = 1;
29601         PyErr_NoMemory();
29602         D(p->level--);
29603         return NULL;
29604     }
29605     Py_ssize_t _children_capacity = 1;
29606     Py_ssize_t _n = 0;
29607     { // ',' expression
29608         if (p->error_indicator) {
29609             D(p->level--);
29610             return NULL;
29611         }
29612         D(fprintf(stderr, "%*c> _loop0_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
29613         Token * _literal;
29614         expr_ty elem;
29615         while (
29616             (_literal = _PyPegen_expect_token(p, 12))  // token=','
29617             &&
29618             (elem = expression_rule(p))  // expression
29619         )
29620         {
29621             _res = elem;
29622             if (_res == NULL && PyErr_Occurred()) {
29623                 p->error_indicator = 1;
29624                 PyMem_Free(_children);
29625                 D(p->level--);
29626                 return NULL;
29627             }
29628             if (_n == _children_capacity) {
29629                 _children_capacity *= 2;
29630                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29631                 if (!_new_children) {
29632                     p->error_indicator = 1;
29633                     PyErr_NoMemory();
29634                     D(p->level--);
29635                     return NULL;
29636                 }
29637                 _children = _new_children;
29638             }
29639             _children[_n++] = _res;
29640             _mark = p->mark;
29641         }
29642         p->mark = _mark;
29643         D(fprintf(stderr, "%*c%s _loop0_139[%d-%d]: %s failed!\n", p->level, ' ',
29644                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
29645     }
29646     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29647     if (!_seq) {
29648         PyMem_Free(_children);
29649         p->error_indicator = 1;
29650         PyErr_NoMemory();
29651         D(p->level--);
29652         return NULL;
29653     }
29654     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29655     PyMem_Free(_children);
29656     _PyPegen_insert_memo(p, _start_mark, _loop0_139_type, _seq);
29657     D(p->level--);
29658     return _seq;
29659 }
29660 
29661 // _gather_138: expression _loop0_139
29662 static asdl_seq *
_gather_138_rule(Parser * p)29663 _gather_138_rule(Parser *p)
29664 {
29665     D(p->level++);
29666     if (p->error_indicator) {
29667         D(p->level--);
29668         return NULL;
29669     }
29670     asdl_seq * _res = NULL;
29671     int _mark = p->mark;
29672     { // expression _loop0_139
29673         if (p->error_indicator) {
29674             D(p->level--);
29675             return NULL;
29676         }
29677         D(fprintf(stderr, "%*c> _gather_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_139"));
29678         expr_ty elem;
29679         asdl_seq * seq;
29680         if (
29681             (elem = expression_rule(p))  // expression
29682             &&
29683             (seq = _loop0_139_rule(p))  // _loop0_139
29684         )
29685         {
29686             D(fprintf(stderr, "%*c+ _gather_138[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_139"));
29687             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29688             goto done;
29689         }
29690         p->mark = _mark;
29691         D(fprintf(stderr, "%*c%s _gather_138[%d-%d]: %s failed!\n", p->level, ' ',
29692                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_139"));
29693     }
29694     _res = NULL;
29695   done:
29696     D(p->level--);
29697     return _res;
29698 }
29699 
29700 // _tmp_140: NEWLINE INDENT
29701 static void *
_tmp_140_rule(Parser * p)29702 _tmp_140_rule(Parser *p)
29703 {
29704     D(p->level++);
29705     if (p->error_indicator) {
29706         D(p->level--);
29707         return NULL;
29708     }
29709     void * _res = NULL;
29710     int _mark = p->mark;
29711     { // NEWLINE INDENT
29712         if (p->error_indicator) {
29713             D(p->level--);
29714             return NULL;
29715         }
29716         D(fprintf(stderr, "%*c> _tmp_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
29717         Token * indent_var;
29718         Token * newline_var;
29719         if (
29720             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
29721             &&
29722             (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
29723         )
29724         {
29725             D(fprintf(stderr, "%*c+ _tmp_140[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
29726             _res = _PyPegen_dummy_name(p, newline_var, indent_var);
29727             goto done;
29728         }
29729         p->mark = _mark;
29730         D(fprintf(stderr, "%*c%s _tmp_140[%d-%d]: %s failed!\n", p->level, ' ',
29731                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT"));
29732     }
29733     _res = NULL;
29734   done:
29735     D(p->level--);
29736     return _res;
29737 }
29738 
29739 // _tmp_141: args | expression for_if_clauses
29740 static void *
_tmp_141_rule(Parser * p)29741 _tmp_141_rule(Parser *p)
29742 {
29743     D(p->level++);
29744     if (p->error_indicator) {
29745         D(p->level--);
29746         return NULL;
29747     }
29748     void * _res = NULL;
29749     int _mark = p->mark;
29750     { // args
29751         if (p->error_indicator) {
29752             D(p->level--);
29753             return NULL;
29754         }
29755         D(fprintf(stderr, "%*c> _tmp_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args"));
29756         expr_ty args_var;
29757         if (
29758             (args_var = args_rule(p))  // args
29759         )
29760         {
29761             D(fprintf(stderr, "%*c+ _tmp_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args"));
29762             _res = args_var;
29763             goto done;
29764         }
29765         p->mark = _mark;
29766         D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ',
29767                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args"));
29768     }
29769     { // expression for_if_clauses
29770         if (p->error_indicator) {
29771             D(p->level--);
29772             return NULL;
29773         }
29774         D(fprintf(stderr, "%*c> _tmp_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses"));
29775         expr_ty expression_var;
29776         asdl_comprehension_seq* for_if_clauses_var;
29777         if (
29778             (expression_var = expression_rule(p))  // expression
29779             &&
29780             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
29781         )
29782         {
29783             D(fprintf(stderr, "%*c+ _tmp_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses"));
29784             _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
29785             goto done;
29786         }
29787         p->mark = _mark;
29788         D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ',
29789                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses"));
29790     }
29791     _res = NULL;
29792   done:
29793     D(p->level--);
29794     return _res;
29795 }
29796 
29797 // _tmp_142: 'True' | 'False' | 'None'
29798 static void *
_tmp_142_rule(Parser * p)29799 _tmp_142_rule(Parser *p)
29800 {
29801     D(p->level++);
29802     if (p->error_indicator) {
29803         D(p->level--);
29804         return NULL;
29805     }
29806     void * _res = NULL;
29807     int _mark = p->mark;
29808     { // 'True'
29809         if (p->error_indicator) {
29810             D(p->level--);
29811             return NULL;
29812         }
29813         D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
29814         Token * _keyword;
29815         if (
29816             (_keyword = _PyPegen_expect_token(p, 597))  // token='True'
29817         )
29818         {
29819             D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
29820             _res = _keyword;
29821             goto done;
29822         }
29823         p->mark = _mark;
29824         D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ',
29825                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
29826     }
29827     { // 'False'
29828         if (p->error_indicator) {
29829             D(p->level--);
29830             return NULL;
29831         }
29832         D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
29833         Token * _keyword;
29834         if (
29835             (_keyword = _PyPegen_expect_token(p, 599))  // token='False'
29836         )
29837         {
29838             D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
29839             _res = _keyword;
29840             goto done;
29841         }
29842         p->mark = _mark;
29843         D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ',
29844                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
29845     }
29846     { // 'None'
29847         if (p->error_indicator) {
29848             D(p->level--);
29849             return NULL;
29850         }
29851         D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
29852         Token * _keyword;
29853         if (
29854             (_keyword = _PyPegen_expect_token(p, 598))  // token='None'
29855         )
29856         {
29857             D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
29858             _res = _keyword;
29859             goto done;
29860         }
29861         p->mark = _mark;
29862         D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ',
29863                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
29864     }
29865     _res = NULL;
29866   done:
29867     D(p->level--);
29868     return _res;
29869 }
29870 
29871 // _tmp_143: NAME '='
29872 static void *
_tmp_143_rule(Parser * p)29873 _tmp_143_rule(Parser *p)
29874 {
29875     D(p->level++);
29876     if (p->error_indicator) {
29877         D(p->level--);
29878         return NULL;
29879     }
29880     void * _res = NULL;
29881     int _mark = p->mark;
29882     { // NAME '='
29883         if (p->error_indicator) {
29884             D(p->level--);
29885             return NULL;
29886         }
29887         D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '='"));
29888         Token * _literal;
29889         expr_ty name_var;
29890         if (
29891             (name_var = _PyPegen_name_token(p))  // NAME
29892             &&
29893             (_literal = _PyPegen_expect_token(p, 22))  // token='='
29894         )
29895         {
29896             D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '='"));
29897             _res = _PyPegen_dummy_name(p, name_var, _literal);
29898             goto done;
29899         }
29900         p->mark = _mark;
29901         D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ',
29902                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '='"));
29903     }
29904     _res = NULL;
29905   done:
29906     D(p->level--);
29907     return _res;
29908 }
29909 
29910 // _tmp_144: NAME STRING | SOFT_KEYWORD
29911 static void *
_tmp_144_rule(Parser * p)29912 _tmp_144_rule(Parser *p)
29913 {
29914     D(p->level++);
29915     if (p->error_indicator) {
29916         D(p->level--);
29917         return NULL;
29918     }
29919     void * _res = NULL;
29920     int _mark = p->mark;
29921     { // NAME STRING
29922         if (p->error_indicator) {
29923             D(p->level--);
29924             return NULL;
29925         }
29926         D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
29927         expr_ty name_var;
29928         expr_ty string_var;
29929         if (
29930             (name_var = _PyPegen_name_token(p))  // NAME
29931             &&
29932             (string_var = _PyPegen_string_token(p))  // STRING
29933         )
29934         {
29935             D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
29936             _res = _PyPegen_dummy_name(p, name_var, string_var);
29937             goto done;
29938         }
29939         p->mark = _mark;
29940         D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ',
29941                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME STRING"));
29942     }
29943     { // SOFT_KEYWORD
29944         if (p->error_indicator) {
29945             D(p->level--);
29946             return NULL;
29947         }
29948         D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
29949         expr_ty soft_keyword_var;
29950         if (
29951             (soft_keyword_var = _PyPegen_soft_keyword_token(p))  // SOFT_KEYWORD
29952         )
29953         {
29954             D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
29955             _res = soft_keyword_var;
29956             goto done;
29957         }
29958         p->mark = _mark;
29959         D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ',
29960                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "SOFT_KEYWORD"));
29961     }
29962     _res = NULL;
29963   done:
29964     D(p->level--);
29965     return _res;
29966 }
29967 
29968 // _tmp_145: 'else' | ':'
29969 static void *
_tmp_145_rule(Parser * p)29970 _tmp_145_rule(Parser *p)
29971 {
29972     D(p->level++);
29973     if (p->error_indicator) {
29974         D(p->level--);
29975         return NULL;
29976     }
29977     void * _res = NULL;
29978     int _mark = p->mark;
29979     { // 'else'
29980         if (p->error_indicator) {
29981             D(p->level--);
29982             return NULL;
29983         }
29984         D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else'"));
29985         Token * _keyword;
29986         if (
29987             (_keyword = _PyPegen_expect_token(p, 630))  // token='else'
29988         )
29989         {
29990             D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else'"));
29991             _res = _keyword;
29992             goto done;
29993         }
29994         p->mark = _mark;
29995         D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ',
29996                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else'"));
29997     }
29998     { // ':'
29999         if (p->error_indicator) {
30000             D(p->level--);
30001             return NULL;
30002         }
30003         D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
30004         Token * _literal;
30005         if (
30006             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
30007         )
30008         {
30009             D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
30010             _res = _literal;
30011             goto done;
30012         }
30013         p->mark = _mark;
30014         D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ',
30015                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
30016     }
30017     _res = NULL;
30018   done:
30019     D(p->level--);
30020     return _res;
30021 }
30022 
30023 // _tmp_146: '=' | ':='
30024 static void *
_tmp_146_rule(Parser * p)30025 _tmp_146_rule(Parser *p)
30026 {
30027     D(p->level++);
30028     if (p->error_indicator) {
30029         D(p->level--);
30030         return NULL;
30031     }
30032     void * _res = NULL;
30033     int _mark = p->mark;
30034     { // '='
30035         if (p->error_indicator) {
30036             D(p->level--);
30037             return NULL;
30038         }
30039         D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
30040         Token * _literal;
30041         if (
30042             (_literal = _PyPegen_expect_token(p, 22))  // token='='
30043         )
30044         {
30045             D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
30046             _res = _literal;
30047             goto done;
30048         }
30049         p->mark = _mark;
30050         D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ',
30051                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
30052     }
30053     { // ':='
30054         if (p->error_indicator) {
30055             D(p->level--);
30056             return NULL;
30057         }
30058         D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='"));
30059         Token * _literal;
30060         if (
30061             (_literal = _PyPegen_expect_token(p, 53))  // token=':='
30062         )
30063         {
30064             D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='"));
30065             _res = _literal;
30066             goto done;
30067         }
30068         p->mark = _mark;
30069         D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ',
30070                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='"));
30071     }
30072     _res = NULL;
30073   done:
30074     D(p->level--);
30075     return _res;
30076 }
30077 
30078 // _tmp_147: list | tuple | genexp | 'True' | 'None' | 'False'
30079 static void *
_tmp_147_rule(Parser * p)30080 _tmp_147_rule(Parser *p)
30081 {
30082     D(p->level++);
30083     if (p->error_indicator) {
30084         D(p->level--);
30085         return NULL;
30086     }
30087     void * _res = NULL;
30088     int _mark = p->mark;
30089     { // list
30090         if (p->error_indicator) {
30091             D(p->level--);
30092             return NULL;
30093         }
30094         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
30095         expr_ty list_var;
30096         if (
30097             (list_var = list_rule(p))  // list
30098         )
30099         {
30100             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
30101             _res = list_var;
30102             goto done;
30103         }
30104         p->mark = _mark;
30105         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
30106                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
30107     }
30108     { // tuple
30109         if (p->error_indicator) {
30110             D(p->level--);
30111             return NULL;
30112         }
30113         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
30114         expr_ty tuple_var;
30115         if (
30116             (tuple_var = tuple_rule(p))  // tuple
30117         )
30118         {
30119             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
30120             _res = tuple_var;
30121             goto done;
30122         }
30123         p->mark = _mark;
30124         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
30125                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
30126     }
30127     { // genexp
30128         if (p->error_indicator) {
30129             D(p->level--);
30130             return NULL;
30131         }
30132         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
30133         expr_ty genexp_var;
30134         if (
30135             (genexp_var = genexp_rule(p))  // genexp
30136         )
30137         {
30138             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
30139             _res = genexp_var;
30140             goto done;
30141         }
30142         p->mark = _mark;
30143         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
30144                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
30145     }
30146     { // 'True'
30147         if (p->error_indicator) {
30148             D(p->level--);
30149             return NULL;
30150         }
30151         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
30152         Token * _keyword;
30153         if (
30154             (_keyword = _PyPegen_expect_token(p, 597))  // token='True'
30155         )
30156         {
30157             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
30158             _res = _keyword;
30159             goto done;
30160         }
30161         p->mark = _mark;
30162         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
30163                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
30164     }
30165     { // 'None'
30166         if (p->error_indicator) {
30167             D(p->level--);
30168             return NULL;
30169         }
30170         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
30171         Token * _keyword;
30172         if (
30173             (_keyword = _PyPegen_expect_token(p, 598))  // token='None'
30174         )
30175         {
30176             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
30177             _res = _keyword;
30178             goto done;
30179         }
30180         p->mark = _mark;
30181         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
30182                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
30183     }
30184     { // 'False'
30185         if (p->error_indicator) {
30186             D(p->level--);
30187             return NULL;
30188         }
30189         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
30190         Token * _keyword;
30191         if (
30192             (_keyword = _PyPegen_expect_token(p, 599))  // token='False'
30193         )
30194         {
30195             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
30196             _res = _keyword;
30197             goto done;
30198         }
30199         p->mark = _mark;
30200         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
30201                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
30202     }
30203     _res = NULL;
30204   done:
30205     D(p->level--);
30206     return _res;
30207 }
30208 
30209 // _tmp_148: '=' | ':='
30210 static void *
_tmp_148_rule(Parser * p)30211 _tmp_148_rule(Parser *p)
30212 {
30213     D(p->level++);
30214     if (p->error_indicator) {
30215         D(p->level--);
30216         return NULL;
30217     }
30218     void * _res = NULL;
30219     int _mark = p->mark;
30220     { // '='
30221         if (p->error_indicator) {
30222             D(p->level--);
30223             return NULL;
30224         }
30225         D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
30226         Token * _literal;
30227         if (
30228             (_literal = _PyPegen_expect_token(p, 22))  // token='='
30229         )
30230         {
30231             D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
30232             _res = _literal;
30233             goto done;
30234         }
30235         p->mark = _mark;
30236         D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
30237                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
30238     }
30239     { // ':='
30240         if (p->error_indicator) {
30241             D(p->level--);
30242             return NULL;
30243         }
30244         D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='"));
30245         Token * _literal;
30246         if (
30247             (_literal = _PyPegen_expect_token(p, 53))  // token=':='
30248         )
30249         {
30250             D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='"));
30251             _res = _literal;
30252             goto done;
30253         }
30254         p->mark = _mark;
30255         D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
30256                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='"));
30257     }
30258     _res = NULL;
30259   done:
30260     D(p->level--);
30261     return _res;
30262 }
30263 
30264 // _loop0_149: star_named_expressions
30265 static asdl_seq *
_loop0_149_rule(Parser * p)30266 _loop0_149_rule(Parser *p)
30267 {
30268     D(p->level++);
30269     if (p->error_indicator) {
30270         D(p->level--);
30271         return NULL;
30272     }
30273     void *_res = NULL;
30274     int _mark = p->mark;
30275     int _start_mark = p->mark;
30276     void **_children = PyMem_Malloc(sizeof(void *));
30277     if (!_children) {
30278         p->error_indicator = 1;
30279         PyErr_NoMemory();
30280         D(p->level--);
30281         return NULL;
30282     }
30283     Py_ssize_t _children_capacity = 1;
30284     Py_ssize_t _n = 0;
30285     { // star_named_expressions
30286         if (p->error_indicator) {
30287             D(p->level--);
30288             return NULL;
30289         }
30290         D(fprintf(stderr, "%*c> _loop0_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions"));
30291         asdl_expr_seq* star_named_expressions_var;
30292         while (
30293             (star_named_expressions_var = star_named_expressions_rule(p))  // star_named_expressions
30294         )
30295         {
30296             _res = star_named_expressions_var;
30297             if (_n == _children_capacity) {
30298                 _children_capacity *= 2;
30299                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30300                 if (!_new_children) {
30301                     p->error_indicator = 1;
30302                     PyErr_NoMemory();
30303                     D(p->level--);
30304                     return NULL;
30305                 }
30306                 _children = _new_children;
30307             }
30308             _children[_n++] = _res;
30309             _mark = p->mark;
30310         }
30311         p->mark = _mark;
30312         D(fprintf(stderr, "%*c%s _loop0_149[%d-%d]: %s failed!\n", p->level, ' ',
30313                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expressions"));
30314     }
30315     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30316     if (!_seq) {
30317         PyMem_Free(_children);
30318         p->error_indicator = 1;
30319         PyErr_NoMemory();
30320         D(p->level--);
30321         return NULL;
30322     }
30323     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30324     PyMem_Free(_children);
30325     _PyPegen_insert_memo(p, _start_mark, _loop0_149_type, _seq);
30326     D(p->level--);
30327     return _seq;
30328 }
30329 
30330 // _loop0_150: (star_targets '=')
30331 static asdl_seq *
_loop0_150_rule(Parser * p)30332 _loop0_150_rule(Parser *p)
30333 {
30334     D(p->level++);
30335     if (p->error_indicator) {
30336         D(p->level--);
30337         return NULL;
30338     }
30339     void *_res = NULL;
30340     int _mark = p->mark;
30341     int _start_mark = p->mark;
30342     void **_children = PyMem_Malloc(sizeof(void *));
30343     if (!_children) {
30344         p->error_indicator = 1;
30345         PyErr_NoMemory();
30346         D(p->level--);
30347         return NULL;
30348     }
30349     Py_ssize_t _children_capacity = 1;
30350     Py_ssize_t _n = 0;
30351     { // (star_targets '=')
30352         if (p->error_indicator) {
30353             D(p->level--);
30354             return NULL;
30355         }
30356         D(fprintf(stderr, "%*c> _loop0_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
30357         void *_tmp_199_var;
30358         while (
30359             (_tmp_199_var = _tmp_199_rule(p))  // star_targets '='
30360         )
30361         {
30362             _res = _tmp_199_var;
30363             if (_n == _children_capacity) {
30364                 _children_capacity *= 2;
30365                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30366                 if (!_new_children) {
30367                     p->error_indicator = 1;
30368                     PyErr_NoMemory();
30369                     D(p->level--);
30370                     return NULL;
30371                 }
30372                 _children = _new_children;
30373             }
30374             _children[_n++] = _res;
30375             _mark = p->mark;
30376         }
30377         p->mark = _mark;
30378         D(fprintf(stderr, "%*c%s _loop0_150[%d-%d]: %s failed!\n", p->level, ' ',
30379                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
30380     }
30381     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30382     if (!_seq) {
30383         PyMem_Free(_children);
30384         p->error_indicator = 1;
30385         PyErr_NoMemory();
30386         D(p->level--);
30387         return NULL;
30388     }
30389     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30390     PyMem_Free(_children);
30391     _PyPegen_insert_memo(p, _start_mark, _loop0_150_type, _seq);
30392     D(p->level--);
30393     return _seq;
30394 }
30395 
30396 // _loop0_151: (star_targets '=')
30397 static asdl_seq *
_loop0_151_rule(Parser * p)30398 _loop0_151_rule(Parser *p)
30399 {
30400     D(p->level++);
30401     if (p->error_indicator) {
30402         D(p->level--);
30403         return NULL;
30404     }
30405     void *_res = NULL;
30406     int _mark = p->mark;
30407     int _start_mark = p->mark;
30408     void **_children = PyMem_Malloc(sizeof(void *));
30409     if (!_children) {
30410         p->error_indicator = 1;
30411         PyErr_NoMemory();
30412         D(p->level--);
30413         return NULL;
30414     }
30415     Py_ssize_t _children_capacity = 1;
30416     Py_ssize_t _n = 0;
30417     { // (star_targets '=')
30418         if (p->error_indicator) {
30419             D(p->level--);
30420             return NULL;
30421         }
30422         D(fprintf(stderr, "%*c> _loop0_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
30423         void *_tmp_200_var;
30424         while (
30425             (_tmp_200_var = _tmp_200_rule(p))  // star_targets '='
30426         )
30427         {
30428             _res = _tmp_200_var;
30429             if (_n == _children_capacity) {
30430                 _children_capacity *= 2;
30431                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30432                 if (!_new_children) {
30433                     p->error_indicator = 1;
30434                     PyErr_NoMemory();
30435                     D(p->level--);
30436                     return NULL;
30437                 }
30438                 _children = _new_children;
30439             }
30440             _children[_n++] = _res;
30441             _mark = p->mark;
30442         }
30443         p->mark = _mark;
30444         D(fprintf(stderr, "%*c%s _loop0_151[%d-%d]: %s failed!\n", p->level, ' ',
30445                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
30446     }
30447     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30448     if (!_seq) {
30449         PyMem_Free(_children);
30450         p->error_indicator = 1;
30451         PyErr_NoMemory();
30452         D(p->level--);
30453         return NULL;
30454     }
30455     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30456     PyMem_Free(_children);
30457     _PyPegen_insert_memo(p, _start_mark, _loop0_151_type, _seq);
30458     D(p->level--);
30459     return _seq;
30460 }
30461 
30462 // _tmp_152: yield_expr | star_expressions
30463 static void *
_tmp_152_rule(Parser * p)30464 _tmp_152_rule(Parser *p)
30465 {
30466     D(p->level++);
30467     if (p->error_indicator) {
30468         D(p->level--);
30469         return NULL;
30470     }
30471     void * _res = NULL;
30472     int _mark = p->mark;
30473     { // yield_expr
30474         if (p->error_indicator) {
30475             D(p->level--);
30476             return NULL;
30477         }
30478         D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
30479         expr_ty yield_expr_var;
30480         if (
30481             (yield_expr_var = yield_expr_rule(p))  // yield_expr
30482         )
30483         {
30484             D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
30485             _res = yield_expr_var;
30486             goto done;
30487         }
30488         p->mark = _mark;
30489         D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
30490                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
30491     }
30492     { // star_expressions
30493         if (p->error_indicator) {
30494             D(p->level--);
30495             return NULL;
30496         }
30497         D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
30498         expr_ty star_expressions_var;
30499         if (
30500             (star_expressions_var = star_expressions_rule(p))  // star_expressions
30501         )
30502         {
30503             D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
30504             _res = star_expressions_var;
30505             goto done;
30506         }
30507         p->mark = _mark;
30508         D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
30509                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
30510     }
30511     _res = NULL;
30512   done:
30513     D(p->level--);
30514     return _res;
30515 }
30516 
30517 // _tmp_153: '[' | '(' | '{'
30518 static void *
_tmp_153_rule(Parser * p)30519 _tmp_153_rule(Parser *p)
30520 {
30521     D(p->level++);
30522     if (p->error_indicator) {
30523         D(p->level--);
30524         return NULL;
30525     }
30526     void * _res = NULL;
30527     int _mark = p->mark;
30528     { // '['
30529         if (p->error_indicator) {
30530             D(p->level--);
30531             return NULL;
30532         }
30533         D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
30534         Token * _literal;
30535         if (
30536             (_literal = _PyPegen_expect_token(p, 9))  // token='['
30537         )
30538         {
30539             D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
30540             _res = _literal;
30541             goto done;
30542         }
30543         p->mark = _mark;
30544         D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
30545                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
30546     }
30547     { // '('
30548         if (p->error_indicator) {
30549             D(p->level--);
30550             return NULL;
30551         }
30552         D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
30553         Token * _literal;
30554         if (
30555             (_literal = _PyPegen_expect_token(p, 7))  // token='('
30556         )
30557         {
30558             D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
30559             _res = _literal;
30560             goto done;
30561         }
30562         p->mark = _mark;
30563         D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
30564                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
30565     }
30566     { // '{'
30567         if (p->error_indicator) {
30568             D(p->level--);
30569             return NULL;
30570         }
30571         D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
30572         Token * _literal;
30573         if (
30574             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
30575         )
30576         {
30577             D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
30578             _res = _literal;
30579             goto done;
30580         }
30581         p->mark = _mark;
30582         D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
30583                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
30584     }
30585     _res = NULL;
30586   done:
30587     D(p->level--);
30588     return _res;
30589 }
30590 
30591 // _tmp_154: '[' | '{'
30592 static void *
_tmp_154_rule(Parser * p)30593 _tmp_154_rule(Parser *p)
30594 {
30595     D(p->level++);
30596     if (p->error_indicator) {
30597         D(p->level--);
30598         return NULL;
30599     }
30600     void * _res = NULL;
30601     int _mark = p->mark;
30602     { // '['
30603         if (p->error_indicator) {
30604             D(p->level--);
30605             return NULL;
30606         }
30607         D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
30608         Token * _literal;
30609         if (
30610             (_literal = _PyPegen_expect_token(p, 9))  // token='['
30611         )
30612         {
30613             D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
30614             _res = _literal;
30615             goto done;
30616         }
30617         p->mark = _mark;
30618         D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
30619                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
30620     }
30621     { // '{'
30622         if (p->error_indicator) {
30623             D(p->level--);
30624             return NULL;
30625         }
30626         D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
30627         Token * _literal;
30628         if (
30629             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
30630         )
30631         {
30632             D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
30633             _res = _literal;
30634             goto done;
30635         }
30636         p->mark = _mark;
30637         D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
30638                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
30639     }
30640     _res = NULL;
30641   done:
30642     D(p->level--);
30643     return _res;
30644 }
30645 
30646 // _tmp_155: '[' | '{'
30647 static void *
_tmp_155_rule(Parser * p)30648 _tmp_155_rule(Parser *p)
30649 {
30650     D(p->level++);
30651     if (p->error_indicator) {
30652         D(p->level--);
30653         return NULL;
30654     }
30655     void * _res = NULL;
30656     int _mark = p->mark;
30657     { // '['
30658         if (p->error_indicator) {
30659             D(p->level--);
30660             return NULL;
30661         }
30662         D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
30663         Token * _literal;
30664         if (
30665             (_literal = _PyPegen_expect_token(p, 9))  // token='['
30666         )
30667         {
30668             D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
30669             _res = _literal;
30670             goto done;
30671         }
30672         p->mark = _mark;
30673         D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
30674                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
30675     }
30676     { // '{'
30677         if (p->error_indicator) {
30678             D(p->level--);
30679             return NULL;
30680         }
30681         D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
30682         Token * _literal;
30683         if (
30684             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
30685         )
30686         {
30687             D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
30688             _res = _literal;
30689             goto done;
30690         }
30691         p->mark = _mark;
30692         D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
30693                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
30694     }
30695     _res = NULL;
30696   done:
30697     D(p->level--);
30698     return _res;
30699 }
30700 
30701 // _loop0_156: param_no_default
30702 static asdl_seq *
_loop0_156_rule(Parser * p)30703 _loop0_156_rule(Parser *p)
30704 {
30705     D(p->level++);
30706     if (p->error_indicator) {
30707         D(p->level--);
30708         return NULL;
30709     }
30710     void *_res = NULL;
30711     int _mark = p->mark;
30712     int _start_mark = p->mark;
30713     void **_children = PyMem_Malloc(sizeof(void *));
30714     if (!_children) {
30715         p->error_indicator = 1;
30716         PyErr_NoMemory();
30717         D(p->level--);
30718         return NULL;
30719     }
30720     Py_ssize_t _children_capacity = 1;
30721     Py_ssize_t _n = 0;
30722     { // param_no_default
30723         if (p->error_indicator) {
30724             D(p->level--);
30725             return NULL;
30726         }
30727         D(fprintf(stderr, "%*c> _loop0_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
30728         arg_ty param_no_default_var;
30729         while (
30730             (param_no_default_var = param_no_default_rule(p))  // param_no_default
30731         )
30732         {
30733             _res = param_no_default_var;
30734             if (_n == _children_capacity) {
30735                 _children_capacity *= 2;
30736                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30737                 if (!_new_children) {
30738                     p->error_indicator = 1;
30739                     PyErr_NoMemory();
30740                     D(p->level--);
30741                     return NULL;
30742                 }
30743                 _children = _new_children;
30744             }
30745             _children[_n++] = _res;
30746             _mark = p->mark;
30747         }
30748         p->mark = _mark;
30749         D(fprintf(stderr, "%*c%s _loop0_156[%d-%d]: %s failed!\n", p->level, ' ',
30750                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
30751     }
30752     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30753     if (!_seq) {
30754         PyMem_Free(_children);
30755         p->error_indicator = 1;
30756         PyErr_NoMemory();
30757         D(p->level--);
30758         return NULL;
30759     }
30760     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30761     PyMem_Free(_children);
30762     _PyPegen_insert_memo(p, _start_mark, _loop0_156_type, _seq);
30763     D(p->level--);
30764     return _seq;
30765 }
30766 
30767 // _loop0_157: param_no_default
30768 static asdl_seq *
_loop0_157_rule(Parser * p)30769 _loop0_157_rule(Parser *p)
30770 {
30771     D(p->level++);
30772     if (p->error_indicator) {
30773         D(p->level--);
30774         return NULL;
30775     }
30776     void *_res = NULL;
30777     int _mark = p->mark;
30778     int _start_mark = p->mark;
30779     void **_children = PyMem_Malloc(sizeof(void *));
30780     if (!_children) {
30781         p->error_indicator = 1;
30782         PyErr_NoMemory();
30783         D(p->level--);
30784         return NULL;
30785     }
30786     Py_ssize_t _children_capacity = 1;
30787     Py_ssize_t _n = 0;
30788     { // param_no_default
30789         if (p->error_indicator) {
30790             D(p->level--);
30791             return NULL;
30792         }
30793         D(fprintf(stderr, "%*c> _loop0_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
30794         arg_ty param_no_default_var;
30795         while (
30796             (param_no_default_var = param_no_default_rule(p))  // param_no_default
30797         )
30798         {
30799             _res = param_no_default_var;
30800             if (_n == _children_capacity) {
30801                 _children_capacity *= 2;
30802                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30803                 if (!_new_children) {
30804                     p->error_indicator = 1;
30805                     PyErr_NoMemory();
30806                     D(p->level--);
30807                     return NULL;
30808                 }
30809                 _children = _new_children;
30810             }
30811             _children[_n++] = _res;
30812             _mark = p->mark;
30813         }
30814         p->mark = _mark;
30815         D(fprintf(stderr, "%*c%s _loop0_157[%d-%d]: %s failed!\n", p->level, ' ',
30816                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
30817     }
30818     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30819     if (!_seq) {
30820         PyMem_Free(_children);
30821         p->error_indicator = 1;
30822         PyErr_NoMemory();
30823         D(p->level--);
30824         return NULL;
30825     }
30826     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30827     PyMem_Free(_children);
30828     _PyPegen_insert_memo(p, _start_mark, _loop0_157_type, _seq);
30829     D(p->level--);
30830     return _seq;
30831 }
30832 
30833 // _loop1_158: param_no_default
30834 static asdl_seq *
_loop1_158_rule(Parser * p)30835 _loop1_158_rule(Parser *p)
30836 {
30837     D(p->level++);
30838     if (p->error_indicator) {
30839         D(p->level--);
30840         return NULL;
30841     }
30842     void *_res = NULL;
30843     int _mark = p->mark;
30844     int _start_mark = p->mark;
30845     void **_children = PyMem_Malloc(sizeof(void *));
30846     if (!_children) {
30847         p->error_indicator = 1;
30848         PyErr_NoMemory();
30849         D(p->level--);
30850         return NULL;
30851     }
30852     Py_ssize_t _children_capacity = 1;
30853     Py_ssize_t _n = 0;
30854     { // param_no_default
30855         if (p->error_indicator) {
30856             D(p->level--);
30857             return NULL;
30858         }
30859         D(fprintf(stderr, "%*c> _loop1_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
30860         arg_ty param_no_default_var;
30861         while (
30862             (param_no_default_var = param_no_default_rule(p))  // param_no_default
30863         )
30864         {
30865             _res = param_no_default_var;
30866             if (_n == _children_capacity) {
30867                 _children_capacity *= 2;
30868                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30869                 if (!_new_children) {
30870                     p->error_indicator = 1;
30871                     PyErr_NoMemory();
30872                     D(p->level--);
30873                     return NULL;
30874                 }
30875                 _children = _new_children;
30876             }
30877             _children[_n++] = _res;
30878             _mark = p->mark;
30879         }
30880         p->mark = _mark;
30881         D(fprintf(stderr, "%*c%s _loop1_158[%d-%d]: %s failed!\n", p->level, ' ',
30882                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
30883     }
30884     if (_n == 0 || p->error_indicator) {
30885         PyMem_Free(_children);
30886         D(p->level--);
30887         return NULL;
30888     }
30889     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30890     if (!_seq) {
30891         PyMem_Free(_children);
30892         p->error_indicator = 1;
30893         PyErr_NoMemory();
30894         D(p->level--);
30895         return NULL;
30896     }
30897     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30898     PyMem_Free(_children);
30899     _PyPegen_insert_memo(p, _start_mark, _loop1_158_type, _seq);
30900     D(p->level--);
30901     return _seq;
30902 }
30903 
30904 // _loop1_159: param_with_default
30905 static asdl_seq *
_loop1_159_rule(Parser * p)30906 _loop1_159_rule(Parser *p)
30907 {
30908     D(p->level++);
30909     if (p->error_indicator) {
30910         D(p->level--);
30911         return NULL;
30912     }
30913     void *_res = NULL;
30914     int _mark = p->mark;
30915     int _start_mark = p->mark;
30916     void **_children = PyMem_Malloc(sizeof(void *));
30917     if (!_children) {
30918         p->error_indicator = 1;
30919         PyErr_NoMemory();
30920         D(p->level--);
30921         return NULL;
30922     }
30923     Py_ssize_t _children_capacity = 1;
30924     Py_ssize_t _n = 0;
30925     { // param_with_default
30926         if (p->error_indicator) {
30927             D(p->level--);
30928             return NULL;
30929         }
30930         D(fprintf(stderr, "%*c> _loop1_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
30931         NameDefaultPair* param_with_default_var;
30932         while (
30933             (param_with_default_var = param_with_default_rule(p))  // param_with_default
30934         )
30935         {
30936             _res = param_with_default_var;
30937             if (_n == _children_capacity) {
30938                 _children_capacity *= 2;
30939                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30940                 if (!_new_children) {
30941                     p->error_indicator = 1;
30942                     PyErr_NoMemory();
30943                     D(p->level--);
30944                     return NULL;
30945                 }
30946                 _children = _new_children;
30947             }
30948             _children[_n++] = _res;
30949             _mark = p->mark;
30950         }
30951         p->mark = _mark;
30952         D(fprintf(stderr, "%*c%s _loop1_159[%d-%d]: %s failed!\n", p->level, ' ',
30953                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
30954     }
30955     if (_n == 0 || p->error_indicator) {
30956         PyMem_Free(_children);
30957         D(p->level--);
30958         return NULL;
30959     }
30960     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30961     if (!_seq) {
30962         PyMem_Free(_children);
30963         p->error_indicator = 1;
30964         PyErr_NoMemory();
30965         D(p->level--);
30966         return NULL;
30967     }
30968     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30969     PyMem_Free(_children);
30970     _PyPegen_insert_memo(p, _start_mark, _loop1_159_type, _seq);
30971     D(p->level--);
30972     return _seq;
30973 }
30974 
30975 // _loop0_160: lambda_param_no_default
30976 static asdl_seq *
_loop0_160_rule(Parser * p)30977 _loop0_160_rule(Parser *p)
30978 {
30979     D(p->level++);
30980     if (p->error_indicator) {
30981         D(p->level--);
30982         return NULL;
30983     }
30984     void *_res = NULL;
30985     int _mark = p->mark;
30986     int _start_mark = p->mark;
30987     void **_children = PyMem_Malloc(sizeof(void *));
30988     if (!_children) {
30989         p->error_indicator = 1;
30990         PyErr_NoMemory();
30991         D(p->level--);
30992         return NULL;
30993     }
30994     Py_ssize_t _children_capacity = 1;
30995     Py_ssize_t _n = 0;
30996     { // lambda_param_no_default
30997         if (p->error_indicator) {
30998             D(p->level--);
30999             return NULL;
31000         }
31001         D(fprintf(stderr, "%*c> _loop0_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
31002         arg_ty lambda_param_no_default_var;
31003         while (
31004             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
31005         )
31006         {
31007             _res = lambda_param_no_default_var;
31008             if (_n == _children_capacity) {
31009                 _children_capacity *= 2;
31010                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31011                 if (!_new_children) {
31012                     p->error_indicator = 1;
31013                     PyErr_NoMemory();
31014                     D(p->level--);
31015                     return NULL;
31016                 }
31017                 _children = _new_children;
31018             }
31019             _children[_n++] = _res;
31020             _mark = p->mark;
31021         }
31022         p->mark = _mark;
31023         D(fprintf(stderr, "%*c%s _loop0_160[%d-%d]: %s failed!\n", p->level, ' ',
31024                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
31025     }
31026     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31027     if (!_seq) {
31028         PyMem_Free(_children);
31029         p->error_indicator = 1;
31030         PyErr_NoMemory();
31031         D(p->level--);
31032         return NULL;
31033     }
31034     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31035     PyMem_Free(_children);
31036     _PyPegen_insert_memo(p, _start_mark, _loop0_160_type, _seq);
31037     D(p->level--);
31038     return _seq;
31039 }
31040 
31041 // _loop0_161: lambda_param_no_default
31042 static asdl_seq *
_loop0_161_rule(Parser * p)31043 _loop0_161_rule(Parser *p)
31044 {
31045     D(p->level++);
31046     if (p->error_indicator) {
31047         D(p->level--);
31048         return NULL;
31049     }
31050     void *_res = NULL;
31051     int _mark = p->mark;
31052     int _start_mark = p->mark;
31053     void **_children = PyMem_Malloc(sizeof(void *));
31054     if (!_children) {
31055         p->error_indicator = 1;
31056         PyErr_NoMemory();
31057         D(p->level--);
31058         return NULL;
31059     }
31060     Py_ssize_t _children_capacity = 1;
31061     Py_ssize_t _n = 0;
31062     { // lambda_param_no_default
31063         if (p->error_indicator) {
31064             D(p->level--);
31065             return NULL;
31066         }
31067         D(fprintf(stderr, "%*c> _loop0_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
31068         arg_ty lambda_param_no_default_var;
31069         while (
31070             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
31071         )
31072         {
31073             _res = lambda_param_no_default_var;
31074             if (_n == _children_capacity) {
31075                 _children_capacity *= 2;
31076                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31077                 if (!_new_children) {
31078                     p->error_indicator = 1;
31079                     PyErr_NoMemory();
31080                     D(p->level--);
31081                     return NULL;
31082                 }
31083                 _children = _new_children;
31084             }
31085             _children[_n++] = _res;
31086             _mark = p->mark;
31087         }
31088         p->mark = _mark;
31089         D(fprintf(stderr, "%*c%s _loop0_161[%d-%d]: %s failed!\n", p->level, ' ',
31090                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
31091     }
31092     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31093     if (!_seq) {
31094         PyMem_Free(_children);
31095         p->error_indicator = 1;
31096         PyErr_NoMemory();
31097         D(p->level--);
31098         return NULL;
31099     }
31100     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31101     PyMem_Free(_children);
31102     _PyPegen_insert_memo(p, _start_mark, _loop0_161_type, _seq);
31103     D(p->level--);
31104     return _seq;
31105 }
31106 
31107 // _loop0_163: ',' lambda_param
31108 static asdl_seq *
_loop0_163_rule(Parser * p)31109 _loop0_163_rule(Parser *p)
31110 {
31111     D(p->level++);
31112     if (p->error_indicator) {
31113         D(p->level--);
31114         return NULL;
31115     }
31116     void *_res = NULL;
31117     int _mark = p->mark;
31118     int _start_mark = p->mark;
31119     void **_children = PyMem_Malloc(sizeof(void *));
31120     if (!_children) {
31121         p->error_indicator = 1;
31122         PyErr_NoMemory();
31123         D(p->level--);
31124         return NULL;
31125     }
31126     Py_ssize_t _children_capacity = 1;
31127     Py_ssize_t _n = 0;
31128     { // ',' lambda_param
31129         if (p->error_indicator) {
31130             D(p->level--);
31131             return NULL;
31132         }
31133         D(fprintf(stderr, "%*c> _loop0_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' lambda_param"));
31134         Token * _literal;
31135         arg_ty elem;
31136         while (
31137             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31138             &&
31139             (elem = lambda_param_rule(p))  // lambda_param
31140         )
31141         {
31142             _res = elem;
31143             if (_res == NULL && PyErr_Occurred()) {
31144                 p->error_indicator = 1;
31145                 PyMem_Free(_children);
31146                 D(p->level--);
31147                 return NULL;
31148             }
31149             if (_n == _children_capacity) {
31150                 _children_capacity *= 2;
31151                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31152                 if (!_new_children) {
31153                     p->error_indicator = 1;
31154                     PyErr_NoMemory();
31155                     D(p->level--);
31156                     return NULL;
31157                 }
31158                 _children = _new_children;
31159             }
31160             _children[_n++] = _res;
31161             _mark = p->mark;
31162         }
31163         p->mark = _mark;
31164         D(fprintf(stderr, "%*c%s _loop0_163[%d-%d]: %s failed!\n", p->level, ' ',
31165                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' lambda_param"));
31166     }
31167     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31168     if (!_seq) {
31169         PyMem_Free(_children);
31170         p->error_indicator = 1;
31171         PyErr_NoMemory();
31172         D(p->level--);
31173         return NULL;
31174     }
31175     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31176     PyMem_Free(_children);
31177     _PyPegen_insert_memo(p, _start_mark, _loop0_163_type, _seq);
31178     D(p->level--);
31179     return _seq;
31180 }
31181 
31182 // _gather_162: lambda_param _loop0_163
31183 static asdl_seq *
_gather_162_rule(Parser * p)31184 _gather_162_rule(Parser *p)
31185 {
31186     D(p->level++);
31187     if (p->error_indicator) {
31188         D(p->level--);
31189         return NULL;
31190     }
31191     asdl_seq * _res = NULL;
31192     int _mark = p->mark;
31193     { // lambda_param _loop0_163
31194         if (p->error_indicator) {
31195             D(p->level--);
31196             return NULL;
31197         }
31198         D(fprintf(stderr, "%*c> _gather_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_163"));
31199         arg_ty elem;
31200         asdl_seq * seq;
31201         if (
31202             (elem = lambda_param_rule(p))  // lambda_param
31203             &&
31204             (seq = _loop0_163_rule(p))  // _loop0_163
31205         )
31206         {
31207             D(fprintf(stderr, "%*c+ _gather_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param _loop0_163"));
31208             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31209             goto done;
31210         }
31211         p->mark = _mark;
31212         D(fprintf(stderr, "%*c%s _gather_162[%d-%d]: %s failed!\n", p->level, ' ',
31213                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param _loop0_163"));
31214     }
31215     _res = NULL;
31216   done:
31217     D(p->level--);
31218     return _res;
31219 }
31220 
31221 // _loop1_164: lambda_param_with_default
31222 static asdl_seq *
_loop1_164_rule(Parser * p)31223 _loop1_164_rule(Parser *p)
31224 {
31225     D(p->level++);
31226     if (p->error_indicator) {
31227         D(p->level--);
31228         return NULL;
31229     }
31230     void *_res = NULL;
31231     int _mark = p->mark;
31232     int _start_mark = p->mark;
31233     void **_children = PyMem_Malloc(sizeof(void *));
31234     if (!_children) {
31235         p->error_indicator = 1;
31236         PyErr_NoMemory();
31237         D(p->level--);
31238         return NULL;
31239     }
31240     Py_ssize_t _children_capacity = 1;
31241     Py_ssize_t _n = 0;
31242     { // lambda_param_with_default
31243         if (p->error_indicator) {
31244             D(p->level--);
31245             return NULL;
31246         }
31247         D(fprintf(stderr, "%*c> _loop1_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
31248         NameDefaultPair* lambda_param_with_default_var;
31249         while (
31250             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
31251         )
31252         {
31253             _res = lambda_param_with_default_var;
31254             if (_n == _children_capacity) {
31255                 _children_capacity *= 2;
31256                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31257                 if (!_new_children) {
31258                     p->error_indicator = 1;
31259                     PyErr_NoMemory();
31260                     D(p->level--);
31261                     return NULL;
31262                 }
31263                 _children = _new_children;
31264             }
31265             _children[_n++] = _res;
31266             _mark = p->mark;
31267         }
31268         p->mark = _mark;
31269         D(fprintf(stderr, "%*c%s _loop1_164[%d-%d]: %s failed!\n", p->level, ' ',
31270                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
31271     }
31272     if (_n == 0 || p->error_indicator) {
31273         PyMem_Free(_children);
31274         D(p->level--);
31275         return NULL;
31276     }
31277     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31278     if (!_seq) {
31279         PyMem_Free(_children);
31280         p->error_indicator = 1;
31281         PyErr_NoMemory();
31282         D(p->level--);
31283         return NULL;
31284     }
31285     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31286     PyMem_Free(_children);
31287     _PyPegen_insert_memo(p, _start_mark, _loop1_164_type, _seq);
31288     D(p->level--);
31289     return _seq;
31290 }
31291 
31292 // _tmp_165: ')' | ',' (')' | '**')
31293 static void *
_tmp_165_rule(Parser * p)31294 _tmp_165_rule(Parser *p)
31295 {
31296     D(p->level++);
31297     if (p->error_indicator) {
31298         D(p->level--);
31299         return NULL;
31300     }
31301     void * _res = NULL;
31302     int _mark = p->mark;
31303     { // ')'
31304         if (p->error_indicator) {
31305             D(p->level--);
31306             return NULL;
31307         }
31308         D(fprintf(stderr, "%*c> _tmp_165[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
31309         Token * _literal;
31310         if (
31311             (_literal = _PyPegen_expect_token(p, 8))  // token=')'
31312         )
31313         {
31314             D(fprintf(stderr, "%*c+ _tmp_165[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
31315             _res = _literal;
31316             goto done;
31317         }
31318         p->mark = _mark;
31319         D(fprintf(stderr, "%*c%s _tmp_165[%d-%d]: %s failed!\n", p->level, ' ',
31320                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
31321     }
31322     { // ',' (')' | '**')
31323         if (p->error_indicator) {
31324             D(p->level--);
31325             return NULL;
31326         }
31327         D(fprintf(stderr, "%*c> _tmp_165[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
31328         Token * _literal;
31329         void *_tmp_201_var;
31330         if (
31331             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31332             &&
31333             (_tmp_201_var = _tmp_201_rule(p))  // ')' | '**'
31334         )
31335         {
31336             D(fprintf(stderr, "%*c+ _tmp_165[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
31337             _res = _PyPegen_dummy_name(p, _literal, _tmp_201_var);
31338             goto done;
31339         }
31340         p->mark = _mark;
31341         D(fprintf(stderr, "%*c%s _tmp_165[%d-%d]: %s failed!\n", p->level, ' ',
31342                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (')' | '**')"));
31343     }
31344     _res = NULL;
31345   done:
31346     D(p->level--);
31347     return _res;
31348 }
31349 
31350 // _tmp_166: ':' | ',' (':' | '**')
31351 static void *
_tmp_166_rule(Parser * p)31352 _tmp_166_rule(Parser *p)
31353 {
31354     D(p->level++);
31355     if (p->error_indicator) {
31356         D(p->level--);
31357         return NULL;
31358     }
31359     void * _res = NULL;
31360     int _mark = p->mark;
31361     { // ':'
31362         if (p->error_indicator) {
31363             D(p->level--);
31364             return NULL;
31365         }
31366         D(fprintf(stderr, "%*c> _tmp_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
31367         Token * _literal;
31368         if (
31369             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
31370         )
31371         {
31372             D(fprintf(stderr, "%*c+ _tmp_166[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
31373             _res = _literal;
31374             goto done;
31375         }
31376         p->mark = _mark;
31377         D(fprintf(stderr, "%*c%s _tmp_166[%d-%d]: %s failed!\n", p->level, ' ',
31378                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
31379     }
31380     { // ',' (':' | '**')
31381         if (p->error_indicator) {
31382             D(p->level--);
31383             return NULL;
31384         }
31385         D(fprintf(stderr, "%*c> _tmp_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
31386         Token * _literal;
31387         void *_tmp_202_var;
31388         if (
31389             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31390             &&
31391             (_tmp_202_var = _tmp_202_rule(p))  // ':' | '**'
31392         )
31393         {
31394             D(fprintf(stderr, "%*c+ _tmp_166[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
31395             _res = _PyPegen_dummy_name(p, _literal, _tmp_202_var);
31396             goto done;
31397         }
31398         p->mark = _mark;
31399         D(fprintf(stderr, "%*c%s _tmp_166[%d-%d]: %s failed!\n", p->level, ' ',
31400                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (':' | '**')"));
31401     }
31402     _res = NULL;
31403   done:
31404     D(p->level--);
31405     return _res;
31406 }
31407 
31408 // _tmp_167: ',' | ')' | ':'
31409 static void *
_tmp_167_rule(Parser * p)31410 _tmp_167_rule(Parser *p)
31411 {
31412     D(p->level++);
31413     if (p->error_indicator) {
31414         D(p->level--);
31415         return NULL;
31416     }
31417     void * _res = NULL;
31418     int _mark = p->mark;
31419     { // ','
31420         if (p->error_indicator) {
31421             D(p->level--);
31422             return NULL;
31423         }
31424         D(fprintf(stderr, "%*c> _tmp_167[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
31425         Token * _literal;
31426         if (
31427             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31428         )
31429         {
31430             D(fprintf(stderr, "%*c+ _tmp_167[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
31431             _res = _literal;
31432             goto done;
31433         }
31434         p->mark = _mark;
31435         D(fprintf(stderr, "%*c%s _tmp_167[%d-%d]: %s failed!\n", p->level, ' ',
31436                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
31437     }
31438     { // ')'
31439         if (p->error_indicator) {
31440             D(p->level--);
31441             return NULL;
31442         }
31443         D(fprintf(stderr, "%*c> _tmp_167[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
31444         Token * _literal;
31445         if (
31446             (_literal = _PyPegen_expect_token(p, 8))  // token=')'
31447         )
31448         {
31449             D(fprintf(stderr, "%*c+ _tmp_167[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
31450             _res = _literal;
31451             goto done;
31452         }
31453         p->mark = _mark;
31454         D(fprintf(stderr, "%*c%s _tmp_167[%d-%d]: %s failed!\n", p->level, ' ',
31455                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
31456     }
31457     { // ':'
31458         if (p->error_indicator) {
31459             D(p->level--);
31460             return NULL;
31461         }
31462         D(fprintf(stderr, "%*c> _tmp_167[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
31463         Token * _literal;
31464         if (
31465             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
31466         )
31467         {
31468             D(fprintf(stderr, "%*c+ _tmp_167[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
31469             _res = _literal;
31470             goto done;
31471         }
31472         p->mark = _mark;
31473         D(fprintf(stderr, "%*c%s _tmp_167[%d-%d]: %s failed!\n", p->level, ' ',
31474                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
31475     }
31476     _res = NULL;
31477   done:
31478     D(p->level--);
31479     return _res;
31480 }
31481 
31482 // _loop0_169: ',' (expression ['as' star_target])
31483 static asdl_seq *
_loop0_169_rule(Parser * p)31484 _loop0_169_rule(Parser *p)
31485 {
31486     D(p->level++);
31487     if (p->error_indicator) {
31488         D(p->level--);
31489         return NULL;
31490     }
31491     void *_res = NULL;
31492     int _mark = p->mark;
31493     int _start_mark = p->mark;
31494     void **_children = PyMem_Malloc(sizeof(void *));
31495     if (!_children) {
31496         p->error_indicator = 1;
31497         PyErr_NoMemory();
31498         D(p->level--);
31499         return NULL;
31500     }
31501     Py_ssize_t _children_capacity = 1;
31502     Py_ssize_t _n = 0;
31503     { // ',' (expression ['as' star_target])
31504         if (p->error_indicator) {
31505             D(p->level--);
31506             return NULL;
31507         }
31508         D(fprintf(stderr, "%*c> _loop0_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])"));
31509         Token * _literal;
31510         void *elem;
31511         while (
31512             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31513             &&
31514             (elem = _tmp_203_rule(p))  // expression ['as' star_target]
31515         )
31516         {
31517             _res = elem;
31518             if (_res == NULL && PyErr_Occurred()) {
31519                 p->error_indicator = 1;
31520                 PyMem_Free(_children);
31521                 D(p->level--);
31522                 return NULL;
31523             }
31524             if (_n == _children_capacity) {
31525                 _children_capacity *= 2;
31526                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31527                 if (!_new_children) {
31528                     p->error_indicator = 1;
31529                     PyErr_NoMemory();
31530                     D(p->level--);
31531                     return NULL;
31532                 }
31533                 _children = _new_children;
31534             }
31535             _children[_n++] = _res;
31536             _mark = p->mark;
31537         }
31538         p->mark = _mark;
31539         D(fprintf(stderr, "%*c%s _loop0_169[%d-%d]: %s failed!\n", p->level, ' ',
31540                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])"));
31541     }
31542     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31543     if (!_seq) {
31544         PyMem_Free(_children);
31545         p->error_indicator = 1;
31546         PyErr_NoMemory();
31547         D(p->level--);
31548         return NULL;
31549     }
31550     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31551     PyMem_Free(_children);
31552     _PyPegen_insert_memo(p, _start_mark, _loop0_169_type, _seq);
31553     D(p->level--);
31554     return _seq;
31555 }
31556 
31557 // _gather_168: (expression ['as' star_target]) _loop0_169
31558 static asdl_seq *
_gather_168_rule(Parser * p)31559 _gather_168_rule(Parser *p)
31560 {
31561     D(p->level++);
31562     if (p->error_indicator) {
31563         D(p->level--);
31564         return NULL;
31565     }
31566     asdl_seq * _res = NULL;
31567     int _mark = p->mark;
31568     { // (expression ['as' star_target]) _loop0_169
31569         if (p->error_indicator) {
31570             D(p->level--);
31571             return NULL;
31572         }
31573         D(fprintf(stderr, "%*c> _gather_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_169"));
31574         void *elem;
31575         asdl_seq * seq;
31576         if (
31577             (elem = _tmp_203_rule(p))  // expression ['as' star_target]
31578             &&
31579             (seq = _loop0_169_rule(p))  // _loop0_169
31580         )
31581         {
31582             D(fprintf(stderr, "%*c+ _gather_168[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_169"));
31583             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31584             goto done;
31585         }
31586         p->mark = _mark;
31587         D(fprintf(stderr, "%*c%s _gather_168[%d-%d]: %s failed!\n", p->level, ' ',
31588                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_169"));
31589     }
31590     _res = NULL;
31591   done:
31592     D(p->level--);
31593     return _res;
31594 }
31595 
31596 // _loop0_171: ',' (expressions ['as' star_target])
31597 static asdl_seq *
_loop0_171_rule(Parser * p)31598 _loop0_171_rule(Parser *p)
31599 {
31600     D(p->level++);
31601     if (p->error_indicator) {
31602         D(p->level--);
31603         return NULL;
31604     }
31605     void *_res = NULL;
31606     int _mark = p->mark;
31607     int _start_mark = p->mark;
31608     void **_children = PyMem_Malloc(sizeof(void *));
31609     if (!_children) {
31610         p->error_indicator = 1;
31611         PyErr_NoMemory();
31612         D(p->level--);
31613         return NULL;
31614     }
31615     Py_ssize_t _children_capacity = 1;
31616     Py_ssize_t _n = 0;
31617     { // ',' (expressions ['as' star_target])
31618         if (p->error_indicator) {
31619             D(p->level--);
31620             return NULL;
31621         }
31622         D(fprintf(stderr, "%*c> _loop0_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])"));
31623         Token * _literal;
31624         void *elem;
31625         while (
31626             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31627             &&
31628             (elem = _tmp_204_rule(p))  // expressions ['as' star_target]
31629         )
31630         {
31631             _res = elem;
31632             if (_res == NULL && PyErr_Occurred()) {
31633                 p->error_indicator = 1;
31634                 PyMem_Free(_children);
31635                 D(p->level--);
31636                 return NULL;
31637             }
31638             if (_n == _children_capacity) {
31639                 _children_capacity *= 2;
31640                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31641                 if (!_new_children) {
31642                     p->error_indicator = 1;
31643                     PyErr_NoMemory();
31644                     D(p->level--);
31645                     return NULL;
31646                 }
31647                 _children = _new_children;
31648             }
31649             _children[_n++] = _res;
31650             _mark = p->mark;
31651         }
31652         p->mark = _mark;
31653         D(fprintf(stderr, "%*c%s _loop0_171[%d-%d]: %s failed!\n", p->level, ' ',
31654                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])"));
31655     }
31656     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31657     if (!_seq) {
31658         PyMem_Free(_children);
31659         p->error_indicator = 1;
31660         PyErr_NoMemory();
31661         D(p->level--);
31662         return NULL;
31663     }
31664     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31665     PyMem_Free(_children);
31666     _PyPegen_insert_memo(p, _start_mark, _loop0_171_type, _seq);
31667     D(p->level--);
31668     return _seq;
31669 }
31670 
31671 // _gather_170: (expressions ['as' star_target]) _loop0_171
31672 static asdl_seq *
_gather_170_rule(Parser * p)31673 _gather_170_rule(Parser *p)
31674 {
31675     D(p->level++);
31676     if (p->error_indicator) {
31677         D(p->level--);
31678         return NULL;
31679     }
31680     asdl_seq * _res = NULL;
31681     int _mark = p->mark;
31682     { // (expressions ['as' star_target]) _loop0_171
31683         if (p->error_indicator) {
31684             D(p->level--);
31685             return NULL;
31686         }
31687         D(fprintf(stderr, "%*c> _gather_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_171"));
31688         void *elem;
31689         asdl_seq * seq;
31690         if (
31691             (elem = _tmp_204_rule(p))  // expressions ['as' star_target]
31692             &&
31693             (seq = _loop0_171_rule(p))  // _loop0_171
31694         )
31695         {
31696             D(fprintf(stderr, "%*c+ _gather_170[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_171"));
31697             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31698             goto done;
31699         }
31700         p->mark = _mark;
31701         D(fprintf(stderr, "%*c%s _gather_170[%d-%d]: %s failed!\n", p->level, ' ',
31702                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_171"));
31703     }
31704     _res = NULL;
31705   done:
31706     D(p->level--);
31707     return _res;
31708 }
31709 
31710 // _loop0_173: ',' (expression ['as' star_target])
31711 static asdl_seq *
_loop0_173_rule(Parser * p)31712 _loop0_173_rule(Parser *p)
31713 {
31714     D(p->level++);
31715     if (p->error_indicator) {
31716         D(p->level--);
31717         return NULL;
31718     }
31719     void *_res = NULL;
31720     int _mark = p->mark;
31721     int _start_mark = p->mark;
31722     void **_children = PyMem_Malloc(sizeof(void *));
31723     if (!_children) {
31724         p->error_indicator = 1;
31725         PyErr_NoMemory();
31726         D(p->level--);
31727         return NULL;
31728     }
31729     Py_ssize_t _children_capacity = 1;
31730     Py_ssize_t _n = 0;
31731     { // ',' (expression ['as' star_target])
31732         if (p->error_indicator) {
31733             D(p->level--);
31734             return NULL;
31735         }
31736         D(fprintf(stderr, "%*c> _loop0_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])"));
31737         Token * _literal;
31738         void *elem;
31739         while (
31740             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31741             &&
31742             (elem = _tmp_205_rule(p))  // expression ['as' star_target]
31743         )
31744         {
31745             _res = elem;
31746             if (_res == NULL && PyErr_Occurred()) {
31747                 p->error_indicator = 1;
31748                 PyMem_Free(_children);
31749                 D(p->level--);
31750                 return NULL;
31751             }
31752             if (_n == _children_capacity) {
31753                 _children_capacity *= 2;
31754                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31755                 if (!_new_children) {
31756                     p->error_indicator = 1;
31757                     PyErr_NoMemory();
31758                     D(p->level--);
31759                     return NULL;
31760                 }
31761                 _children = _new_children;
31762             }
31763             _children[_n++] = _res;
31764             _mark = p->mark;
31765         }
31766         p->mark = _mark;
31767         D(fprintf(stderr, "%*c%s _loop0_173[%d-%d]: %s failed!\n", p->level, ' ',
31768                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])"));
31769     }
31770     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31771     if (!_seq) {
31772         PyMem_Free(_children);
31773         p->error_indicator = 1;
31774         PyErr_NoMemory();
31775         D(p->level--);
31776         return NULL;
31777     }
31778     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31779     PyMem_Free(_children);
31780     _PyPegen_insert_memo(p, _start_mark, _loop0_173_type, _seq);
31781     D(p->level--);
31782     return _seq;
31783 }
31784 
31785 // _gather_172: (expression ['as' star_target]) _loop0_173
31786 static asdl_seq *
_gather_172_rule(Parser * p)31787 _gather_172_rule(Parser *p)
31788 {
31789     D(p->level++);
31790     if (p->error_indicator) {
31791         D(p->level--);
31792         return NULL;
31793     }
31794     asdl_seq * _res = NULL;
31795     int _mark = p->mark;
31796     { // (expression ['as' star_target]) _loop0_173
31797         if (p->error_indicator) {
31798             D(p->level--);
31799             return NULL;
31800         }
31801         D(fprintf(stderr, "%*c> _gather_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_173"));
31802         void *elem;
31803         asdl_seq * seq;
31804         if (
31805             (elem = _tmp_205_rule(p))  // expression ['as' star_target]
31806             &&
31807             (seq = _loop0_173_rule(p))  // _loop0_173
31808         )
31809         {
31810             D(fprintf(stderr, "%*c+ _gather_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_173"));
31811             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31812             goto done;
31813         }
31814         p->mark = _mark;
31815         D(fprintf(stderr, "%*c%s _gather_172[%d-%d]: %s failed!\n", p->level, ' ',
31816                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_173"));
31817     }
31818     _res = NULL;
31819   done:
31820     D(p->level--);
31821     return _res;
31822 }
31823 
31824 // _loop0_175: ',' (expressions ['as' star_target])
31825 static asdl_seq *
_loop0_175_rule(Parser * p)31826 _loop0_175_rule(Parser *p)
31827 {
31828     D(p->level++);
31829     if (p->error_indicator) {
31830         D(p->level--);
31831         return NULL;
31832     }
31833     void *_res = NULL;
31834     int _mark = p->mark;
31835     int _start_mark = p->mark;
31836     void **_children = PyMem_Malloc(sizeof(void *));
31837     if (!_children) {
31838         p->error_indicator = 1;
31839         PyErr_NoMemory();
31840         D(p->level--);
31841         return NULL;
31842     }
31843     Py_ssize_t _children_capacity = 1;
31844     Py_ssize_t _n = 0;
31845     { // ',' (expressions ['as' star_target])
31846         if (p->error_indicator) {
31847             D(p->level--);
31848             return NULL;
31849         }
31850         D(fprintf(stderr, "%*c> _loop0_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])"));
31851         Token * _literal;
31852         void *elem;
31853         while (
31854             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31855             &&
31856             (elem = _tmp_206_rule(p))  // expressions ['as' star_target]
31857         )
31858         {
31859             _res = elem;
31860             if (_res == NULL && PyErr_Occurred()) {
31861                 p->error_indicator = 1;
31862                 PyMem_Free(_children);
31863                 D(p->level--);
31864                 return NULL;
31865             }
31866             if (_n == _children_capacity) {
31867                 _children_capacity *= 2;
31868                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31869                 if (!_new_children) {
31870                     p->error_indicator = 1;
31871                     PyErr_NoMemory();
31872                     D(p->level--);
31873                     return NULL;
31874                 }
31875                 _children = _new_children;
31876             }
31877             _children[_n++] = _res;
31878             _mark = p->mark;
31879         }
31880         p->mark = _mark;
31881         D(fprintf(stderr, "%*c%s _loop0_175[%d-%d]: %s failed!\n", p->level, ' ',
31882                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])"));
31883     }
31884     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31885     if (!_seq) {
31886         PyMem_Free(_children);
31887         p->error_indicator = 1;
31888         PyErr_NoMemory();
31889         D(p->level--);
31890         return NULL;
31891     }
31892     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31893     PyMem_Free(_children);
31894     _PyPegen_insert_memo(p, _start_mark, _loop0_175_type, _seq);
31895     D(p->level--);
31896     return _seq;
31897 }
31898 
31899 // _gather_174: (expressions ['as' star_target]) _loop0_175
31900 static asdl_seq *
_gather_174_rule(Parser * p)31901 _gather_174_rule(Parser *p)
31902 {
31903     D(p->level++);
31904     if (p->error_indicator) {
31905         D(p->level--);
31906         return NULL;
31907     }
31908     asdl_seq * _res = NULL;
31909     int _mark = p->mark;
31910     { // (expressions ['as' star_target]) _loop0_175
31911         if (p->error_indicator) {
31912             D(p->level--);
31913             return NULL;
31914         }
31915         D(fprintf(stderr, "%*c> _gather_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_175"));
31916         void *elem;
31917         asdl_seq * seq;
31918         if (
31919             (elem = _tmp_206_rule(p))  // expressions ['as' star_target]
31920             &&
31921             (seq = _loop0_175_rule(p))  // _loop0_175
31922         )
31923         {
31924             D(fprintf(stderr, "%*c+ _gather_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_175"));
31925             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31926             goto done;
31927         }
31928         p->mark = _mark;
31929         D(fprintf(stderr, "%*c%s _gather_174[%d-%d]: %s failed!\n", p->level, ' ',
31930                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_175"));
31931     }
31932     _res = NULL;
31933   done:
31934     D(p->level--);
31935     return _res;
31936 }
31937 
31938 // _tmp_176: 'except' | 'finally'
31939 static void *
_tmp_176_rule(Parser * p)31940 _tmp_176_rule(Parser *p)
31941 {
31942     D(p->level++);
31943     if (p->error_indicator) {
31944         D(p->level--);
31945         return NULL;
31946     }
31947     void * _res = NULL;
31948     int _mark = p->mark;
31949     { // 'except'
31950         if (p->error_indicator) {
31951             D(p->level--);
31952             return NULL;
31953         }
31954         D(fprintf(stderr, "%*c> _tmp_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'"));
31955         Token * _keyword;
31956         if (
31957             (_keyword = _PyPegen_expect_token(p, 623))  // token='except'
31958         )
31959         {
31960             D(fprintf(stderr, "%*c+ _tmp_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'"));
31961             _res = _keyword;
31962             goto done;
31963         }
31964         p->mark = _mark;
31965         D(fprintf(stderr, "%*c%s _tmp_176[%d-%d]: %s failed!\n", p->level, ' ',
31966                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except'"));
31967     }
31968     { // 'finally'
31969         if (p->error_indicator) {
31970             D(p->level--);
31971             return NULL;
31972         }
31973         D(fprintf(stderr, "%*c> _tmp_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'"));
31974         Token * _keyword;
31975         if (
31976             (_keyword = _PyPegen_expect_token(p, 620))  // token='finally'
31977         )
31978         {
31979             D(fprintf(stderr, "%*c+ _tmp_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'"));
31980             _res = _keyword;
31981             goto done;
31982         }
31983         p->mark = _mark;
31984         D(fprintf(stderr, "%*c%s _tmp_176[%d-%d]: %s failed!\n", p->level, ' ',
31985                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally'"));
31986     }
31987     _res = NULL;
31988   done:
31989     D(p->level--);
31990     return _res;
31991 }
31992 
31993 // _tmp_177: 'as' NAME
31994 static void *
_tmp_177_rule(Parser * p)31995 _tmp_177_rule(Parser *p)
31996 {
31997     D(p->level++);
31998     if (p->error_indicator) {
31999         D(p->level--);
32000         return NULL;
32001     }
32002     void * _res = NULL;
32003     int _mark = p->mark;
32004     { // 'as' NAME
32005         if (p->error_indicator) {
32006             D(p->level--);
32007             return NULL;
32008         }
32009         D(fprintf(stderr, "%*c> _tmp_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
32010         Token * _keyword;
32011         expr_ty name_var;
32012         if (
32013             (_keyword = _PyPegen_expect_token(p, 625))  // token='as'
32014             &&
32015             (name_var = _PyPegen_name_token(p))  // NAME
32016         )
32017         {
32018             D(fprintf(stderr, "%*c+ _tmp_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
32019             _res = _PyPegen_dummy_name(p, _keyword, name_var);
32020             goto done;
32021         }
32022         p->mark = _mark;
32023         D(fprintf(stderr, "%*c%s _tmp_177[%d-%d]: %s failed!\n", p->level, ' ',
32024                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
32025     }
32026     _res = NULL;
32027   done:
32028     D(p->level--);
32029     return _res;
32030 }
32031 
32032 // _tmp_178: 'as' NAME
32033 static void *
_tmp_178_rule(Parser * p)32034 _tmp_178_rule(Parser *p)
32035 {
32036     D(p->level++);
32037     if (p->error_indicator) {
32038         D(p->level--);
32039         return NULL;
32040     }
32041     void * _res = NULL;
32042     int _mark = p->mark;
32043     { // 'as' NAME
32044         if (p->error_indicator) {
32045             D(p->level--);
32046             return NULL;
32047         }
32048         D(fprintf(stderr, "%*c> _tmp_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
32049         Token * _keyword;
32050         expr_ty name_var;
32051         if (
32052             (_keyword = _PyPegen_expect_token(p, 625))  // token='as'
32053             &&
32054             (name_var = _PyPegen_name_token(p))  // NAME
32055         )
32056         {
32057             D(fprintf(stderr, "%*c+ _tmp_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
32058             _res = _PyPegen_dummy_name(p, _keyword, name_var);
32059             goto done;
32060         }
32061         p->mark = _mark;
32062         D(fprintf(stderr, "%*c%s _tmp_178[%d-%d]: %s failed!\n", p->level, ' ',
32063                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
32064     }
32065     _res = NULL;
32066   done:
32067     D(p->level--);
32068     return _res;
32069 }
32070 
32071 // _tmp_179: 'as' NAME
32072 static void *
_tmp_179_rule(Parser * p)32073 _tmp_179_rule(Parser *p)
32074 {
32075     D(p->level++);
32076     if (p->error_indicator) {
32077         D(p->level--);
32078         return NULL;
32079     }
32080     void * _res = NULL;
32081     int _mark = p->mark;
32082     { // 'as' NAME
32083         if (p->error_indicator) {
32084             D(p->level--);
32085             return NULL;
32086         }
32087         D(fprintf(stderr, "%*c> _tmp_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
32088         Token * _keyword;
32089         expr_ty name_var;
32090         if (
32091             (_keyword = _PyPegen_expect_token(p, 625))  // token='as'
32092             &&
32093             (name_var = _PyPegen_name_token(p))  // NAME
32094         )
32095         {
32096             D(fprintf(stderr, "%*c+ _tmp_179[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
32097             _res = _PyPegen_dummy_name(p, _keyword, name_var);
32098             goto done;
32099         }
32100         p->mark = _mark;
32101         D(fprintf(stderr, "%*c%s _tmp_179[%d-%d]: %s failed!\n", p->level, ' ',
32102                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
32103     }
32104     _res = NULL;
32105   done:
32106     D(p->level--);
32107     return _res;
32108 }
32109 
32110 // _tmp_180: positional_patterns ','
32111 static void *
_tmp_180_rule(Parser * p)32112 _tmp_180_rule(Parser *p)
32113 {
32114     D(p->level++);
32115     if (p->error_indicator) {
32116         D(p->level--);
32117         return NULL;
32118     }
32119     void * _res = NULL;
32120     int _mark = p->mark;
32121     { // positional_patterns ','
32122         if (p->error_indicator) {
32123             D(p->level--);
32124             return NULL;
32125         }
32126         D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
32127         Token * _literal;
32128         asdl_pattern_seq* positional_patterns_var;
32129         if (
32130             (positional_patterns_var = positional_patterns_rule(p))  // positional_patterns
32131             &&
32132             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32133         )
32134         {
32135             D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
32136             _res = _PyPegen_dummy_name(p, positional_patterns_var, _literal);
32137             goto done;
32138         }
32139         p->mark = _mark;
32140         D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ',
32141                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "positional_patterns ','"));
32142     }
32143     _res = NULL;
32144   done:
32145     D(p->level--);
32146     return _res;
32147 }
32148 
32149 // _tmp_181: '->' expression
32150 static void *
_tmp_181_rule(Parser * p)32151 _tmp_181_rule(Parser *p)
32152 {
32153     D(p->level++);
32154     if (p->error_indicator) {
32155         D(p->level--);
32156         return NULL;
32157     }
32158     void * _res = NULL;
32159     int _mark = p->mark;
32160     { // '->' expression
32161         if (p->error_indicator) {
32162             D(p->level--);
32163             return NULL;
32164         }
32165         D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
32166         Token * _literal;
32167         expr_ty expression_var;
32168         if (
32169             (_literal = _PyPegen_expect_token(p, 51))  // token='->'
32170             &&
32171             (expression_var = expression_rule(p))  // expression
32172         )
32173         {
32174             D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
32175             _res = _PyPegen_dummy_name(p, _literal, expression_var);
32176             goto done;
32177         }
32178         p->mark = _mark;
32179         D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ',
32180                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
32181     }
32182     _res = NULL;
32183   done:
32184     D(p->level--);
32185     return _res;
32186 }
32187 
32188 // _tmp_182: '(' arguments? ')'
32189 static void *
_tmp_182_rule(Parser * p)32190 _tmp_182_rule(Parser *p)
32191 {
32192     D(p->level++);
32193     if (p->error_indicator) {
32194         D(p->level--);
32195         return NULL;
32196     }
32197     void * _res = NULL;
32198     int _mark = p->mark;
32199     { // '(' arguments? ')'
32200         if (p->error_indicator) {
32201             D(p->level--);
32202             return NULL;
32203         }
32204         D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
32205         Token * _literal;
32206         Token * _literal_1;
32207         void *_opt_var;
32208         UNUSED(_opt_var); // Silence compiler warnings
32209         if (
32210             (_literal = _PyPegen_expect_token(p, 7))  // token='('
32211             &&
32212             (_opt_var = arguments_rule(p), !p->error_indicator)  // arguments?
32213             &&
32214             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
32215         )
32216         {
32217             D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
32218             _res = _PyPegen_dummy_name(p, _literal, _opt_var, _literal_1);
32219             goto done;
32220         }
32221         p->mark = _mark;
32222         D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ',
32223                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'"));
32224     }
32225     _res = NULL;
32226   done:
32227     D(p->level--);
32228     return _res;
32229 }
32230 
32231 // _loop0_184: ',' double_starred_kvpair
32232 static asdl_seq *
_loop0_184_rule(Parser * p)32233 _loop0_184_rule(Parser *p)
32234 {
32235     D(p->level++);
32236     if (p->error_indicator) {
32237         D(p->level--);
32238         return NULL;
32239     }
32240     void *_res = NULL;
32241     int _mark = p->mark;
32242     int _start_mark = p->mark;
32243     void **_children = PyMem_Malloc(sizeof(void *));
32244     if (!_children) {
32245         p->error_indicator = 1;
32246         PyErr_NoMemory();
32247         D(p->level--);
32248         return NULL;
32249     }
32250     Py_ssize_t _children_capacity = 1;
32251     Py_ssize_t _n = 0;
32252     { // ',' double_starred_kvpair
32253         if (p->error_indicator) {
32254             D(p->level--);
32255             return NULL;
32256         }
32257         D(fprintf(stderr, "%*c> _loop0_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair"));
32258         Token * _literal;
32259         KeyValuePair* elem;
32260         while (
32261             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32262             &&
32263             (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
32264         )
32265         {
32266             _res = elem;
32267             if (_res == NULL && PyErr_Occurred()) {
32268                 p->error_indicator = 1;
32269                 PyMem_Free(_children);
32270                 D(p->level--);
32271                 return NULL;
32272             }
32273             if (_n == _children_capacity) {
32274                 _children_capacity *= 2;
32275                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
32276                 if (!_new_children) {
32277                     p->error_indicator = 1;
32278                     PyErr_NoMemory();
32279                     D(p->level--);
32280                     return NULL;
32281                 }
32282                 _children = _new_children;
32283             }
32284             _children[_n++] = _res;
32285             _mark = p->mark;
32286         }
32287         p->mark = _mark;
32288         D(fprintf(stderr, "%*c%s _loop0_184[%d-%d]: %s failed!\n", p->level, ' ',
32289                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair"));
32290     }
32291     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
32292     if (!_seq) {
32293         PyMem_Free(_children);
32294         p->error_indicator = 1;
32295         PyErr_NoMemory();
32296         D(p->level--);
32297         return NULL;
32298     }
32299     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
32300     PyMem_Free(_children);
32301     _PyPegen_insert_memo(p, _start_mark, _loop0_184_type, _seq);
32302     D(p->level--);
32303     return _seq;
32304 }
32305 
32306 // _gather_183: double_starred_kvpair _loop0_184
32307 static asdl_seq *
_gather_183_rule(Parser * p)32308 _gather_183_rule(Parser *p)
32309 {
32310     D(p->level++);
32311     if (p->error_indicator) {
32312         D(p->level--);
32313         return NULL;
32314     }
32315     asdl_seq * _res = NULL;
32316     int _mark = p->mark;
32317     { // double_starred_kvpair _loop0_184
32318         if (p->error_indicator) {
32319             D(p->level--);
32320             return NULL;
32321         }
32322         D(fprintf(stderr, "%*c> _gather_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_184"));
32323         KeyValuePair* elem;
32324         asdl_seq * seq;
32325         if (
32326             (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
32327             &&
32328             (seq = _loop0_184_rule(p))  // _loop0_184
32329         )
32330         {
32331             D(fprintf(stderr, "%*c+ _gather_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_184"));
32332             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
32333             goto done;
32334         }
32335         p->mark = _mark;
32336         D(fprintf(stderr, "%*c%s _gather_183[%d-%d]: %s failed!\n", p->level, ' ',
32337                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_184"));
32338     }
32339     _res = NULL;
32340   done:
32341     D(p->level--);
32342     return _res;
32343 }
32344 
32345 // _tmp_185: '}' | ','
32346 static void *
_tmp_185_rule(Parser * p)32347 _tmp_185_rule(Parser *p)
32348 {
32349     D(p->level++);
32350     if (p->error_indicator) {
32351         D(p->level--);
32352         return NULL;
32353     }
32354     void * _res = NULL;
32355     int _mark = p->mark;
32356     { // '}'
32357         if (p->error_indicator) {
32358             D(p->level--);
32359             return NULL;
32360         }
32361         D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
32362         Token * _literal;
32363         if (
32364             (_literal = _PyPegen_expect_token(p, 26))  // token='}'
32365         )
32366         {
32367             D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
32368             _res = _literal;
32369             goto done;
32370         }
32371         p->mark = _mark;
32372         D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ',
32373                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
32374     }
32375     { // ','
32376         if (p->error_indicator) {
32377             D(p->level--);
32378             return NULL;
32379         }
32380         D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
32381         Token * _literal;
32382         if (
32383             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32384         )
32385         {
32386             D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
32387             _res = _literal;
32388             goto done;
32389         }
32390         p->mark = _mark;
32391         D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ',
32392                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
32393     }
32394     _res = NULL;
32395   done:
32396     D(p->level--);
32397     return _res;
32398 }
32399 
32400 // _tmp_186: star_targets '='
32401 static void *
_tmp_186_rule(Parser * p)32402 _tmp_186_rule(Parser *p)
32403 {
32404     D(p->level++);
32405     if (p->error_indicator) {
32406         D(p->level--);
32407         return NULL;
32408     }
32409     void * _res = NULL;
32410     int _mark = p->mark;
32411     { // star_targets '='
32412         if (p->error_indicator) {
32413             D(p->level--);
32414             return NULL;
32415         }
32416         D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
32417         Token * _literal;
32418         expr_ty z;
32419         if (
32420             (z = star_targets_rule(p))  // star_targets
32421             &&
32422             (_literal = _PyPegen_expect_token(p, 22))  // token='='
32423         )
32424         {
32425             D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
32426             _res = z;
32427             if (_res == NULL && PyErr_Occurred()) {
32428                 p->error_indicator = 1;
32429                 D(p->level--);
32430                 return NULL;
32431             }
32432             goto done;
32433         }
32434         p->mark = _mark;
32435         D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ',
32436                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
32437     }
32438     _res = NULL;
32439   done:
32440     D(p->level--);
32441     return _res;
32442 }
32443 
32444 // _tmp_187: '.' | '...'
32445 static void *
_tmp_187_rule(Parser * p)32446 _tmp_187_rule(Parser *p)
32447 {
32448     D(p->level++);
32449     if (p->error_indicator) {
32450         D(p->level--);
32451         return NULL;
32452     }
32453     void * _res = NULL;
32454     int _mark = p->mark;
32455     { // '.'
32456         if (p->error_indicator) {
32457             D(p->level--);
32458             return NULL;
32459         }
32460         D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
32461         Token * _literal;
32462         if (
32463             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
32464         )
32465         {
32466             D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
32467             _res = _literal;
32468             goto done;
32469         }
32470         p->mark = _mark;
32471         D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ',
32472                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
32473     }
32474     { // '...'
32475         if (p->error_indicator) {
32476             D(p->level--);
32477             return NULL;
32478         }
32479         D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
32480         Token * _literal;
32481         if (
32482             (_literal = _PyPegen_expect_token(p, 52))  // token='...'
32483         )
32484         {
32485             D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
32486             _res = _literal;
32487             goto done;
32488         }
32489         p->mark = _mark;
32490         D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ',
32491                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
32492     }
32493     _res = NULL;
32494   done:
32495     D(p->level--);
32496     return _res;
32497 }
32498 
32499 // _tmp_188: '.' | '...'
32500 static void *
_tmp_188_rule(Parser * p)32501 _tmp_188_rule(Parser *p)
32502 {
32503     D(p->level++);
32504     if (p->error_indicator) {
32505         D(p->level--);
32506         return NULL;
32507     }
32508     void * _res = NULL;
32509     int _mark = p->mark;
32510     { // '.'
32511         if (p->error_indicator) {
32512             D(p->level--);
32513             return NULL;
32514         }
32515         D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
32516         Token * _literal;
32517         if (
32518             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
32519         )
32520         {
32521             D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
32522             _res = _literal;
32523             goto done;
32524         }
32525         p->mark = _mark;
32526         D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ',
32527                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
32528     }
32529     { // '...'
32530         if (p->error_indicator) {
32531             D(p->level--);
32532             return NULL;
32533         }
32534         D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
32535         Token * _literal;
32536         if (
32537             (_literal = _PyPegen_expect_token(p, 52))  // token='...'
32538         )
32539         {
32540             D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
32541             _res = _literal;
32542             goto done;
32543         }
32544         p->mark = _mark;
32545         D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ',
32546                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
32547     }
32548     _res = NULL;
32549   done:
32550     D(p->level--);
32551     return _res;
32552 }
32553 
32554 // _tmp_189: '@' named_expression NEWLINE
32555 static void *
_tmp_189_rule(Parser * p)32556 _tmp_189_rule(Parser *p)
32557 {
32558     D(p->level++);
32559     if (p->error_indicator) {
32560         D(p->level--);
32561         return NULL;
32562     }
32563     void * _res = NULL;
32564     int _mark = p->mark;
32565     { // '@' named_expression NEWLINE
32566         if (p->error_indicator) {
32567             D(p->level--);
32568             return NULL;
32569         }
32570         D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
32571         Token * _literal;
32572         expr_ty f;
32573         Token * newline_var;
32574         if (
32575             (_literal = _PyPegen_expect_token(p, 49))  // token='@'
32576             &&
32577             (f = named_expression_rule(p))  // named_expression
32578             &&
32579             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
32580         )
32581         {
32582             D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
32583             _res = f;
32584             if (_res == NULL && PyErr_Occurred()) {
32585                 p->error_indicator = 1;
32586                 D(p->level--);
32587                 return NULL;
32588             }
32589             goto done;
32590         }
32591         p->mark = _mark;
32592         D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ',
32593                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE"));
32594     }
32595     _res = NULL;
32596   done:
32597     D(p->level--);
32598     return _res;
32599 }
32600 
32601 // _tmp_190: ',' expression
32602 static void *
_tmp_190_rule(Parser * p)32603 _tmp_190_rule(Parser *p)
32604 {
32605     D(p->level++);
32606     if (p->error_indicator) {
32607         D(p->level--);
32608         return NULL;
32609     }
32610     void * _res = NULL;
32611     int _mark = p->mark;
32612     { // ',' expression
32613         if (p->error_indicator) {
32614             D(p->level--);
32615             return NULL;
32616         }
32617         D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
32618         Token * _literal;
32619         expr_ty c;
32620         if (
32621             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32622             &&
32623             (c = expression_rule(p))  // expression
32624         )
32625         {
32626             D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression"));
32627             _res = c;
32628             if (_res == NULL && PyErr_Occurred()) {
32629                 p->error_indicator = 1;
32630                 D(p->level--);
32631                 return NULL;
32632             }
32633             goto done;
32634         }
32635         p->mark = _mark;
32636         D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ',
32637                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
32638     }
32639     _res = NULL;
32640   done:
32641     D(p->level--);
32642     return _res;
32643 }
32644 
32645 // _tmp_191: ',' star_expression
32646 static void *
_tmp_191_rule(Parser * p)32647 _tmp_191_rule(Parser *p)
32648 {
32649     D(p->level++);
32650     if (p->error_indicator) {
32651         D(p->level--);
32652         return NULL;
32653     }
32654     void * _res = NULL;
32655     int _mark = p->mark;
32656     { // ',' star_expression
32657         if (p->error_indicator) {
32658             D(p->level--);
32659             return NULL;
32660         }
32661         D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
32662         Token * _literal;
32663         expr_ty c;
32664         if (
32665             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32666             &&
32667             (c = star_expression_rule(p))  // star_expression
32668         )
32669         {
32670             D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
32671             _res = c;
32672             if (_res == NULL && PyErr_Occurred()) {
32673                 p->error_indicator = 1;
32674                 D(p->level--);
32675                 return NULL;
32676             }
32677             goto done;
32678         }
32679         p->mark = _mark;
32680         D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ',
32681                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression"));
32682     }
32683     _res = NULL;
32684   done:
32685     D(p->level--);
32686     return _res;
32687 }
32688 
32689 // _tmp_192: 'or' conjunction
32690 static void *
_tmp_192_rule(Parser * p)32691 _tmp_192_rule(Parser *p)
32692 {
32693     D(p->level++);
32694     if (p->error_indicator) {
32695         D(p->level--);
32696         return NULL;
32697     }
32698     void * _res = NULL;
32699     int _mark = p->mark;
32700     { // 'or' conjunction
32701         if (p->error_indicator) {
32702             D(p->level--);
32703             return NULL;
32704         }
32705         D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
32706         Token * _keyword;
32707         expr_ty c;
32708         if (
32709             (_keyword = _PyPegen_expect_token(p, 571))  // token='or'
32710             &&
32711             (c = conjunction_rule(p))  // conjunction
32712         )
32713         {
32714             D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
32715             _res = c;
32716             if (_res == NULL && PyErr_Occurred()) {
32717                 p->error_indicator = 1;
32718                 D(p->level--);
32719                 return NULL;
32720             }
32721             goto done;
32722         }
32723         p->mark = _mark;
32724         D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ',
32725                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction"));
32726     }
32727     _res = NULL;
32728   done:
32729     D(p->level--);
32730     return _res;
32731 }
32732 
32733 // _tmp_193: 'and' inversion
32734 static void *
_tmp_193_rule(Parser * p)32735 _tmp_193_rule(Parser *p)
32736 {
32737     D(p->level++);
32738     if (p->error_indicator) {
32739         D(p->level--);
32740         return NULL;
32741     }
32742     void * _res = NULL;
32743     int _mark = p->mark;
32744     { // 'and' inversion
32745         if (p->error_indicator) {
32746             D(p->level--);
32747             return NULL;
32748         }
32749         D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
32750         Token * _keyword;
32751         expr_ty c;
32752         if (
32753             (_keyword = _PyPegen_expect_token(p, 572))  // token='and'
32754             &&
32755             (c = inversion_rule(p))  // inversion
32756         )
32757         {
32758             D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
32759             _res = c;
32760             if (_res == NULL && PyErr_Occurred()) {
32761                 p->error_indicator = 1;
32762                 D(p->level--);
32763                 return NULL;
32764             }
32765             goto done;
32766         }
32767         p->mark = _mark;
32768         D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ',
32769                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion"));
32770     }
32771     _res = NULL;
32772   done:
32773     D(p->level--);
32774     return _res;
32775 }
32776 
32777 // _tmp_194: 'if' disjunction
32778 static void *
_tmp_194_rule(Parser * p)32779 _tmp_194_rule(Parser *p)
32780 {
32781     D(p->level++);
32782     if (p->error_indicator) {
32783         D(p->level--);
32784         return NULL;
32785     }
32786     void * _res = NULL;
32787     int _mark = p->mark;
32788     { // 'if' disjunction
32789         if (p->error_indicator) {
32790             D(p->level--);
32791             return NULL;
32792         }
32793         D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
32794         Token * _keyword;
32795         expr_ty z;
32796         if (
32797             (_keyword = _PyPegen_expect_token(p, 627))  // token='if'
32798             &&
32799             (z = disjunction_rule(p))  // disjunction
32800         )
32801         {
32802             D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
32803             _res = z;
32804             if (_res == NULL && PyErr_Occurred()) {
32805                 p->error_indicator = 1;
32806                 D(p->level--);
32807                 return NULL;
32808             }
32809             goto done;
32810         }
32811         p->mark = _mark;
32812         D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ',
32813                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
32814     }
32815     _res = NULL;
32816   done:
32817     D(p->level--);
32818     return _res;
32819 }
32820 
32821 // _tmp_195: 'if' disjunction
32822 static void *
_tmp_195_rule(Parser * p)32823 _tmp_195_rule(Parser *p)
32824 {
32825     D(p->level++);
32826     if (p->error_indicator) {
32827         D(p->level--);
32828         return NULL;
32829     }
32830     void * _res = NULL;
32831     int _mark = p->mark;
32832     { // 'if' disjunction
32833         if (p->error_indicator) {
32834             D(p->level--);
32835             return NULL;
32836         }
32837         D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
32838         Token * _keyword;
32839         expr_ty z;
32840         if (
32841             (_keyword = _PyPegen_expect_token(p, 627))  // token='if'
32842             &&
32843             (z = disjunction_rule(p))  // disjunction
32844         )
32845         {
32846             D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
32847             _res = z;
32848             if (_res == NULL && PyErr_Occurred()) {
32849                 p->error_indicator = 1;
32850                 D(p->level--);
32851                 return NULL;
32852             }
32853             goto done;
32854         }
32855         p->mark = _mark;
32856         D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ',
32857                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
32858     }
32859     _res = NULL;
32860   done:
32861     D(p->level--);
32862     return _res;
32863 }
32864 
32865 // _tmp_196: starred_expression | (assignment_expression | expression !':=') !'='
32866 static void *
_tmp_196_rule(Parser * p)32867 _tmp_196_rule(Parser *p)
32868 {
32869     D(p->level++);
32870     if (p->error_indicator) {
32871         D(p->level--);
32872         return NULL;
32873     }
32874     void * _res = NULL;
32875     int _mark = p->mark;
32876     { // starred_expression
32877         if (p->error_indicator) {
32878             D(p->level--);
32879             return NULL;
32880         }
32881         D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
32882         expr_ty starred_expression_var;
32883         if (
32884             (starred_expression_var = starred_expression_rule(p))  // starred_expression
32885         )
32886         {
32887             D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
32888             _res = starred_expression_var;
32889             goto done;
32890         }
32891         p->mark = _mark;
32892         D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ',
32893                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
32894     }
32895     { // (assignment_expression | expression !':=') !'='
32896         if (p->error_indicator) {
32897             D(p->level--);
32898             return NULL;
32899         }
32900         D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
32901         void *_tmp_207_var;
32902         if (
32903             (_tmp_207_var = _tmp_207_rule(p))  // assignment_expression | expression !':='
32904             &&
32905             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
32906         )
32907         {
32908             D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
32909             _res = _tmp_207_var;
32910             goto done;
32911         }
32912         p->mark = _mark;
32913         D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ',
32914                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
32915     }
32916     _res = NULL;
32917   done:
32918     D(p->level--);
32919     return _res;
32920 }
32921 
32922 // _tmp_197: ',' star_target
32923 static void *
_tmp_197_rule(Parser * p)32924 _tmp_197_rule(Parser *p)
32925 {
32926     D(p->level++);
32927     if (p->error_indicator) {
32928         D(p->level--);
32929         return NULL;
32930     }
32931     void * _res = NULL;
32932     int _mark = p->mark;
32933     { // ',' star_target
32934         if (p->error_indicator) {
32935             D(p->level--);
32936             return NULL;
32937         }
32938         D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
32939         Token * _literal;
32940         expr_ty c;
32941         if (
32942             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32943             &&
32944             (c = star_target_rule(p))  // star_target
32945         )
32946         {
32947             D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target"));
32948             _res = c;
32949             if (_res == NULL && PyErr_Occurred()) {
32950                 p->error_indicator = 1;
32951                 D(p->level--);
32952                 return NULL;
32953             }
32954             goto done;
32955         }
32956         p->mark = _mark;
32957         D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ',
32958                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
32959     }
32960     _res = NULL;
32961   done:
32962     D(p->level--);
32963     return _res;
32964 }
32965 
32966 // _tmp_198: ',' star_target
32967 static void *
_tmp_198_rule(Parser * p)32968 _tmp_198_rule(Parser *p)
32969 {
32970     D(p->level++);
32971     if (p->error_indicator) {
32972         D(p->level--);
32973         return NULL;
32974     }
32975     void * _res = NULL;
32976     int _mark = p->mark;
32977     { // ',' star_target
32978         if (p->error_indicator) {
32979             D(p->level--);
32980             return NULL;
32981         }
32982         D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
32983         Token * _literal;
32984         expr_ty c;
32985         if (
32986             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32987             &&
32988             (c = star_target_rule(p))  // star_target
32989         )
32990         {
32991             D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target"));
32992             _res = c;
32993             if (_res == NULL && PyErr_Occurred()) {
32994                 p->error_indicator = 1;
32995                 D(p->level--);
32996                 return NULL;
32997             }
32998             goto done;
32999         }
33000         p->mark = _mark;
33001         D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ',
33002                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
33003     }
33004     _res = NULL;
33005   done:
33006     D(p->level--);
33007     return _res;
33008 }
33009 
33010 // _tmp_199: star_targets '='
33011 static void *
_tmp_199_rule(Parser * p)33012 _tmp_199_rule(Parser *p)
33013 {
33014     D(p->level++);
33015     if (p->error_indicator) {
33016         D(p->level--);
33017         return NULL;
33018     }
33019     void * _res = NULL;
33020     int _mark = p->mark;
33021     { // star_targets '='
33022         if (p->error_indicator) {
33023             D(p->level--);
33024             return NULL;
33025         }
33026         D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
33027         Token * _literal;
33028         expr_ty star_targets_var;
33029         if (
33030             (star_targets_var = star_targets_rule(p))  // star_targets
33031             &&
33032             (_literal = _PyPegen_expect_token(p, 22))  // token='='
33033         )
33034         {
33035             D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
33036             _res = _PyPegen_dummy_name(p, star_targets_var, _literal);
33037             goto done;
33038         }
33039         p->mark = _mark;
33040         D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ',
33041                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
33042     }
33043     _res = NULL;
33044   done:
33045     D(p->level--);
33046     return _res;
33047 }
33048 
33049 // _tmp_200: star_targets '='
33050 static void *
_tmp_200_rule(Parser * p)33051 _tmp_200_rule(Parser *p)
33052 {
33053     D(p->level++);
33054     if (p->error_indicator) {
33055         D(p->level--);
33056         return NULL;
33057     }
33058     void * _res = NULL;
33059     int _mark = p->mark;
33060     { // star_targets '='
33061         if (p->error_indicator) {
33062             D(p->level--);
33063             return NULL;
33064         }
33065         D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
33066         Token * _literal;
33067         expr_ty star_targets_var;
33068         if (
33069             (star_targets_var = star_targets_rule(p))  // star_targets
33070             &&
33071             (_literal = _PyPegen_expect_token(p, 22))  // token='='
33072         )
33073         {
33074             D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
33075             _res = _PyPegen_dummy_name(p, star_targets_var, _literal);
33076             goto done;
33077         }
33078         p->mark = _mark;
33079         D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ',
33080                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
33081     }
33082     _res = NULL;
33083   done:
33084     D(p->level--);
33085     return _res;
33086 }
33087 
33088 // _tmp_201: ')' | '**'
33089 static void *
_tmp_201_rule(Parser * p)33090 _tmp_201_rule(Parser *p)
33091 {
33092     D(p->level++);
33093     if (p->error_indicator) {
33094         D(p->level--);
33095         return NULL;
33096     }
33097     void * _res = NULL;
33098     int _mark = p->mark;
33099     { // ')'
33100         if (p->error_indicator) {
33101             D(p->level--);
33102             return NULL;
33103         }
33104         D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
33105         Token * _literal;
33106         if (
33107             (_literal = _PyPegen_expect_token(p, 8))  // token=')'
33108         )
33109         {
33110             D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
33111             _res = _literal;
33112             goto done;
33113         }
33114         p->mark = _mark;
33115         D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ',
33116                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
33117     }
33118     { // '**'
33119         if (p->error_indicator) {
33120             D(p->level--);
33121             return NULL;
33122         }
33123         D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
33124         Token * _literal;
33125         if (
33126             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
33127         )
33128         {
33129             D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
33130             _res = _literal;
33131             goto done;
33132         }
33133         p->mark = _mark;
33134         D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ',
33135                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
33136     }
33137     _res = NULL;
33138   done:
33139     D(p->level--);
33140     return _res;
33141 }
33142 
33143 // _tmp_202: ':' | '**'
33144 static void *
_tmp_202_rule(Parser * p)33145 _tmp_202_rule(Parser *p)
33146 {
33147     D(p->level++);
33148     if (p->error_indicator) {
33149         D(p->level--);
33150         return NULL;
33151     }
33152     void * _res = NULL;
33153     int _mark = p->mark;
33154     { // ':'
33155         if (p->error_indicator) {
33156             D(p->level--);
33157             return NULL;
33158         }
33159         D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
33160         Token * _literal;
33161         if (
33162             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
33163         )
33164         {
33165             D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
33166             _res = _literal;
33167             goto done;
33168         }
33169         p->mark = _mark;
33170         D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ',
33171                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
33172     }
33173     { // '**'
33174         if (p->error_indicator) {
33175             D(p->level--);
33176             return NULL;
33177         }
33178         D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
33179         Token * _literal;
33180         if (
33181             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
33182         )
33183         {
33184             D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
33185             _res = _literal;
33186             goto done;
33187         }
33188         p->mark = _mark;
33189         D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ',
33190                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
33191     }
33192     _res = NULL;
33193   done:
33194     D(p->level--);
33195     return _res;
33196 }
33197 
33198 // _tmp_203: expression ['as' star_target]
33199 static void *
_tmp_203_rule(Parser * p)33200 _tmp_203_rule(Parser *p)
33201 {
33202     D(p->level++);
33203     if (p->error_indicator) {
33204         D(p->level--);
33205         return NULL;
33206     }
33207     void * _res = NULL;
33208     int _mark = p->mark;
33209     { // expression ['as' star_target]
33210         if (p->error_indicator) {
33211             D(p->level--);
33212             return NULL;
33213         }
33214         D(fprintf(stderr, "%*c> _tmp_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
33215         void *_opt_var;
33216         UNUSED(_opt_var); // Silence compiler warnings
33217         expr_ty expression_var;
33218         if (
33219             (expression_var = expression_rule(p))  // expression
33220             &&
33221             (_opt_var = _tmp_208_rule(p), !p->error_indicator)  // ['as' star_target]
33222         )
33223         {
33224             D(fprintf(stderr, "%*c+ _tmp_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
33225             _res = _PyPegen_dummy_name(p, expression_var, _opt_var);
33226             goto done;
33227         }
33228         p->mark = _mark;
33229         D(fprintf(stderr, "%*c%s _tmp_203[%d-%d]: %s failed!\n", p->level, ' ',
33230                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]"));
33231     }
33232     _res = NULL;
33233   done:
33234     D(p->level--);
33235     return _res;
33236 }
33237 
33238 // _tmp_204: expressions ['as' star_target]
33239 static void *
_tmp_204_rule(Parser * p)33240 _tmp_204_rule(Parser *p)
33241 {
33242     D(p->level++);
33243     if (p->error_indicator) {
33244         D(p->level--);
33245         return NULL;
33246     }
33247     void * _res = NULL;
33248     int _mark = p->mark;
33249     { // expressions ['as' star_target]
33250         if (p->error_indicator) {
33251             D(p->level--);
33252             return NULL;
33253         }
33254         D(fprintf(stderr, "%*c> _tmp_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
33255         void *_opt_var;
33256         UNUSED(_opt_var); // Silence compiler warnings
33257         expr_ty expressions_var;
33258         if (
33259             (expressions_var = expressions_rule(p))  // expressions
33260             &&
33261             (_opt_var = _tmp_209_rule(p), !p->error_indicator)  // ['as' star_target]
33262         )
33263         {
33264             D(fprintf(stderr, "%*c+ _tmp_204[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
33265             _res = _PyPegen_dummy_name(p, expressions_var, _opt_var);
33266             goto done;
33267         }
33268         p->mark = _mark;
33269         D(fprintf(stderr, "%*c%s _tmp_204[%d-%d]: %s failed!\n", p->level, ' ',
33270                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]"));
33271     }
33272     _res = NULL;
33273   done:
33274     D(p->level--);
33275     return _res;
33276 }
33277 
33278 // _tmp_205: expression ['as' star_target]
33279 static void *
_tmp_205_rule(Parser * p)33280 _tmp_205_rule(Parser *p)
33281 {
33282     D(p->level++);
33283     if (p->error_indicator) {
33284         D(p->level--);
33285         return NULL;
33286     }
33287     void * _res = NULL;
33288     int _mark = p->mark;
33289     { // expression ['as' star_target]
33290         if (p->error_indicator) {
33291             D(p->level--);
33292             return NULL;
33293         }
33294         D(fprintf(stderr, "%*c> _tmp_205[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
33295         void *_opt_var;
33296         UNUSED(_opt_var); // Silence compiler warnings
33297         expr_ty expression_var;
33298         if (
33299             (expression_var = expression_rule(p))  // expression
33300             &&
33301             (_opt_var = _tmp_210_rule(p), !p->error_indicator)  // ['as' star_target]
33302         )
33303         {
33304             D(fprintf(stderr, "%*c+ _tmp_205[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
33305             _res = _PyPegen_dummy_name(p, expression_var, _opt_var);
33306             goto done;
33307         }
33308         p->mark = _mark;
33309         D(fprintf(stderr, "%*c%s _tmp_205[%d-%d]: %s failed!\n", p->level, ' ',
33310                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]"));
33311     }
33312     _res = NULL;
33313   done:
33314     D(p->level--);
33315     return _res;
33316 }
33317 
33318 // _tmp_206: expressions ['as' star_target]
33319 static void *
_tmp_206_rule(Parser * p)33320 _tmp_206_rule(Parser *p)
33321 {
33322     D(p->level++);
33323     if (p->error_indicator) {
33324         D(p->level--);
33325         return NULL;
33326     }
33327     void * _res = NULL;
33328     int _mark = p->mark;
33329     { // expressions ['as' star_target]
33330         if (p->error_indicator) {
33331             D(p->level--);
33332             return NULL;
33333         }
33334         D(fprintf(stderr, "%*c> _tmp_206[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
33335         void *_opt_var;
33336         UNUSED(_opt_var); // Silence compiler warnings
33337         expr_ty expressions_var;
33338         if (
33339             (expressions_var = expressions_rule(p))  // expressions
33340             &&
33341             (_opt_var = _tmp_211_rule(p), !p->error_indicator)  // ['as' star_target]
33342         )
33343         {
33344             D(fprintf(stderr, "%*c+ _tmp_206[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
33345             _res = _PyPegen_dummy_name(p, expressions_var, _opt_var);
33346             goto done;
33347         }
33348         p->mark = _mark;
33349         D(fprintf(stderr, "%*c%s _tmp_206[%d-%d]: %s failed!\n", p->level, ' ',
33350                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]"));
33351     }
33352     _res = NULL;
33353   done:
33354     D(p->level--);
33355     return _res;
33356 }
33357 
33358 // _tmp_207: assignment_expression | expression !':='
33359 static void *
_tmp_207_rule(Parser * p)33360 _tmp_207_rule(Parser *p)
33361 {
33362     D(p->level++);
33363     if (p->error_indicator) {
33364         D(p->level--);
33365         return NULL;
33366     }
33367     void * _res = NULL;
33368     int _mark = p->mark;
33369     { // assignment_expression
33370         if (p->error_indicator) {
33371             D(p->level--);
33372             return NULL;
33373         }
33374         D(fprintf(stderr, "%*c> _tmp_207[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
33375         expr_ty assignment_expression_var;
33376         if (
33377             (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
33378         )
33379         {
33380             D(fprintf(stderr, "%*c+ _tmp_207[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
33381             _res = assignment_expression_var;
33382             goto done;
33383         }
33384         p->mark = _mark;
33385         D(fprintf(stderr, "%*c%s _tmp_207[%d-%d]: %s failed!\n", p->level, ' ',
33386                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
33387     }
33388     { // expression !':='
33389         if (p->error_indicator) {
33390             D(p->level--);
33391             return NULL;
33392         }
33393         D(fprintf(stderr, "%*c> _tmp_207[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
33394         expr_ty expression_var;
33395         if (
33396             (expression_var = expression_rule(p))  // expression
33397             &&
33398             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
33399         )
33400         {
33401             D(fprintf(stderr, "%*c+ _tmp_207[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
33402             _res = expression_var;
33403             goto done;
33404         }
33405         p->mark = _mark;
33406         D(fprintf(stderr, "%*c%s _tmp_207[%d-%d]: %s failed!\n", p->level, ' ',
33407                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
33408     }
33409     _res = NULL;
33410   done:
33411     D(p->level--);
33412     return _res;
33413 }
33414 
33415 // _tmp_208: 'as' star_target
33416 static void *
_tmp_208_rule(Parser * p)33417 _tmp_208_rule(Parser *p)
33418 {
33419     D(p->level++);
33420     if (p->error_indicator) {
33421         D(p->level--);
33422         return NULL;
33423     }
33424     void * _res = NULL;
33425     int _mark = p->mark;
33426     { // 'as' star_target
33427         if (p->error_indicator) {
33428             D(p->level--);
33429             return NULL;
33430         }
33431         D(fprintf(stderr, "%*c> _tmp_208[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
33432         Token * _keyword;
33433         expr_ty star_target_var;
33434         if (
33435             (_keyword = _PyPegen_expect_token(p, 625))  // token='as'
33436             &&
33437             (star_target_var = star_target_rule(p))  // star_target
33438         )
33439         {
33440             D(fprintf(stderr, "%*c+ _tmp_208[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
33441             _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
33442             goto done;
33443         }
33444         p->mark = _mark;
33445         D(fprintf(stderr, "%*c%s _tmp_208[%d-%d]: %s failed!\n", p->level, ' ',
33446                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
33447     }
33448     _res = NULL;
33449   done:
33450     D(p->level--);
33451     return _res;
33452 }
33453 
33454 // _tmp_209: 'as' star_target
33455 static void *
_tmp_209_rule(Parser * p)33456 _tmp_209_rule(Parser *p)
33457 {
33458     D(p->level++);
33459     if (p->error_indicator) {
33460         D(p->level--);
33461         return NULL;
33462     }
33463     void * _res = NULL;
33464     int _mark = p->mark;
33465     { // 'as' star_target
33466         if (p->error_indicator) {
33467             D(p->level--);
33468             return NULL;
33469         }
33470         D(fprintf(stderr, "%*c> _tmp_209[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
33471         Token * _keyword;
33472         expr_ty star_target_var;
33473         if (
33474             (_keyword = _PyPegen_expect_token(p, 625))  // token='as'
33475             &&
33476             (star_target_var = star_target_rule(p))  // star_target
33477         )
33478         {
33479             D(fprintf(stderr, "%*c+ _tmp_209[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
33480             _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
33481             goto done;
33482         }
33483         p->mark = _mark;
33484         D(fprintf(stderr, "%*c%s _tmp_209[%d-%d]: %s failed!\n", p->level, ' ',
33485                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
33486     }
33487     _res = NULL;
33488   done:
33489     D(p->level--);
33490     return _res;
33491 }
33492 
33493 // _tmp_210: 'as' star_target
33494 static void *
_tmp_210_rule(Parser * p)33495 _tmp_210_rule(Parser *p)
33496 {
33497     D(p->level++);
33498     if (p->error_indicator) {
33499         D(p->level--);
33500         return NULL;
33501     }
33502     void * _res = NULL;
33503     int _mark = p->mark;
33504     { // 'as' star_target
33505         if (p->error_indicator) {
33506             D(p->level--);
33507             return NULL;
33508         }
33509         D(fprintf(stderr, "%*c> _tmp_210[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
33510         Token * _keyword;
33511         expr_ty star_target_var;
33512         if (
33513             (_keyword = _PyPegen_expect_token(p, 625))  // token='as'
33514             &&
33515             (star_target_var = star_target_rule(p))  // star_target
33516         )
33517         {
33518             D(fprintf(stderr, "%*c+ _tmp_210[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
33519             _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
33520             goto done;
33521         }
33522         p->mark = _mark;
33523         D(fprintf(stderr, "%*c%s _tmp_210[%d-%d]: %s failed!\n", p->level, ' ',
33524                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
33525     }
33526     _res = NULL;
33527   done:
33528     D(p->level--);
33529     return _res;
33530 }
33531 
33532 // _tmp_211: 'as' star_target
33533 static void *
_tmp_211_rule(Parser * p)33534 _tmp_211_rule(Parser *p)
33535 {
33536     D(p->level++);
33537     if (p->error_indicator) {
33538         D(p->level--);
33539         return NULL;
33540     }
33541     void * _res = NULL;
33542     int _mark = p->mark;
33543     { // 'as' star_target
33544         if (p->error_indicator) {
33545             D(p->level--);
33546             return NULL;
33547         }
33548         D(fprintf(stderr, "%*c> _tmp_211[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
33549         Token * _keyword;
33550         expr_ty star_target_var;
33551         if (
33552             (_keyword = _PyPegen_expect_token(p, 625))  // token='as'
33553             &&
33554             (star_target_var = star_target_rule(p))  // star_target
33555         )
33556         {
33557             D(fprintf(stderr, "%*c+ _tmp_211[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
33558             _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
33559             goto done;
33560         }
33561         p->mark = _mark;
33562         D(fprintf(stderr, "%*c%s _tmp_211[%d-%d]: %s failed!\n", p->level, ' ',
33563                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
33564     }
33565     _res = NULL;
33566   done:
33567     D(p->level--);
33568     return _res;
33569 }
33570 
33571 void *
_PyPegen_parse(Parser * p)33572 _PyPegen_parse(Parser *p)
33573 {
33574     // Initialize keywords
33575     p->keywords = reserved_keywords;
33576     p->n_keyword_lists = n_keyword_lists;
33577     p->soft_keywords = soft_keywords;
33578 
33579     // Run parser
33580     void *result = NULL;
33581     if (p->start_rule == Py_file_input) {
33582         result = file_rule(p);
33583     } else if (p->start_rule == Py_single_input) {
33584         result = interactive_rule(p);
33585     } else if (p->start_rule == Py_eval_input) {
33586         result = eval_rule(p);
33587     } else if (p->start_rule == Py_func_type_input) {
33588         result = func_type_rule(p);
33589     } else if (p->start_rule == Py_fstring_input) {
33590         result = fstring_rule(p);
33591     }
33592 
33593     return result;
33594 }
33595