1 // @generated by pegen.py 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", 510},
15         {"in", 518},
16         {"as", 520},
17         {"is", 530},
18         {"or", 531},
19         {NULL, -1},
20     },
21     (KeywordToken[]) {
22         {"del", 503},
23         {"try", 511},
24         {"for", 517},
25         {"def", 526},
26         {"not", 529},
27         {"and", 532},
28         {NULL, -1},
29     },
30     (KeywordToken[]) {
31         {"pass", 502},
32         {"from", 514},
33         {"elif", 515},
34         {"else", 516},
35         {"with", 519},
36         {"None", 523},
37         {"True", 524},
38         {NULL, -1},
39     },
40     (KeywordToken[]) {
41         {"raise", 501},
42         {"yield", 504},
43         {"break", 506},
44         {"while", 512},
45         {"False", 525},
46         {"class", 527},
47         {NULL, -1},
48     },
49     (KeywordToken[]) {
50         {"return", 500},
51         {"assert", 505},
52         {"global", 508},
53         {"import", 513},
54         {"except", 521},
55         {"lambda", 528},
56         {NULL, -1},
57     },
58     (KeywordToken[]) {
59         {"finally", 522},
60         {NULL, -1},
61     },
62     (KeywordToken[]) {
63         {"continue", 507},
64         {"nonlocal", 509},
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 type_expressions_type 1005
80 #define statements_type 1006
81 #define statement_type 1007
82 #define statement_newline_type 1008
83 #define simple_stmts_type 1009
84 #define simple_stmt_type 1010
85 #define compound_stmt_type 1011
86 #define assignment_type 1012
87 #define augassign_type 1013
88 #define global_stmt_type 1014
89 #define nonlocal_stmt_type 1015
90 #define yield_stmt_type 1016
91 #define assert_stmt_type 1017
92 #define del_stmt_type 1018
93 #define import_stmt_type 1019
94 #define import_name_type 1020
95 #define import_from_type 1021
96 #define import_from_targets_type 1022
97 #define import_from_as_names_type 1023
98 #define import_from_as_name_type 1024
99 #define dotted_as_names_type 1025
100 #define dotted_as_name_type 1026
101 #define dotted_name_type 1027  // Left-recursive
102 #define if_stmt_type 1028
103 #define elif_stmt_type 1029
104 #define else_block_type 1030
105 #define while_stmt_type 1031
106 #define for_stmt_type 1032
107 #define with_stmt_type 1033
108 #define with_item_type 1034
109 #define try_stmt_type 1035
110 #define except_block_type 1036
111 #define finally_block_type 1037
112 #define match_stmt_type 1038
113 #define subject_expr_type 1039
114 #define case_block_type 1040
115 #define guard_type 1041
116 #define patterns_type 1042
117 #define pattern_type 1043
118 #define as_pattern_type 1044
119 #define or_pattern_type 1045
120 #define closed_pattern_type 1046
121 #define literal_pattern_type 1047
122 #define literal_expr_type 1048
123 #define complex_number_type 1049
124 #define signed_number_type 1050
125 #define signed_real_number_type 1051
126 #define real_number_type 1052
127 #define imaginary_number_type 1053
128 #define capture_pattern_type 1054
129 #define pattern_capture_target_type 1055
130 #define wildcard_pattern_type 1056
131 #define value_pattern_type 1057
132 #define attr_type 1058  // Left-recursive
133 #define name_or_attr_type 1059  // Left-recursive
134 #define group_pattern_type 1060
135 #define sequence_pattern_type 1061
136 #define open_sequence_pattern_type 1062
137 #define maybe_sequence_pattern_type 1063
138 #define maybe_star_pattern_type 1064
139 #define star_pattern_type 1065
140 #define mapping_pattern_type 1066
141 #define items_pattern_type 1067
142 #define key_value_pattern_type 1068
143 #define double_star_pattern_type 1069
144 #define class_pattern_type 1070
145 #define positional_patterns_type 1071
146 #define keyword_patterns_type 1072
147 #define keyword_pattern_type 1073
148 #define return_stmt_type 1074
149 #define raise_stmt_type 1075
150 #define function_def_type 1076
151 #define function_def_raw_type 1077
152 #define func_type_comment_type 1078
153 #define params_type 1079
154 #define parameters_type 1080
155 #define slash_no_default_type 1081
156 #define slash_with_default_type 1082
157 #define star_etc_type 1083
158 #define kwds_type 1084
159 #define param_no_default_type 1085
160 #define param_with_default_type 1086
161 #define param_maybe_default_type 1087
162 #define param_type 1088
163 #define annotation_type 1089
164 #define default_type 1090
165 #define decorators_type 1091
166 #define class_def_type 1092
167 #define class_def_raw_type 1093
168 #define block_type 1094
169 #define star_expressions_type 1095
170 #define star_expression_type 1096
171 #define star_named_expressions_type 1097
172 #define star_named_expression_type 1098
173 #define assignment_expression_type 1099
174 #define named_expression_type 1100
175 #define annotated_rhs_type 1101
176 #define expressions_type 1102
177 #define expression_type 1103
178 #define lambdef_type 1104
179 #define lambda_params_type 1105
180 #define lambda_parameters_type 1106
181 #define lambda_slash_no_default_type 1107
182 #define lambda_slash_with_default_type 1108
183 #define lambda_star_etc_type 1109
184 #define lambda_kwds_type 1110
185 #define lambda_param_no_default_type 1111
186 #define lambda_param_with_default_type 1112
187 #define lambda_param_maybe_default_type 1113
188 #define lambda_param_type 1114
189 #define disjunction_type 1115
190 #define conjunction_type 1116
191 #define inversion_type 1117
192 #define comparison_type 1118
193 #define compare_op_bitwise_or_pair_type 1119
194 #define eq_bitwise_or_type 1120
195 #define noteq_bitwise_or_type 1121
196 #define lte_bitwise_or_type 1122
197 #define lt_bitwise_or_type 1123
198 #define gte_bitwise_or_type 1124
199 #define gt_bitwise_or_type 1125
200 #define notin_bitwise_or_type 1126
201 #define in_bitwise_or_type 1127
202 #define isnot_bitwise_or_type 1128
203 #define is_bitwise_or_type 1129
204 #define bitwise_or_type 1130  // Left-recursive
205 #define bitwise_xor_type 1131  // Left-recursive
206 #define bitwise_and_type 1132  // Left-recursive
207 #define shift_expr_type 1133  // Left-recursive
208 #define sum_type 1134  // Left-recursive
209 #define term_type 1135  // Left-recursive
210 #define factor_type 1136
211 #define power_type 1137
212 #define await_primary_type 1138
213 #define primary_type 1139  // Left-recursive
214 #define slices_type 1140
215 #define slice_type 1141
216 #define atom_type 1142
217 #define strings_type 1143
218 #define list_type 1144
219 #define listcomp_type 1145
220 #define tuple_type 1146
221 #define group_type 1147
222 #define genexp_type 1148
223 #define set_type 1149
224 #define setcomp_type 1150
225 #define dict_type 1151
226 #define dictcomp_type 1152
227 #define double_starred_kvpairs_type 1153
228 #define double_starred_kvpair_type 1154
229 #define kvpair_type 1155
230 #define for_if_clauses_type 1156
231 #define for_if_clause_type 1157
232 #define yield_expr_type 1158
233 #define arguments_type 1159
234 #define args_type 1160
235 #define kwargs_type 1161
236 #define starred_expression_type 1162
237 #define kwarg_or_starred_type 1163
238 #define kwarg_or_double_starred_type 1164
239 #define star_targets_type 1165
240 #define star_targets_list_seq_type 1166
241 #define star_targets_tuple_seq_type 1167
242 #define star_target_type 1168
243 #define target_with_star_atom_type 1169
244 #define star_atom_type 1170
245 #define single_target_type 1171
246 #define single_subscript_attribute_target_type 1172
247 #define del_targets_type 1173
248 #define del_target_type 1174
249 #define del_t_atom_type 1175
250 #define t_primary_type 1176  // Left-recursive
251 #define t_lookahead_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 _loop0_4_type 1223
298 #define _gather_3_type 1224
299 #define _loop0_6_type 1225
300 #define _gather_5_type 1226
301 #define _loop0_8_type 1227
302 #define _gather_7_type 1228
303 #define _loop0_10_type 1229
304 #define _gather_9_type 1230
305 #define _loop1_11_type 1231
306 #define _loop0_13_type 1232
307 #define _gather_12_type 1233
308 #define _tmp_14_type 1234
309 #define _tmp_15_type 1235
310 #define _tmp_16_type 1236
311 #define _tmp_17_type 1237
312 #define _tmp_18_type 1238
313 #define _tmp_19_type 1239
314 #define _tmp_20_type 1240
315 #define _tmp_21_type 1241
316 #define _loop1_22_type 1242
317 #define _tmp_23_type 1243
318 #define _tmp_24_type 1244
319 #define _loop0_26_type 1245
320 #define _gather_25_type 1246
321 #define _loop0_28_type 1247
322 #define _gather_27_type 1248
323 #define _tmp_29_type 1249
324 #define _tmp_30_type 1250
325 #define _loop0_31_type 1251
326 #define _loop1_32_type 1252
327 #define _loop0_34_type 1253
328 #define _gather_33_type 1254
329 #define _tmp_35_type 1255
330 #define _loop0_37_type 1256
331 #define _gather_36_type 1257
332 #define _tmp_38_type 1258
333 #define _loop0_40_type 1259
334 #define _gather_39_type 1260
335 #define _loop0_42_type 1261
336 #define _gather_41_type 1262
337 #define _loop0_44_type 1263
338 #define _gather_43_type 1264
339 #define _loop0_46_type 1265
340 #define _gather_45_type 1266
341 #define _tmp_47_type 1267
342 #define _loop1_48_type 1268
343 #define _tmp_49_type 1269
344 #define _loop1_50_type 1270
345 #define _loop0_52_type 1271
346 #define _gather_51_type 1272
347 #define _tmp_53_type 1273
348 #define _tmp_54_type 1274
349 #define _tmp_55_type 1275
350 #define _tmp_56_type 1276
351 #define _loop0_58_type 1277
352 #define _gather_57_type 1278
353 #define _loop0_60_type 1279
354 #define _gather_59_type 1280
355 #define _tmp_61_type 1281
356 #define _loop0_63_type 1282
357 #define _gather_62_type 1283
358 #define _loop0_65_type 1284
359 #define _gather_64_type 1285
360 #define _tmp_66_type 1286
361 #define _tmp_67_type 1287
362 #define _tmp_68_type 1288
363 #define _tmp_69_type 1289
364 #define _loop0_70_type 1290
365 #define _loop0_71_type 1291
366 #define _loop0_72_type 1292
367 #define _loop1_73_type 1293
368 #define _loop0_74_type 1294
369 #define _loop1_75_type 1295
370 #define _loop1_76_type 1296
371 #define _loop1_77_type 1297
372 #define _loop0_78_type 1298
373 #define _loop1_79_type 1299
374 #define _loop0_80_type 1300
375 #define _loop1_81_type 1301
376 #define _loop0_82_type 1302
377 #define _loop1_83_type 1303
378 #define _loop1_84_type 1304
379 #define _tmp_85_type 1305
380 #define _loop1_86_type 1306
381 #define _loop0_88_type 1307
382 #define _gather_87_type 1308
383 #define _loop1_89_type 1309
384 #define _loop0_90_type 1310
385 #define _loop0_91_type 1311
386 #define _loop0_92_type 1312
387 #define _loop1_93_type 1313
388 #define _loop0_94_type 1314
389 #define _loop1_95_type 1315
390 #define _loop1_96_type 1316
391 #define _loop1_97_type 1317
392 #define _loop0_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 _loop1_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 _tmp_110_type 1330
405 #define _tmp_111_type 1331
406 #define _tmp_112_type 1332
407 #define _tmp_113_type 1333
408 #define _loop1_114_type 1334
409 #define _tmp_115_type 1335
410 #define _tmp_116_type 1336
411 #define _tmp_117_type 1337
412 #define _loop0_119_type 1338
413 #define _gather_118_type 1339
414 #define _loop1_120_type 1340
415 #define _loop0_121_type 1341
416 #define _loop0_122_type 1342
417 #define _loop0_124_type 1343
418 #define _gather_123_type 1344
419 #define _tmp_125_type 1345
420 #define _loop0_127_type 1346
421 #define _gather_126_type 1347
422 #define _loop0_129_type 1348
423 #define _gather_128_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_134_type 1354
429 #define _loop0_136_type 1355
430 #define _gather_135_type 1356
431 #define _loop1_137_type 1357
432 #define _tmp_138_type 1358
433 #define _loop0_140_type 1359
434 #define _gather_139_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 _loop1_157_type 1377
452 #define _loop0_158_type 1378
453 #define _loop1_159_type 1379
454 #define _tmp_160_type 1380
455 #define _tmp_161_type 1381
456 #define _tmp_162_type 1382
457 #define _loop0_164_type 1383
458 #define _gather_163_type 1384
459 #define _loop0_166_type 1385
460 #define _gather_165_type 1386
461 #define _loop0_168_type 1387
462 #define _gather_167_type 1388
463 #define _loop0_170_type 1389
464 #define _gather_169_type 1390
465 #define _tmp_171_type 1391
466 #define _tmp_172_type 1392
467 #define _tmp_173_type 1393
468 #define _tmp_174_type 1394
469 #define _tmp_175_type 1395
470 #define _tmp_176_type 1396
471 #define _tmp_177_type 1397
472 #define _loop0_179_type 1398
473 #define _gather_178_type 1399
474 #define _tmp_180_type 1400
475 #define _tmp_181_type 1401
476 #define _tmp_182_type 1402
477 #define _tmp_183_type 1403
478 #define _tmp_184_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 
502 static mod_ty file_rule(Parser *p);
503 static mod_ty interactive_rule(Parser *p);
504 static mod_ty eval_rule(Parser *p);
505 static mod_ty func_type_rule(Parser *p);
506 static expr_ty fstring_rule(Parser *p);
507 static asdl_expr_seq* type_expressions_rule(Parser *p);
508 static asdl_stmt_seq* statements_rule(Parser *p);
509 static asdl_stmt_seq* statement_rule(Parser *p);
510 static asdl_stmt_seq* statement_newline_rule(Parser *p);
511 static asdl_stmt_seq* simple_stmts_rule(Parser *p);
512 static stmt_ty simple_stmt_rule(Parser *p);
513 static stmt_ty compound_stmt_rule(Parser *p);
514 static stmt_ty assignment_rule(Parser *p);
515 static AugOperator* augassign_rule(Parser *p);
516 static stmt_ty global_stmt_rule(Parser *p);
517 static stmt_ty nonlocal_stmt_rule(Parser *p);
518 static stmt_ty yield_stmt_rule(Parser *p);
519 static stmt_ty assert_stmt_rule(Parser *p);
520 static stmt_ty del_stmt_rule(Parser *p);
521 static stmt_ty import_stmt_rule(Parser *p);
522 static stmt_ty import_name_rule(Parser *p);
523 static stmt_ty import_from_rule(Parser *p);
524 static asdl_alias_seq* import_from_targets_rule(Parser *p);
525 static asdl_alias_seq* import_from_as_names_rule(Parser *p);
526 static alias_ty import_from_as_name_rule(Parser *p);
527 static asdl_alias_seq* dotted_as_names_rule(Parser *p);
528 static alias_ty dotted_as_name_rule(Parser *p);
529 static expr_ty dotted_name_rule(Parser *p);
530 static stmt_ty if_stmt_rule(Parser *p);
531 static stmt_ty elif_stmt_rule(Parser *p);
532 static asdl_stmt_seq* else_block_rule(Parser *p);
533 static stmt_ty while_stmt_rule(Parser *p);
534 static stmt_ty for_stmt_rule(Parser *p);
535 static stmt_ty with_stmt_rule(Parser *p);
536 static withitem_ty with_item_rule(Parser *p);
537 static stmt_ty try_stmt_rule(Parser *p);
538 static excepthandler_ty except_block_rule(Parser *p);
539 static asdl_stmt_seq* finally_block_rule(Parser *p);
540 static stmt_ty match_stmt_rule(Parser *p);
541 static expr_ty subject_expr_rule(Parser *p);
542 static match_case_ty case_block_rule(Parser *p);
543 static expr_ty guard_rule(Parser *p);
544 static pattern_ty patterns_rule(Parser *p);
545 static pattern_ty pattern_rule(Parser *p);
546 static pattern_ty as_pattern_rule(Parser *p);
547 static pattern_ty or_pattern_rule(Parser *p);
548 static pattern_ty closed_pattern_rule(Parser *p);
549 static pattern_ty literal_pattern_rule(Parser *p);
550 static expr_ty literal_expr_rule(Parser *p);
551 static expr_ty complex_number_rule(Parser *p);
552 static expr_ty signed_number_rule(Parser *p);
553 static expr_ty signed_real_number_rule(Parser *p);
554 static expr_ty real_number_rule(Parser *p);
555 static expr_ty imaginary_number_rule(Parser *p);
556 static pattern_ty capture_pattern_rule(Parser *p);
557 static expr_ty pattern_capture_target_rule(Parser *p);
558 static pattern_ty wildcard_pattern_rule(Parser *p);
559 static pattern_ty value_pattern_rule(Parser *p);
560 static expr_ty attr_rule(Parser *p);
561 static expr_ty name_or_attr_rule(Parser *p);
562 static pattern_ty group_pattern_rule(Parser *p);
563 static pattern_ty sequence_pattern_rule(Parser *p);
564 static asdl_seq* open_sequence_pattern_rule(Parser *p);
565 static asdl_seq* maybe_sequence_pattern_rule(Parser *p);
566 static pattern_ty maybe_star_pattern_rule(Parser *p);
567 static pattern_ty star_pattern_rule(Parser *p);
568 static pattern_ty mapping_pattern_rule(Parser *p);
569 static asdl_seq* items_pattern_rule(Parser *p);
570 static KeyPatternPair* key_value_pattern_rule(Parser *p);
571 static expr_ty double_star_pattern_rule(Parser *p);
572 static pattern_ty class_pattern_rule(Parser *p);
573 static asdl_pattern_seq* positional_patterns_rule(Parser *p);
574 static asdl_seq* keyword_patterns_rule(Parser *p);
575 static KeyPatternPair* keyword_pattern_rule(Parser *p);
576 static stmt_ty return_stmt_rule(Parser *p);
577 static stmt_ty raise_stmt_rule(Parser *p);
578 static stmt_ty function_def_rule(Parser *p);
579 static stmt_ty function_def_raw_rule(Parser *p);
580 static Token* func_type_comment_rule(Parser *p);
581 static arguments_ty params_rule(Parser *p);
582 static arguments_ty parameters_rule(Parser *p);
583 static asdl_arg_seq* slash_no_default_rule(Parser *p);
584 static SlashWithDefault* slash_with_default_rule(Parser *p);
585 static StarEtc* star_etc_rule(Parser *p);
586 static arg_ty kwds_rule(Parser *p);
587 static arg_ty param_no_default_rule(Parser *p);
588 static NameDefaultPair* param_with_default_rule(Parser *p);
589 static NameDefaultPair* param_maybe_default_rule(Parser *p);
590 static arg_ty param_rule(Parser *p);
591 static expr_ty annotation_rule(Parser *p);
592 static expr_ty default_rule(Parser *p);
593 static asdl_expr_seq* decorators_rule(Parser *p);
594 static stmt_ty class_def_rule(Parser *p);
595 static stmt_ty class_def_raw_rule(Parser *p);
596 static asdl_stmt_seq* block_rule(Parser *p);
597 static expr_ty star_expressions_rule(Parser *p);
598 static expr_ty star_expression_rule(Parser *p);
599 static asdl_expr_seq* star_named_expressions_rule(Parser *p);
600 static expr_ty star_named_expression_rule(Parser *p);
601 static expr_ty assignment_expression_rule(Parser *p);
602 static expr_ty named_expression_rule(Parser *p);
603 static expr_ty annotated_rhs_rule(Parser *p);
604 static expr_ty expressions_rule(Parser *p);
605 static expr_ty expression_rule(Parser *p);
606 static expr_ty lambdef_rule(Parser *p);
607 static arguments_ty lambda_params_rule(Parser *p);
608 static arguments_ty lambda_parameters_rule(Parser *p);
609 static asdl_arg_seq* lambda_slash_no_default_rule(Parser *p);
610 static SlashWithDefault* lambda_slash_with_default_rule(Parser *p);
611 static StarEtc* lambda_star_etc_rule(Parser *p);
612 static arg_ty lambda_kwds_rule(Parser *p);
613 static arg_ty lambda_param_no_default_rule(Parser *p);
614 static NameDefaultPair* lambda_param_with_default_rule(Parser *p);
615 static NameDefaultPair* lambda_param_maybe_default_rule(Parser *p);
616 static arg_ty lambda_param_rule(Parser *p);
617 static expr_ty disjunction_rule(Parser *p);
618 static expr_ty conjunction_rule(Parser *p);
619 static expr_ty inversion_rule(Parser *p);
620 static expr_ty comparison_rule(Parser *p);
621 static CmpopExprPair* compare_op_bitwise_or_pair_rule(Parser *p);
622 static CmpopExprPair* eq_bitwise_or_rule(Parser *p);
623 static CmpopExprPair* noteq_bitwise_or_rule(Parser *p);
624 static CmpopExprPair* lte_bitwise_or_rule(Parser *p);
625 static CmpopExprPair* lt_bitwise_or_rule(Parser *p);
626 static CmpopExprPair* gte_bitwise_or_rule(Parser *p);
627 static CmpopExprPair* gt_bitwise_or_rule(Parser *p);
628 static CmpopExprPair* notin_bitwise_or_rule(Parser *p);
629 static CmpopExprPair* in_bitwise_or_rule(Parser *p);
630 static CmpopExprPair* isnot_bitwise_or_rule(Parser *p);
631 static CmpopExprPair* is_bitwise_or_rule(Parser *p);
632 static expr_ty bitwise_or_rule(Parser *p);
633 static expr_ty bitwise_xor_rule(Parser *p);
634 static expr_ty bitwise_and_rule(Parser *p);
635 static expr_ty shift_expr_rule(Parser *p);
636 static expr_ty sum_rule(Parser *p);
637 static expr_ty term_rule(Parser *p);
638 static expr_ty factor_rule(Parser *p);
639 static expr_ty power_rule(Parser *p);
640 static expr_ty await_primary_rule(Parser *p);
641 static expr_ty primary_rule(Parser *p);
642 static expr_ty slices_rule(Parser *p);
643 static expr_ty slice_rule(Parser *p);
644 static expr_ty atom_rule(Parser *p);
645 static expr_ty strings_rule(Parser *p);
646 static expr_ty list_rule(Parser *p);
647 static expr_ty listcomp_rule(Parser *p);
648 static expr_ty tuple_rule(Parser *p);
649 static expr_ty group_rule(Parser *p);
650 static expr_ty genexp_rule(Parser *p);
651 static expr_ty set_rule(Parser *p);
652 static expr_ty setcomp_rule(Parser *p);
653 static expr_ty dict_rule(Parser *p);
654 static expr_ty dictcomp_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 yield_expr_rule(Parser *p);
661 static expr_ty arguments_rule(Parser *p);
662 static expr_ty args_rule(Parser *p);
663 static asdl_seq* kwargs_rule(Parser *p);
664 static expr_ty starred_expression_rule(Parser *p);
665 static KeywordOrStarred* kwarg_or_starred_rule(Parser *p);
666 static KeywordOrStarred* kwarg_or_double_starred_rule(Parser *p);
667 static expr_ty star_targets_rule(Parser *p);
668 static asdl_expr_seq* star_targets_list_seq_rule(Parser *p);
669 static asdl_expr_seq* star_targets_tuple_seq_rule(Parser *p);
670 static expr_ty star_target_rule(Parser *p);
671 static expr_ty target_with_star_atom_rule(Parser *p);
672 static expr_ty star_atom_rule(Parser *p);
673 static expr_ty single_target_rule(Parser *p);
674 static expr_ty single_subscript_attribute_target_rule(Parser *p);
675 static asdl_expr_seq* del_targets_rule(Parser *p);
676 static expr_ty del_target_rule(Parser *p);
677 static expr_ty del_t_atom_rule(Parser *p);
678 static expr_ty t_primary_rule(Parser *p);
679 static void *t_lookahead_rule(Parser *p);
680 static void *invalid_arguments_rule(Parser *p);
681 static void *invalid_kwarg_rule(Parser *p);
682 static expr_ty expression_without_invalid_rule(Parser *p);
683 static void *invalid_legacy_expression_rule(Parser *p);
684 static void *invalid_expression_rule(Parser *p);
685 static void *invalid_named_expression_rule(Parser *p);
686 static void *invalid_assignment_rule(Parser *p);
687 static expr_ty invalid_ann_assign_target_rule(Parser *p);
688 static void *invalid_del_stmt_rule(Parser *p);
689 static void *invalid_block_rule(Parser *p);
690 static void *invalid_comprehension_rule(Parser *p);
691 static void *invalid_dict_comprehension_rule(Parser *p);
692 static void *invalid_parameters_rule(Parser *p);
693 static void *invalid_parameters_helper_rule(Parser *p);
694 static void *invalid_lambda_parameters_rule(Parser *p);
695 static void *invalid_lambda_parameters_helper_rule(Parser *p);
696 static void *invalid_star_etc_rule(Parser *p);
697 static void *invalid_lambda_star_etc_rule(Parser *p);
698 static void *invalid_double_type_comments_rule(Parser *p);
699 static void *invalid_with_item_rule(Parser *p);
700 static void *invalid_for_target_rule(Parser *p);
701 static void *invalid_group_rule(Parser *p);
702 static void *invalid_import_from_targets_rule(Parser *p);
703 static void *invalid_with_stmt_rule(Parser *p);
704 static void *invalid_with_stmt_indent_rule(Parser *p);
705 static void *invalid_try_stmt_rule(Parser *p);
706 static void *invalid_except_stmt_rule(Parser *p);
707 static void *invalid_finally_stmt_rule(Parser *p);
708 static void *invalid_except_stmt_indent_rule(Parser *p);
709 static void *invalid_match_stmt_rule(Parser *p);
710 static void *invalid_case_block_rule(Parser *p);
711 static void *invalid_as_pattern_rule(Parser *p);
712 static void *invalid_class_pattern_rule(Parser *p);
713 static asdl_pattern_seq* invalid_class_argument_pattern_rule(Parser *p);
714 static void *invalid_if_stmt_rule(Parser *p);
715 static void *invalid_elif_stmt_rule(Parser *p);
716 static void *invalid_else_stmt_rule(Parser *p);
717 static void *invalid_while_stmt_rule(Parser *p);
718 static void *invalid_for_stmt_rule(Parser *p);
719 static void *invalid_def_raw_rule(Parser *p);
720 static void *invalid_class_def_raw_rule(Parser *p);
721 static void *invalid_double_starred_kvpairs_rule(Parser *p);
722 static void *invalid_kvpair_rule(Parser *p);
723 static asdl_seq *_loop0_1_rule(Parser *p);
724 static asdl_seq *_loop0_2_rule(Parser *p);
725 static asdl_seq *_loop0_4_rule(Parser *p);
726 static asdl_seq *_gather_3_rule(Parser *p);
727 static asdl_seq *_loop0_6_rule(Parser *p);
728 static asdl_seq *_gather_5_rule(Parser *p);
729 static asdl_seq *_loop0_8_rule(Parser *p);
730 static asdl_seq *_gather_7_rule(Parser *p);
731 static asdl_seq *_loop0_10_rule(Parser *p);
732 static asdl_seq *_gather_9_rule(Parser *p);
733 static asdl_seq *_loop1_11_rule(Parser *p);
734 static asdl_seq *_loop0_13_rule(Parser *p);
735 static asdl_seq *_gather_12_rule(Parser *p);
736 static void *_tmp_14_rule(Parser *p);
737 static void *_tmp_15_rule(Parser *p);
738 static void *_tmp_16_rule(Parser *p);
739 static void *_tmp_17_rule(Parser *p);
740 static void *_tmp_18_rule(Parser *p);
741 static void *_tmp_19_rule(Parser *p);
742 static void *_tmp_20_rule(Parser *p);
743 static void *_tmp_21_rule(Parser *p);
744 static asdl_seq *_loop1_22_rule(Parser *p);
745 static void *_tmp_23_rule(Parser *p);
746 static void *_tmp_24_rule(Parser *p);
747 static asdl_seq *_loop0_26_rule(Parser *p);
748 static asdl_seq *_gather_25_rule(Parser *p);
749 static asdl_seq *_loop0_28_rule(Parser *p);
750 static asdl_seq *_gather_27_rule(Parser *p);
751 static void *_tmp_29_rule(Parser *p);
752 static void *_tmp_30_rule(Parser *p);
753 static asdl_seq *_loop0_31_rule(Parser *p);
754 static asdl_seq *_loop1_32_rule(Parser *p);
755 static asdl_seq *_loop0_34_rule(Parser *p);
756 static asdl_seq *_gather_33_rule(Parser *p);
757 static void *_tmp_35_rule(Parser *p);
758 static asdl_seq *_loop0_37_rule(Parser *p);
759 static asdl_seq *_gather_36_rule(Parser *p);
760 static void *_tmp_38_rule(Parser *p);
761 static asdl_seq *_loop0_40_rule(Parser *p);
762 static asdl_seq *_gather_39_rule(Parser *p);
763 static asdl_seq *_loop0_42_rule(Parser *p);
764 static asdl_seq *_gather_41_rule(Parser *p);
765 static asdl_seq *_loop0_44_rule(Parser *p);
766 static asdl_seq *_gather_43_rule(Parser *p);
767 static asdl_seq *_loop0_46_rule(Parser *p);
768 static asdl_seq *_gather_45_rule(Parser *p);
769 static void *_tmp_47_rule(Parser *p);
770 static asdl_seq *_loop1_48_rule(Parser *p);
771 static void *_tmp_49_rule(Parser *p);
772 static asdl_seq *_loop1_50_rule(Parser *p);
773 static asdl_seq *_loop0_52_rule(Parser *p);
774 static asdl_seq *_gather_51_rule(Parser *p);
775 static void *_tmp_53_rule(Parser *p);
776 static void *_tmp_54_rule(Parser *p);
777 static void *_tmp_55_rule(Parser *p);
778 static void *_tmp_56_rule(Parser *p);
779 static asdl_seq *_loop0_58_rule(Parser *p);
780 static asdl_seq *_gather_57_rule(Parser *p);
781 static asdl_seq *_loop0_60_rule(Parser *p);
782 static asdl_seq *_gather_59_rule(Parser *p);
783 static void *_tmp_61_rule(Parser *p);
784 static asdl_seq *_loop0_63_rule(Parser *p);
785 static asdl_seq *_gather_62_rule(Parser *p);
786 static asdl_seq *_loop0_65_rule(Parser *p);
787 static asdl_seq *_gather_64_rule(Parser *p);
788 static void *_tmp_66_rule(Parser *p);
789 static void *_tmp_67_rule(Parser *p);
790 static void *_tmp_68_rule(Parser *p);
791 static void *_tmp_69_rule(Parser *p);
792 static asdl_seq *_loop0_70_rule(Parser *p);
793 static asdl_seq *_loop0_71_rule(Parser *p);
794 static asdl_seq *_loop0_72_rule(Parser *p);
795 static asdl_seq *_loop1_73_rule(Parser *p);
796 static asdl_seq *_loop0_74_rule(Parser *p);
797 static asdl_seq *_loop1_75_rule(Parser *p);
798 static asdl_seq *_loop1_76_rule(Parser *p);
799 static asdl_seq *_loop1_77_rule(Parser *p);
800 static asdl_seq *_loop0_78_rule(Parser *p);
801 static asdl_seq *_loop1_79_rule(Parser *p);
802 static asdl_seq *_loop0_80_rule(Parser *p);
803 static asdl_seq *_loop1_81_rule(Parser *p);
804 static asdl_seq *_loop0_82_rule(Parser *p);
805 static asdl_seq *_loop1_83_rule(Parser *p);
806 static asdl_seq *_loop1_84_rule(Parser *p);
807 static void *_tmp_85_rule(Parser *p);
808 static asdl_seq *_loop1_86_rule(Parser *p);
809 static asdl_seq *_loop0_88_rule(Parser *p);
810 static asdl_seq *_gather_87_rule(Parser *p);
811 static asdl_seq *_loop1_89_rule(Parser *p);
812 static asdl_seq *_loop0_90_rule(Parser *p);
813 static asdl_seq *_loop0_91_rule(Parser *p);
814 static asdl_seq *_loop0_92_rule(Parser *p);
815 static asdl_seq *_loop1_93_rule(Parser *p);
816 static asdl_seq *_loop0_94_rule(Parser *p);
817 static asdl_seq *_loop1_95_rule(Parser *p);
818 static asdl_seq *_loop1_96_rule(Parser *p);
819 static asdl_seq *_loop1_97_rule(Parser *p);
820 static asdl_seq *_loop0_98_rule(Parser *p);
821 static asdl_seq *_loop1_99_rule(Parser *p);
822 static asdl_seq *_loop0_100_rule(Parser *p);
823 static asdl_seq *_loop1_101_rule(Parser *p);
824 static asdl_seq *_loop0_102_rule(Parser *p);
825 static asdl_seq *_loop1_103_rule(Parser *p);
826 static asdl_seq *_loop1_104_rule(Parser *p);
827 static asdl_seq *_loop1_105_rule(Parser *p);
828 static asdl_seq *_loop1_106_rule(Parser *p);
829 static void *_tmp_107_rule(Parser *p);
830 static asdl_seq *_loop0_109_rule(Parser *p);
831 static asdl_seq *_gather_108_rule(Parser *p);
832 static void *_tmp_110_rule(Parser *p);
833 static void *_tmp_111_rule(Parser *p);
834 static void *_tmp_112_rule(Parser *p);
835 static void *_tmp_113_rule(Parser *p);
836 static asdl_seq *_loop1_114_rule(Parser *p);
837 static void *_tmp_115_rule(Parser *p);
838 static void *_tmp_116_rule(Parser *p);
839 static void *_tmp_117_rule(Parser *p);
840 static asdl_seq *_loop0_119_rule(Parser *p);
841 static asdl_seq *_gather_118_rule(Parser *p);
842 static asdl_seq *_loop1_120_rule(Parser *p);
843 static asdl_seq *_loop0_121_rule(Parser *p);
844 static asdl_seq *_loop0_122_rule(Parser *p);
845 static asdl_seq *_loop0_124_rule(Parser *p);
846 static asdl_seq *_gather_123_rule(Parser *p);
847 static void *_tmp_125_rule(Parser *p);
848 static asdl_seq *_loop0_127_rule(Parser *p);
849 static asdl_seq *_gather_126_rule(Parser *p);
850 static asdl_seq *_loop0_129_rule(Parser *p);
851 static asdl_seq *_gather_128_rule(Parser *p);
852 static asdl_seq *_loop0_131_rule(Parser *p);
853 static asdl_seq *_gather_130_rule(Parser *p);
854 static asdl_seq *_loop0_133_rule(Parser *p);
855 static asdl_seq *_gather_132_rule(Parser *p);
856 static asdl_seq *_loop0_134_rule(Parser *p);
857 static asdl_seq *_loop0_136_rule(Parser *p);
858 static asdl_seq *_gather_135_rule(Parser *p);
859 static asdl_seq *_loop1_137_rule(Parser *p);
860 static void *_tmp_138_rule(Parser *p);
861 static asdl_seq *_loop0_140_rule(Parser *p);
862 static asdl_seq *_gather_139_rule(Parser *p);
863 static void *_tmp_141_rule(Parser *p);
864 static void *_tmp_142_rule(Parser *p);
865 static void *_tmp_143_rule(Parser *p);
866 static void *_tmp_144_rule(Parser *p);
867 static void *_tmp_145_rule(Parser *p);
868 static void *_tmp_146_rule(Parser *p);
869 static void *_tmp_147_rule(Parser *p);
870 static void *_tmp_148_rule(Parser *p);
871 static asdl_seq *_loop0_149_rule(Parser *p);
872 static asdl_seq *_loop0_150_rule(Parser *p);
873 static asdl_seq *_loop0_151_rule(Parser *p);
874 static void *_tmp_152_rule(Parser *p);
875 static void *_tmp_153_rule(Parser *p);
876 static void *_tmp_154_rule(Parser *p);
877 static void *_tmp_155_rule(Parser *p);
878 static asdl_seq *_loop0_156_rule(Parser *p);
879 static asdl_seq *_loop1_157_rule(Parser *p);
880 static asdl_seq *_loop0_158_rule(Parser *p);
881 static asdl_seq *_loop1_159_rule(Parser *p);
882 static void *_tmp_160_rule(Parser *p);
883 static void *_tmp_161_rule(Parser *p);
884 static void *_tmp_162_rule(Parser *p);
885 static asdl_seq *_loop0_164_rule(Parser *p);
886 static asdl_seq *_gather_163_rule(Parser *p);
887 static asdl_seq *_loop0_166_rule(Parser *p);
888 static asdl_seq *_gather_165_rule(Parser *p);
889 static asdl_seq *_loop0_168_rule(Parser *p);
890 static asdl_seq *_gather_167_rule(Parser *p);
891 static asdl_seq *_loop0_170_rule(Parser *p);
892 static asdl_seq *_gather_169_rule(Parser *p);
893 static void *_tmp_171_rule(Parser *p);
894 static void *_tmp_172_rule(Parser *p);
895 static void *_tmp_173_rule(Parser *p);
896 static void *_tmp_174_rule(Parser *p);
897 static void *_tmp_175_rule(Parser *p);
898 static void *_tmp_176_rule(Parser *p);
899 static void *_tmp_177_rule(Parser *p);
900 static asdl_seq *_loop0_179_rule(Parser *p);
901 static asdl_seq *_gather_178_rule(Parser *p);
902 static void *_tmp_180_rule(Parser *p);
903 static void *_tmp_181_rule(Parser *p);
904 static void *_tmp_182_rule(Parser *p);
905 static void *_tmp_183_rule(Parser *p);
906 static void *_tmp_184_rule(Parser *p);
907 static void *_tmp_185_rule(Parser *p);
908 static void *_tmp_186_rule(Parser *p);
909 static void *_tmp_187_rule(Parser *p);
910 static void *_tmp_188_rule(Parser *p);
911 static void *_tmp_189_rule(Parser *p);
912 static void *_tmp_190_rule(Parser *p);
913 static void *_tmp_191_rule(Parser *p);
914 static void *_tmp_192_rule(Parser *p);
915 static void *_tmp_193_rule(Parser *p);
916 static void *_tmp_194_rule(Parser *p);
917 static void *_tmp_195_rule(Parser *p);
918 static void *_tmp_196_rule(Parser *p);
919 static void *_tmp_197_rule(Parser *p);
920 static void *_tmp_198_rule(Parser *p);
921 static void *_tmp_199_rule(Parser *p);
922 static void *_tmp_200_rule(Parser *p);
923 static void *_tmp_201_rule(Parser *p);
924 static void *_tmp_202_rule(Parser *p);
925 static void *_tmp_203_rule(Parser *p);
926 static void *_tmp_204_rule(Parser *p);
927 static void *_tmp_205_rule(Parser *p);
928 static void *_tmp_206_rule(Parser *p);
929 
930 
931 // file: statements? $
932 static mod_ty
file_rule(Parser * p)933 file_rule(Parser *p)
934 {
935     D(p->level++);
936     if (p->error_indicator) {
937         D(p->level--);
938         return NULL;
939     }
940     mod_ty _res = NULL;
941     int _mark = p->mark;
942     { // statements? $
943         if (p->error_indicator) {
944             D(p->level--);
945             return NULL;
946         }
947         D(fprintf(stderr, "%*c> file[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statements? $"));
948         void *a;
949         Token * endmarker_var;
950         if (
951             (a = statements_rule(p), !p->error_indicator)  // statements?
952             &&
953             (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
954         )
955         {
956             D(fprintf(stderr, "%*c+ file[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statements? $"));
957             _res = _PyPegen_make_module ( p , a );
958             if (_res == NULL && PyErr_Occurred()) {
959                 p->error_indicator = 1;
960                 D(p->level--);
961                 return NULL;
962             }
963             goto done;
964         }
965         p->mark = _mark;
966         D(fprintf(stderr, "%*c%s file[%d-%d]: %s failed!\n", p->level, ' ',
967                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statements? $"));
968     }
969     _res = NULL;
970   done:
971     D(p->level--);
972     return _res;
973 }
974 
975 // interactive: statement_newline
976 static mod_ty
interactive_rule(Parser * p)977 interactive_rule(Parser *p)
978 {
979     D(p->level++);
980     if (p->error_indicator) {
981         D(p->level--);
982         return NULL;
983     }
984     mod_ty _res = NULL;
985     int _mark = p->mark;
986     { // statement_newline
987         if (p->error_indicator) {
988             D(p->level--);
989             return NULL;
990         }
991         D(fprintf(stderr, "%*c> interactive[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement_newline"));
992         asdl_stmt_seq* a;
993         if (
994             (a = statement_newline_rule(p))  // statement_newline
995         )
996         {
997             D(fprintf(stderr, "%*c+ interactive[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement_newline"));
998             _res = _PyAST_Interactive ( a , p -> arena );
999             if (_res == NULL && PyErr_Occurred()) {
1000                 p->error_indicator = 1;
1001                 D(p->level--);
1002                 return NULL;
1003             }
1004             goto done;
1005         }
1006         p->mark = _mark;
1007         D(fprintf(stderr, "%*c%s interactive[%d-%d]: %s failed!\n", p->level, ' ',
1008                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement_newline"));
1009     }
1010     _res = NULL;
1011   done:
1012     D(p->level--);
1013     return _res;
1014 }
1015 
1016 // eval: expressions NEWLINE* $
1017 static mod_ty
eval_rule(Parser * p)1018 eval_rule(Parser *p)
1019 {
1020     D(p->level++);
1021     if (p->error_indicator) {
1022         D(p->level--);
1023         return NULL;
1024     }
1025     mod_ty _res = NULL;
1026     int _mark = p->mark;
1027     { // expressions NEWLINE* $
1028         if (p->error_indicator) {
1029             D(p->level--);
1030             return NULL;
1031         }
1032         D(fprintf(stderr, "%*c> eval[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1033         asdl_seq * _loop0_1_var;
1034         expr_ty a;
1035         Token * endmarker_var;
1036         if (
1037             (a = expressions_rule(p))  // expressions
1038             &&
1039             (_loop0_1_var = _loop0_1_rule(p))  // NEWLINE*
1040             &&
1041             (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1042         )
1043         {
1044             D(fprintf(stderr, "%*c+ eval[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions NEWLINE* $"));
1045             _res = _PyAST_Expression ( a , p -> arena );
1046             if (_res == NULL && PyErr_Occurred()) {
1047                 p->error_indicator = 1;
1048                 D(p->level--);
1049                 return NULL;
1050             }
1051             goto done;
1052         }
1053         p->mark = _mark;
1054         D(fprintf(stderr, "%*c%s eval[%d-%d]: %s failed!\n", p->level, ' ',
1055                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions NEWLINE* $"));
1056     }
1057     _res = NULL;
1058   done:
1059     D(p->level--);
1060     return _res;
1061 }
1062 
1063 // func_type: '(' type_expressions? ')' '->' expression NEWLINE* $
1064 static mod_ty
func_type_rule(Parser * p)1065 func_type_rule(Parser *p)
1066 {
1067     D(p->level++);
1068     if (p->error_indicator) {
1069         D(p->level--);
1070         return NULL;
1071     }
1072     mod_ty _res = NULL;
1073     int _mark = p->mark;
1074     { // '(' type_expressions? ')' '->' expression NEWLINE* $
1075         if (p->error_indicator) {
1076             D(p->level--);
1077             return NULL;
1078         }
1079         D(fprintf(stderr, "%*c> func_type[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1080         Token * _literal;
1081         Token * _literal_1;
1082         Token * _literal_2;
1083         asdl_seq * _loop0_2_var;
1084         void *a;
1085         expr_ty b;
1086         Token * endmarker_var;
1087         if (
1088             (_literal = _PyPegen_expect_token(p, 7))  // token='('
1089             &&
1090             (a = type_expressions_rule(p), !p->error_indicator)  // type_expressions?
1091             &&
1092             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
1093             &&
1094             (_literal_2 = _PyPegen_expect_token(p, 51))  // token='->'
1095             &&
1096             (b = expression_rule(p))  // expression
1097             &&
1098             (_loop0_2_var = _loop0_2_rule(p))  // NEWLINE*
1099             &&
1100             (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1101         )
1102         {
1103             D(fprintf(stderr, "%*c+ func_type[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1104             _res = _PyAST_FunctionType ( a , b , p -> arena );
1105             if (_res == NULL && PyErr_Occurred()) {
1106                 p->error_indicator = 1;
1107                 D(p->level--);
1108                 return NULL;
1109             }
1110             goto done;
1111         }
1112         p->mark = _mark;
1113         D(fprintf(stderr, "%*c%s func_type[%d-%d]: %s failed!\n", p->level, ' ',
1114                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' type_expressions? ')' '->' expression NEWLINE* $"));
1115     }
1116     _res = NULL;
1117   done:
1118     D(p->level--);
1119     return _res;
1120 }
1121 
1122 // fstring: star_expressions
1123 static expr_ty
fstring_rule(Parser * p)1124 fstring_rule(Parser *p)
1125 {
1126     D(p->level++);
1127     if (p->error_indicator) {
1128         D(p->level--);
1129         return NULL;
1130     }
1131     expr_ty _res = NULL;
1132     int _mark = p->mark;
1133     { // star_expressions
1134         if (p->error_indicator) {
1135             D(p->level--);
1136             return NULL;
1137         }
1138         D(fprintf(stderr, "%*c> fstring[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1139         expr_ty star_expressions_var;
1140         if (
1141             (star_expressions_var = star_expressions_rule(p))  // star_expressions
1142         )
1143         {
1144             D(fprintf(stderr, "%*c+ fstring[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1145             _res = star_expressions_var;
1146             goto done;
1147         }
1148         p->mark = _mark;
1149         D(fprintf(stderr, "%*c%s fstring[%d-%d]: %s failed!\n", p->level, ' ',
1150                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
1151     }
1152     _res = NULL;
1153   done:
1154     D(p->level--);
1155     return _res;
1156 }
1157 
1158 // type_expressions:
1159 //     | ','.expression+ ',' '*' expression ',' '**' expression
1160 //     | ','.expression+ ',' '*' expression
1161 //     | ','.expression+ ',' '**' expression
1162 //     | '*' expression ',' '**' expression
1163 //     | '*' expression
1164 //     | '**' expression
1165 //     | ','.expression+
1166 static asdl_expr_seq*
type_expressions_rule(Parser * p)1167 type_expressions_rule(Parser *p)
1168 {
1169     D(p->level++);
1170     if (p->error_indicator) {
1171         D(p->level--);
1172         return NULL;
1173     }
1174     asdl_expr_seq* _res = NULL;
1175     int _mark = p->mark;
1176     { // ','.expression+ ',' '*' expression ',' '**' expression
1177         if (p->error_indicator) {
1178             D(p->level--);
1179             return NULL;
1180         }
1181         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
1182         Token * _literal;
1183         Token * _literal_1;
1184         Token * _literal_2;
1185         Token * _literal_3;
1186         asdl_seq * a;
1187         expr_ty b;
1188         expr_ty c;
1189         if (
1190             (a = _gather_3_rule(p))  // ','.expression+
1191             &&
1192             (_literal = _PyPegen_expect_token(p, 12))  // token=','
1193             &&
1194             (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
1195             &&
1196             (b = expression_rule(p))  // expression
1197             &&
1198             (_literal_2 = _PyPegen_expect_token(p, 12))  // token=','
1199             &&
1200             (_literal_3 = _PyPegen_expect_token(p, 35))  // token='**'
1201             &&
1202             (c = expression_rule(p))  // expression
1203         )
1204         {
1205             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
1206             _res = ( asdl_expr_seq * ) _PyPegen_seq_append_to_end ( p , CHECK ( asdl_seq * , _PyPegen_seq_append_to_end ( p , a , b ) ) , c );
1207             if (_res == NULL && PyErr_Occurred()) {
1208                 p->error_indicator = 1;
1209                 D(p->level--);
1210                 return NULL;
1211             }
1212             goto done;
1213         }
1214         p->mark = _mark;
1215         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1216                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression ',' '**' expression"));
1217     }
1218     { // ','.expression+ ',' '*' expression
1219         if (p->error_indicator) {
1220             D(p->level--);
1221             return NULL;
1222         }
1223         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
1224         Token * _literal;
1225         Token * _literal_1;
1226         asdl_seq * a;
1227         expr_ty b;
1228         if (
1229             (a = _gather_5_rule(p))  // ','.expression+
1230             &&
1231             (_literal = _PyPegen_expect_token(p, 12))  // token=','
1232             &&
1233             (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
1234             &&
1235             (b = expression_rule(p))  // expression
1236         )
1237         {
1238             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '*' expression"));
1239             _res = ( asdl_expr_seq * ) _PyPegen_seq_append_to_end ( p , a , b );
1240             if (_res == NULL && PyErr_Occurred()) {
1241                 p->error_indicator = 1;
1242                 D(p->level--);
1243                 return NULL;
1244             }
1245             goto done;
1246         }
1247         p->mark = _mark;
1248         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1249                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '*' expression"));
1250     }
1251     { // ','.expression+ ',' '**' expression
1252         if (p->error_indicator) {
1253             D(p->level--);
1254             return NULL;
1255         }
1256         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
1257         Token * _literal;
1258         Token * _literal_1;
1259         asdl_seq * a;
1260         expr_ty b;
1261         if (
1262             (a = _gather_7_rule(p))  // ','.expression+
1263             &&
1264             (_literal = _PyPegen_expect_token(p, 12))  // token=','
1265             &&
1266             (_literal_1 = _PyPegen_expect_token(p, 35))  // token='**'
1267             &&
1268             (b = expression_rule(p))  // expression
1269         )
1270         {
1271             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+ ',' '**' expression"));
1272             _res = ( asdl_expr_seq * ) _PyPegen_seq_append_to_end ( p , a , b );
1273             if (_res == NULL && PyErr_Occurred()) {
1274                 p->error_indicator = 1;
1275                 D(p->level--);
1276                 return NULL;
1277             }
1278             goto done;
1279         }
1280         p->mark = _mark;
1281         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1282                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+ ',' '**' expression"));
1283     }
1284     { // '*' expression ',' '**' expression
1285         if (p->error_indicator) {
1286             D(p->level--);
1287             return NULL;
1288         }
1289         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
1290         Token * _literal;
1291         Token * _literal_1;
1292         Token * _literal_2;
1293         expr_ty a;
1294         expr_ty b;
1295         if (
1296             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
1297             &&
1298             (a = expression_rule(p))  // expression
1299             &&
1300             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
1301             &&
1302             (_literal_2 = _PyPegen_expect_token(p, 35))  // token='**'
1303             &&
1304             (b = expression_rule(p))  // expression
1305         )
1306         {
1307             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression ',' '**' expression"));
1308             _res = ( asdl_expr_seq * ) _PyPegen_seq_append_to_end ( p , CHECK ( asdl_seq * , _PyPegen_singleton_seq ( p , a ) ) , b );
1309             if (_res == NULL && PyErr_Occurred()) {
1310                 p->error_indicator = 1;
1311                 D(p->level--);
1312                 return NULL;
1313             }
1314             goto done;
1315         }
1316         p->mark = _mark;
1317         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1318                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression ',' '**' expression"));
1319     }
1320     { // '*' expression
1321         if (p->error_indicator) {
1322             D(p->level--);
1323             return NULL;
1324         }
1325         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
1326         Token * _literal;
1327         expr_ty a;
1328         if (
1329             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
1330             &&
1331             (a = expression_rule(p))  // expression
1332         )
1333         {
1334             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
1335             _res = ( asdl_expr_seq * ) _PyPegen_singleton_seq ( p , a );
1336             if (_res == NULL && PyErr_Occurred()) {
1337                 p->error_indicator = 1;
1338                 D(p->level--);
1339                 return NULL;
1340             }
1341             goto done;
1342         }
1343         p->mark = _mark;
1344         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1345                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
1346     }
1347     { // '**' expression
1348         if (p->error_indicator) {
1349             D(p->level--);
1350             return NULL;
1351         }
1352         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
1353         Token * _literal;
1354         expr_ty a;
1355         if (
1356             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
1357             &&
1358             (a = expression_rule(p))  // expression
1359         )
1360         {
1361             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
1362             _res = ( asdl_expr_seq * ) _PyPegen_singleton_seq ( p , a );
1363             if (_res == NULL && PyErr_Occurred()) {
1364                 p->error_indicator = 1;
1365                 D(p->level--);
1366                 return NULL;
1367             }
1368             goto done;
1369         }
1370         p->mark = _mark;
1371         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1372                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
1373     }
1374     { // ','.expression+
1375         if (p->error_indicator) {
1376             D(p->level--);
1377             return NULL;
1378         }
1379         D(fprintf(stderr, "%*c> type_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.expression+"));
1380         asdl_expr_seq* a;
1381         if (
1382             (a = (asdl_expr_seq*)_gather_9_rule(p))  // ','.expression+
1383         )
1384         {
1385             D(fprintf(stderr, "%*c+ type_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.expression+"));
1386             _res = a;
1387             if (_res == NULL && PyErr_Occurred()) {
1388                 p->error_indicator = 1;
1389                 D(p->level--);
1390                 return NULL;
1391             }
1392             goto done;
1393         }
1394         p->mark = _mark;
1395         D(fprintf(stderr, "%*c%s type_expressions[%d-%d]: %s failed!\n", p->level, ' ',
1396                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.expression+"));
1397     }
1398     _res = NULL;
1399   done:
1400     D(p->level--);
1401     return _res;
1402 }
1403 
1404 // statements: statement+
1405 static asdl_stmt_seq*
statements_rule(Parser * p)1406 statements_rule(Parser *p)
1407 {
1408     D(p->level++);
1409     if (p->error_indicator) {
1410         D(p->level--);
1411         return NULL;
1412     }
1413     asdl_stmt_seq* _res = NULL;
1414     int _mark = p->mark;
1415     { // statement+
1416         if (p->error_indicator) {
1417             D(p->level--);
1418             return NULL;
1419         }
1420         D(fprintf(stderr, "%*c> statements[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement+"));
1421         asdl_seq * a;
1422         if (
1423             (a = _loop1_11_rule(p))  // statement+
1424         )
1425         {
1426             D(fprintf(stderr, "%*c+ statements[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "statement+"));
1427             _res = ( asdl_stmt_seq * ) _PyPegen_seq_flatten ( p , a );
1428             if (_res == NULL && PyErr_Occurred()) {
1429                 p->error_indicator = 1;
1430                 D(p->level--);
1431                 return NULL;
1432             }
1433             goto done;
1434         }
1435         p->mark = _mark;
1436         D(fprintf(stderr, "%*c%s statements[%d-%d]: %s failed!\n", p->level, ' ',
1437                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement+"));
1438     }
1439     _res = NULL;
1440   done:
1441     D(p->level--);
1442     return _res;
1443 }
1444 
1445 // statement: compound_stmt | simple_stmts
1446 static asdl_stmt_seq*
statement_rule(Parser * p)1447 statement_rule(Parser *p)
1448 {
1449     D(p->level++);
1450     if (p->error_indicator) {
1451         D(p->level--);
1452         return NULL;
1453     }
1454     asdl_stmt_seq* _res = NULL;
1455     int _mark = p->mark;
1456     { // compound_stmt
1457         if (p->error_indicator) {
1458             D(p->level--);
1459             return NULL;
1460         }
1461         D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1462         stmt_ty a;
1463         if (
1464             (a = compound_stmt_rule(p))  // compound_stmt
1465         )
1466         {
1467             D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt"));
1468             _res = ( asdl_stmt_seq * ) _PyPegen_singleton_seq ( p , a );
1469             if (_res == NULL && PyErr_Occurred()) {
1470                 p->error_indicator = 1;
1471                 D(p->level--);
1472                 return NULL;
1473             }
1474             goto done;
1475         }
1476         p->mark = _mark;
1477         D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1478                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt"));
1479     }
1480     { // simple_stmts
1481         if (p->error_indicator) {
1482             D(p->level--);
1483             return NULL;
1484         }
1485         D(fprintf(stderr, "%*c> statement[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1486         asdl_stmt_seq* a;
1487         if (
1488             (a = (asdl_stmt_seq*)simple_stmts_rule(p))  // simple_stmts
1489         )
1490         {
1491             D(fprintf(stderr, "%*c+ statement[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1492             _res = a;
1493             if (_res == NULL && PyErr_Occurred()) {
1494                 p->error_indicator = 1;
1495                 D(p->level--);
1496                 return NULL;
1497             }
1498             goto done;
1499         }
1500         p->mark = _mark;
1501         D(fprintf(stderr, "%*c%s statement[%d-%d]: %s failed!\n", p->level, ' ',
1502                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1503     }
1504     _res = NULL;
1505   done:
1506     D(p->level--);
1507     return _res;
1508 }
1509 
1510 // statement_newline: compound_stmt NEWLINE | simple_stmts | NEWLINE | $
1511 static asdl_stmt_seq*
statement_newline_rule(Parser * p)1512 statement_newline_rule(Parser *p)
1513 {
1514     D(p->level++);
1515     if (p->error_indicator) {
1516         D(p->level--);
1517         return NULL;
1518     }
1519     asdl_stmt_seq* _res = NULL;
1520     int _mark = p->mark;
1521     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1522         p->error_indicator = 1;
1523         D(p->level--);
1524         return NULL;
1525     }
1526     int _start_lineno = p->tokens[_mark]->lineno;
1527     UNUSED(_start_lineno); // Only used by EXTRA macro
1528     int _start_col_offset = p->tokens[_mark]->col_offset;
1529     UNUSED(_start_col_offset); // Only used by EXTRA macro
1530     { // compound_stmt NEWLINE
1531         if (p->error_indicator) {
1532             D(p->level--);
1533             return NULL;
1534         }
1535         D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compound_stmt NEWLINE"));
1536         stmt_ty a;
1537         Token * newline_var;
1538         if (
1539             (a = compound_stmt_rule(p))  // compound_stmt
1540             &&
1541             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1542         )
1543         {
1544             D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "compound_stmt NEWLINE"));
1545             _res = ( asdl_stmt_seq * ) _PyPegen_singleton_seq ( p , a );
1546             if (_res == NULL && PyErr_Occurred()) {
1547                 p->error_indicator = 1;
1548                 D(p->level--);
1549                 return NULL;
1550             }
1551             goto done;
1552         }
1553         p->mark = _mark;
1554         D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1555                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compound_stmt NEWLINE"));
1556     }
1557     { // simple_stmts
1558         if (p->error_indicator) {
1559             D(p->level--);
1560             return NULL;
1561         }
1562         D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1563         asdl_stmt_seq* simple_stmts_var;
1564         if (
1565             (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
1566         )
1567         {
1568             D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
1569             _res = simple_stmts_var;
1570             goto done;
1571         }
1572         p->mark = _mark;
1573         D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1574                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
1575     }
1576     { // NEWLINE
1577         if (p->error_indicator) {
1578             D(p->level--);
1579             return NULL;
1580         }
1581         D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
1582         Token * newline_var;
1583         if (
1584             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1585         )
1586         {
1587             D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
1588             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1589             if (_token == NULL) {
1590                 D(p->level--);
1591                 return NULL;
1592             }
1593             int _end_lineno = _token->end_lineno;
1594             UNUSED(_end_lineno); // Only used by EXTRA macro
1595             int _end_col_offset = _token->end_col_offset;
1596             UNUSED(_end_col_offset); // Only used by EXTRA macro
1597             _res = ( asdl_stmt_seq * ) _PyPegen_singleton_seq ( p , CHECK ( stmt_ty , _PyAST_Pass ( EXTRA ) ) );
1598             if (_res == NULL && PyErr_Occurred()) {
1599                 p->error_indicator = 1;
1600                 D(p->level--);
1601                 return NULL;
1602             }
1603             goto done;
1604         }
1605         p->mark = _mark;
1606         D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1607                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
1608     }
1609     { // $
1610         if (p->error_indicator) {
1611             D(p->level--);
1612             return NULL;
1613         }
1614         D(fprintf(stderr, "%*c> statement_newline[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "$"));
1615         Token * endmarker_var;
1616         if (
1617             (endmarker_var = _PyPegen_expect_token(p, ENDMARKER))  // token='ENDMARKER'
1618         )
1619         {
1620             D(fprintf(stderr, "%*c+ statement_newline[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "$"));
1621             _res = _PyPegen_interactive_exit ( p );
1622             if (_res == NULL && PyErr_Occurred()) {
1623                 p->error_indicator = 1;
1624                 D(p->level--);
1625                 return NULL;
1626             }
1627             goto done;
1628         }
1629         p->mark = _mark;
1630         D(fprintf(stderr, "%*c%s statement_newline[%d-%d]: %s failed!\n", p->level, ' ',
1631                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "$"));
1632     }
1633     _res = NULL;
1634   done:
1635     D(p->level--);
1636     return _res;
1637 }
1638 
1639 // simple_stmts: simple_stmt !';' NEWLINE | ';'.simple_stmt+ ';'? NEWLINE
1640 static asdl_stmt_seq*
simple_stmts_rule(Parser * p)1641 simple_stmts_rule(Parser *p)
1642 {
1643     D(p->level++);
1644     if (p->error_indicator) {
1645         D(p->level--);
1646         return NULL;
1647     }
1648     asdl_stmt_seq* _res = NULL;
1649     int _mark = p->mark;
1650     { // simple_stmt !';' NEWLINE
1651         if (p->error_indicator) {
1652             D(p->level--);
1653             return NULL;
1654         }
1655         D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1656         stmt_ty a;
1657         Token * newline_var;
1658         if (
1659             (a = simple_stmt_rule(p))  // simple_stmt
1660             &&
1661             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 13)  // token=';'
1662             &&
1663             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1664         )
1665         {
1666             D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt !';' NEWLINE"));
1667             _res = ( asdl_stmt_seq * ) _PyPegen_singleton_seq ( p , a );
1668             if (_res == NULL && PyErr_Occurred()) {
1669                 p->error_indicator = 1;
1670                 D(p->level--);
1671                 return NULL;
1672             }
1673             goto done;
1674         }
1675         p->mark = _mark;
1676         D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1677                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt !';' NEWLINE"));
1678     }
1679     { // ';'.simple_stmt+ ';'? NEWLINE
1680         if (p->error_indicator) {
1681             D(p->level--);
1682             return NULL;
1683         }
1684         D(fprintf(stderr, "%*c> simple_stmts[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1685         void *_opt_var;
1686         UNUSED(_opt_var); // Silence compiler warnings
1687         asdl_stmt_seq* a;
1688         Token * newline_var;
1689         if (
1690             (a = (asdl_stmt_seq*)_gather_12_rule(p))  // ';'.simple_stmt+
1691             &&
1692             (_opt_var = _PyPegen_expect_token(p, 13), !p->error_indicator)  // ';'?
1693             &&
1694             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
1695         )
1696         {
1697             D(fprintf(stderr, "%*c+ simple_stmts[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1698             _res = a;
1699             if (_res == NULL && PyErr_Occurred()) {
1700                 p->error_indicator = 1;
1701                 D(p->level--);
1702                 return NULL;
1703             }
1704             goto done;
1705         }
1706         p->mark = _mark;
1707         D(fprintf(stderr, "%*c%s simple_stmts[%d-%d]: %s failed!\n", p->level, ' ',
1708                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'.simple_stmt+ ';'? NEWLINE"));
1709     }
1710     _res = NULL;
1711   done:
1712     D(p->level--);
1713     return _res;
1714 }
1715 
1716 // simple_stmt:
1717 //     | assignment
1718 //     | star_expressions
1719 //     | &'return' return_stmt
1720 //     | &('import' | 'from') import_stmt
1721 //     | &'raise' raise_stmt
1722 //     | 'pass'
1723 //     | &'del' del_stmt
1724 //     | &'yield' yield_stmt
1725 //     | &'assert' assert_stmt
1726 //     | 'break'
1727 //     | 'continue'
1728 //     | &'global' global_stmt
1729 //     | &'nonlocal' nonlocal_stmt
1730 static stmt_ty
simple_stmt_rule(Parser * p)1731 simple_stmt_rule(Parser *p)
1732 {
1733     D(p->level++);
1734     if (p->error_indicator) {
1735         D(p->level--);
1736         return NULL;
1737     }
1738     stmt_ty _res = NULL;
1739     if (_PyPegen_is_memoized(p, simple_stmt_type, &_res)) {
1740         D(p->level--);
1741         return _res;
1742     }
1743     int _mark = p->mark;
1744     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
1745         p->error_indicator = 1;
1746         D(p->level--);
1747         return NULL;
1748     }
1749     int _start_lineno = p->tokens[_mark]->lineno;
1750     UNUSED(_start_lineno); // Only used by EXTRA macro
1751     int _start_col_offset = p->tokens[_mark]->col_offset;
1752     UNUSED(_start_col_offset); // Only used by EXTRA macro
1753     { // assignment
1754         if (p->error_indicator) {
1755             D(p->level--);
1756             return NULL;
1757         }
1758         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment"));
1759         stmt_ty assignment_var;
1760         if (
1761             (assignment_var = assignment_rule(p))  // assignment
1762         )
1763         {
1764             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment"));
1765             _res = assignment_var;
1766             goto done;
1767         }
1768         p->mark = _mark;
1769         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1770                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment"));
1771     }
1772     { // star_expressions
1773         if (p->error_indicator) {
1774             D(p->level--);
1775             return NULL;
1776         }
1777         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1778         expr_ty e;
1779         if (
1780             (e = star_expressions_rule(p))  // star_expressions
1781         )
1782         {
1783             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
1784             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1785             if (_token == NULL) {
1786                 D(p->level--);
1787                 return NULL;
1788             }
1789             int _end_lineno = _token->end_lineno;
1790             UNUSED(_end_lineno); // Only used by EXTRA macro
1791             int _end_col_offset = _token->end_col_offset;
1792             UNUSED(_end_col_offset); // Only used by EXTRA macro
1793             _res = _PyAST_Expr ( e , EXTRA );
1794             if (_res == NULL && PyErr_Occurred()) {
1795                 p->error_indicator = 1;
1796                 D(p->level--);
1797                 return NULL;
1798             }
1799             goto done;
1800         }
1801         p->mark = _mark;
1802         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1803                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
1804     }
1805     { // &'return' return_stmt
1806         if (p->error_indicator) {
1807             D(p->level--);
1808             return NULL;
1809         }
1810         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1811         stmt_ty return_stmt_var;
1812         if (
1813             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 500)  // token='return'
1814             &&
1815             (return_stmt_var = return_stmt_rule(p))  // return_stmt
1816         )
1817         {
1818             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'return' return_stmt"));
1819             _res = return_stmt_var;
1820             goto done;
1821         }
1822         p->mark = _mark;
1823         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1824                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'return' return_stmt"));
1825     }
1826     { // &('import' | 'from') import_stmt
1827         if (p->error_indicator) {
1828             D(p->level--);
1829             return NULL;
1830         }
1831         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1832         stmt_ty import_stmt_var;
1833         if (
1834             _PyPegen_lookahead(1, _tmp_14_rule, p)
1835             &&
1836             (import_stmt_var = import_stmt_rule(p))  // import_stmt
1837         )
1838         {
1839             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('import' | 'from') import_stmt"));
1840             _res = import_stmt_var;
1841             goto done;
1842         }
1843         p->mark = _mark;
1844         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1845                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('import' | 'from') import_stmt"));
1846     }
1847     { // &'raise' raise_stmt
1848         if (p->error_indicator) {
1849             D(p->level--);
1850             return NULL;
1851         }
1852         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1853         stmt_ty raise_stmt_var;
1854         if (
1855             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 501)  // token='raise'
1856             &&
1857             (raise_stmt_var = raise_stmt_rule(p))  // raise_stmt
1858         )
1859         {
1860             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'raise' raise_stmt"));
1861             _res = raise_stmt_var;
1862             goto done;
1863         }
1864         p->mark = _mark;
1865         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1866                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'raise' raise_stmt"));
1867     }
1868     { // 'pass'
1869         if (p->error_indicator) {
1870             D(p->level--);
1871             return NULL;
1872         }
1873         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'pass'"));
1874         Token * _keyword;
1875         if (
1876             (_keyword = _PyPegen_expect_token(p, 502))  // token='pass'
1877         )
1878         {
1879             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'pass'"));
1880             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1881             if (_token == NULL) {
1882                 D(p->level--);
1883                 return NULL;
1884             }
1885             int _end_lineno = _token->end_lineno;
1886             UNUSED(_end_lineno); // Only used by EXTRA macro
1887             int _end_col_offset = _token->end_col_offset;
1888             UNUSED(_end_col_offset); // Only used by EXTRA macro
1889             _res = _PyAST_Pass ( EXTRA );
1890             if (_res == NULL && PyErr_Occurred()) {
1891                 p->error_indicator = 1;
1892                 D(p->level--);
1893                 return NULL;
1894             }
1895             goto done;
1896         }
1897         p->mark = _mark;
1898         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1899                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'pass'"));
1900     }
1901     { // &'del' del_stmt
1902         if (p->error_indicator) {
1903             D(p->level--);
1904             return NULL;
1905         }
1906         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1907         stmt_ty del_stmt_var;
1908         if (
1909             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 503)  // token='del'
1910             &&
1911             (del_stmt_var = del_stmt_rule(p))  // del_stmt
1912         )
1913         {
1914             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'del' del_stmt"));
1915             _res = del_stmt_var;
1916             goto done;
1917         }
1918         p->mark = _mark;
1919         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1920                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'del' del_stmt"));
1921     }
1922     { // &'yield' yield_stmt
1923         if (p->error_indicator) {
1924             D(p->level--);
1925             return NULL;
1926         }
1927         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1928         stmt_ty yield_stmt_var;
1929         if (
1930             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 504)  // token='yield'
1931             &&
1932             (yield_stmt_var = yield_stmt_rule(p))  // yield_stmt
1933         )
1934         {
1935             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'yield' yield_stmt"));
1936             _res = yield_stmt_var;
1937             goto done;
1938         }
1939         p->mark = _mark;
1940         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1941                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'yield' yield_stmt"));
1942     }
1943     { // &'assert' assert_stmt
1944         if (p->error_indicator) {
1945             D(p->level--);
1946             return NULL;
1947         }
1948         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1949         stmt_ty assert_stmt_var;
1950         if (
1951             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 505)  // token='assert'
1952             &&
1953             (assert_stmt_var = assert_stmt_rule(p))  // assert_stmt
1954         )
1955         {
1956             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'assert' assert_stmt"));
1957             _res = assert_stmt_var;
1958             goto done;
1959         }
1960         p->mark = _mark;
1961         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1962                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'assert' assert_stmt"));
1963     }
1964     { // 'break'
1965         if (p->error_indicator) {
1966             D(p->level--);
1967             return NULL;
1968         }
1969         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'break'"));
1970         Token * _keyword;
1971         if (
1972             (_keyword = _PyPegen_expect_token(p, 506))  // token='break'
1973         )
1974         {
1975             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'break'"));
1976             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
1977             if (_token == NULL) {
1978                 D(p->level--);
1979                 return NULL;
1980             }
1981             int _end_lineno = _token->end_lineno;
1982             UNUSED(_end_lineno); // Only used by EXTRA macro
1983             int _end_col_offset = _token->end_col_offset;
1984             UNUSED(_end_col_offset); // Only used by EXTRA macro
1985             _res = _PyAST_Break ( EXTRA );
1986             if (_res == NULL && PyErr_Occurred()) {
1987                 p->error_indicator = 1;
1988                 D(p->level--);
1989                 return NULL;
1990             }
1991             goto done;
1992         }
1993         p->mark = _mark;
1994         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
1995                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'break'"));
1996     }
1997     { // 'continue'
1998         if (p->error_indicator) {
1999             D(p->level--);
2000             return NULL;
2001         }
2002         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'continue'"));
2003         Token * _keyword;
2004         if (
2005             (_keyword = _PyPegen_expect_token(p, 507))  // token='continue'
2006         )
2007         {
2008             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'continue'"));
2009             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2010             if (_token == NULL) {
2011                 D(p->level--);
2012                 return NULL;
2013             }
2014             int _end_lineno = _token->end_lineno;
2015             UNUSED(_end_lineno); // Only used by EXTRA macro
2016             int _end_col_offset = _token->end_col_offset;
2017             UNUSED(_end_col_offset); // Only used by EXTRA macro
2018             _res = _PyAST_Continue ( EXTRA );
2019             if (_res == NULL && PyErr_Occurred()) {
2020                 p->error_indicator = 1;
2021                 D(p->level--);
2022                 return NULL;
2023             }
2024             goto done;
2025         }
2026         p->mark = _mark;
2027         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2028                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'continue'"));
2029     }
2030     { // &'global' global_stmt
2031         if (p->error_indicator) {
2032             D(p->level--);
2033             return NULL;
2034         }
2035         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
2036         stmt_ty global_stmt_var;
2037         if (
2038             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 508)  // token='global'
2039             &&
2040             (global_stmt_var = global_stmt_rule(p))  // global_stmt
2041         )
2042         {
2043             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'global' global_stmt"));
2044             _res = global_stmt_var;
2045             goto done;
2046         }
2047         p->mark = _mark;
2048         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2049                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'global' global_stmt"));
2050     }
2051     { // &'nonlocal' nonlocal_stmt
2052         if (p->error_indicator) {
2053             D(p->level--);
2054             return NULL;
2055         }
2056         D(fprintf(stderr, "%*c> simple_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
2057         stmt_ty nonlocal_stmt_var;
2058         if (
2059             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 509)  // token='nonlocal'
2060             &&
2061             (nonlocal_stmt_var = nonlocal_stmt_rule(p))  // nonlocal_stmt
2062         )
2063         {
2064             D(fprintf(stderr, "%*c+ simple_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
2065             _res = nonlocal_stmt_var;
2066             goto done;
2067         }
2068         p->mark = _mark;
2069         D(fprintf(stderr, "%*c%s simple_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2070                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'nonlocal' nonlocal_stmt"));
2071     }
2072     _res = NULL;
2073   done:
2074     _PyPegen_insert_memo(p, _mark, simple_stmt_type, _res);
2075     D(p->level--);
2076     return _res;
2077 }
2078 
2079 // compound_stmt:
2080 //     | &('def' | '@' | ASYNC) function_def
2081 //     | &'if' if_stmt
2082 //     | &('class' | '@') class_def
2083 //     | &('with' | ASYNC) with_stmt
2084 //     | &('for' | ASYNC) for_stmt
2085 //     | &'try' try_stmt
2086 //     | &'while' while_stmt
2087 //     | match_stmt
2088 static stmt_ty
compound_stmt_rule(Parser * p)2089 compound_stmt_rule(Parser *p)
2090 {
2091     D(p->level++);
2092     if (p->error_indicator) {
2093         D(p->level--);
2094         return NULL;
2095     }
2096     stmt_ty _res = NULL;
2097     int _mark = p->mark;
2098     { // &('def' | '@' | ASYNC) function_def
2099         if (p->error_indicator) {
2100             D(p->level--);
2101             return NULL;
2102         }
2103         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | ASYNC) function_def"));
2104         stmt_ty function_def_var;
2105         if (
2106             _PyPegen_lookahead(1, _tmp_15_rule, p)
2107             &&
2108             (function_def_var = function_def_rule(p))  // function_def
2109         )
2110         {
2111             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('def' | '@' | ASYNC) function_def"));
2112             _res = function_def_var;
2113             goto done;
2114         }
2115         p->mark = _mark;
2116         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2117                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('def' | '@' | ASYNC) function_def"));
2118     }
2119     { // &'if' if_stmt
2120         if (p->error_indicator) {
2121             D(p->level--);
2122             return NULL;
2123         }
2124         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
2125         stmt_ty if_stmt_var;
2126         if (
2127             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 510)  // token='if'
2128             &&
2129             (if_stmt_var = if_stmt_rule(p))  // if_stmt
2130         )
2131         {
2132             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'if' if_stmt"));
2133             _res = if_stmt_var;
2134             goto done;
2135         }
2136         p->mark = _mark;
2137         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2138                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'if' if_stmt"));
2139     }
2140     { // &('class' | '@') class_def
2141         if (p->error_indicator) {
2142             D(p->level--);
2143             return NULL;
2144         }
2145         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
2146         stmt_ty class_def_var;
2147         if (
2148             _PyPegen_lookahead(1, _tmp_16_rule, p)
2149             &&
2150             (class_def_var = class_def_rule(p))  // class_def
2151         )
2152         {
2153             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('class' | '@') class_def"));
2154             _res = class_def_var;
2155             goto done;
2156         }
2157         p->mark = _mark;
2158         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2159                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('class' | '@') class_def"));
2160     }
2161     { // &('with' | ASYNC) with_stmt
2162         if (p->error_indicator) {
2163             D(p->level--);
2164             return NULL;
2165         }
2166         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('with' | ASYNC) with_stmt"));
2167         stmt_ty with_stmt_var;
2168         if (
2169             _PyPegen_lookahead(1, _tmp_17_rule, p)
2170             &&
2171             (with_stmt_var = with_stmt_rule(p))  // with_stmt
2172         )
2173         {
2174             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('with' | ASYNC) with_stmt"));
2175             _res = with_stmt_var;
2176             goto done;
2177         }
2178         p->mark = _mark;
2179         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2180                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('with' | ASYNC) with_stmt"));
2181     }
2182     { // &('for' | ASYNC) for_stmt
2183         if (p->error_indicator) {
2184             D(p->level--);
2185             return NULL;
2186         }
2187         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&('for' | ASYNC) for_stmt"));
2188         stmt_ty for_stmt_var;
2189         if (
2190             _PyPegen_lookahead(1, _tmp_18_rule, p)
2191             &&
2192             (for_stmt_var = for_stmt_rule(p))  // for_stmt
2193         )
2194         {
2195             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&('for' | ASYNC) for_stmt"));
2196             _res = for_stmt_var;
2197             goto done;
2198         }
2199         p->mark = _mark;
2200         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2201                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&('for' | ASYNC) for_stmt"));
2202     }
2203     { // &'try' try_stmt
2204         if (p->error_indicator) {
2205             D(p->level--);
2206             return NULL;
2207         }
2208         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
2209         stmt_ty try_stmt_var;
2210         if (
2211             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 511)  // token='try'
2212             &&
2213             (try_stmt_var = try_stmt_rule(p))  // try_stmt
2214         )
2215         {
2216             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'try' try_stmt"));
2217             _res = try_stmt_var;
2218             goto done;
2219         }
2220         p->mark = _mark;
2221         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2222                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'try' try_stmt"));
2223     }
2224     { // &'while' while_stmt
2225         if (p->error_indicator) {
2226             D(p->level--);
2227             return NULL;
2228         }
2229         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
2230         stmt_ty while_stmt_var;
2231         if (
2232             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 512)  // token='while'
2233             &&
2234             (while_stmt_var = while_stmt_rule(p))  // while_stmt
2235         )
2236         {
2237             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'while' while_stmt"));
2238             _res = while_stmt_var;
2239             goto done;
2240         }
2241         p->mark = _mark;
2242         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2243                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'while' while_stmt"));
2244     }
2245     { // match_stmt
2246         if (p->error_indicator) {
2247             D(p->level--);
2248             return NULL;
2249         }
2250         D(fprintf(stderr, "%*c> compound_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2251         stmt_ty match_stmt_var;
2252         if (
2253             (match_stmt_var = match_stmt_rule(p))  // match_stmt
2254         )
2255         {
2256             D(fprintf(stderr, "%*c+ compound_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "match_stmt"));
2257             _res = match_stmt_var;
2258             goto done;
2259         }
2260         p->mark = _mark;
2261         D(fprintf(stderr, "%*c%s compound_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2262                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "match_stmt"));
2263     }
2264     _res = NULL;
2265   done:
2266     D(p->level--);
2267     return _res;
2268 }
2269 
2270 // assignment:
2271 //     | NAME ':' expression ['=' annotated_rhs]
2272 //     | ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
2273 //     | ((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?
2274 //     | single_target augassign ~ (yield_expr | star_expressions)
2275 //     | invalid_assignment
2276 static stmt_ty
assignment_rule(Parser * p)2277 assignment_rule(Parser *p)
2278 {
2279     D(p->level++);
2280     if (p->error_indicator) {
2281         D(p->level--);
2282         return NULL;
2283     }
2284     stmt_ty _res = NULL;
2285     int _mark = p->mark;
2286     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2287         p->error_indicator = 1;
2288         D(p->level--);
2289         return NULL;
2290     }
2291     int _start_lineno = p->tokens[_mark]->lineno;
2292     UNUSED(_start_lineno); // Only used by EXTRA macro
2293     int _start_col_offset = p->tokens[_mark]->col_offset;
2294     UNUSED(_start_col_offset); // Only used by EXTRA macro
2295     { // NAME ':' expression ['=' annotated_rhs]
2296         if (p->error_indicator) {
2297             D(p->level--);
2298             return NULL;
2299         }
2300         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2301         Token * _literal;
2302         expr_ty a;
2303         expr_ty b;
2304         void *c;
2305         if (
2306             (a = _PyPegen_name_token(p))  // NAME
2307             &&
2308             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2309             &&
2310             (b = expression_rule(p))  // expression
2311             &&
2312             (c = _tmp_19_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2313         )
2314         {
2315             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2316             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2317             if (_token == NULL) {
2318                 D(p->level--);
2319                 return NULL;
2320             }
2321             int _end_lineno = _token->end_lineno;
2322             UNUSED(_end_lineno); // Only used by EXTRA macro
2323             int _end_col_offset = _token->end_col_offset;
2324             UNUSED(_end_col_offset); // Only used by EXTRA macro
2325             _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 ) );
2326             if (_res == NULL && PyErr_Occurred()) {
2327                 p->error_indicator = 1;
2328                 D(p->level--);
2329                 return NULL;
2330             }
2331             goto done;
2332         }
2333         p->mark = _mark;
2334         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2335                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':' expression ['=' annotated_rhs]"));
2336     }
2337     { // ('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]
2338         if (p->error_indicator) {
2339             D(p->level--);
2340             return NULL;
2341         }
2342         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2343         Token * _literal;
2344         void *a;
2345         expr_ty b;
2346         void *c;
2347         if (
2348             (a = _tmp_20_rule(p))  // '(' single_target ')' | single_subscript_attribute_target
2349             &&
2350             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
2351             &&
2352             (b = expression_rule(p))  // expression
2353             &&
2354             (c = _tmp_21_rule(p), !p->error_indicator)  // ['=' annotated_rhs]
2355         )
2356         {
2357             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2358             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2359             if (_token == NULL) {
2360                 D(p->level--);
2361                 return NULL;
2362             }
2363             int _end_lineno = _token->end_lineno;
2364             UNUSED(_end_lineno); // Only used by EXTRA macro
2365             int _end_col_offset = _token->end_col_offset;
2366             UNUSED(_end_col_offset); // Only used by EXTRA macro
2367             _res = CHECK_VERSION ( stmt_ty , 6 , "Variable annotations syntax is" , _PyAST_AnnAssign ( a , b , c , 0 , EXTRA ) );
2368             if (_res == NULL && PyErr_Occurred()) {
2369                 p->error_indicator = 1;
2370                 D(p->level--);
2371                 return NULL;
2372             }
2373             goto done;
2374         }
2375         p->mark = _mark;
2376         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2377                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('(' single_target ')' | single_subscript_attribute_target) ':' expression ['=' annotated_rhs]"));
2378     }
2379     { // ((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?
2380         if (p->error_indicator) {
2381             D(p->level--);
2382             return NULL;
2383         }
2384         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?"));
2385         asdl_expr_seq* a;
2386         void *b;
2387         void *tc;
2388         if (
2389             (a = (asdl_expr_seq*)_loop1_22_rule(p))  // ((star_targets '='))+
2390             &&
2391             (b = _tmp_23_rule(p))  // yield_expr | star_expressions
2392             &&
2393             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
2394             &&
2395             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
2396         )
2397         {
2398             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?"));
2399             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2400             if (_token == NULL) {
2401                 D(p->level--);
2402                 return NULL;
2403             }
2404             int _end_lineno = _token->end_lineno;
2405             UNUSED(_end_lineno); // Only used by EXTRA macro
2406             int _end_col_offset = _token->end_col_offset;
2407             UNUSED(_end_col_offset); // Only used by EXTRA macro
2408             _res = _PyAST_Assign ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
2409             if (_res == NULL && PyErr_Occurred()) {
2410                 p->error_indicator = 1;
2411                 D(p->level--);
2412                 return NULL;
2413             }
2414             goto done;
2415         }
2416         p->mark = _mark;
2417         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2418                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))+ (yield_expr | star_expressions) !'=' TYPE_COMMENT?"));
2419     }
2420     { // single_target augassign ~ (yield_expr | star_expressions)
2421         if (p->error_indicator) {
2422             D(p->level--);
2423             return NULL;
2424         }
2425         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ (yield_expr | star_expressions)"));
2426         int _cut_var = 0;
2427         expr_ty a;
2428         AugOperator* b;
2429         void *c;
2430         if (
2431             (a = single_target_rule(p))  // single_target
2432             &&
2433             (b = augassign_rule(p))  // augassign
2434             &&
2435             (_cut_var = 1)
2436             &&
2437             (c = _tmp_24_rule(p))  // yield_expr | star_expressions
2438         )
2439         {
2440             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_target augassign ~ (yield_expr | star_expressions)"));
2441             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2442             if (_token == NULL) {
2443                 D(p->level--);
2444                 return NULL;
2445             }
2446             int _end_lineno = _token->end_lineno;
2447             UNUSED(_end_lineno); // Only used by EXTRA macro
2448             int _end_col_offset = _token->end_col_offset;
2449             UNUSED(_end_col_offset); // Only used by EXTRA macro
2450             _res = _PyAST_AugAssign ( a , b -> kind , c , EXTRA );
2451             if (_res == NULL && PyErr_Occurred()) {
2452                 p->error_indicator = 1;
2453                 D(p->level--);
2454                 return NULL;
2455             }
2456             goto done;
2457         }
2458         p->mark = _mark;
2459         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2460                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_target augassign ~ (yield_expr | star_expressions)"));
2461         if (_cut_var) {
2462             D(p->level--);
2463             return NULL;
2464         }
2465     }
2466     if (p->call_invalid_rules) { // invalid_assignment
2467         if (p->error_indicator) {
2468             D(p->level--);
2469             return NULL;
2470         }
2471         D(fprintf(stderr, "%*c> assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2472         void *invalid_assignment_var;
2473         if (
2474             (invalid_assignment_var = invalid_assignment_rule(p))  // invalid_assignment
2475         )
2476         {
2477             D(fprintf(stderr, "%*c+ assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_assignment"));
2478             _res = invalid_assignment_var;
2479             goto done;
2480         }
2481         p->mark = _mark;
2482         D(fprintf(stderr, "%*c%s assignment[%d-%d]: %s failed!\n", p->level, ' ',
2483                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_assignment"));
2484     }
2485     _res = NULL;
2486   done:
2487     D(p->level--);
2488     return _res;
2489 }
2490 
2491 // augassign:
2492 //     | '+='
2493 //     | '-='
2494 //     | '*='
2495 //     | '@='
2496 //     | '/='
2497 //     | '%='
2498 //     | '&='
2499 //     | '|='
2500 //     | '^='
2501 //     | '<<='
2502 //     | '>>='
2503 //     | '**='
2504 //     | '//='
2505 static AugOperator*
augassign_rule(Parser * p)2506 augassign_rule(Parser *p)
2507 {
2508     D(p->level++);
2509     if (p->error_indicator) {
2510         D(p->level--);
2511         return NULL;
2512     }
2513     AugOperator* _res = NULL;
2514     int _mark = p->mark;
2515     { // '+='
2516         if (p->error_indicator) {
2517             D(p->level--);
2518             return NULL;
2519         }
2520         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+='"));
2521         Token * _literal;
2522         if (
2523             (_literal = _PyPegen_expect_token(p, 36))  // token='+='
2524         )
2525         {
2526             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+='"));
2527             _res = _PyPegen_augoperator ( p , Add );
2528             if (_res == NULL && PyErr_Occurred()) {
2529                 p->error_indicator = 1;
2530                 D(p->level--);
2531                 return NULL;
2532             }
2533             goto done;
2534         }
2535         p->mark = _mark;
2536         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2537                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+='"));
2538     }
2539     { // '-='
2540         if (p->error_indicator) {
2541             D(p->level--);
2542             return NULL;
2543         }
2544         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-='"));
2545         Token * _literal;
2546         if (
2547             (_literal = _PyPegen_expect_token(p, 37))  // token='-='
2548         )
2549         {
2550             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-='"));
2551             _res = _PyPegen_augoperator ( p , Sub );
2552             if (_res == NULL && PyErr_Occurred()) {
2553                 p->error_indicator = 1;
2554                 D(p->level--);
2555                 return NULL;
2556             }
2557             goto done;
2558         }
2559         p->mark = _mark;
2560         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2561                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-='"));
2562     }
2563     { // '*='
2564         if (p->error_indicator) {
2565             D(p->level--);
2566             return NULL;
2567         }
2568         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*='"));
2569         Token * _literal;
2570         if (
2571             (_literal = _PyPegen_expect_token(p, 38))  // token='*='
2572         )
2573         {
2574             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*='"));
2575             _res = _PyPegen_augoperator ( p , Mult );
2576             if (_res == NULL && PyErr_Occurred()) {
2577                 p->error_indicator = 1;
2578                 D(p->level--);
2579                 return NULL;
2580             }
2581             goto done;
2582         }
2583         p->mark = _mark;
2584         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2585                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*='"));
2586     }
2587     { // '@='
2588         if (p->error_indicator) {
2589             D(p->level--);
2590             return NULL;
2591         }
2592         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@='"));
2593         Token * _literal;
2594         if (
2595             (_literal = _PyPegen_expect_token(p, 50))  // token='@='
2596         )
2597         {
2598             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@='"));
2599             _res = CHECK_VERSION ( AugOperator * , 5 , "The '@' operator is" , _PyPegen_augoperator ( p , MatMult ) );
2600             if (_res == NULL && PyErr_Occurred()) {
2601                 p->error_indicator = 1;
2602                 D(p->level--);
2603                 return NULL;
2604             }
2605             goto done;
2606         }
2607         p->mark = _mark;
2608         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2609                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@='"));
2610     }
2611     { // '/='
2612         if (p->error_indicator) {
2613             D(p->level--);
2614             return NULL;
2615         }
2616         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'/='"));
2617         Token * _literal;
2618         if (
2619             (_literal = _PyPegen_expect_token(p, 39))  // token='/='
2620         )
2621         {
2622             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'/='"));
2623             _res = _PyPegen_augoperator ( p , Div );
2624             if (_res == NULL && PyErr_Occurred()) {
2625                 p->error_indicator = 1;
2626                 D(p->level--);
2627                 return NULL;
2628             }
2629             goto done;
2630         }
2631         p->mark = _mark;
2632         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2633                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'/='"));
2634     }
2635     { // '%='
2636         if (p->error_indicator) {
2637             D(p->level--);
2638             return NULL;
2639         }
2640         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'%='"));
2641         Token * _literal;
2642         if (
2643             (_literal = _PyPegen_expect_token(p, 40))  // token='%='
2644         )
2645         {
2646             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'%='"));
2647             _res = _PyPegen_augoperator ( p , Mod );
2648             if (_res == NULL && PyErr_Occurred()) {
2649                 p->error_indicator = 1;
2650                 D(p->level--);
2651                 return NULL;
2652             }
2653             goto done;
2654         }
2655         p->mark = _mark;
2656         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2657                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'%='"));
2658     }
2659     { // '&='
2660         if (p->error_indicator) {
2661             D(p->level--);
2662             return NULL;
2663         }
2664         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'&='"));
2665         Token * _literal;
2666         if (
2667             (_literal = _PyPegen_expect_token(p, 41))  // token='&='
2668         )
2669         {
2670             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'&='"));
2671             _res = _PyPegen_augoperator ( p , BitAnd );
2672             if (_res == NULL && PyErr_Occurred()) {
2673                 p->error_indicator = 1;
2674                 D(p->level--);
2675                 return NULL;
2676             }
2677             goto done;
2678         }
2679         p->mark = _mark;
2680         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2681                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'&='"));
2682     }
2683     { // '|='
2684         if (p->error_indicator) {
2685             D(p->level--);
2686             return NULL;
2687         }
2688         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|='"));
2689         Token * _literal;
2690         if (
2691             (_literal = _PyPegen_expect_token(p, 42))  // token='|='
2692         )
2693         {
2694             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|='"));
2695             _res = _PyPegen_augoperator ( p , BitOr );
2696             if (_res == NULL && PyErr_Occurred()) {
2697                 p->error_indicator = 1;
2698                 D(p->level--);
2699                 return NULL;
2700             }
2701             goto done;
2702         }
2703         p->mark = _mark;
2704         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2705                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|='"));
2706     }
2707     { // '^='
2708         if (p->error_indicator) {
2709             D(p->level--);
2710             return NULL;
2711         }
2712         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'^='"));
2713         Token * _literal;
2714         if (
2715             (_literal = _PyPegen_expect_token(p, 43))  // token='^='
2716         )
2717         {
2718             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'^='"));
2719             _res = _PyPegen_augoperator ( p , BitXor );
2720             if (_res == NULL && PyErr_Occurred()) {
2721                 p->error_indicator = 1;
2722                 D(p->level--);
2723                 return NULL;
2724             }
2725             goto done;
2726         }
2727         p->mark = _mark;
2728         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2729                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'^='"));
2730     }
2731     { // '<<='
2732         if (p->error_indicator) {
2733             D(p->level--);
2734             return NULL;
2735         }
2736         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<<='"));
2737         Token * _literal;
2738         if (
2739             (_literal = _PyPegen_expect_token(p, 44))  // token='<<='
2740         )
2741         {
2742             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<<='"));
2743             _res = _PyPegen_augoperator ( p , LShift );
2744             if (_res == NULL && PyErr_Occurred()) {
2745                 p->error_indicator = 1;
2746                 D(p->level--);
2747                 return NULL;
2748             }
2749             goto done;
2750         }
2751         p->mark = _mark;
2752         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2753                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<<='"));
2754     }
2755     { // '>>='
2756         if (p->error_indicator) {
2757             D(p->level--);
2758             return NULL;
2759         }
2760         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>>='"));
2761         Token * _literal;
2762         if (
2763             (_literal = _PyPegen_expect_token(p, 45))  // token='>>='
2764         )
2765         {
2766             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>>='"));
2767             _res = _PyPegen_augoperator ( p , RShift );
2768             if (_res == NULL && PyErr_Occurred()) {
2769                 p->error_indicator = 1;
2770                 D(p->level--);
2771                 return NULL;
2772             }
2773             goto done;
2774         }
2775         p->mark = _mark;
2776         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2777                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>>='"));
2778     }
2779     { // '**='
2780         if (p->error_indicator) {
2781             D(p->level--);
2782             return NULL;
2783         }
2784         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**='"));
2785         Token * _literal;
2786         if (
2787             (_literal = _PyPegen_expect_token(p, 46))  // token='**='
2788         )
2789         {
2790             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**='"));
2791             _res = _PyPegen_augoperator ( p , Pow );
2792             if (_res == NULL && PyErr_Occurred()) {
2793                 p->error_indicator = 1;
2794                 D(p->level--);
2795                 return NULL;
2796             }
2797             goto done;
2798         }
2799         p->mark = _mark;
2800         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2801                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**='"));
2802     }
2803     { // '//='
2804         if (p->error_indicator) {
2805             D(p->level--);
2806             return NULL;
2807         }
2808         D(fprintf(stderr, "%*c> augassign[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'//='"));
2809         Token * _literal;
2810         if (
2811             (_literal = _PyPegen_expect_token(p, 48))  // token='//='
2812         )
2813         {
2814             D(fprintf(stderr, "%*c+ augassign[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'//='"));
2815             _res = _PyPegen_augoperator ( p , FloorDiv );
2816             if (_res == NULL && PyErr_Occurred()) {
2817                 p->error_indicator = 1;
2818                 D(p->level--);
2819                 return NULL;
2820             }
2821             goto done;
2822         }
2823         p->mark = _mark;
2824         D(fprintf(stderr, "%*c%s augassign[%d-%d]: %s failed!\n", p->level, ' ',
2825                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'//='"));
2826     }
2827     _res = NULL;
2828   done:
2829     D(p->level--);
2830     return _res;
2831 }
2832 
2833 // global_stmt: 'global' ','.NAME+
2834 static stmt_ty
global_stmt_rule(Parser * p)2835 global_stmt_rule(Parser *p)
2836 {
2837     D(p->level++);
2838     if (p->error_indicator) {
2839         D(p->level--);
2840         return NULL;
2841     }
2842     stmt_ty _res = NULL;
2843     int _mark = p->mark;
2844     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2845         p->error_indicator = 1;
2846         D(p->level--);
2847         return NULL;
2848     }
2849     int _start_lineno = p->tokens[_mark]->lineno;
2850     UNUSED(_start_lineno); // Only used by EXTRA macro
2851     int _start_col_offset = p->tokens[_mark]->col_offset;
2852     UNUSED(_start_col_offset); // Only used by EXTRA macro
2853     { // 'global' ','.NAME+
2854         if (p->error_indicator) {
2855             D(p->level--);
2856             return NULL;
2857         }
2858         D(fprintf(stderr, "%*c> global_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
2859         Token * _keyword;
2860         asdl_expr_seq* a;
2861         if (
2862             (_keyword = _PyPegen_expect_token(p, 508))  // token='global'
2863             &&
2864             (a = (asdl_expr_seq*)_gather_25_rule(p))  // ','.NAME+
2865         )
2866         {
2867             D(fprintf(stderr, "%*c+ global_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'global' ','.NAME+"));
2868             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2869             if (_token == NULL) {
2870                 D(p->level--);
2871                 return NULL;
2872             }
2873             int _end_lineno = _token->end_lineno;
2874             UNUSED(_end_lineno); // Only used by EXTRA macro
2875             int _end_col_offset = _token->end_col_offset;
2876             UNUSED(_end_col_offset); // Only used by EXTRA macro
2877             _res = _PyAST_Global ( CHECK ( asdl_identifier_seq * , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2878             if (_res == NULL && PyErr_Occurred()) {
2879                 p->error_indicator = 1;
2880                 D(p->level--);
2881                 return NULL;
2882             }
2883             goto done;
2884         }
2885         p->mark = _mark;
2886         D(fprintf(stderr, "%*c%s global_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2887                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'global' ','.NAME+"));
2888     }
2889     _res = NULL;
2890   done:
2891     D(p->level--);
2892     return _res;
2893 }
2894 
2895 // nonlocal_stmt: 'nonlocal' ','.NAME+
2896 static stmt_ty
nonlocal_stmt_rule(Parser * p)2897 nonlocal_stmt_rule(Parser *p)
2898 {
2899     D(p->level++);
2900     if (p->error_indicator) {
2901         D(p->level--);
2902         return NULL;
2903     }
2904     stmt_ty _res = NULL;
2905     int _mark = p->mark;
2906     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2907         p->error_indicator = 1;
2908         D(p->level--);
2909         return NULL;
2910     }
2911     int _start_lineno = p->tokens[_mark]->lineno;
2912     UNUSED(_start_lineno); // Only used by EXTRA macro
2913     int _start_col_offset = p->tokens[_mark]->col_offset;
2914     UNUSED(_start_col_offset); // Only used by EXTRA macro
2915     { // 'nonlocal' ','.NAME+
2916         if (p->error_indicator) {
2917             D(p->level--);
2918             return NULL;
2919         }
2920         D(fprintf(stderr, "%*c> nonlocal_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
2921         Token * _keyword;
2922         asdl_expr_seq* a;
2923         if (
2924             (_keyword = _PyPegen_expect_token(p, 509))  // token='nonlocal'
2925             &&
2926             (a = (asdl_expr_seq*)_gather_27_rule(p))  // ','.NAME+
2927         )
2928         {
2929             D(fprintf(stderr, "%*c+ nonlocal_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'nonlocal' ','.NAME+"));
2930             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2931             if (_token == NULL) {
2932                 D(p->level--);
2933                 return NULL;
2934             }
2935             int _end_lineno = _token->end_lineno;
2936             UNUSED(_end_lineno); // Only used by EXTRA macro
2937             int _end_col_offset = _token->end_col_offset;
2938             UNUSED(_end_col_offset); // Only used by EXTRA macro
2939             _res = _PyAST_Nonlocal ( CHECK ( asdl_identifier_seq * , _PyPegen_map_names_to_ids ( p , a ) ) , EXTRA );
2940             if (_res == NULL && PyErr_Occurred()) {
2941                 p->error_indicator = 1;
2942                 D(p->level--);
2943                 return NULL;
2944             }
2945             goto done;
2946         }
2947         p->mark = _mark;
2948         D(fprintf(stderr, "%*c%s nonlocal_stmt[%d-%d]: %s failed!\n", p->level, ' ',
2949                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'nonlocal' ','.NAME+"));
2950     }
2951     _res = NULL;
2952   done:
2953     D(p->level--);
2954     return _res;
2955 }
2956 
2957 // yield_stmt: yield_expr
2958 static stmt_ty
yield_stmt_rule(Parser * p)2959 yield_stmt_rule(Parser *p)
2960 {
2961     D(p->level++);
2962     if (p->error_indicator) {
2963         D(p->level--);
2964         return NULL;
2965     }
2966     stmt_ty _res = NULL;
2967     int _mark = p->mark;
2968     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
2969         p->error_indicator = 1;
2970         D(p->level--);
2971         return NULL;
2972     }
2973     int _start_lineno = p->tokens[_mark]->lineno;
2974     UNUSED(_start_lineno); // Only used by EXTRA macro
2975     int _start_col_offset = p->tokens[_mark]->col_offset;
2976     UNUSED(_start_col_offset); // Only used by EXTRA macro
2977     { // yield_expr
2978         if (p->error_indicator) {
2979             D(p->level--);
2980             return NULL;
2981         }
2982         D(fprintf(stderr, "%*c> yield_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
2983         expr_ty y;
2984         if (
2985             (y = yield_expr_rule(p))  // yield_expr
2986         )
2987         {
2988             D(fprintf(stderr, "%*c+ yield_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
2989             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
2990             if (_token == NULL) {
2991                 D(p->level--);
2992                 return NULL;
2993             }
2994             int _end_lineno = _token->end_lineno;
2995             UNUSED(_end_lineno); // Only used by EXTRA macro
2996             int _end_col_offset = _token->end_col_offset;
2997             UNUSED(_end_col_offset); // Only used by EXTRA macro
2998             _res = _PyAST_Expr ( y , EXTRA );
2999             if (_res == NULL && PyErr_Occurred()) {
3000                 p->error_indicator = 1;
3001                 D(p->level--);
3002                 return NULL;
3003             }
3004             goto done;
3005         }
3006         p->mark = _mark;
3007         D(fprintf(stderr, "%*c%s yield_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3008                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
3009     }
3010     _res = NULL;
3011   done:
3012     D(p->level--);
3013     return _res;
3014 }
3015 
3016 // assert_stmt: 'assert' expression [',' expression]
3017 static stmt_ty
assert_stmt_rule(Parser * p)3018 assert_stmt_rule(Parser *p)
3019 {
3020     D(p->level++);
3021     if (p->error_indicator) {
3022         D(p->level--);
3023         return NULL;
3024     }
3025     stmt_ty _res = NULL;
3026     int _mark = p->mark;
3027     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3028         p->error_indicator = 1;
3029         D(p->level--);
3030         return NULL;
3031     }
3032     int _start_lineno = p->tokens[_mark]->lineno;
3033     UNUSED(_start_lineno); // Only used by EXTRA macro
3034     int _start_col_offset = p->tokens[_mark]->col_offset;
3035     UNUSED(_start_col_offset); // Only used by EXTRA macro
3036     { // 'assert' expression [',' expression]
3037         if (p->error_indicator) {
3038             D(p->level--);
3039             return NULL;
3040         }
3041         D(fprintf(stderr, "%*c> assert_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3042         Token * _keyword;
3043         expr_ty a;
3044         void *b;
3045         if (
3046             (_keyword = _PyPegen_expect_token(p, 505))  // token='assert'
3047             &&
3048             (a = expression_rule(p))  // expression
3049             &&
3050             (b = _tmp_29_rule(p), !p->error_indicator)  // [',' expression]
3051         )
3052         {
3053             D(fprintf(stderr, "%*c+ assert_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'assert' expression [',' expression]"));
3054             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3055             if (_token == NULL) {
3056                 D(p->level--);
3057                 return NULL;
3058             }
3059             int _end_lineno = _token->end_lineno;
3060             UNUSED(_end_lineno); // Only used by EXTRA macro
3061             int _end_col_offset = _token->end_col_offset;
3062             UNUSED(_end_col_offset); // Only used by EXTRA macro
3063             _res = _PyAST_Assert ( a , b , EXTRA );
3064             if (_res == NULL && PyErr_Occurred()) {
3065                 p->error_indicator = 1;
3066                 D(p->level--);
3067                 return NULL;
3068             }
3069             goto done;
3070         }
3071         p->mark = _mark;
3072         D(fprintf(stderr, "%*c%s assert_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3073                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'assert' expression [',' expression]"));
3074     }
3075     _res = NULL;
3076   done:
3077     D(p->level--);
3078     return _res;
3079 }
3080 
3081 // del_stmt: 'del' del_targets &(';' | NEWLINE) | invalid_del_stmt
3082 static stmt_ty
del_stmt_rule(Parser * p)3083 del_stmt_rule(Parser *p)
3084 {
3085     D(p->level++);
3086     if (p->error_indicator) {
3087         D(p->level--);
3088         return NULL;
3089     }
3090     stmt_ty _res = NULL;
3091     int _mark = p->mark;
3092     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3093         p->error_indicator = 1;
3094         D(p->level--);
3095         return NULL;
3096     }
3097     int _start_lineno = p->tokens[_mark]->lineno;
3098     UNUSED(_start_lineno); // Only used by EXTRA macro
3099     int _start_col_offset = p->tokens[_mark]->col_offset;
3100     UNUSED(_start_col_offset); // Only used by EXTRA macro
3101     { // 'del' del_targets &(';' | NEWLINE)
3102         if (p->error_indicator) {
3103             D(p->level--);
3104             return NULL;
3105         }
3106         D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3107         Token * _keyword;
3108         asdl_expr_seq* a;
3109         if (
3110             (_keyword = _PyPegen_expect_token(p, 503))  // token='del'
3111             &&
3112             (a = del_targets_rule(p))  // del_targets
3113             &&
3114             _PyPegen_lookahead(1, _tmp_30_rule, p)
3115         )
3116         {
3117             D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3118             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3119             if (_token == NULL) {
3120                 D(p->level--);
3121                 return NULL;
3122             }
3123             int _end_lineno = _token->end_lineno;
3124             UNUSED(_end_lineno); // Only used by EXTRA macro
3125             int _end_col_offset = _token->end_col_offset;
3126             UNUSED(_end_col_offset); // Only used by EXTRA macro
3127             _res = _PyAST_Delete ( a , EXTRA );
3128             if (_res == NULL && PyErr_Occurred()) {
3129                 p->error_indicator = 1;
3130                 D(p->level--);
3131                 return NULL;
3132             }
3133             goto done;
3134         }
3135         p->mark = _mark;
3136         D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3137                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' del_targets &(';' | NEWLINE)"));
3138     }
3139     if (p->call_invalid_rules) { // invalid_del_stmt
3140         if (p->error_indicator) {
3141             D(p->level--);
3142             return NULL;
3143         }
3144         D(fprintf(stderr, "%*c> del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3145         void *invalid_del_stmt_var;
3146         if (
3147             (invalid_del_stmt_var = invalid_del_stmt_rule(p))  // invalid_del_stmt
3148         )
3149         {
3150             D(fprintf(stderr, "%*c+ del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_del_stmt"));
3151             _res = invalid_del_stmt_var;
3152             goto done;
3153         }
3154         p->mark = _mark;
3155         D(fprintf(stderr, "%*c%s del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3156                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_del_stmt"));
3157     }
3158     _res = NULL;
3159   done:
3160     D(p->level--);
3161     return _res;
3162 }
3163 
3164 // import_stmt: import_name | import_from
3165 static stmt_ty
import_stmt_rule(Parser * p)3166 import_stmt_rule(Parser *p)
3167 {
3168     D(p->level++);
3169     if (p->error_indicator) {
3170         D(p->level--);
3171         return NULL;
3172     }
3173     stmt_ty _res = NULL;
3174     int _mark = p->mark;
3175     { // import_name
3176         if (p->error_indicator) {
3177             D(p->level--);
3178             return NULL;
3179         }
3180         D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_name"));
3181         stmt_ty import_name_var;
3182         if (
3183             (import_name_var = import_name_rule(p))  // import_name
3184         )
3185         {
3186             D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_name"));
3187             _res = import_name_var;
3188             goto done;
3189         }
3190         p->mark = _mark;
3191         D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3192                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_name"));
3193     }
3194     { // import_from
3195         if (p->error_indicator) {
3196             D(p->level--);
3197             return NULL;
3198         }
3199         D(fprintf(stderr, "%*c> import_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from"));
3200         stmt_ty import_from_var;
3201         if (
3202             (import_from_var = import_from_rule(p))  // import_from
3203         )
3204         {
3205             D(fprintf(stderr, "%*c+ import_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from"));
3206             _res = import_from_var;
3207             goto done;
3208         }
3209         p->mark = _mark;
3210         D(fprintf(stderr, "%*c%s import_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3211                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from"));
3212     }
3213     _res = NULL;
3214   done:
3215     D(p->level--);
3216     return _res;
3217 }
3218 
3219 // import_name: 'import' dotted_as_names
3220 static stmt_ty
import_name_rule(Parser * p)3221 import_name_rule(Parser *p)
3222 {
3223     D(p->level++);
3224     if (p->error_indicator) {
3225         D(p->level--);
3226         return NULL;
3227     }
3228     stmt_ty _res = NULL;
3229     int _mark = p->mark;
3230     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3231         p->error_indicator = 1;
3232         D(p->level--);
3233         return NULL;
3234     }
3235     int _start_lineno = p->tokens[_mark]->lineno;
3236     UNUSED(_start_lineno); // Only used by EXTRA macro
3237     int _start_col_offset = p->tokens[_mark]->col_offset;
3238     UNUSED(_start_col_offset); // Only used by EXTRA macro
3239     { // 'import' dotted_as_names
3240         if (p->error_indicator) {
3241             D(p->level--);
3242             return NULL;
3243         }
3244         D(fprintf(stderr, "%*c> import_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3245         Token * _keyword;
3246         asdl_alias_seq* a;
3247         if (
3248             (_keyword = _PyPegen_expect_token(p, 513))  // token='import'
3249             &&
3250             (a = dotted_as_names_rule(p))  // dotted_as_names
3251         )
3252         {
3253             D(fprintf(stderr, "%*c+ import_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import' dotted_as_names"));
3254             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3255             if (_token == NULL) {
3256                 D(p->level--);
3257                 return NULL;
3258             }
3259             int _end_lineno = _token->end_lineno;
3260             UNUSED(_end_lineno); // Only used by EXTRA macro
3261             int _end_col_offset = _token->end_col_offset;
3262             UNUSED(_end_col_offset); // Only used by EXTRA macro
3263             _res = _PyAST_Import ( a , EXTRA );
3264             if (_res == NULL && PyErr_Occurred()) {
3265                 p->error_indicator = 1;
3266                 D(p->level--);
3267                 return NULL;
3268             }
3269             goto done;
3270         }
3271         p->mark = _mark;
3272         D(fprintf(stderr, "%*c%s import_name[%d-%d]: %s failed!\n", p->level, ' ',
3273                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import' dotted_as_names"));
3274     }
3275     _res = NULL;
3276   done:
3277     D(p->level--);
3278     return _res;
3279 }
3280 
3281 // import_from:
3282 //     | 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3283 //     | 'from' (('.' | '...'))+ 'import' import_from_targets
3284 static stmt_ty
import_from_rule(Parser * p)3285 import_from_rule(Parser *p)
3286 {
3287     D(p->level++);
3288     if (p->error_indicator) {
3289         D(p->level--);
3290         return NULL;
3291     }
3292     stmt_ty _res = NULL;
3293     int _mark = p->mark;
3294     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3295         p->error_indicator = 1;
3296         D(p->level--);
3297         return NULL;
3298     }
3299     int _start_lineno = p->tokens[_mark]->lineno;
3300     UNUSED(_start_lineno); // Only used by EXTRA macro
3301     int _start_col_offset = p->tokens[_mark]->col_offset;
3302     UNUSED(_start_col_offset); // Only used by EXTRA macro
3303     { // 'from' (('.' | '...'))* dotted_name 'import' import_from_targets
3304         if (p->error_indicator) {
3305             D(p->level--);
3306             return NULL;
3307         }
3308         D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3309         Token * _keyword;
3310         Token * _keyword_1;
3311         asdl_seq * a;
3312         expr_ty b;
3313         asdl_alias_seq* c;
3314         if (
3315             (_keyword = _PyPegen_expect_token(p, 514))  // token='from'
3316             &&
3317             (a = _loop0_31_rule(p))  // (('.' | '...'))*
3318             &&
3319             (b = dotted_name_rule(p))  // dotted_name
3320             &&
3321             (_keyword_1 = _PyPegen_expect_token(p, 513))  // token='import'
3322             &&
3323             (c = import_from_targets_rule(p))  // import_from_targets
3324         )
3325         {
3326             D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3327             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3328             if (_token == NULL) {
3329                 D(p->level--);
3330                 return NULL;
3331             }
3332             int _end_lineno = _token->end_lineno;
3333             UNUSED(_end_lineno); // Only used by EXTRA macro
3334             int _end_col_offset = _token->end_col_offset;
3335             UNUSED(_end_col_offset); // Only used by EXTRA macro
3336             _res = _PyAST_ImportFrom ( b -> v . Name . id , c , _PyPegen_seq_count_dots ( a ) , EXTRA );
3337             if (_res == NULL && PyErr_Occurred()) {
3338                 p->error_indicator = 1;
3339                 D(p->level--);
3340                 return NULL;
3341             }
3342             goto done;
3343         }
3344         p->mark = _mark;
3345         D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3346                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))* dotted_name 'import' import_from_targets"));
3347     }
3348     { // 'from' (('.' | '...'))+ 'import' import_from_targets
3349         if (p->error_indicator) {
3350             D(p->level--);
3351             return NULL;
3352         }
3353         D(fprintf(stderr, "%*c> import_from[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3354         Token * _keyword;
3355         Token * _keyword_1;
3356         asdl_seq * a;
3357         asdl_alias_seq* b;
3358         if (
3359             (_keyword = _PyPegen_expect_token(p, 514))  // token='from'
3360             &&
3361             (a = _loop1_32_rule(p))  // (('.' | '...'))+
3362             &&
3363             (_keyword_1 = _PyPegen_expect_token(p, 513))  // token='import'
3364             &&
3365             (b = import_from_targets_rule(p))  // import_from_targets
3366         )
3367         {
3368             D(fprintf(stderr, "%*c+ import_from[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3369             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3370             if (_token == NULL) {
3371                 D(p->level--);
3372                 return NULL;
3373             }
3374             int _end_lineno = _token->end_lineno;
3375             UNUSED(_end_lineno); // Only used by EXTRA macro
3376             int _end_col_offset = _token->end_col_offset;
3377             UNUSED(_end_col_offset); // Only used by EXTRA macro
3378             _res = _PyAST_ImportFrom ( NULL , b , _PyPegen_seq_count_dots ( a ) , EXTRA );
3379             if (_res == NULL && PyErr_Occurred()) {
3380                 p->error_indicator = 1;
3381                 D(p->level--);
3382                 return NULL;
3383             }
3384             goto done;
3385         }
3386         p->mark = _mark;
3387         D(fprintf(stderr, "%*c%s import_from[%d-%d]: %s failed!\n", p->level, ' ',
3388                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' (('.' | '...'))+ 'import' import_from_targets"));
3389     }
3390     _res = NULL;
3391   done:
3392     D(p->level--);
3393     return _res;
3394 }
3395 
3396 // import_from_targets:
3397 //     | '(' import_from_as_names ','? ')'
3398 //     | import_from_as_names !','
3399 //     | '*'
3400 //     | invalid_import_from_targets
3401 static asdl_alias_seq*
import_from_targets_rule(Parser * p)3402 import_from_targets_rule(Parser *p)
3403 {
3404     D(p->level++);
3405     if (p->error_indicator) {
3406         D(p->level--);
3407         return NULL;
3408     }
3409     asdl_alias_seq* _res = NULL;
3410     int _mark = p->mark;
3411     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3412         p->error_indicator = 1;
3413         D(p->level--);
3414         return NULL;
3415     }
3416     int _start_lineno = p->tokens[_mark]->lineno;
3417     UNUSED(_start_lineno); // Only used by EXTRA macro
3418     int _start_col_offset = p->tokens[_mark]->col_offset;
3419     UNUSED(_start_col_offset); // Only used by EXTRA macro
3420     { // '(' import_from_as_names ','? ')'
3421         if (p->error_indicator) {
3422             D(p->level--);
3423             return NULL;
3424         }
3425         D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3426         Token * _literal;
3427         Token * _literal_1;
3428         void *_opt_var;
3429         UNUSED(_opt_var); // Silence compiler warnings
3430         asdl_alias_seq* a;
3431         if (
3432             (_literal = _PyPegen_expect_token(p, 7))  // token='('
3433             &&
3434             (a = import_from_as_names_rule(p))  // import_from_as_names
3435             &&
3436             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
3437             &&
3438             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
3439         )
3440         {
3441             D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' import_from_as_names ','? ')'"));
3442             _res = a;
3443             if (_res == NULL && PyErr_Occurred()) {
3444                 p->error_indicator = 1;
3445                 D(p->level--);
3446                 return NULL;
3447             }
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     { // import_from_as_names !','
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, "import_from_as_names !','"));
3460         asdl_alias_seq* import_from_as_names_var;
3461         if (
3462             (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
3463             &&
3464             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
3465         )
3466         {
3467             D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names !','"));
3468             _res = import_from_as_names_var;
3469             goto done;
3470         }
3471         p->mark = _mark;
3472         D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3473                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names !','"));
3474     }
3475     { // '*'
3476         if (p->error_indicator) {
3477             D(p->level--);
3478             return NULL;
3479         }
3480         D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*'"));
3481         Token * _literal;
3482         if (
3483             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
3484         )
3485         {
3486             D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*'"));
3487             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3488             if (_token == NULL) {
3489                 D(p->level--);
3490                 return NULL;
3491             }
3492             int _end_lineno = _token->end_lineno;
3493             UNUSED(_end_lineno); // Only used by EXTRA macro
3494             int _end_col_offset = _token->end_col_offset;
3495             UNUSED(_end_col_offset); // Only used by EXTRA macro
3496             _res = ( asdl_alias_seq * ) _PyPegen_singleton_seq ( p , CHECK ( alias_ty , _PyPegen_alias_for_star ( p , EXTRA ) ) );
3497             if (_res == NULL && PyErr_Occurred()) {
3498                 p->error_indicator = 1;
3499                 D(p->level--);
3500                 return NULL;
3501             }
3502             goto done;
3503         }
3504         p->mark = _mark;
3505         D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3506                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*'"));
3507     }
3508     if (p->call_invalid_rules) { // invalid_import_from_targets
3509         if (p->error_indicator) {
3510             D(p->level--);
3511             return NULL;
3512         }
3513         D(fprintf(stderr, "%*c> import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3514         void *invalid_import_from_targets_var;
3515         if (
3516             (invalid_import_from_targets_var = invalid_import_from_targets_rule(p))  // invalid_import_from_targets
3517         )
3518         {
3519             D(fprintf(stderr, "%*c+ import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_import_from_targets"));
3520             _res = invalid_import_from_targets_var;
3521             goto done;
3522         }
3523         p->mark = _mark;
3524         D(fprintf(stderr, "%*c%s import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
3525                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_import_from_targets"));
3526     }
3527     _res = NULL;
3528   done:
3529     D(p->level--);
3530     return _res;
3531 }
3532 
3533 // import_from_as_names: ','.import_from_as_name+
3534 static asdl_alias_seq*
import_from_as_names_rule(Parser * p)3535 import_from_as_names_rule(Parser *p)
3536 {
3537     D(p->level++);
3538     if (p->error_indicator) {
3539         D(p->level--);
3540         return NULL;
3541     }
3542     asdl_alias_seq* _res = NULL;
3543     int _mark = p->mark;
3544     { // ','.import_from_as_name+
3545         if (p->error_indicator) {
3546             D(p->level--);
3547             return NULL;
3548         }
3549         D(fprintf(stderr, "%*c> import_from_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3550         asdl_alias_seq* a;
3551         if (
3552             (a = (asdl_alias_seq*)_gather_33_rule(p))  // ','.import_from_as_name+
3553         )
3554         {
3555             D(fprintf(stderr, "%*c+ import_from_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.import_from_as_name+"));
3556             _res = a;
3557             if (_res == NULL && PyErr_Occurred()) {
3558                 p->error_indicator = 1;
3559                 D(p->level--);
3560                 return NULL;
3561             }
3562             goto done;
3563         }
3564         p->mark = _mark;
3565         D(fprintf(stderr, "%*c%s import_from_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3566                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.import_from_as_name+"));
3567     }
3568     _res = NULL;
3569   done:
3570     D(p->level--);
3571     return _res;
3572 }
3573 
3574 // import_from_as_name: NAME ['as' NAME]
3575 static alias_ty
import_from_as_name_rule(Parser * p)3576 import_from_as_name_rule(Parser *p)
3577 {
3578     D(p->level++);
3579     if (p->error_indicator) {
3580         D(p->level--);
3581         return NULL;
3582     }
3583     alias_ty _res = NULL;
3584     int _mark = p->mark;
3585     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3586         p->error_indicator = 1;
3587         D(p->level--);
3588         return NULL;
3589     }
3590     int _start_lineno = p->tokens[_mark]->lineno;
3591     UNUSED(_start_lineno); // Only used by EXTRA macro
3592     int _start_col_offset = p->tokens[_mark]->col_offset;
3593     UNUSED(_start_col_offset); // Only used by EXTRA macro
3594     { // NAME ['as' NAME]
3595         if (p->error_indicator) {
3596             D(p->level--);
3597             return NULL;
3598         }
3599         D(fprintf(stderr, "%*c> import_from_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3600         expr_ty a;
3601         void *b;
3602         if (
3603             (a = _PyPegen_name_token(p))  // NAME
3604             &&
3605             (b = _tmp_35_rule(p), !p->error_indicator)  // ['as' NAME]
3606         )
3607         {
3608             D(fprintf(stderr, "%*c+ import_from_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ['as' NAME]"));
3609             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3610             if (_token == NULL) {
3611                 D(p->level--);
3612                 return NULL;
3613             }
3614             int _end_lineno = _token->end_lineno;
3615             UNUSED(_end_lineno); // Only used by EXTRA macro
3616             int _end_col_offset = _token->end_col_offset;
3617             UNUSED(_end_col_offset); // Only used by EXTRA macro
3618             _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
3619             if (_res == NULL && PyErr_Occurred()) {
3620                 p->error_indicator = 1;
3621                 D(p->level--);
3622                 return NULL;
3623             }
3624             goto done;
3625         }
3626         p->mark = _mark;
3627         D(fprintf(stderr, "%*c%s import_from_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3628                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ['as' NAME]"));
3629     }
3630     _res = NULL;
3631   done:
3632     D(p->level--);
3633     return _res;
3634 }
3635 
3636 // dotted_as_names: ','.dotted_as_name+
3637 static asdl_alias_seq*
dotted_as_names_rule(Parser * p)3638 dotted_as_names_rule(Parser *p)
3639 {
3640     D(p->level++);
3641     if (p->error_indicator) {
3642         D(p->level--);
3643         return NULL;
3644     }
3645     asdl_alias_seq* _res = NULL;
3646     int _mark = p->mark;
3647     { // ','.dotted_as_name+
3648         if (p->error_indicator) {
3649             D(p->level--);
3650             return NULL;
3651         }
3652         D(fprintf(stderr, "%*c> dotted_as_names[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
3653         asdl_alias_seq* a;
3654         if (
3655             (a = (asdl_alias_seq*)_gather_36_rule(p))  // ','.dotted_as_name+
3656         )
3657         {
3658             D(fprintf(stderr, "%*c+ dotted_as_names[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.dotted_as_name+"));
3659             _res = a;
3660             if (_res == NULL && PyErr_Occurred()) {
3661                 p->error_indicator = 1;
3662                 D(p->level--);
3663                 return NULL;
3664             }
3665             goto done;
3666         }
3667         p->mark = _mark;
3668         D(fprintf(stderr, "%*c%s dotted_as_names[%d-%d]: %s failed!\n", p->level, ' ',
3669                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.dotted_as_name+"));
3670     }
3671     _res = NULL;
3672   done:
3673     D(p->level--);
3674     return _res;
3675 }
3676 
3677 // dotted_as_name: dotted_name ['as' NAME]
3678 static alias_ty
dotted_as_name_rule(Parser * p)3679 dotted_as_name_rule(Parser *p)
3680 {
3681     D(p->level++);
3682     if (p->error_indicator) {
3683         D(p->level--);
3684         return NULL;
3685     }
3686     alias_ty _res = NULL;
3687     int _mark = p->mark;
3688     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3689         p->error_indicator = 1;
3690         D(p->level--);
3691         return NULL;
3692     }
3693     int _start_lineno = p->tokens[_mark]->lineno;
3694     UNUSED(_start_lineno); // Only used by EXTRA macro
3695     int _start_col_offset = p->tokens[_mark]->col_offset;
3696     UNUSED(_start_col_offset); // Only used by EXTRA macro
3697     { // dotted_name ['as' NAME]
3698         if (p->error_indicator) {
3699             D(p->level--);
3700             return NULL;
3701         }
3702         D(fprintf(stderr, "%*c> dotted_as_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
3703         expr_ty a;
3704         void *b;
3705         if (
3706             (a = dotted_name_rule(p))  // dotted_name
3707             &&
3708             (b = _tmp_38_rule(p), !p->error_indicator)  // ['as' NAME]
3709         )
3710         {
3711             D(fprintf(stderr, "%*c+ dotted_as_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name ['as' NAME]"));
3712             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3713             if (_token == NULL) {
3714                 D(p->level--);
3715                 return NULL;
3716             }
3717             int _end_lineno = _token->end_lineno;
3718             UNUSED(_end_lineno); // Only used by EXTRA macro
3719             int _end_col_offset = _token->end_col_offset;
3720             UNUSED(_end_col_offset); // Only used by EXTRA macro
3721             _res = _PyAST_alias ( a -> v . Name . id , ( b ) ? ( ( expr_ty ) b ) -> v . Name . id : NULL , EXTRA );
3722             if (_res == NULL && PyErr_Occurred()) {
3723                 p->error_indicator = 1;
3724                 D(p->level--);
3725                 return NULL;
3726             }
3727             goto done;
3728         }
3729         p->mark = _mark;
3730         D(fprintf(stderr, "%*c%s dotted_as_name[%d-%d]: %s failed!\n", p->level, ' ',
3731                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name ['as' NAME]"));
3732     }
3733     _res = NULL;
3734   done:
3735     D(p->level--);
3736     return _res;
3737 }
3738 
3739 // Left-recursive
3740 // dotted_name: dotted_name '.' NAME | NAME
3741 static expr_ty dotted_name_raw(Parser *);
3742 static expr_ty
dotted_name_rule(Parser * p)3743 dotted_name_rule(Parser *p)
3744 {
3745     D(p->level++);
3746     expr_ty _res = NULL;
3747     if (_PyPegen_is_memoized(p, dotted_name_type, &_res)) {
3748         D(p->level--);
3749         return _res;
3750     }
3751     int _mark = p->mark;
3752     int _resmark = p->mark;
3753     while (1) {
3754         int tmpvar_0 = _PyPegen_update_memo(p, _mark, dotted_name_type, _res);
3755         if (tmpvar_0) {
3756             D(p->level--);
3757             return _res;
3758         }
3759         p->mark = _mark;
3760         p->in_raw_rule++;
3761         void *_raw = dotted_name_raw(p);
3762         p->in_raw_rule--;
3763         if (p->error_indicator)
3764             return NULL;
3765         if (_raw == NULL || p->mark <= _resmark)
3766             break;
3767         _resmark = p->mark;
3768         _res = _raw;
3769     }
3770     p->mark = _resmark;
3771     D(p->level--);
3772     return _res;
3773 }
3774 static expr_ty
dotted_name_raw(Parser * p)3775 dotted_name_raw(Parser *p)
3776 {
3777     D(p->level++);
3778     if (p->error_indicator) {
3779         D(p->level--);
3780         return NULL;
3781     }
3782     expr_ty _res = NULL;
3783     int _mark = p->mark;
3784     { // dotted_name '.' NAME
3785         if (p->error_indicator) {
3786             D(p->level--);
3787             return NULL;
3788         }
3789         D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
3790         Token * _literal;
3791         expr_ty a;
3792         expr_ty b;
3793         if (
3794             (a = dotted_name_rule(p))  // dotted_name
3795             &&
3796             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
3797             &&
3798             (b = _PyPegen_name_token(p))  // NAME
3799         )
3800         {
3801             D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_name '.' NAME"));
3802             _res = _PyPegen_join_names_with_dot ( p , a , b );
3803             if (_res == NULL && PyErr_Occurred()) {
3804                 p->error_indicator = 1;
3805                 D(p->level--);
3806                 return NULL;
3807             }
3808             goto done;
3809         }
3810         p->mark = _mark;
3811         D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
3812                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_name '.' NAME"));
3813     }
3814     { // NAME
3815         if (p->error_indicator) {
3816             D(p->level--);
3817             return NULL;
3818         }
3819         D(fprintf(stderr, "%*c> dotted_name[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
3820         expr_ty name_var;
3821         if (
3822             (name_var = _PyPegen_name_token(p))  // NAME
3823         )
3824         {
3825             D(fprintf(stderr, "%*c+ dotted_name[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
3826             _res = name_var;
3827             goto done;
3828         }
3829         p->mark = _mark;
3830         D(fprintf(stderr, "%*c%s dotted_name[%d-%d]: %s failed!\n", p->level, ' ',
3831                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
3832     }
3833     _res = NULL;
3834   done:
3835     D(p->level--);
3836     return _res;
3837 }
3838 
3839 // if_stmt:
3840 //     | invalid_if_stmt
3841 //     | 'if' named_expression ':' block elif_stmt
3842 //     | 'if' named_expression ':' block else_block?
3843 static stmt_ty
if_stmt_rule(Parser * p)3844 if_stmt_rule(Parser *p)
3845 {
3846     D(p->level++);
3847     if (p->error_indicator) {
3848         D(p->level--);
3849         return NULL;
3850     }
3851     stmt_ty _res = NULL;
3852     int _mark = p->mark;
3853     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3854         p->error_indicator = 1;
3855         D(p->level--);
3856         return NULL;
3857     }
3858     int _start_lineno = p->tokens[_mark]->lineno;
3859     UNUSED(_start_lineno); // Only used by EXTRA macro
3860     int _start_col_offset = p->tokens[_mark]->col_offset;
3861     UNUSED(_start_col_offset); // Only used by EXTRA macro
3862     if (p->call_invalid_rules) { // invalid_if_stmt
3863         if (p->error_indicator) {
3864             D(p->level--);
3865             return NULL;
3866         }
3867         D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_if_stmt"));
3868         void *invalid_if_stmt_var;
3869         if (
3870             (invalid_if_stmt_var = invalid_if_stmt_rule(p))  // invalid_if_stmt
3871         )
3872         {
3873             D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_if_stmt"));
3874             _res = invalid_if_stmt_var;
3875             goto done;
3876         }
3877         p->mark = _mark;
3878         D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3879                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_if_stmt"));
3880     }
3881     { // 'if' named_expression ':' block elif_stmt
3882         if (p->error_indicator) {
3883             D(p->level--);
3884             return NULL;
3885         }
3886         D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
3887         Token * _keyword;
3888         Token * _literal;
3889         expr_ty a;
3890         asdl_stmt_seq* b;
3891         stmt_ty c;
3892         if (
3893             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
3894             &&
3895             (a = named_expression_rule(p))  // named_expression
3896             &&
3897             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
3898             &&
3899             (b = block_rule(p))  // block
3900             &&
3901             (c = elif_stmt_rule(p))  // elif_stmt
3902         )
3903         {
3904             D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
3905             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3906             if (_token == NULL) {
3907                 D(p->level--);
3908                 return NULL;
3909             }
3910             int _end_lineno = _token->end_lineno;
3911             UNUSED(_end_lineno); // Only used by EXTRA macro
3912             int _end_col_offset = _token->end_col_offset;
3913             UNUSED(_end_col_offset); // Only used by EXTRA macro
3914             _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq * , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
3915             if (_res == NULL && PyErr_Occurred()) {
3916                 p->error_indicator = 1;
3917                 D(p->level--);
3918                 return NULL;
3919             }
3920             goto done;
3921         }
3922         p->mark = _mark;
3923         D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3924                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block elif_stmt"));
3925     }
3926     { // 'if' named_expression ':' block else_block?
3927         if (p->error_indicator) {
3928             D(p->level--);
3929             return NULL;
3930         }
3931         D(fprintf(stderr, "%*c> if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
3932         Token * _keyword;
3933         Token * _literal;
3934         expr_ty a;
3935         asdl_stmt_seq* b;
3936         void *c;
3937         if (
3938             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
3939             &&
3940             (a = named_expression_rule(p))  // named_expression
3941             &&
3942             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
3943             &&
3944             (b = block_rule(p))  // block
3945             &&
3946             (c = else_block_rule(p), !p->error_indicator)  // else_block?
3947         )
3948         {
3949             D(fprintf(stderr, "%*c+ if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' block else_block?"));
3950             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
3951             if (_token == NULL) {
3952                 D(p->level--);
3953                 return NULL;
3954             }
3955             int _end_lineno = _token->end_lineno;
3956             UNUSED(_end_lineno); // Only used by EXTRA macro
3957             int _end_col_offset = _token->end_col_offset;
3958             UNUSED(_end_col_offset); // Only used by EXTRA macro
3959             _res = _PyAST_If ( a , b , c , EXTRA );
3960             if (_res == NULL && PyErr_Occurred()) {
3961                 p->error_indicator = 1;
3962                 D(p->level--);
3963                 return NULL;
3964             }
3965             goto done;
3966         }
3967         p->mark = _mark;
3968         D(fprintf(stderr, "%*c%s if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
3969                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' block else_block?"));
3970     }
3971     _res = NULL;
3972   done:
3973     D(p->level--);
3974     return _res;
3975 }
3976 
3977 // elif_stmt:
3978 //     | invalid_elif_stmt
3979 //     | 'elif' named_expression ':' block elif_stmt
3980 //     | 'elif' named_expression ':' block else_block?
3981 static stmt_ty
elif_stmt_rule(Parser * p)3982 elif_stmt_rule(Parser *p)
3983 {
3984     D(p->level++);
3985     if (p->error_indicator) {
3986         D(p->level--);
3987         return NULL;
3988     }
3989     stmt_ty _res = NULL;
3990     int _mark = p->mark;
3991     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
3992         p->error_indicator = 1;
3993         D(p->level--);
3994         return NULL;
3995     }
3996     int _start_lineno = p->tokens[_mark]->lineno;
3997     UNUSED(_start_lineno); // Only used by EXTRA macro
3998     int _start_col_offset = p->tokens[_mark]->col_offset;
3999     UNUSED(_start_col_offset); // Only used by EXTRA macro
4000     if (p->call_invalid_rules) { // invalid_elif_stmt
4001         if (p->error_indicator) {
4002             D(p->level--);
4003             return NULL;
4004         }
4005         D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_elif_stmt"));
4006         void *invalid_elif_stmt_var;
4007         if (
4008             (invalid_elif_stmt_var = invalid_elif_stmt_rule(p))  // invalid_elif_stmt
4009         )
4010         {
4011             D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_elif_stmt"));
4012             _res = invalid_elif_stmt_var;
4013             goto done;
4014         }
4015         p->mark = _mark;
4016         D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4017                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_elif_stmt"));
4018     }
4019     { // 'elif' named_expression ':' block elif_stmt
4020         if (p->error_indicator) {
4021             D(p->level--);
4022             return NULL;
4023         }
4024         D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
4025         Token * _keyword;
4026         Token * _literal;
4027         expr_ty a;
4028         asdl_stmt_seq* b;
4029         stmt_ty c;
4030         if (
4031             (_keyword = _PyPegen_expect_token(p, 515))  // token='elif'
4032             &&
4033             (a = named_expression_rule(p))  // named_expression
4034             &&
4035             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
4036             &&
4037             (b = block_rule(p))  // block
4038             &&
4039             (c = elif_stmt_rule(p))  // elif_stmt
4040         )
4041         {
4042             D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
4043             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4044             if (_token == NULL) {
4045                 D(p->level--);
4046                 return NULL;
4047             }
4048             int _end_lineno = _token->end_lineno;
4049             UNUSED(_end_lineno); // Only used by EXTRA macro
4050             int _end_col_offset = _token->end_col_offset;
4051             UNUSED(_end_col_offset); // Only used by EXTRA macro
4052             _res = _PyAST_If ( a , b , CHECK ( asdl_stmt_seq * , _PyPegen_singleton_seq ( p , c ) ) , EXTRA );
4053             if (_res == NULL && PyErr_Occurred()) {
4054                 p->error_indicator = 1;
4055                 D(p->level--);
4056                 return NULL;
4057             }
4058             goto done;
4059         }
4060         p->mark = _mark;
4061         D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4062                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block elif_stmt"));
4063     }
4064     { // 'elif' named_expression ':' block else_block?
4065         if (p->error_indicator) {
4066             D(p->level--);
4067             return NULL;
4068         }
4069         D(fprintf(stderr, "%*c> elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
4070         Token * _keyword;
4071         Token * _literal;
4072         expr_ty a;
4073         asdl_stmt_seq* b;
4074         void *c;
4075         if (
4076             (_keyword = _PyPegen_expect_token(p, 515))  // token='elif'
4077             &&
4078             (a = named_expression_rule(p))  // named_expression
4079             &&
4080             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
4081             &&
4082             (b = block_rule(p))  // block
4083             &&
4084             (c = else_block_rule(p), !p->error_indicator)  // else_block?
4085         )
4086         {
4087             D(fprintf(stderr, "%*c+ elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' block else_block?"));
4088             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4089             if (_token == NULL) {
4090                 D(p->level--);
4091                 return NULL;
4092             }
4093             int _end_lineno = _token->end_lineno;
4094             UNUSED(_end_lineno); // Only used by EXTRA macro
4095             int _end_col_offset = _token->end_col_offset;
4096             UNUSED(_end_col_offset); // Only used by EXTRA macro
4097             _res = _PyAST_If ( a , b , c , EXTRA );
4098             if (_res == NULL && PyErr_Occurred()) {
4099                 p->error_indicator = 1;
4100                 D(p->level--);
4101                 return NULL;
4102             }
4103             goto done;
4104         }
4105         p->mark = _mark;
4106         D(fprintf(stderr, "%*c%s elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4107                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' block else_block?"));
4108     }
4109     _res = NULL;
4110   done:
4111     D(p->level--);
4112     return _res;
4113 }
4114 
4115 // else_block: invalid_else_stmt | 'else' &&':' block
4116 static asdl_stmt_seq*
else_block_rule(Parser * p)4117 else_block_rule(Parser *p)
4118 {
4119     D(p->level++);
4120     if (p->error_indicator) {
4121         D(p->level--);
4122         return NULL;
4123     }
4124     asdl_stmt_seq* _res = NULL;
4125     int _mark = p->mark;
4126     if (p->call_invalid_rules) { // invalid_else_stmt
4127         if (p->error_indicator) {
4128             D(p->level--);
4129             return NULL;
4130         }
4131         D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
4132         void *invalid_else_stmt_var;
4133         if (
4134             (invalid_else_stmt_var = invalid_else_stmt_rule(p))  // invalid_else_stmt
4135         )
4136         {
4137             D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_else_stmt"));
4138             _res = invalid_else_stmt_var;
4139             goto done;
4140         }
4141         p->mark = _mark;
4142         D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
4143                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_else_stmt"));
4144     }
4145     { // 'else' &&':' block
4146         if (p->error_indicator) {
4147             D(p->level--);
4148             return NULL;
4149         }
4150         D(fprintf(stderr, "%*c> else_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
4151         Token * _keyword;
4152         Token * _literal;
4153         asdl_stmt_seq* b;
4154         if (
4155             (_keyword = _PyPegen_expect_token(p, 516))  // token='else'
4156             &&
4157             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
4158             &&
4159             (b = block_rule(p))  // block
4160         )
4161         {
4162             D(fprintf(stderr, "%*c+ else_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' &&':' block"));
4163             _res = b;
4164             if (_res == NULL && PyErr_Occurred()) {
4165                 p->error_indicator = 1;
4166                 D(p->level--);
4167                 return NULL;
4168             }
4169             goto done;
4170         }
4171         p->mark = _mark;
4172         D(fprintf(stderr, "%*c%s else_block[%d-%d]: %s failed!\n", p->level, ' ',
4173                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' &&':' block"));
4174     }
4175     _res = NULL;
4176   done:
4177     D(p->level--);
4178     return _res;
4179 }
4180 
4181 // while_stmt: invalid_while_stmt | 'while' named_expression ':' block else_block?
4182 static stmt_ty
while_stmt_rule(Parser * p)4183 while_stmt_rule(Parser *p)
4184 {
4185     D(p->level++);
4186     if (p->error_indicator) {
4187         D(p->level--);
4188         return NULL;
4189     }
4190     stmt_ty _res = NULL;
4191     int _mark = p->mark;
4192     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4193         p->error_indicator = 1;
4194         D(p->level--);
4195         return NULL;
4196     }
4197     int _start_lineno = p->tokens[_mark]->lineno;
4198     UNUSED(_start_lineno); // Only used by EXTRA macro
4199     int _start_col_offset = p->tokens[_mark]->col_offset;
4200     UNUSED(_start_col_offset); // Only used by EXTRA macro
4201     if (p->call_invalid_rules) { // invalid_while_stmt
4202         if (p->error_indicator) {
4203             D(p->level--);
4204             return NULL;
4205         }
4206         D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_while_stmt"));
4207         void *invalid_while_stmt_var;
4208         if (
4209             (invalid_while_stmt_var = invalid_while_stmt_rule(p))  // invalid_while_stmt
4210         )
4211         {
4212             D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_while_stmt"));
4213             _res = invalid_while_stmt_var;
4214             goto done;
4215         }
4216         p->mark = _mark;
4217         D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4218                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_while_stmt"));
4219     }
4220     { // 'while' named_expression ':' block else_block?
4221         if (p->error_indicator) {
4222             D(p->level--);
4223             return NULL;
4224         }
4225         D(fprintf(stderr, "%*c> while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
4226         Token * _keyword;
4227         Token * _literal;
4228         expr_ty a;
4229         asdl_stmt_seq* b;
4230         void *c;
4231         if (
4232             (_keyword = _PyPegen_expect_token(p, 512))  // token='while'
4233             &&
4234             (a = named_expression_rule(p))  // named_expression
4235             &&
4236             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
4237             &&
4238             (b = block_rule(p))  // block
4239             &&
4240             (c = else_block_rule(p), !p->error_indicator)  // else_block?
4241         )
4242         {
4243             D(fprintf(stderr, "%*c+ while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' block else_block?"));
4244             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4245             if (_token == NULL) {
4246                 D(p->level--);
4247                 return NULL;
4248             }
4249             int _end_lineno = _token->end_lineno;
4250             UNUSED(_end_lineno); // Only used by EXTRA macro
4251             int _end_col_offset = _token->end_col_offset;
4252             UNUSED(_end_col_offset); // Only used by EXTRA macro
4253             _res = _PyAST_While ( a , b , c , EXTRA );
4254             if (_res == NULL && PyErr_Occurred()) {
4255                 p->error_indicator = 1;
4256                 D(p->level--);
4257                 return NULL;
4258             }
4259             goto done;
4260         }
4261         p->mark = _mark;
4262         D(fprintf(stderr, "%*c%s while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4263                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' block else_block?"));
4264     }
4265     _res = NULL;
4266   done:
4267     D(p->level--);
4268     return _res;
4269 }
4270 
4271 // for_stmt:
4272 //     | invalid_for_stmt
4273 //     | 'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?
4274 //     | ASYNC 'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?
4275 //     | invalid_for_target
4276 static stmt_ty
for_stmt_rule(Parser * p)4277 for_stmt_rule(Parser *p)
4278 {
4279     D(p->level++);
4280     if (p->error_indicator) {
4281         D(p->level--);
4282         return NULL;
4283     }
4284     stmt_ty _res = NULL;
4285     int _mark = p->mark;
4286     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4287         p->error_indicator = 1;
4288         D(p->level--);
4289         return NULL;
4290     }
4291     int _start_lineno = p->tokens[_mark]->lineno;
4292     UNUSED(_start_lineno); // Only used by EXTRA macro
4293     int _start_col_offset = p->tokens[_mark]->col_offset;
4294     UNUSED(_start_col_offset); // Only used by EXTRA macro
4295     if (p->call_invalid_rules) { // invalid_for_stmt
4296         if (p->error_indicator) {
4297             D(p->level--);
4298             return NULL;
4299         }
4300         D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
4301         void *invalid_for_stmt_var;
4302         if (
4303             (invalid_for_stmt_var = invalid_for_stmt_rule(p))  // invalid_for_stmt
4304         )
4305         {
4306             D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_stmt"));
4307             _res = invalid_for_stmt_var;
4308             goto done;
4309         }
4310         p->mark = _mark;
4311         D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4312                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_stmt"));
4313     }
4314     { // 'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?
4315         if (p->error_indicator) {
4316             D(p->level--);
4317             return NULL;
4318         }
4319         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?"));
4320         int _cut_var = 0;
4321         Token * _keyword;
4322         Token * _keyword_1;
4323         Token * _literal;
4324         asdl_stmt_seq* b;
4325         void *el;
4326         expr_ty ex;
4327         expr_ty t;
4328         void *tc;
4329         if (
4330             (_keyword = _PyPegen_expect_token(p, 517))  // token='for'
4331             &&
4332             (t = star_targets_rule(p))  // star_targets
4333             &&
4334             (_keyword_1 = _PyPegen_expect_token(p, 518))  // token='in'
4335             &&
4336             (_cut_var = 1)
4337             &&
4338             (ex = star_expressions_rule(p))  // star_expressions
4339             &&
4340             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
4341             &&
4342             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
4343             &&
4344             (b = block_rule(p))  // block
4345             &&
4346             (el = else_block_rule(p), !p->error_indicator)  // else_block?
4347         )
4348         {
4349             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?"));
4350             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4351             if (_token == NULL) {
4352                 D(p->level--);
4353                 return NULL;
4354             }
4355             int _end_lineno = _token->end_lineno;
4356             UNUSED(_end_lineno); // Only used by EXTRA macro
4357             int _end_col_offset = _token->end_col_offset;
4358             UNUSED(_end_col_offset); // Only used by EXTRA macro
4359             _res = _PyAST_For ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
4360             if (_res == NULL && PyErr_Occurred()) {
4361                 p->error_indicator = 1;
4362                 D(p->level--);
4363                 return NULL;
4364             }
4365             goto done;
4366         }
4367         p->mark = _mark;
4368         D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4369                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?"));
4370         if (_cut_var) {
4371             D(p->level--);
4372             return NULL;
4373         }
4374     }
4375     { // ASYNC 'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?
4376         if (p->error_indicator) {
4377             D(p->level--);
4378             return NULL;
4379         }
4380         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?"));
4381         int _cut_var = 0;
4382         Token * _keyword;
4383         Token * _keyword_1;
4384         Token * _literal;
4385         Token * async_var;
4386         asdl_stmt_seq* b;
4387         void *el;
4388         expr_ty ex;
4389         expr_ty t;
4390         void *tc;
4391         if (
4392             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
4393             &&
4394             (_keyword = _PyPegen_expect_token(p, 517))  // token='for'
4395             &&
4396             (t = star_targets_rule(p))  // star_targets
4397             &&
4398             (_keyword_1 = _PyPegen_expect_token(p, 518))  // token='in'
4399             &&
4400             (_cut_var = 1)
4401             &&
4402             (ex = star_expressions_rule(p))  // star_expressions
4403             &&
4404             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
4405             &&
4406             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
4407             &&
4408             (b = block_rule(p))  // block
4409             &&
4410             (el = else_block_rule(p), !p->error_indicator)  // else_block?
4411         )
4412         {
4413             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?"));
4414             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4415             if (_token == NULL) {
4416                 D(p->level--);
4417                 return NULL;
4418             }
4419             int _end_lineno = _token->end_lineno;
4420             UNUSED(_end_lineno); // Only used by EXTRA macro
4421             int _end_col_offset = _token->end_col_offset;
4422             UNUSED(_end_col_offset); // Only used by EXTRA macro
4423             _res = CHECK_VERSION ( stmt_ty , 5 , "Async for loops are" , _PyAST_AsyncFor ( t , ex , b , el , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
4424             if (_res == NULL && PyErr_Occurred()) {
4425                 p->error_indicator = 1;
4426                 D(p->level--);
4427                 return NULL;
4428             }
4429             goto done;
4430         }
4431         p->mark = _mark;
4432         D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4433                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'for' star_targets 'in' ~ star_expressions &&':' TYPE_COMMENT? block else_block?"));
4434         if (_cut_var) {
4435             D(p->level--);
4436             return NULL;
4437         }
4438     }
4439     if (p->call_invalid_rules) { // invalid_for_target
4440         if (p->error_indicator) {
4441             D(p->level--);
4442             return NULL;
4443         }
4444         D(fprintf(stderr, "%*c> for_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
4445         void *invalid_for_target_var;
4446         if (
4447             (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
4448         )
4449         {
4450             D(fprintf(stderr, "%*c+ for_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
4451             _res = invalid_for_target_var;
4452             goto done;
4453         }
4454         p->mark = _mark;
4455         D(fprintf(stderr, "%*c%s for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4456                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
4457     }
4458     _res = NULL;
4459   done:
4460     D(p->level--);
4461     return _res;
4462 }
4463 
4464 // with_stmt:
4465 //     | invalid_with_stmt_indent
4466 //     | 'with' '(' ','.with_item+ ','? ')' ':' block
4467 //     | 'with' ','.with_item+ ':' TYPE_COMMENT? block
4468 //     | ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
4469 //     | ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
4470 //     | invalid_with_stmt
4471 static stmt_ty
with_stmt_rule(Parser * p)4472 with_stmt_rule(Parser *p)
4473 {
4474     D(p->level++);
4475     if (p->error_indicator) {
4476         D(p->level--);
4477         return NULL;
4478     }
4479     stmt_ty _res = NULL;
4480     int _mark = p->mark;
4481     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4482         p->error_indicator = 1;
4483         D(p->level--);
4484         return NULL;
4485     }
4486     int _start_lineno = p->tokens[_mark]->lineno;
4487     UNUSED(_start_lineno); // Only used by EXTRA macro
4488     int _start_col_offset = p->tokens[_mark]->col_offset;
4489     UNUSED(_start_col_offset); // Only used by EXTRA macro
4490     if (p->call_invalid_rules) { // invalid_with_stmt_indent
4491         if (p->error_indicator) {
4492             D(p->level--);
4493             return NULL;
4494         }
4495         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
4496         void *invalid_with_stmt_indent_var;
4497         if (
4498             (invalid_with_stmt_indent_var = invalid_with_stmt_indent_rule(p))  // invalid_with_stmt_indent
4499         )
4500         {
4501             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt_indent"));
4502             _res = invalid_with_stmt_indent_var;
4503             goto done;
4504         }
4505         p->mark = _mark;
4506         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4507                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt_indent"));
4508     }
4509     { // 'with' '(' ','.with_item+ ','? ')' ':' block
4510         if (p->error_indicator) {
4511             D(p->level--);
4512             return NULL;
4513         }
4514         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' block"));
4515         Token * _keyword;
4516         Token * _literal;
4517         Token * _literal_1;
4518         Token * _literal_2;
4519         void *_opt_var;
4520         UNUSED(_opt_var); // Silence compiler warnings
4521         asdl_withitem_seq* a;
4522         asdl_stmt_seq* b;
4523         if (
4524             (_keyword = _PyPegen_expect_token(p, 519))  // token='with'
4525             &&
4526             (_literal = _PyPegen_expect_token(p, 7))  // token='('
4527             &&
4528             (a = (asdl_withitem_seq*)_gather_39_rule(p))  // ','.with_item+
4529             &&
4530             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
4531             &&
4532             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4533             &&
4534             (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
4535             &&
4536             (b = block_rule(p))  // block
4537         )
4538         {
4539             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' block"));
4540             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4541             if (_token == NULL) {
4542                 D(p->level--);
4543                 return NULL;
4544             }
4545             int _end_lineno = _token->end_lineno;
4546             UNUSED(_end_lineno); // Only used by EXTRA macro
4547             int _end_col_offset = _token->end_col_offset;
4548             UNUSED(_end_col_offset); // Only used by EXTRA macro
4549             _res = _PyAST_With ( a , b , NULL , EXTRA );
4550             if (_res == NULL && PyErr_Occurred()) {
4551                 p->error_indicator = 1;
4552                 D(p->level--);
4553                 return NULL;
4554             }
4555             goto done;
4556         }
4557         p->mark = _mark;
4558         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4559                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' '(' ','.with_item+ ','? ')' ':' block"));
4560     }
4561     { // 'with' ','.with_item+ ':' TYPE_COMMENT? block
4562         if (p->error_indicator) {
4563             D(p->level--);
4564             return NULL;
4565         }
4566         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
4567         Token * _keyword;
4568         Token * _literal;
4569         asdl_withitem_seq* a;
4570         asdl_stmt_seq* b;
4571         void *tc;
4572         if (
4573             (_keyword = _PyPegen_expect_token(p, 519))  // token='with'
4574             &&
4575             (a = (asdl_withitem_seq*)_gather_41_rule(p))  // ','.with_item+
4576             &&
4577             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
4578             &&
4579             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
4580             &&
4581             (b = block_rule(p))  // block
4582         )
4583         {
4584             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
4585             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4586             if (_token == NULL) {
4587                 D(p->level--);
4588                 return NULL;
4589             }
4590             int _end_lineno = _token->end_lineno;
4591             UNUSED(_end_lineno); // Only used by EXTRA macro
4592             int _end_col_offset = _token->end_col_offset;
4593             UNUSED(_end_col_offset); // Only used by EXTRA macro
4594             _res = _PyAST_With ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA );
4595             if (_res == NULL && PyErr_Occurred()) {
4596                 p->error_indicator = 1;
4597                 D(p->level--);
4598                 return NULL;
4599             }
4600             goto done;
4601         }
4602         p->mark = _mark;
4603         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4604                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with' ','.with_item+ ':' TYPE_COMMENT? block"));
4605     }
4606     { // ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block
4607         if (p->error_indicator) {
4608             D(p->level--);
4609             return NULL;
4610         }
4611         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block"));
4612         Token * _keyword;
4613         Token * _literal;
4614         Token * _literal_1;
4615         Token * _literal_2;
4616         void *_opt_var;
4617         UNUSED(_opt_var); // Silence compiler warnings
4618         asdl_withitem_seq* a;
4619         Token * async_var;
4620         asdl_stmt_seq* b;
4621         if (
4622             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
4623             &&
4624             (_keyword = _PyPegen_expect_token(p, 519))  // token='with'
4625             &&
4626             (_literal = _PyPegen_expect_token(p, 7))  // token='('
4627             &&
4628             (a = (asdl_withitem_seq*)_gather_43_rule(p))  // ','.with_item+
4629             &&
4630             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
4631             &&
4632             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
4633             &&
4634             (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
4635             &&
4636             (b = block_rule(p))  // block
4637         )
4638         {
4639             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block"));
4640             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4641             if (_token == NULL) {
4642                 D(p->level--);
4643                 return NULL;
4644             }
4645             int _end_lineno = _token->end_lineno;
4646             UNUSED(_end_lineno); // Only used by EXTRA macro
4647             int _end_col_offset = _token->end_col_offset;
4648             UNUSED(_end_col_offset); // Only used by EXTRA macro
4649             _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NULL , EXTRA ) );
4650             if (_res == NULL && PyErr_Occurred()) {
4651                 p->error_indicator = 1;
4652                 D(p->level--);
4653                 return NULL;
4654             }
4655             goto done;
4656         }
4657         p->mark = _mark;
4658         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4659                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'with' '(' ','.with_item+ ','? ')' ':' block"));
4660     }
4661     { // ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block
4662         if (p->error_indicator) {
4663             D(p->level--);
4664             return NULL;
4665         }
4666         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
4667         Token * _keyword;
4668         Token * _literal;
4669         asdl_withitem_seq* a;
4670         Token * async_var;
4671         asdl_stmt_seq* b;
4672         void *tc;
4673         if (
4674             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
4675             &&
4676             (_keyword = _PyPegen_expect_token(p, 519))  // token='with'
4677             &&
4678             (a = (asdl_withitem_seq*)_gather_45_rule(p))  // ','.with_item+
4679             &&
4680             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
4681             &&
4682             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
4683             &&
4684             (b = block_rule(p))  // block
4685         )
4686         {
4687             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
4688             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4689             if (_token == NULL) {
4690                 D(p->level--);
4691                 return NULL;
4692             }
4693             int _end_lineno = _token->end_lineno;
4694             UNUSED(_end_lineno); // Only used by EXTRA macro
4695             int _end_col_offset = _token->end_col_offset;
4696             UNUSED(_end_col_offset); // Only used by EXTRA macro
4697             _res = CHECK_VERSION ( stmt_ty , 5 , "Async with statements are" , _PyAST_AsyncWith ( a , b , NEW_TYPE_COMMENT ( p , tc ) , EXTRA ) );
4698             if (_res == NULL && PyErr_Occurred()) {
4699                 p->error_indicator = 1;
4700                 D(p->level--);
4701                 return NULL;
4702             }
4703             goto done;
4704         }
4705         p->mark = _mark;
4706         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4707                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'with' ','.with_item+ ':' TYPE_COMMENT? block"));
4708     }
4709     if (p->call_invalid_rules) { // invalid_with_stmt
4710         if (p->error_indicator) {
4711             D(p->level--);
4712             return NULL;
4713         }
4714         D(fprintf(stderr, "%*c> with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt"));
4715         void *invalid_with_stmt_var;
4716         if (
4717             (invalid_with_stmt_var = invalid_with_stmt_rule(p))  // invalid_with_stmt
4718         )
4719         {
4720             D(fprintf(stderr, "%*c+ with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_stmt"));
4721             _res = invalid_with_stmt_var;
4722             goto done;
4723         }
4724         p->mark = _mark;
4725         D(fprintf(stderr, "%*c%s with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4726                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_stmt"));
4727     }
4728     _res = NULL;
4729   done:
4730     D(p->level--);
4731     return _res;
4732 }
4733 
4734 // with_item:
4735 //     | expression 'as' star_target &(',' | ')' | ':')
4736 //     | invalid_with_item
4737 //     | expression
4738 static withitem_ty
with_item_rule(Parser * p)4739 with_item_rule(Parser *p)
4740 {
4741     D(p->level++);
4742     if (p->error_indicator) {
4743         D(p->level--);
4744         return NULL;
4745     }
4746     withitem_ty _res = NULL;
4747     int _mark = p->mark;
4748     { // expression 'as' star_target &(',' | ')' | ':')
4749         if (p->error_indicator) {
4750             D(p->level--);
4751             return NULL;
4752         }
4753         D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
4754         Token * _keyword;
4755         expr_ty e;
4756         expr_ty t;
4757         if (
4758             (e = expression_rule(p))  // expression
4759             &&
4760             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
4761             &&
4762             (t = star_target_rule(p))  // star_target
4763             &&
4764             _PyPegen_lookahead(1, _tmp_47_rule, p)
4765         )
4766         {
4767             D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
4768             _res = _PyAST_withitem ( e , t , p -> arena );
4769             if (_res == NULL && PyErr_Occurred()) {
4770                 p->error_indicator = 1;
4771                 D(p->level--);
4772                 return NULL;
4773             }
4774             goto done;
4775         }
4776         p->mark = _mark;
4777         D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
4778                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' star_target &(',' | ')' | ':')"));
4779     }
4780     if (p->call_invalid_rules) { // invalid_with_item
4781         if (p->error_indicator) {
4782             D(p->level--);
4783             return NULL;
4784         }
4785         D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
4786         void *invalid_with_item_var;
4787         if (
4788             (invalid_with_item_var = invalid_with_item_rule(p))  // invalid_with_item
4789         )
4790         {
4791             D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_with_item"));
4792             _res = invalid_with_item_var;
4793             goto done;
4794         }
4795         p->mark = _mark;
4796         D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
4797                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_with_item"));
4798     }
4799     { // expression
4800         if (p->error_indicator) {
4801             D(p->level--);
4802             return NULL;
4803         }
4804         D(fprintf(stderr, "%*c> with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
4805         expr_ty e;
4806         if (
4807             (e = expression_rule(p))  // expression
4808         )
4809         {
4810             D(fprintf(stderr, "%*c+ with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
4811             _res = _PyAST_withitem ( e , NULL , p -> arena );
4812             if (_res == NULL && PyErr_Occurred()) {
4813                 p->error_indicator = 1;
4814                 D(p->level--);
4815                 return NULL;
4816             }
4817             goto done;
4818         }
4819         p->mark = _mark;
4820         D(fprintf(stderr, "%*c%s with_item[%d-%d]: %s failed!\n", p->level, ' ',
4821                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
4822     }
4823     _res = NULL;
4824   done:
4825     D(p->level--);
4826     return _res;
4827 }
4828 
4829 // try_stmt:
4830 //     | invalid_try_stmt
4831 //     | 'try' &&':' block finally_block
4832 //     | 'try' &&':' block except_block+ else_block? finally_block?
4833 static stmt_ty
try_stmt_rule(Parser * p)4834 try_stmt_rule(Parser *p)
4835 {
4836     D(p->level++);
4837     if (p->error_indicator) {
4838         D(p->level--);
4839         return NULL;
4840     }
4841     stmt_ty _res = NULL;
4842     int _mark = p->mark;
4843     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4844         p->error_indicator = 1;
4845         D(p->level--);
4846         return NULL;
4847     }
4848     int _start_lineno = p->tokens[_mark]->lineno;
4849     UNUSED(_start_lineno); // Only used by EXTRA macro
4850     int _start_col_offset = p->tokens[_mark]->col_offset;
4851     UNUSED(_start_col_offset); // Only used by EXTRA macro
4852     if (p->call_invalid_rules) { // invalid_try_stmt
4853         if (p->error_indicator) {
4854             D(p->level--);
4855             return NULL;
4856         }
4857         D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
4858         void *invalid_try_stmt_var;
4859         if (
4860             (invalid_try_stmt_var = invalid_try_stmt_rule(p))  // invalid_try_stmt
4861         )
4862         {
4863             D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_try_stmt"));
4864             _res = invalid_try_stmt_var;
4865             goto done;
4866         }
4867         p->mark = _mark;
4868         D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4869                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_try_stmt"));
4870     }
4871     { // 'try' &&':' block finally_block
4872         if (p->error_indicator) {
4873             D(p->level--);
4874             return NULL;
4875         }
4876         D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
4877         Token * _keyword;
4878         Token * _literal;
4879         asdl_stmt_seq* b;
4880         asdl_stmt_seq* f;
4881         if (
4882             (_keyword = _PyPegen_expect_token(p, 511))  // token='try'
4883             &&
4884             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
4885             &&
4886             (b = block_rule(p))  // block
4887             &&
4888             (f = finally_block_rule(p))  // finally_block
4889         )
4890         {
4891             D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block finally_block"));
4892             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4893             if (_token == NULL) {
4894                 D(p->level--);
4895                 return NULL;
4896             }
4897             int _end_lineno = _token->end_lineno;
4898             UNUSED(_end_lineno); // Only used by EXTRA macro
4899             int _end_col_offset = _token->end_col_offset;
4900             UNUSED(_end_col_offset); // Only used by EXTRA macro
4901             _res = _PyAST_Try ( b , NULL , NULL , f , EXTRA );
4902             if (_res == NULL && PyErr_Occurred()) {
4903                 p->error_indicator = 1;
4904                 D(p->level--);
4905                 return NULL;
4906             }
4907             goto done;
4908         }
4909         p->mark = _mark;
4910         D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4911                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block finally_block"));
4912     }
4913     { // 'try' &&':' block except_block+ else_block? finally_block?
4914         if (p->error_indicator) {
4915             D(p->level--);
4916             return NULL;
4917         }
4918         D(fprintf(stderr, "%*c> try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
4919         Token * _keyword;
4920         Token * _literal;
4921         asdl_stmt_seq* b;
4922         void *el;
4923         asdl_excepthandler_seq* ex;
4924         void *f;
4925         if (
4926             (_keyword = _PyPegen_expect_token(p, 511))  // token='try'
4927             &&
4928             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
4929             &&
4930             (b = block_rule(p))  // block
4931             &&
4932             (ex = (asdl_excepthandler_seq*)_loop1_48_rule(p))  // except_block+
4933             &&
4934             (el = else_block_rule(p), !p->error_indicator)  // else_block?
4935             &&
4936             (f = finally_block_rule(p), !p->error_indicator)  // finally_block?
4937         )
4938         {
4939             D(fprintf(stderr, "%*c+ try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
4940             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
4941             if (_token == NULL) {
4942                 D(p->level--);
4943                 return NULL;
4944             }
4945             int _end_lineno = _token->end_lineno;
4946             UNUSED(_end_lineno); // Only used by EXTRA macro
4947             int _end_col_offset = _token->end_col_offset;
4948             UNUSED(_end_col_offset); // Only used by EXTRA macro
4949             _res = _PyAST_Try ( b , ex , el , f , EXTRA );
4950             if (_res == NULL && PyErr_Occurred()) {
4951                 p->error_indicator = 1;
4952                 D(p->level--);
4953                 return NULL;
4954             }
4955             goto done;
4956         }
4957         p->mark = _mark;
4958         D(fprintf(stderr, "%*c%s try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
4959                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' &&':' block except_block+ else_block? finally_block?"));
4960     }
4961     _res = NULL;
4962   done:
4963     D(p->level--);
4964     return _res;
4965 }
4966 
4967 // except_block:
4968 //     | invalid_except_stmt_indent
4969 //     | 'except' expression ['as' NAME] ':' block
4970 //     | 'except' ':' block
4971 //     | invalid_except_stmt
4972 static excepthandler_ty
except_block_rule(Parser * p)4973 except_block_rule(Parser *p)
4974 {
4975     D(p->level++);
4976     if (p->error_indicator) {
4977         D(p->level--);
4978         return NULL;
4979     }
4980     excepthandler_ty _res = NULL;
4981     int _mark = p->mark;
4982     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
4983         p->error_indicator = 1;
4984         D(p->level--);
4985         return NULL;
4986     }
4987     int _start_lineno = p->tokens[_mark]->lineno;
4988     UNUSED(_start_lineno); // Only used by EXTRA macro
4989     int _start_col_offset = p->tokens[_mark]->col_offset;
4990     UNUSED(_start_col_offset); // Only used by EXTRA macro
4991     if (p->call_invalid_rules) { // invalid_except_stmt_indent
4992         if (p->error_indicator) {
4993             D(p->level--);
4994             return NULL;
4995         }
4996         D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
4997         void *invalid_except_stmt_indent_var;
4998         if (
4999             (invalid_except_stmt_indent_var = invalid_except_stmt_indent_rule(p))  // invalid_except_stmt_indent
5000         )
5001         {
5002             D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt_indent"));
5003             _res = invalid_except_stmt_indent_var;
5004             goto done;
5005         }
5006         p->mark = _mark;
5007         D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
5008                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt_indent"));
5009     }
5010     { // 'except' expression ['as' NAME] ':' block
5011         if (p->error_indicator) {
5012             D(p->level--);
5013             return NULL;
5014         }
5015         D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' block"));
5016         Token * _keyword;
5017         Token * _literal;
5018         asdl_stmt_seq* b;
5019         expr_ty e;
5020         void *t;
5021         if (
5022             (_keyword = _PyPegen_expect_token(p, 521))  // token='except'
5023             &&
5024             (e = expression_rule(p))  // expression
5025             &&
5026             (t = _tmp_49_rule(p), !p->error_indicator)  // ['as' NAME]
5027             &&
5028             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5029             &&
5030             (b = block_rule(p))  // block
5031         )
5032         {
5033             D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' block"));
5034             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5035             if (_token == NULL) {
5036                 D(p->level--);
5037                 return NULL;
5038             }
5039             int _end_lineno = _token->end_lineno;
5040             UNUSED(_end_lineno); // Only used by EXTRA macro
5041             int _end_col_offset = _token->end_col_offset;
5042             UNUSED(_end_col_offset); // Only used by EXTRA macro
5043             _res = _PyAST_ExceptHandler ( e , ( t ) ? ( ( expr_ty ) t ) -> v . Name . id : NULL , b , EXTRA );
5044             if (_res == NULL && PyErr_Occurred()) {
5045                 p->error_indicator = 1;
5046                 D(p->level--);
5047                 return NULL;
5048             }
5049             goto done;
5050         }
5051         p->mark = _mark;
5052         D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
5053                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] ':' block"));
5054     }
5055     { // 'except' ':' block
5056         if (p->error_indicator) {
5057             D(p->level--);
5058             return NULL;
5059         }
5060         D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
5061         Token * _keyword;
5062         Token * _literal;
5063         asdl_stmt_seq* b;
5064         if (
5065             (_keyword = _PyPegen_expect_token(p, 521))  // token='except'
5066             &&
5067             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5068             &&
5069             (b = block_rule(p))  // block
5070         )
5071         {
5072             D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' block"));
5073             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5074             if (_token == NULL) {
5075                 D(p->level--);
5076                 return NULL;
5077             }
5078             int _end_lineno = _token->end_lineno;
5079             UNUSED(_end_lineno); // Only used by EXTRA macro
5080             int _end_col_offset = _token->end_col_offset;
5081             UNUSED(_end_col_offset); // Only used by EXTRA macro
5082             _res = _PyAST_ExceptHandler ( NULL , NULL , b , EXTRA );
5083             if (_res == NULL && PyErr_Occurred()) {
5084                 p->error_indicator = 1;
5085                 D(p->level--);
5086                 return NULL;
5087             }
5088             goto done;
5089         }
5090         p->mark = _mark;
5091         D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
5092                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' block"));
5093     }
5094     if (p->call_invalid_rules) { // invalid_except_stmt
5095         if (p->error_indicator) {
5096             D(p->level--);
5097             return NULL;
5098         }
5099         D(fprintf(stderr, "%*c> except_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
5100         void *invalid_except_stmt_var;
5101         if (
5102             (invalid_except_stmt_var = invalid_except_stmt_rule(p))  // invalid_except_stmt
5103         )
5104         {
5105             D(fprintf(stderr, "%*c+ except_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_except_stmt"));
5106             _res = invalid_except_stmt_var;
5107             goto done;
5108         }
5109         p->mark = _mark;
5110         D(fprintf(stderr, "%*c%s except_block[%d-%d]: %s failed!\n", p->level, ' ',
5111                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_except_stmt"));
5112     }
5113     _res = NULL;
5114   done:
5115     D(p->level--);
5116     return _res;
5117 }
5118 
5119 // finally_block: invalid_finally_stmt | 'finally' &&':' block
5120 static asdl_stmt_seq*
finally_block_rule(Parser * p)5121 finally_block_rule(Parser *p)
5122 {
5123     D(p->level++);
5124     if (p->error_indicator) {
5125         D(p->level--);
5126         return NULL;
5127     }
5128     asdl_stmt_seq* _res = NULL;
5129     int _mark = p->mark;
5130     if (p->call_invalid_rules) { // invalid_finally_stmt
5131         if (p->error_indicator) {
5132             D(p->level--);
5133             return NULL;
5134         }
5135         D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
5136         void *invalid_finally_stmt_var;
5137         if (
5138             (invalid_finally_stmt_var = invalid_finally_stmt_rule(p))  // invalid_finally_stmt
5139         )
5140         {
5141             D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_finally_stmt"));
5142             _res = invalid_finally_stmt_var;
5143             goto done;
5144         }
5145         p->mark = _mark;
5146         D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
5147                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_finally_stmt"));
5148     }
5149     { // 'finally' &&':' block
5150         if (p->error_indicator) {
5151             D(p->level--);
5152             return NULL;
5153         }
5154         D(fprintf(stderr, "%*c> finally_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
5155         Token * _keyword;
5156         Token * _literal;
5157         asdl_stmt_seq* a;
5158         if (
5159             (_keyword = _PyPegen_expect_token(p, 522))  // token='finally'
5160             &&
5161             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
5162             &&
5163             (a = block_rule(p))  // block
5164         )
5165         {
5166             D(fprintf(stderr, "%*c+ finally_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' &&':' block"));
5167             _res = a;
5168             if (_res == NULL && PyErr_Occurred()) {
5169                 p->error_indicator = 1;
5170                 D(p->level--);
5171                 return NULL;
5172             }
5173             goto done;
5174         }
5175         p->mark = _mark;
5176         D(fprintf(stderr, "%*c%s finally_block[%d-%d]: %s failed!\n", p->level, ' ',
5177                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' &&':' block"));
5178     }
5179     _res = NULL;
5180   done:
5181     D(p->level--);
5182     return _res;
5183 }
5184 
5185 // match_stmt:
5186 //     | "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
5187 //     | invalid_match_stmt
5188 static stmt_ty
match_stmt_rule(Parser * p)5189 match_stmt_rule(Parser *p)
5190 {
5191     D(p->level++);
5192     if (p->error_indicator) {
5193         D(p->level--);
5194         return NULL;
5195     }
5196     stmt_ty _res = NULL;
5197     int _mark = p->mark;
5198     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5199         p->error_indicator = 1;
5200         D(p->level--);
5201         return NULL;
5202     }
5203     int _start_lineno = p->tokens[_mark]->lineno;
5204     UNUSED(_start_lineno); // Only used by EXTRA macro
5205     int _start_col_offset = p->tokens[_mark]->col_offset;
5206     UNUSED(_start_col_offset); // Only used by EXTRA macro
5207     { // "match" subject_expr ':' NEWLINE INDENT case_block+ DEDENT
5208         if (p->error_indicator) {
5209             D(p->level--);
5210             return NULL;
5211         }
5212         D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
5213         expr_ty _keyword;
5214         Token * _literal;
5215         asdl_match_case_seq* cases;
5216         Token * dedent_var;
5217         Token * indent_var;
5218         Token * newline_var;
5219         expr_ty subject;
5220         if (
5221             (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
5222             &&
5223             (subject = subject_expr_rule(p))  // subject_expr
5224             &&
5225             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5226             &&
5227             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
5228             &&
5229             (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
5230             &&
5231             (cases = (asdl_match_case_seq*)_loop1_50_rule(p))  // case_block+
5232             &&
5233             (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
5234         )
5235         {
5236             D(fprintf(stderr, "%*c+ match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
5237             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5238             if (_token == NULL) {
5239                 D(p->level--);
5240                 return NULL;
5241             }
5242             int _end_lineno = _token->end_lineno;
5243             UNUSED(_end_lineno); // Only used by EXTRA macro
5244             int _end_col_offset = _token->end_col_offset;
5245             UNUSED(_end_col_offset); // Only used by EXTRA macro
5246             _res = CHECK_VERSION ( stmt_ty , 10 , "Pattern matching is" , _PyAST_Match ( subject , cases , EXTRA ) );
5247             if (_res == NULL && PyErr_Occurred()) {
5248                 p->error_indicator = 1;
5249                 D(p->level--);
5250                 return NULL;
5251             }
5252             goto done;
5253         }
5254         p->mark = _mark;
5255         D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5256                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE INDENT case_block+ DEDENT"));
5257     }
5258     if (p->call_invalid_rules) { // invalid_match_stmt
5259         if (p->error_indicator) {
5260             D(p->level--);
5261             return NULL;
5262         }
5263         D(fprintf(stderr, "%*c> match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_match_stmt"));
5264         void *invalid_match_stmt_var;
5265         if (
5266             (invalid_match_stmt_var = invalid_match_stmt_rule(p))  // invalid_match_stmt
5267         )
5268         {
5269             D(fprintf(stderr, "%*c+ match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_match_stmt"));
5270             _res = invalid_match_stmt_var;
5271             goto done;
5272         }
5273         p->mark = _mark;
5274         D(fprintf(stderr, "%*c%s match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
5275                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_match_stmt"));
5276     }
5277     _res = NULL;
5278   done:
5279     D(p->level--);
5280     return _res;
5281 }
5282 
5283 // subject_expr: star_named_expression ',' star_named_expressions? | named_expression
5284 static expr_ty
subject_expr_rule(Parser * p)5285 subject_expr_rule(Parser *p)
5286 {
5287     D(p->level++);
5288     if (p->error_indicator) {
5289         D(p->level--);
5290         return NULL;
5291     }
5292     expr_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     { // star_named_expression ',' star_named_expressions?
5304         if (p->error_indicator) {
5305             D(p->level--);
5306             return NULL;
5307         }
5308         D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
5309         Token * _literal;
5310         expr_ty value;
5311         void *values;
5312         if (
5313             (value = star_named_expression_rule(p))  // star_named_expression
5314             &&
5315             (_literal = _PyPegen_expect_token(p, 12))  // token=','
5316             &&
5317             (values = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
5318         )
5319         {
5320             D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
5321             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5322             if (_token == NULL) {
5323                 D(p->level--);
5324                 return NULL;
5325             }
5326             int _end_lineno = _token->end_lineno;
5327             UNUSED(_end_lineno); // Only used by EXTRA macro
5328             int _end_col_offset = _token->end_col_offset;
5329             UNUSED(_end_col_offset); // Only used by EXTRA macro
5330             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq * , _PyPegen_seq_insert_in_front ( p , value , values ) ) , Load , EXTRA );
5331             if (_res == NULL && PyErr_Occurred()) {
5332                 p->error_indicator = 1;
5333                 D(p->level--);
5334                 return NULL;
5335             }
5336             goto done;
5337         }
5338         p->mark = _mark;
5339         D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
5340                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
5341     }
5342     { // named_expression
5343         if (p->error_indicator) {
5344             D(p->level--);
5345             return NULL;
5346         }
5347         D(fprintf(stderr, "%*c> subject_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
5348         expr_ty named_expression_var;
5349         if (
5350             (named_expression_var = named_expression_rule(p))  // named_expression
5351         )
5352         {
5353             D(fprintf(stderr, "%*c+ subject_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
5354             _res = named_expression_var;
5355             goto done;
5356         }
5357         p->mark = _mark;
5358         D(fprintf(stderr, "%*c%s subject_expr[%d-%d]: %s failed!\n", p->level, ' ',
5359                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
5360     }
5361     _res = NULL;
5362   done:
5363     D(p->level--);
5364     return _res;
5365 }
5366 
5367 // case_block: invalid_case_block | "case" patterns guard? ':' block
5368 static match_case_ty
case_block_rule(Parser * p)5369 case_block_rule(Parser *p)
5370 {
5371     D(p->level++);
5372     if (p->error_indicator) {
5373         D(p->level--);
5374         return NULL;
5375     }
5376     match_case_ty _res = NULL;
5377     int _mark = p->mark;
5378     if (p->call_invalid_rules) { // invalid_case_block
5379         if (p->error_indicator) {
5380             D(p->level--);
5381             return NULL;
5382         }
5383         D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_case_block"));
5384         void *invalid_case_block_var;
5385         if (
5386             (invalid_case_block_var = invalid_case_block_rule(p))  // invalid_case_block
5387         )
5388         {
5389             D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_case_block"));
5390             _res = invalid_case_block_var;
5391             goto done;
5392         }
5393         p->mark = _mark;
5394         D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
5395                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_case_block"));
5396     }
5397     { // "case" patterns guard? ':' block
5398         if (p->error_indicator) {
5399             D(p->level--);
5400             return NULL;
5401         }
5402         D(fprintf(stderr, "%*c> case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
5403         expr_ty _keyword;
5404         Token * _literal;
5405         asdl_stmt_seq* body;
5406         void *guard;
5407         pattern_ty pattern;
5408         if (
5409             (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
5410             &&
5411             (pattern = patterns_rule(p))  // patterns
5412             &&
5413             (guard = guard_rule(p), !p->error_indicator)  // guard?
5414             &&
5415             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
5416             &&
5417             (body = block_rule(p))  // block
5418         )
5419         {
5420             D(fprintf(stderr, "%*c+ case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' block"));
5421             _res = _PyAST_match_case ( pattern , guard , body , p -> arena );
5422             if (_res == NULL && PyErr_Occurred()) {
5423                 p->error_indicator = 1;
5424                 D(p->level--);
5425                 return NULL;
5426             }
5427             goto done;
5428         }
5429         p->mark = _mark;
5430         D(fprintf(stderr, "%*c%s case_block[%d-%d]: %s failed!\n", p->level, ' ',
5431                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? ':' block"));
5432     }
5433     _res = NULL;
5434   done:
5435     D(p->level--);
5436     return _res;
5437 }
5438 
5439 // guard: 'if' named_expression
5440 static expr_ty
guard_rule(Parser * p)5441 guard_rule(Parser *p)
5442 {
5443     D(p->level++);
5444     if (p->error_indicator) {
5445         D(p->level--);
5446         return NULL;
5447     }
5448     expr_ty _res = NULL;
5449     int _mark = p->mark;
5450     { // 'if' named_expression
5451         if (p->error_indicator) {
5452             D(p->level--);
5453             return NULL;
5454         }
5455         D(fprintf(stderr, "%*c> guard[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
5456         Token * _keyword;
5457         expr_ty guard;
5458         if (
5459             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
5460             &&
5461             (guard = named_expression_rule(p))  // named_expression
5462         )
5463         {
5464             D(fprintf(stderr, "%*c+ guard[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression"));
5465             _res = guard;
5466             if (_res == NULL && PyErr_Occurred()) {
5467                 p->error_indicator = 1;
5468                 D(p->level--);
5469                 return NULL;
5470             }
5471             goto done;
5472         }
5473         p->mark = _mark;
5474         D(fprintf(stderr, "%*c%s guard[%d-%d]: %s failed!\n", p->level, ' ',
5475                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression"));
5476     }
5477     _res = NULL;
5478   done:
5479     D(p->level--);
5480     return _res;
5481 }
5482 
5483 // patterns: open_sequence_pattern | pattern
5484 static pattern_ty
patterns_rule(Parser * p)5485 patterns_rule(Parser *p)
5486 {
5487     D(p->level++);
5488     if (p->error_indicator) {
5489         D(p->level--);
5490         return NULL;
5491     }
5492     pattern_ty _res = NULL;
5493     int _mark = p->mark;
5494     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5495         p->error_indicator = 1;
5496         D(p->level--);
5497         return NULL;
5498     }
5499     int _start_lineno = p->tokens[_mark]->lineno;
5500     UNUSED(_start_lineno); // Only used by EXTRA macro
5501     int _start_col_offset = p->tokens[_mark]->col_offset;
5502     UNUSED(_start_col_offset); // Only used by EXTRA macro
5503     { // open_sequence_pattern
5504         if (p->error_indicator) {
5505             D(p->level--);
5506             return NULL;
5507         }
5508         D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
5509         asdl_pattern_seq* patterns;
5510         if (
5511             (patterns = (asdl_pattern_seq*)open_sequence_pattern_rule(p))  // open_sequence_pattern
5512         )
5513         {
5514             D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "open_sequence_pattern"));
5515             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5516             if (_token == NULL) {
5517                 D(p->level--);
5518                 return NULL;
5519             }
5520             int _end_lineno = _token->end_lineno;
5521             UNUSED(_end_lineno); // Only used by EXTRA macro
5522             int _end_col_offset = _token->end_col_offset;
5523             UNUSED(_end_col_offset); // Only used by EXTRA macro
5524             _res = _PyAST_MatchSequence ( patterns , EXTRA );
5525             if (_res == NULL && PyErr_Occurred()) {
5526                 p->error_indicator = 1;
5527                 D(p->level--);
5528                 return NULL;
5529             }
5530             goto done;
5531         }
5532         p->mark = _mark;
5533         D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
5534                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "open_sequence_pattern"));
5535     }
5536     { // pattern
5537         if (p->error_indicator) {
5538             D(p->level--);
5539             return NULL;
5540         }
5541         D(fprintf(stderr, "%*c> patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
5542         pattern_ty pattern_var;
5543         if (
5544             (pattern_var = pattern_rule(p))  // pattern
5545         )
5546         {
5547             D(fprintf(stderr, "%*c+ patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
5548             _res = pattern_var;
5549             goto done;
5550         }
5551         p->mark = _mark;
5552         D(fprintf(stderr, "%*c%s patterns[%d-%d]: %s failed!\n", p->level, ' ',
5553                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
5554     }
5555     _res = NULL;
5556   done:
5557     D(p->level--);
5558     return _res;
5559 }
5560 
5561 // pattern: as_pattern | or_pattern
5562 static pattern_ty
pattern_rule(Parser * p)5563 pattern_rule(Parser *p)
5564 {
5565     D(p->level++);
5566     if (p->error_indicator) {
5567         D(p->level--);
5568         return NULL;
5569     }
5570     pattern_ty _res = NULL;
5571     int _mark = p->mark;
5572     { // as_pattern
5573         if (p->error_indicator) {
5574             D(p->level--);
5575             return NULL;
5576         }
5577         D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "as_pattern"));
5578         pattern_ty as_pattern_var;
5579         if (
5580             (as_pattern_var = as_pattern_rule(p))  // as_pattern
5581         )
5582         {
5583             D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "as_pattern"));
5584             _res = as_pattern_var;
5585             goto done;
5586         }
5587         p->mark = _mark;
5588         D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
5589                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "as_pattern"));
5590     }
5591     { // or_pattern
5592         if (p->error_indicator) {
5593             D(p->level--);
5594             return NULL;
5595         }
5596         D(fprintf(stderr, "%*c> pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern"));
5597         pattern_ty or_pattern_var;
5598         if (
5599             (or_pattern_var = or_pattern_rule(p))  // or_pattern
5600         )
5601         {
5602             D(fprintf(stderr, "%*c+ pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern"));
5603             _res = or_pattern_var;
5604             goto done;
5605         }
5606         p->mark = _mark;
5607         D(fprintf(stderr, "%*c%s pattern[%d-%d]: %s failed!\n", p->level, ' ',
5608                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern"));
5609     }
5610     _res = NULL;
5611   done:
5612     D(p->level--);
5613     return _res;
5614 }
5615 
5616 // as_pattern: or_pattern 'as' pattern_capture_target | invalid_as_pattern
5617 static pattern_ty
as_pattern_rule(Parser * p)5618 as_pattern_rule(Parser *p)
5619 {
5620     D(p->level++);
5621     if (p->error_indicator) {
5622         D(p->level--);
5623         return NULL;
5624     }
5625     pattern_ty _res = NULL;
5626     int _mark = p->mark;
5627     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5628         p->error_indicator = 1;
5629         D(p->level--);
5630         return NULL;
5631     }
5632     int _start_lineno = p->tokens[_mark]->lineno;
5633     UNUSED(_start_lineno); // Only used by EXTRA macro
5634     int _start_col_offset = p->tokens[_mark]->col_offset;
5635     UNUSED(_start_col_offset); // Only used by EXTRA macro
5636     { // or_pattern 'as' pattern_capture_target
5637         if (p->error_indicator) {
5638             D(p->level--);
5639             return NULL;
5640         }
5641         D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
5642         Token * _keyword;
5643         pattern_ty pattern;
5644         expr_ty target;
5645         if (
5646             (pattern = or_pattern_rule(p))  // or_pattern
5647             &&
5648             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
5649             &&
5650             (target = pattern_capture_target_rule(p))  // pattern_capture_target
5651         )
5652         {
5653             D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
5654             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5655             if (_token == NULL) {
5656                 D(p->level--);
5657                 return NULL;
5658             }
5659             int _end_lineno = _token->end_lineno;
5660             UNUSED(_end_lineno); // Only used by EXTRA macro
5661             int _end_col_offset = _token->end_col_offset;
5662             UNUSED(_end_col_offset); // Only used by EXTRA macro
5663             _res = _PyAST_MatchAs ( pattern , target -> v . Name . id , EXTRA );
5664             if (_res == NULL && PyErr_Occurred()) {
5665                 p->error_indicator = 1;
5666                 D(p->level--);
5667                 return NULL;
5668             }
5669             goto done;
5670         }
5671         p->mark = _mark;
5672         D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5673                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' pattern_capture_target"));
5674     }
5675     if (p->call_invalid_rules) { // invalid_as_pattern
5676         if (p->error_indicator) {
5677             D(p->level--);
5678             return NULL;
5679         }
5680         D(fprintf(stderr, "%*c> as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
5681         void *invalid_as_pattern_var;
5682         if (
5683             (invalid_as_pattern_var = invalid_as_pattern_rule(p))  // invalid_as_pattern
5684         )
5685         {
5686             D(fprintf(stderr, "%*c+ as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_as_pattern"));
5687             _res = invalid_as_pattern_var;
5688             goto done;
5689         }
5690         p->mark = _mark;
5691         D(fprintf(stderr, "%*c%s as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5692                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_as_pattern"));
5693     }
5694     _res = NULL;
5695   done:
5696     D(p->level--);
5697     return _res;
5698 }
5699 
5700 // or_pattern: '|'.closed_pattern+
5701 static pattern_ty
or_pattern_rule(Parser * p)5702 or_pattern_rule(Parser *p)
5703 {
5704     D(p->level++);
5705     if (p->error_indicator) {
5706         D(p->level--);
5707         return NULL;
5708     }
5709     pattern_ty _res = NULL;
5710     int _mark = p->mark;
5711     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5712         p->error_indicator = 1;
5713         D(p->level--);
5714         return NULL;
5715     }
5716     int _start_lineno = p->tokens[_mark]->lineno;
5717     UNUSED(_start_lineno); // Only used by EXTRA macro
5718     int _start_col_offset = p->tokens[_mark]->col_offset;
5719     UNUSED(_start_col_offset); // Only used by EXTRA macro
5720     { // '|'.closed_pattern+
5721         if (p->error_indicator) {
5722             D(p->level--);
5723             return NULL;
5724         }
5725         D(fprintf(stderr, "%*c> or_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
5726         asdl_pattern_seq* patterns;
5727         if (
5728             (patterns = (asdl_pattern_seq*)_gather_51_rule(p))  // '|'.closed_pattern+
5729         )
5730         {
5731             D(fprintf(stderr, "%*c+ or_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'|'.closed_pattern+"));
5732             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5733             if (_token == NULL) {
5734                 D(p->level--);
5735                 return NULL;
5736             }
5737             int _end_lineno = _token->end_lineno;
5738             UNUSED(_end_lineno); // Only used by EXTRA macro
5739             int _end_col_offset = _token->end_col_offset;
5740             UNUSED(_end_col_offset); // Only used by EXTRA macro
5741             _res = asdl_seq_LEN ( patterns ) == 1 ? asdl_seq_GET ( patterns , 0 ) : _PyAST_MatchOr ( patterns , EXTRA );
5742             if (_res == NULL && PyErr_Occurred()) {
5743                 p->error_indicator = 1;
5744                 D(p->level--);
5745                 return NULL;
5746             }
5747             goto done;
5748         }
5749         p->mark = _mark;
5750         D(fprintf(stderr, "%*c%s or_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5751                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|'.closed_pattern+"));
5752     }
5753     _res = NULL;
5754   done:
5755     D(p->level--);
5756     return _res;
5757 }
5758 
5759 // closed_pattern:
5760 //     | literal_pattern
5761 //     | capture_pattern
5762 //     | wildcard_pattern
5763 //     | value_pattern
5764 //     | group_pattern
5765 //     | sequence_pattern
5766 //     | mapping_pattern
5767 //     | class_pattern
5768 static pattern_ty
closed_pattern_rule(Parser * p)5769 closed_pattern_rule(Parser *p)
5770 {
5771     D(p->level++);
5772     if (p->error_indicator) {
5773         D(p->level--);
5774         return NULL;
5775     }
5776     pattern_ty _res = NULL;
5777     int _mark = p->mark;
5778     { // literal_pattern
5779         if (p->error_indicator) {
5780             D(p->level--);
5781             return NULL;
5782         }
5783         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
5784         pattern_ty literal_pattern_var;
5785         if (
5786             (literal_pattern_var = literal_pattern_rule(p))  // literal_pattern
5787         )
5788         {
5789             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_pattern"));
5790             _res = literal_pattern_var;
5791             goto done;
5792         }
5793         p->mark = _mark;
5794         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5795                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_pattern"));
5796     }
5797     { // capture_pattern
5798         if (p->error_indicator) {
5799             D(p->level--);
5800             return NULL;
5801         }
5802         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
5803         pattern_ty capture_pattern_var;
5804         if (
5805             (capture_pattern_var = capture_pattern_rule(p))  // capture_pattern
5806         )
5807         {
5808             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "capture_pattern"));
5809             _res = capture_pattern_var;
5810             goto done;
5811         }
5812         p->mark = _mark;
5813         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5814                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "capture_pattern"));
5815     }
5816     { // wildcard_pattern
5817         if (p->error_indicator) {
5818             D(p->level--);
5819             return NULL;
5820         }
5821         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
5822         pattern_ty wildcard_pattern_var;
5823         if (
5824             (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
5825         )
5826         {
5827             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "wildcard_pattern"));
5828             _res = wildcard_pattern_var;
5829             goto done;
5830         }
5831         p->mark = _mark;
5832         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5833                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "wildcard_pattern"));
5834     }
5835     { // value_pattern
5836         if (p->error_indicator) {
5837             D(p->level--);
5838             return NULL;
5839         }
5840         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "value_pattern"));
5841         pattern_ty value_pattern_var;
5842         if (
5843             (value_pattern_var = value_pattern_rule(p))  // value_pattern
5844         )
5845         {
5846             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "value_pattern"));
5847             _res = value_pattern_var;
5848             goto done;
5849         }
5850         p->mark = _mark;
5851         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5852                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "value_pattern"));
5853     }
5854     { // group_pattern
5855         if (p->error_indicator) {
5856             D(p->level--);
5857             return NULL;
5858         }
5859         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group_pattern"));
5860         pattern_ty group_pattern_var;
5861         if (
5862             (group_pattern_var = group_pattern_rule(p))  // group_pattern
5863         )
5864         {
5865             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group_pattern"));
5866             _res = group_pattern_var;
5867             goto done;
5868         }
5869         p->mark = _mark;
5870         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5871                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group_pattern"));
5872     }
5873     { // sequence_pattern
5874         if (p->error_indicator) {
5875             D(p->level--);
5876             return NULL;
5877         }
5878         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
5879         pattern_ty sequence_pattern_var;
5880         if (
5881             (sequence_pattern_var = sequence_pattern_rule(p))  // sequence_pattern
5882         )
5883         {
5884             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sequence_pattern"));
5885             _res = sequence_pattern_var;
5886             goto done;
5887         }
5888         p->mark = _mark;
5889         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5890                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sequence_pattern"));
5891     }
5892     { // mapping_pattern
5893         if (p->error_indicator) {
5894             D(p->level--);
5895             return NULL;
5896         }
5897         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
5898         pattern_ty mapping_pattern_var;
5899         if (
5900             (mapping_pattern_var = mapping_pattern_rule(p))  // mapping_pattern
5901         )
5902         {
5903             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "mapping_pattern"));
5904             _res = mapping_pattern_var;
5905             goto done;
5906         }
5907         p->mark = _mark;
5908         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5909                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "mapping_pattern"));
5910     }
5911     { // class_pattern
5912         if (p->error_indicator) {
5913             D(p->level--);
5914             return NULL;
5915         }
5916         D(fprintf(stderr, "%*c> closed_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_pattern"));
5917         pattern_ty class_pattern_var;
5918         if (
5919             (class_pattern_var = class_pattern_rule(p))  // class_pattern
5920         )
5921         {
5922             D(fprintf(stderr, "%*c+ closed_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_pattern"));
5923             _res = class_pattern_var;
5924             goto done;
5925         }
5926         p->mark = _mark;
5927         D(fprintf(stderr, "%*c%s closed_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5928                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_pattern"));
5929     }
5930     _res = NULL;
5931   done:
5932     D(p->level--);
5933     return _res;
5934 }
5935 
5936 // literal_pattern:
5937 //     | signed_number !('+' | '-')
5938 //     | complex_number
5939 //     | strings
5940 //     | 'None'
5941 //     | 'True'
5942 //     | 'False'
5943 static pattern_ty
literal_pattern_rule(Parser * p)5944 literal_pattern_rule(Parser *p)
5945 {
5946     D(p->level++);
5947     if (p->error_indicator) {
5948         D(p->level--);
5949         return NULL;
5950     }
5951     pattern_ty _res = NULL;
5952     int _mark = p->mark;
5953     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
5954         p->error_indicator = 1;
5955         D(p->level--);
5956         return NULL;
5957     }
5958     int _start_lineno = p->tokens[_mark]->lineno;
5959     UNUSED(_start_lineno); // Only used by EXTRA macro
5960     int _start_col_offset = p->tokens[_mark]->col_offset;
5961     UNUSED(_start_col_offset); // Only used by EXTRA macro
5962     { // signed_number !('+' | '-')
5963         if (p->error_indicator) {
5964             D(p->level--);
5965             return NULL;
5966         }
5967         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
5968         expr_ty value;
5969         if (
5970             (value = signed_number_rule(p))  // signed_number
5971             &&
5972             _PyPegen_lookahead(0, _tmp_53_rule, p)
5973         )
5974         {
5975             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
5976             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
5977             if (_token == NULL) {
5978                 D(p->level--);
5979                 return NULL;
5980             }
5981             int _end_lineno = _token->end_lineno;
5982             UNUSED(_end_lineno); // Only used by EXTRA macro
5983             int _end_col_offset = _token->end_col_offset;
5984             UNUSED(_end_col_offset); // Only used by EXTRA macro
5985             _res = _PyAST_MatchValue ( value , EXTRA );
5986             if (_res == NULL && PyErr_Occurred()) {
5987                 p->error_indicator = 1;
5988                 D(p->level--);
5989                 return NULL;
5990             }
5991             goto done;
5992         }
5993         p->mark = _mark;
5994         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
5995                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
5996     }
5997     { // complex_number
5998         if (p->error_indicator) {
5999             D(p->level--);
6000             return NULL;
6001         }
6002         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
6003         expr_ty value;
6004         if (
6005             (value = complex_number_rule(p))  // complex_number
6006         )
6007         {
6008             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
6009             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6010             if (_token == NULL) {
6011                 D(p->level--);
6012                 return NULL;
6013             }
6014             int _end_lineno = _token->end_lineno;
6015             UNUSED(_end_lineno); // Only used by EXTRA macro
6016             int _end_col_offset = _token->end_col_offset;
6017             UNUSED(_end_col_offset); // Only used by EXTRA macro
6018             _res = _PyAST_MatchValue ( value , EXTRA );
6019             if (_res == NULL && PyErr_Occurred()) {
6020                 p->error_indicator = 1;
6021                 D(p->level--);
6022                 return NULL;
6023             }
6024             goto done;
6025         }
6026         p->mark = _mark;
6027         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6028                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
6029     }
6030     { // strings
6031         if (p->error_indicator) {
6032             D(p->level--);
6033             return NULL;
6034         }
6035         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "strings"));
6036         expr_ty value;
6037         if (
6038             (value = strings_rule(p))  // strings
6039         )
6040         {
6041             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "strings"));
6042             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6043             if (_token == NULL) {
6044                 D(p->level--);
6045                 return NULL;
6046             }
6047             int _end_lineno = _token->end_lineno;
6048             UNUSED(_end_lineno); // Only used by EXTRA macro
6049             int _end_col_offset = _token->end_col_offset;
6050             UNUSED(_end_col_offset); // Only used by EXTRA macro
6051             _res = _PyAST_MatchValue ( value , EXTRA );
6052             if (_res == NULL && PyErr_Occurred()) {
6053                 p->error_indicator = 1;
6054                 D(p->level--);
6055                 return NULL;
6056             }
6057             goto done;
6058         }
6059         p->mark = _mark;
6060         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6061                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "strings"));
6062     }
6063     { // 'None'
6064         if (p->error_indicator) {
6065             D(p->level--);
6066             return NULL;
6067         }
6068         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
6069         Token * _keyword;
6070         if (
6071             (_keyword = _PyPegen_expect_token(p, 523))  // token='None'
6072         )
6073         {
6074             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
6075             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6076             if (_token == NULL) {
6077                 D(p->level--);
6078                 return NULL;
6079             }
6080             int _end_lineno = _token->end_lineno;
6081             UNUSED(_end_lineno); // Only used by EXTRA macro
6082             int _end_col_offset = _token->end_col_offset;
6083             UNUSED(_end_col_offset); // Only used by EXTRA macro
6084             _res = _PyAST_MatchSingleton ( Py_None , EXTRA );
6085             if (_res == NULL && PyErr_Occurred()) {
6086                 p->error_indicator = 1;
6087                 D(p->level--);
6088                 return NULL;
6089             }
6090             goto done;
6091         }
6092         p->mark = _mark;
6093         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6094                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
6095     }
6096     { // 'True'
6097         if (p->error_indicator) {
6098             D(p->level--);
6099             return NULL;
6100         }
6101         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
6102         Token * _keyword;
6103         if (
6104             (_keyword = _PyPegen_expect_token(p, 524))  // token='True'
6105         )
6106         {
6107             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
6108             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6109             if (_token == NULL) {
6110                 D(p->level--);
6111                 return NULL;
6112             }
6113             int _end_lineno = _token->end_lineno;
6114             UNUSED(_end_lineno); // Only used by EXTRA macro
6115             int _end_col_offset = _token->end_col_offset;
6116             UNUSED(_end_col_offset); // Only used by EXTRA macro
6117             _res = _PyAST_MatchSingleton ( Py_True , EXTRA );
6118             if (_res == NULL && PyErr_Occurred()) {
6119                 p->error_indicator = 1;
6120                 D(p->level--);
6121                 return NULL;
6122             }
6123             goto done;
6124         }
6125         p->mark = _mark;
6126         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6127                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
6128     }
6129     { // 'False'
6130         if (p->error_indicator) {
6131             D(p->level--);
6132             return NULL;
6133         }
6134         D(fprintf(stderr, "%*c> literal_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
6135         Token * _keyword;
6136         if (
6137             (_keyword = _PyPegen_expect_token(p, 525))  // token='False'
6138         )
6139         {
6140             D(fprintf(stderr, "%*c+ literal_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
6141             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6142             if (_token == NULL) {
6143                 D(p->level--);
6144                 return NULL;
6145             }
6146             int _end_lineno = _token->end_lineno;
6147             UNUSED(_end_lineno); // Only used by EXTRA macro
6148             int _end_col_offset = _token->end_col_offset;
6149             UNUSED(_end_col_offset); // Only used by EXTRA macro
6150             _res = _PyAST_MatchSingleton ( Py_False , EXTRA );
6151             if (_res == NULL && PyErr_Occurred()) {
6152                 p->error_indicator = 1;
6153                 D(p->level--);
6154                 return NULL;
6155             }
6156             goto done;
6157         }
6158         p->mark = _mark;
6159         D(fprintf(stderr, "%*c%s literal_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6160                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
6161     }
6162     _res = NULL;
6163   done:
6164     D(p->level--);
6165     return _res;
6166 }
6167 
6168 // literal_expr:
6169 //     | signed_number !('+' | '-')
6170 //     | complex_number
6171 //     | strings
6172 //     | 'None'
6173 //     | 'True'
6174 //     | 'False'
6175 static expr_ty
literal_expr_rule(Parser * p)6176 literal_expr_rule(Parser *p)
6177 {
6178     D(p->level++);
6179     if (p->error_indicator) {
6180         D(p->level--);
6181         return NULL;
6182     }
6183     expr_ty _res = NULL;
6184     int _mark = p->mark;
6185     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6186         p->error_indicator = 1;
6187         D(p->level--);
6188         return NULL;
6189     }
6190     int _start_lineno = p->tokens[_mark]->lineno;
6191     UNUSED(_start_lineno); // Only used by EXTRA macro
6192     int _start_col_offset = p->tokens[_mark]->col_offset;
6193     UNUSED(_start_col_offset); // Only used by EXTRA macro
6194     { // signed_number !('+' | '-')
6195         if (p->error_indicator) {
6196             D(p->level--);
6197             return NULL;
6198         }
6199         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
6200         expr_ty signed_number_var;
6201         if (
6202             (signed_number_var = signed_number_rule(p))  // signed_number
6203             &&
6204             _PyPegen_lookahead(0, _tmp_54_rule, p)
6205         )
6206         {
6207             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_number !('+' | '-')"));
6208             _res = signed_number_var;
6209             goto done;
6210         }
6211         p->mark = _mark;
6212         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
6213                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_number !('+' | '-')"));
6214     }
6215     { // complex_number
6216         if (p->error_indicator) {
6217             D(p->level--);
6218             return NULL;
6219         }
6220         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "complex_number"));
6221         expr_ty complex_number_var;
6222         if (
6223             (complex_number_var = complex_number_rule(p))  // complex_number
6224         )
6225         {
6226             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "complex_number"));
6227             _res = complex_number_var;
6228             goto done;
6229         }
6230         p->mark = _mark;
6231         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
6232                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "complex_number"));
6233     }
6234     { // strings
6235         if (p->error_indicator) {
6236             D(p->level--);
6237             return NULL;
6238         }
6239         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "strings"));
6240         expr_ty strings_var;
6241         if (
6242             (strings_var = strings_rule(p))  // strings
6243         )
6244         {
6245             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "strings"));
6246             _res = strings_var;
6247             goto done;
6248         }
6249         p->mark = _mark;
6250         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
6251                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "strings"));
6252     }
6253     { // 'None'
6254         if (p->error_indicator) {
6255             D(p->level--);
6256             return NULL;
6257         }
6258         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
6259         Token * _keyword;
6260         if (
6261             (_keyword = _PyPegen_expect_token(p, 523))  // token='None'
6262         )
6263         {
6264             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
6265             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6266             if (_token == NULL) {
6267                 D(p->level--);
6268                 return NULL;
6269             }
6270             int _end_lineno = _token->end_lineno;
6271             UNUSED(_end_lineno); // Only used by EXTRA macro
6272             int _end_col_offset = _token->end_col_offset;
6273             UNUSED(_end_col_offset); // Only used by EXTRA macro
6274             _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
6275             if (_res == NULL && PyErr_Occurred()) {
6276                 p->error_indicator = 1;
6277                 D(p->level--);
6278                 return NULL;
6279             }
6280             goto done;
6281         }
6282         p->mark = _mark;
6283         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
6284                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
6285     }
6286     { // 'True'
6287         if (p->error_indicator) {
6288             D(p->level--);
6289             return NULL;
6290         }
6291         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
6292         Token * _keyword;
6293         if (
6294             (_keyword = _PyPegen_expect_token(p, 524))  // token='True'
6295         )
6296         {
6297             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
6298             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6299             if (_token == NULL) {
6300                 D(p->level--);
6301                 return NULL;
6302             }
6303             int _end_lineno = _token->end_lineno;
6304             UNUSED(_end_lineno); // Only used by EXTRA macro
6305             int _end_col_offset = _token->end_col_offset;
6306             UNUSED(_end_col_offset); // Only used by EXTRA macro
6307             _res = _PyAST_Constant ( Py_True , NULL , EXTRA );
6308             if (_res == NULL && PyErr_Occurred()) {
6309                 p->error_indicator = 1;
6310                 D(p->level--);
6311                 return NULL;
6312             }
6313             goto done;
6314         }
6315         p->mark = _mark;
6316         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
6317                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
6318     }
6319     { // 'False'
6320         if (p->error_indicator) {
6321             D(p->level--);
6322             return NULL;
6323         }
6324         D(fprintf(stderr, "%*c> literal_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
6325         Token * _keyword;
6326         if (
6327             (_keyword = _PyPegen_expect_token(p, 525))  // token='False'
6328         )
6329         {
6330             D(fprintf(stderr, "%*c+ literal_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
6331             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6332             if (_token == NULL) {
6333                 D(p->level--);
6334                 return NULL;
6335             }
6336             int _end_lineno = _token->end_lineno;
6337             UNUSED(_end_lineno); // Only used by EXTRA macro
6338             int _end_col_offset = _token->end_col_offset;
6339             UNUSED(_end_col_offset); // Only used by EXTRA macro
6340             _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
6341             if (_res == NULL && PyErr_Occurred()) {
6342                 p->error_indicator = 1;
6343                 D(p->level--);
6344                 return NULL;
6345             }
6346             goto done;
6347         }
6348         p->mark = _mark;
6349         D(fprintf(stderr, "%*c%s literal_expr[%d-%d]: %s failed!\n", p->level, ' ',
6350                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
6351     }
6352     _res = NULL;
6353   done:
6354     D(p->level--);
6355     return _res;
6356 }
6357 
6358 // complex_number:
6359 //     | signed_real_number '+' imaginary_number
6360 //     | signed_real_number '-' imaginary_number
6361 static expr_ty
complex_number_rule(Parser * p)6362 complex_number_rule(Parser *p)
6363 {
6364     D(p->level++);
6365     if (p->error_indicator) {
6366         D(p->level--);
6367         return NULL;
6368     }
6369     expr_ty _res = NULL;
6370     int _mark = p->mark;
6371     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6372         p->error_indicator = 1;
6373         D(p->level--);
6374         return NULL;
6375     }
6376     int _start_lineno = p->tokens[_mark]->lineno;
6377     UNUSED(_start_lineno); // Only used by EXTRA macro
6378     int _start_col_offset = p->tokens[_mark]->col_offset;
6379     UNUSED(_start_col_offset); // Only used by EXTRA macro
6380     { // signed_real_number '+' imaginary_number
6381         if (p->error_indicator) {
6382             D(p->level--);
6383             return NULL;
6384         }
6385         D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
6386         Token * _literal;
6387         expr_ty imag;
6388         expr_ty real;
6389         if (
6390             (real = signed_real_number_rule(p))  // signed_real_number
6391             &&
6392             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
6393             &&
6394             (imag = imaginary_number_rule(p))  // imaginary_number
6395         )
6396         {
6397             D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '+' imaginary_number"));
6398             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6399             if (_token == NULL) {
6400                 D(p->level--);
6401                 return NULL;
6402             }
6403             int _end_lineno = _token->end_lineno;
6404             UNUSED(_end_lineno); // Only used by EXTRA macro
6405             int _end_col_offset = _token->end_col_offset;
6406             UNUSED(_end_col_offset); // Only used by EXTRA macro
6407             _res = _PyAST_BinOp ( real , Add , imag , EXTRA );
6408             if (_res == NULL && PyErr_Occurred()) {
6409                 p->error_indicator = 1;
6410                 D(p->level--);
6411                 return NULL;
6412             }
6413             goto done;
6414         }
6415         p->mark = _mark;
6416         D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
6417                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '+' imaginary_number"));
6418     }
6419     { // signed_real_number '-' imaginary_number
6420         if (p->error_indicator) {
6421             D(p->level--);
6422             return NULL;
6423         }
6424         D(fprintf(stderr, "%*c> complex_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
6425         Token * _literal;
6426         expr_ty imag;
6427         expr_ty real;
6428         if (
6429             (real = signed_real_number_rule(p))  // signed_real_number
6430             &&
6431             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
6432             &&
6433             (imag = imaginary_number_rule(p))  // imaginary_number
6434         )
6435         {
6436             D(fprintf(stderr, "%*c+ complex_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "signed_real_number '-' imaginary_number"));
6437             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6438             if (_token == NULL) {
6439                 D(p->level--);
6440                 return NULL;
6441             }
6442             int _end_lineno = _token->end_lineno;
6443             UNUSED(_end_lineno); // Only used by EXTRA macro
6444             int _end_col_offset = _token->end_col_offset;
6445             UNUSED(_end_col_offset); // Only used by EXTRA macro
6446             _res = _PyAST_BinOp ( real , Sub , imag , EXTRA );
6447             if (_res == NULL && PyErr_Occurred()) {
6448                 p->error_indicator = 1;
6449                 D(p->level--);
6450                 return NULL;
6451             }
6452             goto done;
6453         }
6454         p->mark = _mark;
6455         D(fprintf(stderr, "%*c%s complex_number[%d-%d]: %s failed!\n", p->level, ' ',
6456                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "signed_real_number '-' imaginary_number"));
6457     }
6458     _res = NULL;
6459   done:
6460     D(p->level--);
6461     return _res;
6462 }
6463 
6464 // signed_number: NUMBER | '-' NUMBER
6465 static expr_ty
signed_number_rule(Parser * p)6466 signed_number_rule(Parser *p)
6467 {
6468     D(p->level++);
6469     if (p->error_indicator) {
6470         D(p->level--);
6471         return NULL;
6472     }
6473     expr_ty _res = NULL;
6474     int _mark = p->mark;
6475     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6476         p->error_indicator = 1;
6477         D(p->level--);
6478         return NULL;
6479     }
6480     int _start_lineno = p->tokens[_mark]->lineno;
6481     UNUSED(_start_lineno); // Only used by EXTRA macro
6482     int _start_col_offset = p->tokens[_mark]->col_offset;
6483     UNUSED(_start_col_offset); // Only used by EXTRA macro
6484     { // NUMBER
6485         if (p->error_indicator) {
6486             D(p->level--);
6487             return NULL;
6488         }
6489         D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
6490         expr_ty number_var;
6491         if (
6492             (number_var = _PyPegen_number_token(p))  // NUMBER
6493         )
6494         {
6495             D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
6496             _res = number_var;
6497             goto done;
6498         }
6499         p->mark = _mark;
6500         D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
6501                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
6502     }
6503     { // '-' NUMBER
6504         if (p->error_indicator) {
6505             D(p->level--);
6506             return NULL;
6507         }
6508         D(fprintf(stderr, "%*c> signed_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
6509         Token * _literal;
6510         expr_ty number;
6511         if (
6512             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
6513             &&
6514             (number = _PyPegen_number_token(p))  // NUMBER
6515         )
6516         {
6517             D(fprintf(stderr, "%*c+ signed_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' NUMBER"));
6518             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6519             if (_token == NULL) {
6520                 D(p->level--);
6521                 return NULL;
6522             }
6523             int _end_lineno = _token->end_lineno;
6524             UNUSED(_end_lineno); // Only used by EXTRA macro
6525             int _end_col_offset = _token->end_col_offset;
6526             UNUSED(_end_col_offset); // Only used by EXTRA macro
6527             _res = _PyAST_UnaryOp ( USub , number , EXTRA );
6528             if (_res == NULL && PyErr_Occurred()) {
6529                 p->error_indicator = 1;
6530                 D(p->level--);
6531                 return NULL;
6532             }
6533             goto done;
6534         }
6535         p->mark = _mark;
6536         D(fprintf(stderr, "%*c%s signed_number[%d-%d]: %s failed!\n", p->level, ' ',
6537                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' NUMBER"));
6538     }
6539     _res = NULL;
6540   done:
6541     D(p->level--);
6542     return _res;
6543 }
6544 
6545 // signed_real_number: real_number | '-' real_number
6546 static expr_ty
signed_real_number_rule(Parser * p)6547 signed_real_number_rule(Parser *p)
6548 {
6549     D(p->level++);
6550     if (p->error_indicator) {
6551         D(p->level--);
6552         return NULL;
6553     }
6554     expr_ty _res = NULL;
6555     int _mark = p->mark;
6556     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6557         p->error_indicator = 1;
6558         D(p->level--);
6559         return NULL;
6560     }
6561     int _start_lineno = p->tokens[_mark]->lineno;
6562     UNUSED(_start_lineno); // Only used by EXTRA macro
6563     int _start_col_offset = p->tokens[_mark]->col_offset;
6564     UNUSED(_start_col_offset); // Only used by EXTRA macro
6565     { // real_number
6566         if (p->error_indicator) {
6567             D(p->level--);
6568             return NULL;
6569         }
6570         D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "real_number"));
6571         expr_ty real_number_var;
6572         if (
6573             (real_number_var = real_number_rule(p))  // real_number
6574         )
6575         {
6576             D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "real_number"));
6577             _res = real_number_var;
6578             goto done;
6579         }
6580         p->mark = _mark;
6581         D(fprintf(stderr, "%*c%s signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
6582                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "real_number"));
6583     }
6584     { // '-' real_number
6585         if (p->error_indicator) {
6586             D(p->level--);
6587             return NULL;
6588         }
6589         D(fprintf(stderr, "%*c> signed_real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
6590         Token * _literal;
6591         expr_ty real;
6592         if (
6593             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
6594             &&
6595             (real = real_number_rule(p))  // real_number
6596         )
6597         {
6598             D(fprintf(stderr, "%*c+ signed_real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' real_number"));
6599             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6600             if (_token == NULL) {
6601                 D(p->level--);
6602                 return NULL;
6603             }
6604             int _end_lineno = _token->end_lineno;
6605             UNUSED(_end_lineno); // Only used by EXTRA macro
6606             int _end_col_offset = _token->end_col_offset;
6607             UNUSED(_end_col_offset); // Only used by EXTRA macro
6608             _res = _PyAST_UnaryOp ( USub , real , EXTRA );
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 signed_real_number[%d-%d]: %s failed!\n", p->level, ' ',
6618                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' real_number"));
6619     }
6620     _res = NULL;
6621   done:
6622     D(p->level--);
6623     return _res;
6624 }
6625 
6626 // real_number: NUMBER
6627 static expr_ty
real_number_rule(Parser * p)6628 real_number_rule(Parser *p)
6629 {
6630     D(p->level++);
6631     if (p->error_indicator) {
6632         D(p->level--);
6633         return NULL;
6634     }
6635     expr_ty _res = NULL;
6636     int _mark = p->mark;
6637     { // NUMBER
6638         if (p->error_indicator) {
6639             D(p->level--);
6640             return NULL;
6641         }
6642         D(fprintf(stderr, "%*c> real_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
6643         expr_ty real;
6644         if (
6645             (real = _PyPegen_number_token(p))  // NUMBER
6646         )
6647         {
6648             D(fprintf(stderr, "%*c+ real_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
6649             _res = _PyPegen_ensure_real ( p , real );
6650             if (_res == NULL && PyErr_Occurred()) {
6651                 p->error_indicator = 1;
6652                 D(p->level--);
6653                 return NULL;
6654             }
6655             goto done;
6656         }
6657         p->mark = _mark;
6658         D(fprintf(stderr, "%*c%s real_number[%d-%d]: %s failed!\n", p->level, ' ',
6659                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
6660     }
6661     _res = NULL;
6662   done:
6663     D(p->level--);
6664     return _res;
6665 }
6666 
6667 // imaginary_number: NUMBER
6668 static expr_ty
imaginary_number_rule(Parser * p)6669 imaginary_number_rule(Parser *p)
6670 {
6671     D(p->level++);
6672     if (p->error_indicator) {
6673         D(p->level--);
6674         return NULL;
6675     }
6676     expr_ty _res = NULL;
6677     int _mark = p->mark;
6678     { // NUMBER
6679         if (p->error_indicator) {
6680             D(p->level--);
6681             return NULL;
6682         }
6683         D(fprintf(stderr, "%*c> imaginary_number[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
6684         expr_ty imag;
6685         if (
6686             (imag = _PyPegen_number_token(p))  // NUMBER
6687         )
6688         {
6689             D(fprintf(stderr, "%*c+ imaginary_number[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
6690             _res = _PyPegen_ensure_imaginary ( p , imag );
6691             if (_res == NULL && PyErr_Occurred()) {
6692                 p->error_indicator = 1;
6693                 D(p->level--);
6694                 return NULL;
6695             }
6696             goto done;
6697         }
6698         p->mark = _mark;
6699         D(fprintf(stderr, "%*c%s imaginary_number[%d-%d]: %s failed!\n", p->level, ' ',
6700                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
6701     }
6702     _res = NULL;
6703   done:
6704     D(p->level--);
6705     return _res;
6706 }
6707 
6708 // capture_pattern: pattern_capture_target
6709 static pattern_ty
capture_pattern_rule(Parser * p)6710 capture_pattern_rule(Parser *p)
6711 {
6712     D(p->level++);
6713     if (p->error_indicator) {
6714         D(p->level--);
6715         return NULL;
6716     }
6717     pattern_ty _res = NULL;
6718     int _mark = p->mark;
6719     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6720         p->error_indicator = 1;
6721         D(p->level--);
6722         return NULL;
6723     }
6724     int _start_lineno = p->tokens[_mark]->lineno;
6725     UNUSED(_start_lineno); // Only used by EXTRA macro
6726     int _start_col_offset = p->tokens[_mark]->col_offset;
6727     UNUSED(_start_col_offset); // Only used by EXTRA macro
6728     { // pattern_capture_target
6729         if (p->error_indicator) {
6730             D(p->level--);
6731             return NULL;
6732         }
6733         D(fprintf(stderr, "%*c> capture_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
6734         expr_ty target;
6735         if (
6736             (target = pattern_capture_target_rule(p))  // pattern_capture_target
6737         )
6738         {
6739             D(fprintf(stderr, "%*c+ capture_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern_capture_target"));
6740             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6741             if (_token == NULL) {
6742                 D(p->level--);
6743                 return NULL;
6744             }
6745             int _end_lineno = _token->end_lineno;
6746             UNUSED(_end_lineno); // Only used by EXTRA macro
6747             int _end_col_offset = _token->end_col_offset;
6748             UNUSED(_end_col_offset); // Only used by EXTRA macro
6749             _res = _PyAST_MatchAs ( NULL , target -> v . Name . id , EXTRA );
6750             if (_res == NULL && PyErr_Occurred()) {
6751                 p->error_indicator = 1;
6752                 D(p->level--);
6753                 return NULL;
6754             }
6755             goto done;
6756         }
6757         p->mark = _mark;
6758         D(fprintf(stderr, "%*c%s capture_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6759                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern_capture_target"));
6760     }
6761     _res = NULL;
6762   done:
6763     D(p->level--);
6764     return _res;
6765 }
6766 
6767 // pattern_capture_target: !"_" NAME !('.' | '(' | '=')
6768 static expr_ty
pattern_capture_target_rule(Parser * p)6769 pattern_capture_target_rule(Parser *p)
6770 {
6771     D(p->level++);
6772     if (p->error_indicator) {
6773         D(p->level--);
6774         return NULL;
6775     }
6776     expr_ty _res = NULL;
6777     int _mark = p->mark;
6778     { // !"_" NAME !('.' | '(' | '=')
6779         if (p->error_indicator) {
6780             D(p->level--);
6781             return NULL;
6782         }
6783         D(fprintf(stderr, "%*c> pattern_capture_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
6784         expr_ty name;
6785         if (
6786             _PyPegen_lookahead_with_string(0, _PyPegen_expect_soft_keyword, p, "_")
6787             &&
6788             (name = _PyPegen_name_token(p))  // NAME
6789             &&
6790             _PyPegen_lookahead(0, _tmp_55_rule, p)
6791         )
6792         {
6793             D(fprintf(stderr, "%*c+ pattern_capture_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
6794             _res = _PyPegen_set_expr_context ( p , name , Store );
6795             if (_res == NULL && PyErr_Occurred()) {
6796                 p->error_indicator = 1;
6797                 D(p->level--);
6798                 return NULL;
6799             }
6800             goto done;
6801         }
6802         p->mark = _mark;
6803         D(fprintf(stderr, "%*c%s pattern_capture_target[%d-%d]: %s failed!\n", p->level, ' ',
6804                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!\"_\" NAME !('.' | '(' | '=')"));
6805     }
6806     _res = NULL;
6807   done:
6808     D(p->level--);
6809     return _res;
6810 }
6811 
6812 // wildcard_pattern: "_"
6813 static pattern_ty
wildcard_pattern_rule(Parser * p)6814 wildcard_pattern_rule(Parser *p)
6815 {
6816     D(p->level++);
6817     if (p->error_indicator) {
6818         D(p->level--);
6819         return NULL;
6820     }
6821     pattern_ty _res = NULL;
6822     int _mark = p->mark;
6823     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6824         p->error_indicator = 1;
6825         D(p->level--);
6826         return NULL;
6827     }
6828     int _start_lineno = p->tokens[_mark]->lineno;
6829     UNUSED(_start_lineno); // Only used by EXTRA macro
6830     int _start_col_offset = p->tokens[_mark]->col_offset;
6831     UNUSED(_start_col_offset); // Only used by EXTRA macro
6832     { // "_"
6833         if (p->error_indicator) {
6834             D(p->level--);
6835             return NULL;
6836         }
6837         D(fprintf(stderr, "%*c> wildcard_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"_\""));
6838         expr_ty _keyword;
6839         if (
6840             (_keyword = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
6841         )
6842         {
6843             D(fprintf(stderr, "%*c+ wildcard_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"_\""));
6844             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6845             if (_token == NULL) {
6846                 D(p->level--);
6847                 return NULL;
6848             }
6849             int _end_lineno = _token->end_lineno;
6850             UNUSED(_end_lineno); // Only used by EXTRA macro
6851             int _end_col_offset = _token->end_col_offset;
6852             UNUSED(_end_col_offset); // Only used by EXTRA macro
6853             _res = _PyAST_MatchAs ( NULL , NULL , EXTRA );
6854             if (_res == NULL && PyErr_Occurred()) {
6855                 p->error_indicator = 1;
6856                 D(p->level--);
6857                 return NULL;
6858             }
6859             goto done;
6860         }
6861         p->mark = _mark;
6862         D(fprintf(stderr, "%*c%s wildcard_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6863                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"_\""));
6864     }
6865     _res = NULL;
6866   done:
6867     D(p->level--);
6868     return _res;
6869 }
6870 
6871 // value_pattern: attr !('.' | '(' | '=')
6872 static pattern_ty
value_pattern_rule(Parser * p)6873 value_pattern_rule(Parser *p)
6874 {
6875     D(p->level++);
6876     if (p->error_indicator) {
6877         D(p->level--);
6878         return NULL;
6879     }
6880     pattern_ty _res = NULL;
6881     int _mark = p->mark;
6882     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6883         p->error_indicator = 1;
6884         D(p->level--);
6885         return NULL;
6886     }
6887     int _start_lineno = p->tokens[_mark]->lineno;
6888     UNUSED(_start_lineno); // Only used by EXTRA macro
6889     int _start_col_offset = p->tokens[_mark]->col_offset;
6890     UNUSED(_start_col_offset); // Only used by EXTRA macro
6891     { // attr !('.' | '(' | '=')
6892         if (p->error_indicator) {
6893             D(p->level--);
6894             return NULL;
6895         }
6896         D(fprintf(stderr, "%*c> value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
6897         expr_ty attr;
6898         if (
6899             (attr = attr_rule(p))  // attr
6900             &&
6901             _PyPegen_lookahead(0, _tmp_56_rule, p)
6902         )
6903         {
6904             D(fprintf(stderr, "%*c+ value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr !('.' | '(' | '=')"));
6905             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
6906             if (_token == NULL) {
6907                 D(p->level--);
6908                 return NULL;
6909             }
6910             int _end_lineno = _token->end_lineno;
6911             UNUSED(_end_lineno); // Only used by EXTRA macro
6912             int _end_col_offset = _token->end_col_offset;
6913             UNUSED(_end_col_offset); // Only used by EXTRA macro
6914             _res = _PyAST_MatchValue ( attr , EXTRA );
6915             if (_res == NULL && PyErr_Occurred()) {
6916                 p->error_indicator = 1;
6917                 D(p->level--);
6918                 return NULL;
6919             }
6920             goto done;
6921         }
6922         p->mark = _mark;
6923         D(fprintf(stderr, "%*c%s value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
6924                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr !('.' | '(' | '=')"));
6925     }
6926     _res = NULL;
6927   done:
6928     D(p->level--);
6929     return _res;
6930 }
6931 
6932 // Left-recursive
6933 // attr: name_or_attr '.' NAME
6934 static expr_ty attr_raw(Parser *);
6935 static expr_ty
attr_rule(Parser * p)6936 attr_rule(Parser *p)
6937 {
6938     D(p->level++);
6939     expr_ty _res = NULL;
6940     if (_PyPegen_is_memoized(p, attr_type, &_res)) {
6941         D(p->level--);
6942         return _res;
6943     }
6944     int _mark = p->mark;
6945     int _resmark = p->mark;
6946     while (1) {
6947         int tmpvar_1 = _PyPegen_update_memo(p, _mark, attr_type, _res);
6948         if (tmpvar_1) {
6949             D(p->level--);
6950             return _res;
6951         }
6952         p->mark = _mark;
6953         p->in_raw_rule++;
6954         void *_raw = attr_raw(p);
6955         p->in_raw_rule--;
6956         if (p->error_indicator)
6957             return NULL;
6958         if (_raw == NULL || p->mark <= _resmark)
6959             break;
6960         _resmark = p->mark;
6961         _res = _raw;
6962     }
6963     p->mark = _resmark;
6964     D(p->level--);
6965     return _res;
6966 }
6967 static expr_ty
attr_raw(Parser * p)6968 attr_raw(Parser *p)
6969 {
6970     D(p->level++);
6971     if (p->error_indicator) {
6972         D(p->level--);
6973         return NULL;
6974     }
6975     expr_ty _res = NULL;
6976     int _mark = p->mark;
6977     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
6978         p->error_indicator = 1;
6979         D(p->level--);
6980         return NULL;
6981     }
6982     int _start_lineno = p->tokens[_mark]->lineno;
6983     UNUSED(_start_lineno); // Only used by EXTRA macro
6984     int _start_col_offset = p->tokens[_mark]->col_offset;
6985     UNUSED(_start_col_offset); // Only used by EXTRA macro
6986     { // name_or_attr '.' NAME
6987         if (p->error_indicator) {
6988             D(p->level--);
6989             return NULL;
6990         }
6991         D(fprintf(stderr, "%*c> attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
6992         Token * _literal;
6993         expr_ty attr;
6994         expr_ty value;
6995         if (
6996             (value = name_or_attr_rule(p))  // name_or_attr
6997             &&
6998             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
6999             &&
7000             (attr = _PyPegen_name_token(p))  // NAME
7001         )
7002         {
7003             D(fprintf(stderr, "%*c+ attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '.' NAME"));
7004             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7005             if (_token == NULL) {
7006                 D(p->level--);
7007                 return NULL;
7008             }
7009             int _end_lineno = _token->end_lineno;
7010             UNUSED(_end_lineno); // Only used by EXTRA macro
7011             int _end_col_offset = _token->end_col_offset;
7012             UNUSED(_end_col_offset); // Only used by EXTRA macro
7013             _res = _PyAST_Attribute ( value , attr -> v . Name . id , Load , EXTRA );
7014             if (_res == NULL && PyErr_Occurred()) {
7015                 p->error_indicator = 1;
7016                 D(p->level--);
7017                 return NULL;
7018             }
7019             goto done;
7020         }
7021         p->mark = _mark;
7022         D(fprintf(stderr, "%*c%s attr[%d-%d]: %s failed!\n", p->level, ' ',
7023                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '.' NAME"));
7024     }
7025     _res = NULL;
7026   done:
7027     D(p->level--);
7028     return _res;
7029 }
7030 
7031 // Left-recursive
7032 // name_or_attr: attr | NAME
7033 static expr_ty
name_or_attr_rule(Parser * p)7034 name_or_attr_rule(Parser *p)
7035 {
7036     D(p->level++);
7037     if (p->error_indicator) {
7038         D(p->level--);
7039         return NULL;
7040     }
7041     expr_ty _res = NULL;
7042     int _mark = p->mark;
7043     { // attr
7044         if (p->error_indicator) {
7045             D(p->level--);
7046             return NULL;
7047         }
7048         D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
7049         expr_ty attr_var;
7050         if (
7051             (attr_var = attr_rule(p))  // attr
7052         )
7053         {
7054             D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
7055             _res = attr_var;
7056             goto done;
7057         }
7058         p->mark = _mark;
7059         D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
7060                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
7061     }
7062     { // NAME
7063         if (p->error_indicator) {
7064             D(p->level--);
7065             return NULL;
7066         }
7067         D(fprintf(stderr, "%*c> name_or_attr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
7068         expr_ty name_var;
7069         if (
7070             (name_var = _PyPegen_name_token(p))  // NAME
7071         )
7072         {
7073             D(fprintf(stderr, "%*c+ name_or_attr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
7074             _res = name_var;
7075             goto done;
7076         }
7077         p->mark = _mark;
7078         D(fprintf(stderr, "%*c%s name_or_attr[%d-%d]: %s failed!\n", p->level, ' ',
7079                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
7080     }
7081     _res = NULL;
7082   done:
7083     D(p->level--);
7084     return _res;
7085 }
7086 
7087 // group_pattern: '(' pattern ')'
7088 static pattern_ty
group_pattern_rule(Parser * p)7089 group_pattern_rule(Parser *p)
7090 {
7091     D(p->level++);
7092     if (p->error_indicator) {
7093         D(p->level--);
7094         return NULL;
7095     }
7096     pattern_ty _res = NULL;
7097     int _mark = p->mark;
7098     { // '(' pattern ')'
7099         if (p->error_indicator) {
7100             D(p->level--);
7101             return NULL;
7102         }
7103         D(fprintf(stderr, "%*c> group_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
7104         Token * _literal;
7105         Token * _literal_1;
7106         pattern_ty pattern;
7107         if (
7108             (_literal = _PyPegen_expect_token(p, 7))  // token='('
7109             &&
7110             (pattern = pattern_rule(p))  // pattern
7111             &&
7112             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
7113         )
7114         {
7115             D(fprintf(stderr, "%*c+ group_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' pattern ')'"));
7116             _res = pattern;
7117             if (_res == NULL && PyErr_Occurred()) {
7118                 p->error_indicator = 1;
7119                 D(p->level--);
7120                 return NULL;
7121             }
7122             goto done;
7123         }
7124         p->mark = _mark;
7125         D(fprintf(stderr, "%*c%s group_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7126                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' pattern ')'"));
7127     }
7128     _res = NULL;
7129   done:
7130     D(p->level--);
7131     return _res;
7132 }
7133 
7134 // sequence_pattern: '[' maybe_sequence_pattern? ']' | '(' open_sequence_pattern? ')'
7135 static pattern_ty
sequence_pattern_rule(Parser * p)7136 sequence_pattern_rule(Parser *p)
7137 {
7138     D(p->level++);
7139     if (p->error_indicator) {
7140         D(p->level--);
7141         return NULL;
7142     }
7143     pattern_ty _res = NULL;
7144     int _mark = p->mark;
7145     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7146         p->error_indicator = 1;
7147         D(p->level--);
7148         return NULL;
7149     }
7150     int _start_lineno = p->tokens[_mark]->lineno;
7151     UNUSED(_start_lineno); // Only used by EXTRA macro
7152     int _start_col_offset = p->tokens[_mark]->col_offset;
7153     UNUSED(_start_col_offset); // Only used by EXTRA macro
7154     { // '[' maybe_sequence_pattern? ']'
7155         if (p->error_indicator) {
7156             D(p->level--);
7157             return NULL;
7158         }
7159         D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
7160         Token * _literal;
7161         Token * _literal_1;
7162         void *patterns;
7163         if (
7164             (_literal = _PyPegen_expect_token(p, 9))  // token='['
7165             &&
7166             (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
7167             &&
7168             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
7169         )
7170         {
7171             D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
7172             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7173             if (_token == NULL) {
7174                 D(p->level--);
7175                 return NULL;
7176             }
7177             int _end_lineno = _token->end_lineno;
7178             UNUSED(_end_lineno); // Only used by EXTRA macro
7179             int _end_col_offset = _token->end_col_offset;
7180             UNUSED(_end_col_offset); // Only used by EXTRA macro
7181             _res = _PyAST_MatchSequence ( patterns , EXTRA );
7182             if (_res == NULL && PyErr_Occurred()) {
7183                 p->error_indicator = 1;
7184                 D(p->level--);
7185                 return NULL;
7186             }
7187             goto done;
7188         }
7189         p->mark = _mark;
7190         D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7191                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' maybe_sequence_pattern? ']'"));
7192     }
7193     { // '(' open_sequence_pattern? ')'
7194         if (p->error_indicator) {
7195             D(p->level--);
7196             return NULL;
7197         }
7198         D(fprintf(stderr, "%*c> sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
7199         Token * _literal;
7200         Token * _literal_1;
7201         void *patterns;
7202         if (
7203             (_literal = _PyPegen_expect_token(p, 7))  // token='('
7204             &&
7205             (patterns = open_sequence_pattern_rule(p), !p->error_indicator)  // open_sequence_pattern?
7206             &&
7207             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
7208         )
7209         {
7210             D(fprintf(stderr, "%*c+ sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' open_sequence_pattern? ')'"));
7211             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7212             if (_token == NULL) {
7213                 D(p->level--);
7214                 return NULL;
7215             }
7216             int _end_lineno = _token->end_lineno;
7217             UNUSED(_end_lineno); // Only used by EXTRA macro
7218             int _end_col_offset = _token->end_col_offset;
7219             UNUSED(_end_col_offset); // Only used by EXTRA macro
7220             _res = _PyAST_MatchSequence ( patterns , EXTRA );
7221             if (_res == NULL && PyErr_Occurred()) {
7222                 p->error_indicator = 1;
7223                 D(p->level--);
7224                 return NULL;
7225             }
7226             goto done;
7227         }
7228         p->mark = _mark;
7229         D(fprintf(stderr, "%*c%s sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7230                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' open_sequence_pattern? ')'"));
7231     }
7232     _res = NULL;
7233   done:
7234     D(p->level--);
7235     return _res;
7236 }
7237 
7238 // open_sequence_pattern: maybe_star_pattern ',' maybe_sequence_pattern?
7239 static asdl_seq*
open_sequence_pattern_rule(Parser * p)7240 open_sequence_pattern_rule(Parser *p)
7241 {
7242     D(p->level++);
7243     if (p->error_indicator) {
7244         D(p->level--);
7245         return NULL;
7246     }
7247     asdl_seq* _res = NULL;
7248     int _mark = p->mark;
7249     { // maybe_star_pattern ',' maybe_sequence_pattern?
7250         if (p->error_indicator) {
7251             D(p->level--);
7252             return NULL;
7253         }
7254         D(fprintf(stderr, "%*c> open_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
7255         Token * _literal;
7256         pattern_ty pattern;
7257         void *patterns;
7258         if (
7259             (pattern = maybe_star_pattern_rule(p))  // maybe_star_pattern
7260             &&
7261             (_literal = _PyPegen_expect_token(p, 12))  // token=','
7262             &&
7263             (patterns = maybe_sequence_pattern_rule(p), !p->error_indicator)  // maybe_sequence_pattern?
7264         )
7265         {
7266             D(fprintf(stderr, "%*c+ open_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
7267             _res = _PyPegen_seq_insert_in_front ( p , pattern , patterns );
7268             if (_res == NULL && PyErr_Occurred()) {
7269                 p->error_indicator = 1;
7270                 D(p->level--);
7271                 return NULL;
7272             }
7273             goto done;
7274         }
7275         p->mark = _mark;
7276         D(fprintf(stderr, "%*c%s open_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7277                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern ',' maybe_sequence_pattern?"));
7278     }
7279     _res = NULL;
7280   done:
7281     D(p->level--);
7282     return _res;
7283 }
7284 
7285 // maybe_sequence_pattern: ','.maybe_star_pattern+ ','?
7286 static asdl_seq*
maybe_sequence_pattern_rule(Parser * p)7287 maybe_sequence_pattern_rule(Parser *p)
7288 {
7289     D(p->level++);
7290     if (p->error_indicator) {
7291         D(p->level--);
7292         return NULL;
7293     }
7294     asdl_seq* _res = NULL;
7295     int _mark = p->mark;
7296     { // ','.maybe_star_pattern+ ','?
7297         if (p->error_indicator) {
7298             D(p->level--);
7299             return NULL;
7300         }
7301         D(fprintf(stderr, "%*c> maybe_sequence_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
7302         void *_opt_var;
7303         UNUSED(_opt_var); // Silence compiler warnings
7304         asdl_seq * patterns;
7305         if (
7306             (patterns = _gather_57_rule(p))  // ','.maybe_star_pattern+
7307             &&
7308             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
7309         )
7310         {
7311             D(fprintf(stderr, "%*c+ maybe_sequence_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.maybe_star_pattern+ ','?"));
7312             _res = patterns;
7313             if (_res == NULL && PyErr_Occurred()) {
7314                 p->error_indicator = 1;
7315                 D(p->level--);
7316                 return NULL;
7317             }
7318             goto done;
7319         }
7320         p->mark = _mark;
7321         D(fprintf(stderr, "%*c%s maybe_sequence_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7322                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.maybe_star_pattern+ ','?"));
7323     }
7324     _res = NULL;
7325   done:
7326     D(p->level--);
7327     return _res;
7328 }
7329 
7330 // maybe_star_pattern: star_pattern | pattern
7331 static pattern_ty
maybe_star_pattern_rule(Parser * p)7332 maybe_star_pattern_rule(Parser *p)
7333 {
7334     D(p->level++);
7335     if (p->error_indicator) {
7336         D(p->level--);
7337         return NULL;
7338     }
7339     pattern_ty _res = NULL;
7340     int _mark = p->mark;
7341     { // star_pattern
7342         if (p->error_indicator) {
7343             D(p->level--);
7344             return NULL;
7345         }
7346         D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_pattern"));
7347         pattern_ty star_pattern_var;
7348         if (
7349             (star_pattern_var = star_pattern_rule(p))  // star_pattern
7350         )
7351         {
7352             D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_pattern"));
7353             _res = star_pattern_var;
7354             goto done;
7355         }
7356         p->mark = _mark;
7357         D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7358                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_pattern"));
7359     }
7360     { // pattern
7361         if (p->error_indicator) {
7362             D(p->level--);
7363             return NULL;
7364         }
7365         D(fprintf(stderr, "%*c> maybe_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern"));
7366         pattern_ty pattern_var;
7367         if (
7368             (pattern_var = pattern_rule(p))  // pattern
7369         )
7370         {
7371             D(fprintf(stderr, "%*c+ maybe_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern"));
7372             _res = pattern_var;
7373             goto done;
7374         }
7375         p->mark = _mark;
7376         D(fprintf(stderr, "%*c%s maybe_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7377                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern"));
7378     }
7379     _res = NULL;
7380   done:
7381     D(p->level--);
7382     return _res;
7383 }
7384 
7385 // star_pattern: '*' pattern_capture_target | '*' wildcard_pattern
7386 static pattern_ty
star_pattern_rule(Parser * p)7387 star_pattern_rule(Parser *p)
7388 {
7389     D(p->level++);
7390     if (p->error_indicator) {
7391         D(p->level--);
7392         return NULL;
7393     }
7394     pattern_ty _res = NULL;
7395     int _mark = p->mark;
7396     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7397         p->error_indicator = 1;
7398         D(p->level--);
7399         return NULL;
7400     }
7401     int _start_lineno = p->tokens[_mark]->lineno;
7402     UNUSED(_start_lineno); // Only used by EXTRA macro
7403     int _start_col_offset = p->tokens[_mark]->col_offset;
7404     UNUSED(_start_col_offset); // Only used by EXTRA macro
7405     { // '*' pattern_capture_target
7406         if (p->error_indicator) {
7407             D(p->level--);
7408             return NULL;
7409         }
7410         D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
7411         Token * _literal;
7412         expr_ty target;
7413         if (
7414             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7415             &&
7416             (target = pattern_capture_target_rule(p))  // pattern_capture_target
7417         )
7418         {
7419             D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' pattern_capture_target"));
7420             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7421             if (_token == NULL) {
7422                 D(p->level--);
7423                 return NULL;
7424             }
7425             int _end_lineno = _token->end_lineno;
7426             UNUSED(_end_lineno); // Only used by EXTRA macro
7427             int _end_col_offset = _token->end_col_offset;
7428             UNUSED(_end_col_offset); // Only used by EXTRA macro
7429             _res = _PyAST_MatchStar ( target -> v . Name . id , EXTRA );
7430             if (_res == NULL && PyErr_Occurred()) {
7431                 p->error_indicator = 1;
7432                 D(p->level--);
7433                 return NULL;
7434             }
7435             goto done;
7436         }
7437         p->mark = _mark;
7438         D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7439                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' pattern_capture_target"));
7440     }
7441     { // '*' wildcard_pattern
7442         if (p->error_indicator) {
7443             D(p->level--);
7444             return NULL;
7445         }
7446         D(fprintf(stderr, "%*c> star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
7447         Token * _literal;
7448         pattern_ty wildcard_pattern_var;
7449         if (
7450             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
7451             &&
7452             (wildcard_pattern_var = wildcard_pattern_rule(p))  // wildcard_pattern
7453         )
7454         {
7455             D(fprintf(stderr, "%*c+ star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' wildcard_pattern"));
7456             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7457             if (_token == NULL) {
7458                 D(p->level--);
7459                 return NULL;
7460             }
7461             int _end_lineno = _token->end_lineno;
7462             UNUSED(_end_lineno); // Only used by EXTRA macro
7463             int _end_col_offset = _token->end_col_offset;
7464             UNUSED(_end_col_offset); // Only used by EXTRA macro
7465             _res = _PyAST_MatchStar ( NULL , EXTRA );
7466             if (_res == NULL && PyErr_Occurred()) {
7467                 p->error_indicator = 1;
7468                 D(p->level--);
7469                 return NULL;
7470             }
7471             goto done;
7472         }
7473         p->mark = _mark;
7474         D(fprintf(stderr, "%*c%s star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7475                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' wildcard_pattern"));
7476     }
7477     _res = NULL;
7478   done:
7479     D(p->level--);
7480     return _res;
7481 }
7482 
7483 // mapping_pattern:
7484 //     | '{' '}'
7485 //     | '{' double_star_pattern ','? '}'
7486 //     | '{' items_pattern ',' double_star_pattern ','? '}'
7487 //     | '{' items_pattern ','? '}'
7488 static pattern_ty
mapping_pattern_rule(Parser * p)7489 mapping_pattern_rule(Parser *p)
7490 {
7491     D(p->level++);
7492     if (p->error_indicator) {
7493         D(p->level--);
7494         return NULL;
7495     }
7496     pattern_ty _res = NULL;
7497     int _mark = p->mark;
7498     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7499         p->error_indicator = 1;
7500         D(p->level--);
7501         return NULL;
7502     }
7503     int _start_lineno = p->tokens[_mark]->lineno;
7504     UNUSED(_start_lineno); // Only used by EXTRA macro
7505     int _start_col_offset = p->tokens[_mark]->col_offset;
7506     UNUSED(_start_col_offset); // Only used by EXTRA macro
7507     { // '{' '}'
7508         if (p->error_indicator) {
7509             D(p->level--);
7510             return NULL;
7511         }
7512         D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
7513         Token * _literal;
7514         Token * _literal_1;
7515         if (
7516             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
7517             &&
7518             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
7519         )
7520         {
7521             D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '}'"));
7522             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7523             if (_token == NULL) {
7524                 D(p->level--);
7525                 return NULL;
7526             }
7527             int _end_lineno = _token->end_lineno;
7528             UNUSED(_end_lineno); // Only used by EXTRA macro
7529             int _end_col_offset = _token->end_col_offset;
7530             UNUSED(_end_col_offset); // Only used by EXTRA macro
7531             _res = _PyAST_MatchMapping ( NULL , NULL , NULL , EXTRA );
7532             if (_res == NULL && PyErr_Occurred()) {
7533                 p->error_indicator = 1;
7534                 D(p->level--);
7535                 return NULL;
7536             }
7537             goto done;
7538         }
7539         p->mark = _mark;
7540         D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7541                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '}'"));
7542     }
7543     { // '{' double_star_pattern ','? '}'
7544         if (p->error_indicator) {
7545             D(p->level--);
7546             return NULL;
7547         }
7548         D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
7549         Token * _literal;
7550         Token * _literal_1;
7551         void *_opt_var;
7552         UNUSED(_opt_var); // Silence compiler warnings
7553         expr_ty rest;
7554         if (
7555             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
7556             &&
7557             (rest = double_star_pattern_rule(p))  // double_star_pattern
7558             &&
7559             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
7560             &&
7561             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
7562         )
7563         {
7564             D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_star_pattern ','? '}'"));
7565             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7566             if (_token == NULL) {
7567                 D(p->level--);
7568                 return NULL;
7569             }
7570             int _end_lineno = _token->end_lineno;
7571             UNUSED(_end_lineno); // Only used by EXTRA macro
7572             int _end_col_offset = _token->end_col_offset;
7573             UNUSED(_end_col_offset); // Only used by EXTRA macro
7574             _res = _PyAST_MatchMapping ( NULL , NULL , rest -> v . Name . id , EXTRA );
7575             if (_res == NULL && PyErr_Occurred()) {
7576                 p->error_indicator = 1;
7577                 D(p->level--);
7578                 return NULL;
7579             }
7580             goto done;
7581         }
7582         p->mark = _mark;
7583         D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7584                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_star_pattern ','? '}'"));
7585     }
7586     { // '{' items_pattern ',' double_star_pattern ','? '}'
7587         if (p->error_indicator) {
7588             D(p->level--);
7589             return NULL;
7590         }
7591         D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
7592         Token * _literal;
7593         Token * _literal_1;
7594         Token * _literal_2;
7595         void *_opt_var;
7596         UNUSED(_opt_var); // Silence compiler warnings
7597         asdl_seq* items;
7598         expr_ty rest;
7599         if (
7600             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
7601             &&
7602             (items = items_pattern_rule(p))  // items_pattern
7603             &&
7604             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
7605             &&
7606             (rest = double_star_pattern_rule(p))  // double_star_pattern
7607             &&
7608             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
7609             &&
7610             (_literal_2 = _PyPegen_expect_token(p, 26))  // token='}'
7611         )
7612         {
7613             D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
7614             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7615             if (_token == NULL) {
7616                 D(p->level--);
7617                 return NULL;
7618             }
7619             int _end_lineno = _token->end_lineno;
7620             UNUSED(_end_lineno); // Only used by EXTRA macro
7621             int _end_col_offset = _token->end_col_offset;
7622             UNUSED(_end_col_offset); // Only used by EXTRA macro
7623             _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 );
7624             if (_res == NULL && PyErr_Occurred()) {
7625                 p->error_indicator = 1;
7626                 D(p->level--);
7627                 return NULL;
7628             }
7629             goto done;
7630         }
7631         p->mark = _mark;
7632         D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7633                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ',' double_star_pattern ','? '}'"));
7634     }
7635     { // '{' items_pattern ','? '}'
7636         if (p->error_indicator) {
7637             D(p->level--);
7638             return NULL;
7639         }
7640         D(fprintf(stderr, "%*c> mapping_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
7641         Token * _literal;
7642         Token * _literal_1;
7643         void *_opt_var;
7644         UNUSED(_opt_var); // Silence compiler warnings
7645         asdl_seq* items;
7646         if (
7647             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
7648             &&
7649             (items = items_pattern_rule(p))  // items_pattern
7650             &&
7651             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
7652             &&
7653             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
7654         )
7655         {
7656             D(fprintf(stderr, "%*c+ mapping_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' items_pattern ','? '}'"));
7657             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7658             if (_token == NULL) {
7659                 D(p->level--);
7660                 return NULL;
7661             }
7662             int _end_lineno = _token->end_lineno;
7663             UNUSED(_end_lineno); // Only used by EXTRA macro
7664             int _end_col_offset = _token->end_col_offset;
7665             UNUSED(_end_col_offset); // Only used by EXTRA macro
7666             _res = _PyAST_MatchMapping ( CHECK ( asdl_expr_seq * , _PyPegen_get_pattern_keys ( p , items ) ) , CHECK ( asdl_pattern_seq * , _PyPegen_get_patterns ( p , items ) ) , NULL , EXTRA );
7667             if (_res == NULL && PyErr_Occurred()) {
7668                 p->error_indicator = 1;
7669                 D(p->level--);
7670                 return NULL;
7671             }
7672             goto done;
7673         }
7674         p->mark = _mark;
7675         D(fprintf(stderr, "%*c%s mapping_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7676                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' items_pattern ','? '}'"));
7677     }
7678     _res = NULL;
7679   done:
7680     D(p->level--);
7681     return _res;
7682 }
7683 
7684 // items_pattern: ','.key_value_pattern+
7685 static asdl_seq*
items_pattern_rule(Parser * p)7686 items_pattern_rule(Parser *p)
7687 {
7688     D(p->level++);
7689     if (p->error_indicator) {
7690         D(p->level--);
7691         return NULL;
7692     }
7693     asdl_seq* _res = NULL;
7694     int _mark = p->mark;
7695     { // ','.key_value_pattern+
7696         if (p->error_indicator) {
7697             D(p->level--);
7698             return NULL;
7699         }
7700         D(fprintf(stderr, "%*c> items_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
7701         asdl_seq * _gather_59_var;
7702         if (
7703             (_gather_59_var = _gather_59_rule(p))  // ','.key_value_pattern+
7704         )
7705         {
7706             D(fprintf(stderr, "%*c+ items_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.key_value_pattern+"));
7707             _res = _gather_59_var;
7708             goto done;
7709         }
7710         p->mark = _mark;
7711         D(fprintf(stderr, "%*c%s items_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7712                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.key_value_pattern+"));
7713     }
7714     _res = NULL;
7715   done:
7716     D(p->level--);
7717     return _res;
7718 }
7719 
7720 // key_value_pattern: (literal_expr | attr) ':' pattern
7721 static KeyPatternPair*
key_value_pattern_rule(Parser * p)7722 key_value_pattern_rule(Parser *p)
7723 {
7724     D(p->level++);
7725     if (p->error_indicator) {
7726         D(p->level--);
7727         return NULL;
7728     }
7729     KeyPatternPair* _res = NULL;
7730     int _mark = p->mark;
7731     { // (literal_expr | attr) ':' pattern
7732         if (p->error_indicator) {
7733             D(p->level--);
7734             return NULL;
7735         }
7736         D(fprintf(stderr, "%*c> key_value_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
7737         Token * _literal;
7738         void *key;
7739         pattern_ty pattern;
7740         if (
7741             (key = _tmp_61_rule(p))  // literal_expr | attr
7742             &&
7743             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
7744             &&
7745             (pattern = pattern_rule(p))  // pattern
7746         )
7747         {
7748             D(fprintf(stderr, "%*c+ key_value_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(literal_expr | attr) ':' pattern"));
7749             _res = _PyPegen_key_pattern_pair ( p , key , pattern );
7750             if (_res == NULL && PyErr_Occurred()) {
7751                 p->error_indicator = 1;
7752                 D(p->level--);
7753                 return NULL;
7754             }
7755             goto done;
7756         }
7757         p->mark = _mark;
7758         D(fprintf(stderr, "%*c%s key_value_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7759                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(literal_expr | attr) ':' pattern"));
7760     }
7761     _res = NULL;
7762   done:
7763     D(p->level--);
7764     return _res;
7765 }
7766 
7767 // double_star_pattern: '**' pattern_capture_target
7768 static expr_ty
double_star_pattern_rule(Parser * p)7769 double_star_pattern_rule(Parser *p)
7770 {
7771     D(p->level++);
7772     if (p->error_indicator) {
7773         D(p->level--);
7774         return NULL;
7775     }
7776     expr_ty _res = NULL;
7777     int _mark = p->mark;
7778     { // '**' pattern_capture_target
7779         if (p->error_indicator) {
7780             D(p->level--);
7781             return NULL;
7782         }
7783         D(fprintf(stderr, "%*c> double_star_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
7784         Token * _literal;
7785         expr_ty target;
7786         if (
7787             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
7788             &&
7789             (target = pattern_capture_target_rule(p))  // pattern_capture_target
7790         )
7791         {
7792             D(fprintf(stderr, "%*c+ double_star_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' pattern_capture_target"));
7793             _res = target;
7794             if (_res == NULL && PyErr_Occurred()) {
7795                 p->error_indicator = 1;
7796                 D(p->level--);
7797                 return NULL;
7798             }
7799             goto done;
7800         }
7801         p->mark = _mark;
7802         D(fprintf(stderr, "%*c%s double_star_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7803                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' pattern_capture_target"));
7804     }
7805     _res = NULL;
7806   done:
7807     D(p->level--);
7808     return _res;
7809 }
7810 
7811 // class_pattern:
7812 //     | name_or_attr '(' ')'
7813 //     | name_or_attr '(' positional_patterns ','? ')'
7814 //     | name_or_attr '(' keyword_patterns ','? ')'
7815 //     | name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
7816 //     | invalid_class_pattern
7817 static pattern_ty
class_pattern_rule(Parser * p)7818 class_pattern_rule(Parser *p)
7819 {
7820     D(p->level++);
7821     if (p->error_indicator) {
7822         D(p->level--);
7823         return NULL;
7824     }
7825     pattern_ty _res = NULL;
7826     int _mark = p->mark;
7827     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
7828         p->error_indicator = 1;
7829         D(p->level--);
7830         return NULL;
7831     }
7832     int _start_lineno = p->tokens[_mark]->lineno;
7833     UNUSED(_start_lineno); // Only used by EXTRA macro
7834     int _start_col_offset = p->tokens[_mark]->col_offset;
7835     UNUSED(_start_col_offset); // Only used by EXTRA macro
7836     { // name_or_attr '(' ')'
7837         if (p->error_indicator) {
7838             D(p->level--);
7839             return NULL;
7840         }
7841         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
7842         Token * _literal;
7843         Token * _literal_1;
7844         expr_ty cls;
7845         if (
7846             (cls = name_or_attr_rule(p))  // name_or_attr
7847             &&
7848             (_literal = _PyPegen_expect_token(p, 7))  // token='('
7849             &&
7850             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
7851         )
7852         {
7853             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' ')'"));
7854             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7855             if (_token == NULL) {
7856                 D(p->level--);
7857                 return NULL;
7858             }
7859             int _end_lineno = _token->end_lineno;
7860             UNUSED(_end_lineno); // Only used by EXTRA macro
7861             int _end_col_offset = _token->end_col_offset;
7862             UNUSED(_end_col_offset); // Only used by EXTRA macro
7863             _res = _PyAST_MatchClass ( cls , NULL , NULL , NULL , EXTRA );
7864             if (_res == NULL && PyErr_Occurred()) {
7865                 p->error_indicator = 1;
7866                 D(p->level--);
7867                 return NULL;
7868             }
7869             goto done;
7870         }
7871         p->mark = _mark;
7872         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7873                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' ')'"));
7874     }
7875     { // name_or_attr '(' positional_patterns ','? ')'
7876         if (p->error_indicator) {
7877             D(p->level--);
7878             return NULL;
7879         }
7880         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
7881         Token * _literal;
7882         Token * _literal_1;
7883         void *_opt_var;
7884         UNUSED(_opt_var); // Silence compiler warnings
7885         expr_ty cls;
7886         asdl_pattern_seq* patterns;
7887         if (
7888             (cls = name_or_attr_rule(p))  // name_or_attr
7889             &&
7890             (_literal = _PyPegen_expect_token(p, 7))  // token='('
7891             &&
7892             (patterns = positional_patterns_rule(p))  // positional_patterns
7893             &&
7894             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
7895             &&
7896             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
7897         )
7898         {
7899             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
7900             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7901             if (_token == NULL) {
7902                 D(p->level--);
7903                 return NULL;
7904             }
7905             int _end_lineno = _token->end_lineno;
7906             UNUSED(_end_lineno); // Only used by EXTRA macro
7907             int _end_col_offset = _token->end_col_offset;
7908             UNUSED(_end_col_offset); // Only used by EXTRA macro
7909             _res = _PyAST_MatchClass ( cls , patterns , NULL , NULL , EXTRA );
7910             if (_res == NULL && PyErr_Occurred()) {
7911                 p->error_indicator = 1;
7912                 D(p->level--);
7913                 return NULL;
7914             }
7915             goto done;
7916         }
7917         p->mark = _mark;
7918         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7919                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ','? ')'"));
7920     }
7921     { // name_or_attr '(' keyword_patterns ','? ')'
7922         if (p->error_indicator) {
7923             D(p->level--);
7924             return NULL;
7925         }
7926         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
7927         Token * _literal;
7928         Token * _literal_1;
7929         void *_opt_var;
7930         UNUSED(_opt_var); // Silence compiler warnings
7931         expr_ty cls;
7932         asdl_seq* keywords;
7933         if (
7934             (cls = name_or_attr_rule(p))  // name_or_attr
7935             &&
7936             (_literal = _PyPegen_expect_token(p, 7))  // token='('
7937             &&
7938             (keywords = keyword_patterns_rule(p))  // keyword_patterns
7939             &&
7940             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
7941             &&
7942             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
7943         )
7944         {
7945             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
7946             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7947             if (_token == NULL) {
7948                 D(p->level--);
7949                 return NULL;
7950             }
7951             int _end_lineno = _token->end_lineno;
7952             UNUSED(_end_lineno); // Only used by EXTRA macro
7953             int _end_col_offset = _token->end_col_offset;
7954             UNUSED(_end_col_offset); // Only used by EXTRA macro
7955             _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 );
7956             if (_res == NULL && PyErr_Occurred()) {
7957                 p->error_indicator = 1;
7958                 D(p->level--);
7959                 return NULL;
7960             }
7961             goto done;
7962         }
7963         p->mark = _mark;
7964         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
7965                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' keyword_patterns ','? ')'"));
7966     }
7967     { // name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'
7968         if (p->error_indicator) {
7969             D(p->level--);
7970             return NULL;
7971         }
7972         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
7973         Token * _literal;
7974         Token * _literal_1;
7975         Token * _literal_2;
7976         void *_opt_var;
7977         UNUSED(_opt_var); // Silence compiler warnings
7978         expr_ty cls;
7979         asdl_seq* keywords;
7980         asdl_pattern_seq* patterns;
7981         if (
7982             (cls = name_or_attr_rule(p))  // name_or_attr
7983             &&
7984             (_literal = _PyPegen_expect_token(p, 7))  // token='('
7985             &&
7986             (patterns = positional_patterns_rule(p))  // positional_patterns
7987             &&
7988             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
7989             &&
7990             (keywords = keyword_patterns_rule(p))  // keyword_patterns
7991             &&
7992             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
7993             &&
7994             (_literal_2 = _PyPegen_expect_token(p, 8))  // token=')'
7995         )
7996         {
7997             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
7998             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
7999             if (_token == NULL) {
8000                 D(p->level--);
8001                 return NULL;
8002             }
8003             int _end_lineno = _token->end_lineno;
8004             UNUSED(_end_lineno); // Only used by EXTRA macro
8005             int _end_col_offset = _token->end_col_offset;
8006             UNUSED(_end_col_offset); // Only used by EXTRA macro
8007             _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 );
8008             if (_res == NULL && PyErr_Occurred()) {
8009                 p->error_indicator = 1;
8010                 D(p->level--);
8011                 return NULL;
8012             }
8013             goto done;
8014         }
8015         p->mark = _mark;
8016         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8017                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' positional_patterns ',' keyword_patterns ','? ')'"));
8018     }
8019     if (p->call_invalid_rules) { // invalid_class_pattern
8020         if (p->error_indicator) {
8021             D(p->level--);
8022             return NULL;
8023         }
8024         D(fprintf(stderr, "%*c> class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
8025         void *invalid_class_pattern_var;
8026         if (
8027             (invalid_class_pattern_var = invalid_class_pattern_rule(p))  // invalid_class_pattern
8028         )
8029         {
8030             D(fprintf(stderr, "%*c+ class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_pattern"));
8031             _res = invalid_class_pattern_var;
8032             goto done;
8033         }
8034         p->mark = _mark;
8035         D(fprintf(stderr, "%*c%s class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8036                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_pattern"));
8037     }
8038     _res = NULL;
8039   done:
8040     D(p->level--);
8041     return _res;
8042 }
8043 
8044 // positional_patterns: ','.pattern+
8045 static asdl_pattern_seq*
positional_patterns_rule(Parser * p)8046 positional_patterns_rule(Parser *p)
8047 {
8048     D(p->level++);
8049     if (p->error_indicator) {
8050         D(p->level--);
8051         return NULL;
8052     }
8053     asdl_pattern_seq* _res = NULL;
8054     int _mark = p->mark;
8055     { // ','.pattern+
8056         if (p->error_indicator) {
8057             D(p->level--);
8058             return NULL;
8059         }
8060         D(fprintf(stderr, "%*c> positional_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
8061         asdl_pattern_seq* args;
8062         if (
8063             (args = (asdl_pattern_seq*)_gather_62_rule(p))  // ','.pattern+
8064         )
8065         {
8066             D(fprintf(stderr, "%*c+ positional_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.pattern+"));
8067             _res = args;
8068             if (_res == NULL && PyErr_Occurred()) {
8069                 p->error_indicator = 1;
8070                 D(p->level--);
8071                 return NULL;
8072             }
8073             goto done;
8074         }
8075         p->mark = _mark;
8076         D(fprintf(stderr, "%*c%s positional_patterns[%d-%d]: %s failed!\n", p->level, ' ',
8077                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.pattern+"));
8078     }
8079     _res = NULL;
8080   done:
8081     D(p->level--);
8082     return _res;
8083 }
8084 
8085 // keyword_patterns: ','.keyword_pattern+
8086 static asdl_seq*
keyword_patterns_rule(Parser * p)8087 keyword_patterns_rule(Parser *p)
8088 {
8089     D(p->level++);
8090     if (p->error_indicator) {
8091         D(p->level--);
8092         return NULL;
8093     }
8094     asdl_seq* _res = NULL;
8095     int _mark = p->mark;
8096     { // ','.keyword_pattern+
8097         if (p->error_indicator) {
8098             D(p->level--);
8099             return NULL;
8100         }
8101         D(fprintf(stderr, "%*c> keyword_patterns[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
8102         asdl_seq * _gather_64_var;
8103         if (
8104             (_gather_64_var = _gather_64_rule(p))  // ','.keyword_pattern+
8105         )
8106         {
8107             D(fprintf(stderr, "%*c+ keyword_patterns[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.keyword_pattern+"));
8108             _res = _gather_64_var;
8109             goto done;
8110         }
8111         p->mark = _mark;
8112         D(fprintf(stderr, "%*c%s keyword_patterns[%d-%d]: %s failed!\n", p->level, ' ',
8113                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.keyword_pattern+"));
8114     }
8115     _res = NULL;
8116   done:
8117     D(p->level--);
8118     return _res;
8119 }
8120 
8121 // keyword_pattern: NAME '=' pattern
8122 static KeyPatternPair*
keyword_pattern_rule(Parser * p)8123 keyword_pattern_rule(Parser *p)
8124 {
8125     D(p->level++);
8126     if (p->error_indicator) {
8127         D(p->level--);
8128         return NULL;
8129     }
8130     KeyPatternPair* _res = NULL;
8131     int _mark = p->mark;
8132     { // NAME '=' pattern
8133         if (p->error_indicator) {
8134             D(p->level--);
8135             return NULL;
8136         }
8137         D(fprintf(stderr, "%*c> keyword_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
8138         Token * _literal;
8139         expr_ty arg;
8140         pattern_ty value;
8141         if (
8142             (arg = _PyPegen_name_token(p))  // NAME
8143             &&
8144             (_literal = _PyPegen_expect_token(p, 22))  // token='='
8145             &&
8146             (value = pattern_rule(p))  // pattern
8147         )
8148         {
8149             D(fprintf(stderr, "%*c+ keyword_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' pattern"));
8150             _res = _PyPegen_key_pattern_pair ( p , arg , value );
8151             if (_res == NULL && PyErr_Occurred()) {
8152                 p->error_indicator = 1;
8153                 D(p->level--);
8154                 return NULL;
8155             }
8156             goto done;
8157         }
8158         p->mark = _mark;
8159         D(fprintf(stderr, "%*c%s keyword_pattern[%d-%d]: %s failed!\n", p->level, ' ',
8160                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' pattern"));
8161     }
8162     _res = NULL;
8163   done:
8164     D(p->level--);
8165     return _res;
8166 }
8167 
8168 // return_stmt: 'return' star_expressions?
8169 static stmt_ty
return_stmt_rule(Parser * p)8170 return_stmt_rule(Parser *p)
8171 {
8172     D(p->level++);
8173     if (p->error_indicator) {
8174         D(p->level--);
8175         return NULL;
8176     }
8177     stmt_ty _res = NULL;
8178     int _mark = p->mark;
8179     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8180         p->error_indicator = 1;
8181         D(p->level--);
8182         return NULL;
8183     }
8184     int _start_lineno = p->tokens[_mark]->lineno;
8185     UNUSED(_start_lineno); // Only used by EXTRA macro
8186     int _start_col_offset = p->tokens[_mark]->col_offset;
8187     UNUSED(_start_col_offset); // Only used by EXTRA macro
8188     { // 'return' star_expressions?
8189         if (p->error_indicator) {
8190             D(p->level--);
8191             return NULL;
8192         }
8193         D(fprintf(stderr, "%*c> return_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
8194         Token * _keyword;
8195         void *a;
8196         if (
8197             (_keyword = _PyPegen_expect_token(p, 500))  // token='return'
8198             &&
8199             (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
8200         )
8201         {
8202             D(fprintf(stderr, "%*c+ return_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'return' star_expressions?"));
8203             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8204             if (_token == NULL) {
8205                 D(p->level--);
8206                 return NULL;
8207             }
8208             int _end_lineno = _token->end_lineno;
8209             UNUSED(_end_lineno); // Only used by EXTRA macro
8210             int _end_col_offset = _token->end_col_offset;
8211             UNUSED(_end_col_offset); // Only used by EXTRA macro
8212             _res = _PyAST_Return ( a , EXTRA );
8213             if (_res == NULL && PyErr_Occurred()) {
8214                 p->error_indicator = 1;
8215                 D(p->level--);
8216                 return NULL;
8217             }
8218             goto done;
8219         }
8220         p->mark = _mark;
8221         D(fprintf(stderr, "%*c%s return_stmt[%d-%d]: %s failed!\n", p->level, ' ',
8222                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'return' star_expressions?"));
8223     }
8224     _res = NULL;
8225   done:
8226     D(p->level--);
8227     return _res;
8228 }
8229 
8230 // raise_stmt: 'raise' expression ['from' expression] | 'raise'
8231 static stmt_ty
raise_stmt_rule(Parser * p)8232 raise_stmt_rule(Parser *p)
8233 {
8234     D(p->level++);
8235     if (p->error_indicator) {
8236         D(p->level--);
8237         return NULL;
8238     }
8239     stmt_ty _res = NULL;
8240     int _mark = p->mark;
8241     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8242         p->error_indicator = 1;
8243         D(p->level--);
8244         return NULL;
8245     }
8246     int _start_lineno = p->tokens[_mark]->lineno;
8247     UNUSED(_start_lineno); // Only used by EXTRA macro
8248     int _start_col_offset = p->tokens[_mark]->col_offset;
8249     UNUSED(_start_col_offset); // Only used by EXTRA macro
8250     { // 'raise' expression ['from' expression]
8251         if (p->error_indicator) {
8252             D(p->level--);
8253             return NULL;
8254         }
8255         D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise' expression ['from' expression]"));
8256         Token * _keyword;
8257         expr_ty a;
8258         void *b;
8259         if (
8260             (_keyword = _PyPegen_expect_token(p, 501))  // token='raise'
8261             &&
8262             (a = expression_rule(p))  // expression
8263             &&
8264             (b = _tmp_66_rule(p), !p->error_indicator)  // ['from' expression]
8265         )
8266         {
8267             D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise' expression ['from' expression]"));
8268             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8269             if (_token == NULL) {
8270                 D(p->level--);
8271                 return NULL;
8272             }
8273             int _end_lineno = _token->end_lineno;
8274             UNUSED(_end_lineno); // Only used by EXTRA macro
8275             int _end_col_offset = _token->end_col_offset;
8276             UNUSED(_end_col_offset); // Only used by EXTRA macro
8277             _res = _PyAST_Raise ( a , b , EXTRA );
8278             if (_res == NULL && PyErr_Occurred()) {
8279                 p->error_indicator = 1;
8280                 D(p->level--);
8281                 return NULL;
8282             }
8283             goto done;
8284         }
8285         p->mark = _mark;
8286         D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
8287                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise' expression ['from' expression]"));
8288     }
8289     { // 'raise'
8290         if (p->error_indicator) {
8291             D(p->level--);
8292             return NULL;
8293         }
8294         D(fprintf(stderr, "%*c> raise_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'raise'"));
8295         Token * _keyword;
8296         if (
8297             (_keyword = _PyPegen_expect_token(p, 501))  // token='raise'
8298         )
8299         {
8300             D(fprintf(stderr, "%*c+ raise_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'raise'"));
8301             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8302             if (_token == NULL) {
8303                 D(p->level--);
8304                 return NULL;
8305             }
8306             int _end_lineno = _token->end_lineno;
8307             UNUSED(_end_lineno); // Only used by EXTRA macro
8308             int _end_col_offset = _token->end_col_offset;
8309             UNUSED(_end_col_offset); // Only used by EXTRA macro
8310             _res = _PyAST_Raise ( NULL , NULL , EXTRA );
8311             if (_res == NULL && PyErr_Occurred()) {
8312                 p->error_indicator = 1;
8313                 D(p->level--);
8314                 return NULL;
8315             }
8316             goto done;
8317         }
8318         p->mark = _mark;
8319         D(fprintf(stderr, "%*c%s raise_stmt[%d-%d]: %s failed!\n", p->level, ' ',
8320                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'raise'"));
8321     }
8322     _res = NULL;
8323   done:
8324     D(p->level--);
8325     return _res;
8326 }
8327 
8328 // function_def: decorators function_def_raw | function_def_raw
8329 static stmt_ty
function_def_rule(Parser * p)8330 function_def_rule(Parser *p)
8331 {
8332     D(p->level++);
8333     if (p->error_indicator) {
8334         D(p->level--);
8335         return NULL;
8336     }
8337     stmt_ty _res = NULL;
8338     int _mark = p->mark;
8339     { // decorators function_def_raw
8340         if (p->error_indicator) {
8341             D(p->level--);
8342             return NULL;
8343         }
8344         D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
8345         asdl_expr_seq* d;
8346         stmt_ty f;
8347         if (
8348             (d = decorators_rule(p))  // decorators
8349             &&
8350             (f = function_def_raw_rule(p))  // function_def_raw
8351         )
8352         {
8353             D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators function_def_raw"));
8354             _res = _PyPegen_function_def_decorators ( p , d , f );
8355             if (_res == NULL && PyErr_Occurred()) {
8356                 p->error_indicator = 1;
8357                 D(p->level--);
8358                 return NULL;
8359             }
8360             goto done;
8361         }
8362         p->mark = _mark;
8363         D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
8364                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators function_def_raw"));
8365     }
8366     { // function_def_raw
8367         if (p->error_indicator) {
8368             D(p->level--);
8369             return NULL;
8370         }
8371         D(fprintf(stderr, "%*c> function_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
8372         stmt_ty function_def_raw_var;
8373         if (
8374             (function_def_raw_var = function_def_raw_rule(p))  // function_def_raw
8375         )
8376         {
8377             D(fprintf(stderr, "%*c+ function_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "function_def_raw"));
8378             _res = function_def_raw_var;
8379             goto done;
8380         }
8381         p->mark = _mark;
8382         D(fprintf(stderr, "%*c%s function_def[%d-%d]: %s failed!\n", p->level, ' ',
8383                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "function_def_raw"));
8384     }
8385     _res = NULL;
8386   done:
8387     D(p->level--);
8388     return _res;
8389 }
8390 
8391 // function_def_raw:
8392 //     | invalid_def_raw
8393 //     | 'def' NAME '(' params? ')' ['->' expression] &&':' func_type_comment? block
8394 //     | ASYNC 'def' NAME '(' params? ')' ['->' expression] &&':' func_type_comment? block
8395 static stmt_ty
function_def_raw_rule(Parser * p)8396 function_def_raw_rule(Parser *p)
8397 {
8398     D(p->level++);
8399     if (p->error_indicator) {
8400         D(p->level--);
8401         return NULL;
8402     }
8403     stmt_ty _res = NULL;
8404     int _mark = p->mark;
8405     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
8406         p->error_indicator = 1;
8407         D(p->level--);
8408         return NULL;
8409     }
8410     int _start_lineno = p->tokens[_mark]->lineno;
8411     UNUSED(_start_lineno); // Only used by EXTRA macro
8412     int _start_col_offset = p->tokens[_mark]->col_offset;
8413     UNUSED(_start_col_offset); // Only used by EXTRA macro
8414     if (p->call_invalid_rules) { // invalid_def_raw
8415         if (p->error_indicator) {
8416             D(p->level--);
8417             return NULL;
8418         }
8419         D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
8420         void *invalid_def_raw_var;
8421         if (
8422             (invalid_def_raw_var = invalid_def_raw_rule(p))  // invalid_def_raw
8423         )
8424         {
8425             D(fprintf(stderr, "%*c+ function_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_def_raw"));
8426             _res = invalid_def_raw_var;
8427             goto done;
8428         }
8429         p->mark = _mark;
8430         D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
8431                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_def_raw"));
8432     }
8433     { // 'def' NAME '(' params? ')' ['->' expression] &&':' func_type_comment? block
8434         if (p->error_indicator) {
8435             D(p->level--);
8436             return NULL;
8437         }
8438         D(fprintf(stderr, "%*c> function_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def' NAME '(' params? ')' ['->' expression] &&':' func_type_comment? block"));
8439         Token * _keyword;
8440         Token * _literal;
8441         Token * _literal_1;
8442         Token * _literal_2;
8443         void *a;
8444         asdl_stmt_seq* b;
8445         expr_ty n;
8446         void *params;
8447         void *tc;
8448         if (
8449             (_keyword = _PyPegen_expect_token(p, 526))  // token='def'
8450             &&
8451             (n = _PyPegen_name_token(p))  // NAME
8452             &&
8453             (_literal = _PyPegen_expect_token(p, 7))  // token='('
8454             &&
8455             (params = params_rule(p), !p->error_indicator)  // params?
8456             &&
8457             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
8458             &&
8459             (a = _tmp_67_rule(p), !p->error_indicator)  // ['->' expression]
8460             &&
8461             (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
8462             &&
8463             (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
8464             &&
8465             (b = block_rule(p))  // block
8466         )
8467         {
8468             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"));
8469             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8470             if (_token == NULL) {
8471                 D(p->level--);
8472                 return NULL;
8473             }
8474             int _end_lineno = _token->end_lineno;
8475             UNUSED(_end_lineno); // Only used by EXTRA macro
8476             int _end_col_offset = _token->end_col_offset;
8477             UNUSED(_end_col_offset); // Only used by EXTRA macro
8478             _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 );
8479             if (_res == NULL && PyErr_Occurred()) {
8480                 p->error_indicator = 1;
8481                 D(p->level--);
8482                 return NULL;
8483             }
8484             goto done;
8485         }
8486         p->mark = _mark;
8487         D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
8488                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def' NAME '(' params? ')' ['->' expression] &&':' func_type_comment? block"));
8489     }
8490     { // ASYNC 'def' NAME '(' params? ')' ['->' expression] &&':' func_type_comment? block
8491         if (p->error_indicator) {
8492             D(p->level--);
8493             return NULL;
8494         }
8495         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"));
8496         Token * _keyword;
8497         Token * _literal;
8498         Token * _literal_1;
8499         Token * _literal_2;
8500         void *a;
8501         Token * async_var;
8502         asdl_stmt_seq* b;
8503         expr_ty n;
8504         void *params;
8505         void *tc;
8506         if (
8507             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
8508             &&
8509             (_keyword = _PyPegen_expect_token(p, 526))  // token='def'
8510             &&
8511             (n = _PyPegen_name_token(p))  // NAME
8512             &&
8513             (_literal = _PyPegen_expect_token(p, 7))  // token='('
8514             &&
8515             (params = params_rule(p), !p->error_indicator)  // params?
8516             &&
8517             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
8518             &&
8519             (a = _tmp_68_rule(p), !p->error_indicator)  // ['->' expression]
8520             &&
8521             (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
8522             &&
8523             (tc = func_type_comment_rule(p), !p->error_indicator)  // func_type_comment?
8524             &&
8525             (b = block_rule(p))  // block
8526         )
8527         {
8528             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"));
8529             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
8530             if (_token == NULL) {
8531                 D(p->level--);
8532                 return NULL;
8533             }
8534             int _end_lineno = _token->end_lineno;
8535             UNUSED(_end_lineno); // Only used by EXTRA macro
8536             int _end_col_offset = _token->end_col_offset;
8537             UNUSED(_end_col_offset); // Only used by EXTRA macro
8538             _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 ) );
8539             if (_res == NULL && PyErr_Occurred()) {
8540                 p->error_indicator = 1;
8541                 D(p->level--);
8542                 return NULL;
8543             }
8544             goto done;
8545         }
8546         p->mark = _mark;
8547         D(fprintf(stderr, "%*c%s function_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
8548                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'def' NAME '(' params? ')' ['->' expression] &&':' func_type_comment? block"));
8549     }
8550     _res = NULL;
8551   done:
8552     D(p->level--);
8553     return _res;
8554 }
8555 
8556 // func_type_comment:
8557 //     | NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
8558 //     | invalid_double_type_comments
8559 //     | TYPE_COMMENT
8560 static Token*
func_type_comment_rule(Parser * p)8561 func_type_comment_rule(Parser *p)
8562 {
8563     D(p->level++);
8564     if (p->error_indicator) {
8565         D(p->level--);
8566         return NULL;
8567     }
8568     Token* _res = NULL;
8569     int _mark = p->mark;
8570     { // NEWLINE TYPE_COMMENT &(NEWLINE INDENT)
8571         if (p->error_indicator) {
8572             D(p->level--);
8573             return NULL;
8574         }
8575         D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
8576         Token * newline_var;
8577         Token * t;
8578         if (
8579             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
8580             &&
8581             (t = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
8582             &&
8583             _PyPegen_lookahead(1, _tmp_69_rule, p)
8584         )
8585         {
8586             D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
8587             _res = t;
8588             if (_res == NULL && PyErr_Occurred()) {
8589                 p->error_indicator = 1;
8590                 D(p->level--);
8591                 return NULL;
8592             }
8593             goto done;
8594         }
8595         p->mark = _mark;
8596         D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
8597                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE TYPE_COMMENT &(NEWLINE INDENT)"));
8598     }
8599     if (p->call_invalid_rules) { // invalid_double_type_comments
8600         if (p->error_indicator) {
8601             D(p->level--);
8602             return NULL;
8603         }
8604         D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
8605         void *invalid_double_type_comments_var;
8606         if (
8607             (invalid_double_type_comments_var = invalid_double_type_comments_rule(p))  // invalid_double_type_comments
8608         )
8609         {
8610             D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_double_type_comments"));
8611             _res = invalid_double_type_comments_var;
8612             goto done;
8613         }
8614         p->mark = _mark;
8615         D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
8616                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_double_type_comments"));
8617     }
8618     { // TYPE_COMMENT
8619         if (p->error_indicator) {
8620             D(p->level--);
8621             return NULL;
8622         }
8623         D(fprintf(stderr, "%*c> func_type_comment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
8624         Token * type_comment_var;
8625         if (
8626             (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
8627         )
8628         {
8629             D(fprintf(stderr, "%*c+ func_type_comment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT"));
8630             _res = type_comment_var;
8631             goto done;
8632         }
8633         p->mark = _mark;
8634         D(fprintf(stderr, "%*c%s func_type_comment[%d-%d]: %s failed!\n", p->level, ' ',
8635                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT"));
8636     }
8637     _res = NULL;
8638   done:
8639     D(p->level--);
8640     return _res;
8641 }
8642 
8643 // params: invalid_parameters | parameters
8644 static arguments_ty
params_rule(Parser * p)8645 params_rule(Parser *p)
8646 {
8647     D(p->level++);
8648     if (p->error_indicator) {
8649         D(p->level--);
8650         return NULL;
8651     }
8652     arguments_ty _res = NULL;
8653     int _mark = p->mark;
8654     if (p->call_invalid_rules) { // invalid_parameters
8655         if (p->error_indicator) {
8656             D(p->level--);
8657             return NULL;
8658         }
8659         D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
8660         void *invalid_parameters_var;
8661         if (
8662             (invalid_parameters_var = invalid_parameters_rule(p))  // invalid_parameters
8663         )
8664         {
8665             D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_parameters"));
8666             _res = invalid_parameters_var;
8667             goto done;
8668         }
8669         p->mark = _mark;
8670         D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
8671                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_parameters"));
8672     }
8673     { // parameters
8674         if (p->error_indicator) {
8675             D(p->level--);
8676             return NULL;
8677         }
8678         D(fprintf(stderr, "%*c> params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "parameters"));
8679         arguments_ty parameters_var;
8680         if (
8681             (parameters_var = parameters_rule(p))  // parameters
8682         )
8683         {
8684             D(fprintf(stderr, "%*c+ params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "parameters"));
8685             _res = parameters_var;
8686             goto done;
8687         }
8688         p->mark = _mark;
8689         D(fprintf(stderr, "%*c%s params[%d-%d]: %s failed!\n", p->level, ' ',
8690                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "parameters"));
8691     }
8692     _res = NULL;
8693   done:
8694     D(p->level--);
8695     return _res;
8696 }
8697 
8698 // parameters:
8699 //     | slash_no_default param_no_default* param_with_default* star_etc?
8700 //     | slash_with_default param_with_default* star_etc?
8701 //     | param_no_default+ param_with_default* star_etc?
8702 //     | param_with_default+ star_etc?
8703 //     | star_etc
8704 static arguments_ty
parameters_rule(Parser * p)8705 parameters_rule(Parser *p)
8706 {
8707     D(p->level++);
8708     if (p->error_indicator) {
8709         D(p->level--);
8710         return NULL;
8711     }
8712     arguments_ty _res = NULL;
8713     int _mark = p->mark;
8714     { // slash_no_default param_no_default* param_with_default* star_etc?
8715         if (p->error_indicator) {
8716             D(p->level--);
8717             return NULL;
8718         }
8719         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?"));
8720         asdl_arg_seq* a;
8721         asdl_arg_seq* b;
8722         asdl_seq * c;
8723         void *d;
8724         if (
8725             (a = slash_no_default_rule(p))  // slash_no_default
8726             &&
8727             (b = (asdl_arg_seq*)_loop0_70_rule(p))  // param_no_default*
8728             &&
8729             (c = _loop0_71_rule(p))  // param_with_default*
8730             &&
8731             (d = star_etc_rule(p), !p->error_indicator)  // star_etc?
8732         )
8733         {
8734             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?"));
8735             _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
8736             if (_res == NULL && PyErr_Occurred()) {
8737                 p->error_indicator = 1;
8738                 D(p->level--);
8739                 return NULL;
8740             }
8741             goto done;
8742         }
8743         p->mark = _mark;
8744         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
8745                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_no_default param_no_default* param_with_default* star_etc?"));
8746     }
8747     { // slash_with_default param_with_default* star_etc?
8748         if (p->error_indicator) {
8749             D(p->level--);
8750             return NULL;
8751         }
8752         D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
8753         SlashWithDefault* a;
8754         asdl_seq * b;
8755         void *c;
8756         if (
8757             (a = slash_with_default_rule(p))  // slash_with_default
8758             &&
8759             (b = _loop0_72_rule(p))  // param_with_default*
8760             &&
8761             (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
8762         )
8763         {
8764             D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
8765             _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
8766             if (_res == NULL && PyErr_Occurred()) {
8767                 p->error_indicator = 1;
8768                 D(p->level--);
8769                 return NULL;
8770             }
8771             goto done;
8772         }
8773         p->mark = _mark;
8774         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
8775                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default param_with_default* star_etc?"));
8776     }
8777     { // param_no_default+ param_with_default* star_etc?
8778         if (p->error_indicator) {
8779             D(p->level--);
8780             return NULL;
8781         }
8782         D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
8783         asdl_arg_seq* a;
8784         asdl_seq * b;
8785         void *c;
8786         if (
8787             (a = (asdl_arg_seq*)_loop1_73_rule(p))  // param_no_default+
8788             &&
8789             (b = _loop0_74_rule(p))  // param_with_default*
8790             &&
8791             (c = star_etc_rule(p), !p->error_indicator)  // star_etc?
8792         )
8793         {
8794             D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
8795             _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
8796             if (_res == NULL && PyErr_Occurred()) {
8797                 p->error_indicator = 1;
8798                 D(p->level--);
8799                 return NULL;
8800             }
8801             goto done;
8802         }
8803         p->mark = _mark;
8804         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
8805                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ param_with_default* star_etc?"));
8806     }
8807     { // param_with_default+ star_etc?
8808         if (p->error_indicator) {
8809             D(p->level--);
8810             return NULL;
8811         }
8812         D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
8813         asdl_seq * a;
8814         void *b;
8815         if (
8816             (a = _loop1_75_rule(p))  // param_with_default+
8817             &&
8818             (b = star_etc_rule(p), !p->error_indicator)  // star_etc?
8819         )
8820         {
8821             D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+ star_etc?"));
8822             _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
8823             if (_res == NULL && PyErr_Occurred()) {
8824                 p->error_indicator = 1;
8825                 D(p->level--);
8826                 return NULL;
8827             }
8828             goto done;
8829         }
8830         p->mark = _mark;
8831         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
8832                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+ star_etc?"));
8833     }
8834     { // star_etc
8835         if (p->error_indicator) {
8836             D(p->level--);
8837             return NULL;
8838         }
8839         D(fprintf(stderr, "%*c> parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_etc"));
8840         StarEtc* a;
8841         if (
8842             (a = star_etc_rule(p))  // star_etc
8843         )
8844         {
8845             D(fprintf(stderr, "%*c+ parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_etc"));
8846             _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
8847             if (_res == NULL && PyErr_Occurred()) {
8848                 p->error_indicator = 1;
8849                 D(p->level--);
8850                 return NULL;
8851             }
8852             goto done;
8853         }
8854         p->mark = _mark;
8855         D(fprintf(stderr, "%*c%s parameters[%d-%d]: %s failed!\n", p->level, ' ',
8856                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_etc"));
8857     }
8858     _res = NULL;
8859   done:
8860     D(p->level--);
8861     return _res;
8862 }
8863 
8864 // slash_no_default: param_no_default+ '/' ',' | param_no_default+ '/' &')'
8865 static asdl_arg_seq*
slash_no_default_rule(Parser * p)8866 slash_no_default_rule(Parser *p)
8867 {
8868     D(p->level++);
8869     if (p->error_indicator) {
8870         D(p->level--);
8871         return NULL;
8872     }
8873     asdl_arg_seq* _res = NULL;
8874     int _mark = p->mark;
8875     { // param_no_default+ '/' ','
8876         if (p->error_indicator) {
8877             D(p->level--);
8878             return NULL;
8879         }
8880         D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
8881         Token * _literal;
8882         Token * _literal_1;
8883         asdl_arg_seq* a;
8884         if (
8885             (a = (asdl_arg_seq*)_loop1_76_rule(p))  // param_no_default+
8886             &&
8887             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
8888             &&
8889             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
8890         )
8891         {
8892             D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' ','"));
8893             _res = a;
8894             if (_res == NULL && PyErr_Occurred()) {
8895                 p->error_indicator = 1;
8896                 D(p->level--);
8897                 return NULL;
8898             }
8899             goto done;
8900         }
8901         p->mark = _mark;
8902         D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
8903                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' ','"));
8904     }
8905     { // param_no_default+ '/' &')'
8906         if (p->error_indicator) {
8907             D(p->level--);
8908             return NULL;
8909         }
8910         D(fprintf(stderr, "%*c> slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
8911         Token * _literal;
8912         asdl_arg_seq* a;
8913         if (
8914             (a = (asdl_arg_seq*)_loop1_77_rule(p))  // param_no_default+
8915             &&
8916             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
8917             &&
8918             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
8919         )
8920         {
8921             D(fprintf(stderr, "%*c+ slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default+ '/' &')'"));
8922             _res = a;
8923             if (_res == NULL && PyErr_Occurred()) {
8924                 p->error_indicator = 1;
8925                 D(p->level--);
8926                 return NULL;
8927             }
8928             goto done;
8929         }
8930         p->mark = _mark;
8931         D(fprintf(stderr, "%*c%s slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
8932                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default+ '/' &')'"));
8933     }
8934     _res = NULL;
8935   done:
8936     D(p->level--);
8937     return _res;
8938 }
8939 
8940 // slash_with_default:
8941 //     | param_no_default* param_with_default+ '/' ','
8942 //     | param_no_default* param_with_default+ '/' &')'
8943 static SlashWithDefault*
slash_with_default_rule(Parser * p)8944 slash_with_default_rule(Parser *p)
8945 {
8946     D(p->level++);
8947     if (p->error_indicator) {
8948         D(p->level--);
8949         return NULL;
8950     }
8951     SlashWithDefault* _res = NULL;
8952     int _mark = p->mark;
8953     { // param_no_default* param_with_default+ '/' ','
8954         if (p->error_indicator) {
8955             D(p->level--);
8956             return NULL;
8957         }
8958         D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
8959         Token * _literal;
8960         Token * _literal_1;
8961         asdl_seq * a;
8962         asdl_seq * b;
8963         if (
8964             (a = _loop0_78_rule(p))  // param_no_default*
8965             &&
8966             (b = _loop1_79_rule(p))  // param_with_default+
8967             &&
8968             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
8969             &&
8970             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
8971         )
8972         {
8973             D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
8974             _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq * ) a , b );
8975             if (_res == NULL && PyErr_Occurred()) {
8976                 p->error_indicator = 1;
8977                 D(p->level--);
8978                 return NULL;
8979             }
8980             goto done;
8981         }
8982         p->mark = _mark;
8983         D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
8984                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' ','"));
8985     }
8986     { // param_no_default* param_with_default+ '/' &')'
8987         if (p->error_indicator) {
8988             D(p->level--);
8989             return NULL;
8990         }
8991         D(fprintf(stderr, "%*c> slash_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
8992         Token * _literal;
8993         asdl_seq * a;
8994         asdl_seq * b;
8995         if (
8996             (a = _loop0_80_rule(p))  // param_no_default*
8997             &&
8998             (b = _loop1_81_rule(p))  // param_with_default+
8999             &&
9000             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
9001             &&
9002             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
9003         )
9004         {
9005             D(fprintf(stderr, "%*c+ slash_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
9006             _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq * ) a , b );
9007             if (_res == NULL && PyErr_Occurred()) {
9008                 p->error_indicator = 1;
9009                 D(p->level--);
9010                 return NULL;
9011             }
9012             goto done;
9013         }
9014         p->mark = _mark;
9015         D(fprintf(stderr, "%*c%s slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
9016                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* param_with_default+ '/' &')'"));
9017     }
9018     _res = NULL;
9019   done:
9020     D(p->level--);
9021     return _res;
9022 }
9023 
9024 // star_etc:
9025 //     | '*' param_no_default param_maybe_default* kwds?
9026 //     | '*' ',' param_maybe_default+ kwds?
9027 //     | kwds
9028 //     | invalid_star_etc
9029 static StarEtc*
star_etc_rule(Parser * p)9030 star_etc_rule(Parser *p)
9031 {
9032     D(p->level++);
9033     if (p->error_indicator) {
9034         D(p->level--);
9035         return NULL;
9036     }
9037     StarEtc* _res = NULL;
9038     int _mark = p->mark;
9039     { // '*' param_no_default param_maybe_default* kwds?
9040         if (p->error_indicator) {
9041             D(p->level--);
9042             return NULL;
9043         }
9044         D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
9045         Token * _literal;
9046         arg_ty a;
9047         asdl_seq * b;
9048         void *c;
9049         if (
9050             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
9051             &&
9052             (a = param_no_default_rule(p))  // param_no_default
9053             &&
9054             (b = _loop0_82_rule(p))  // param_maybe_default*
9055             &&
9056             (c = kwds_rule(p), !p->error_indicator)  // kwds?
9057         )
9058         {
9059             D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
9060             _res = _PyPegen_star_etc ( p , a , b , c );
9061             if (_res == NULL && PyErr_Occurred()) {
9062                 p->error_indicator = 1;
9063                 D(p->level--);
9064                 return NULL;
9065             }
9066             goto done;
9067         }
9068         p->mark = _mark;
9069         D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
9070                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' param_no_default param_maybe_default* kwds?"));
9071     }
9072     { // '*' ',' param_maybe_default+ kwds?
9073         if (p->error_indicator) {
9074             D(p->level--);
9075             return NULL;
9076         }
9077         D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
9078         Token * _literal;
9079         Token * _literal_1;
9080         asdl_seq * b;
9081         void *c;
9082         if (
9083             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
9084             &&
9085             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
9086             &&
9087             (b = _loop1_83_rule(p))  // param_maybe_default+
9088             &&
9089             (c = kwds_rule(p), !p->error_indicator)  // kwds?
9090         )
9091         {
9092             D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
9093             _res = _PyPegen_star_etc ( p , NULL , b , c );
9094             if (_res == NULL && PyErr_Occurred()) {
9095                 p->error_indicator = 1;
9096                 D(p->level--);
9097                 return NULL;
9098             }
9099             goto done;
9100         }
9101         p->mark = _mark;
9102         D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
9103                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' param_maybe_default+ kwds?"));
9104     }
9105     { // kwds
9106         if (p->error_indicator) {
9107             D(p->level--);
9108             return NULL;
9109         }
9110         D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwds"));
9111         arg_ty a;
9112         if (
9113             (a = kwds_rule(p))  // kwds
9114         )
9115         {
9116             D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwds"));
9117             _res = _PyPegen_star_etc ( p , NULL , NULL , a );
9118             if (_res == NULL && PyErr_Occurred()) {
9119                 p->error_indicator = 1;
9120                 D(p->level--);
9121                 return NULL;
9122             }
9123             goto done;
9124         }
9125         p->mark = _mark;
9126         D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
9127                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwds"));
9128     }
9129     if (p->call_invalid_rules) { // invalid_star_etc
9130         if (p->error_indicator) {
9131             D(p->level--);
9132             return NULL;
9133         }
9134         D(fprintf(stderr, "%*c> star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
9135         void *invalid_star_etc_var;
9136         if (
9137             (invalid_star_etc_var = invalid_star_etc_rule(p))  // invalid_star_etc
9138         )
9139         {
9140             D(fprintf(stderr, "%*c+ star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_star_etc"));
9141             _res = invalid_star_etc_var;
9142             goto done;
9143         }
9144         p->mark = _mark;
9145         D(fprintf(stderr, "%*c%s star_etc[%d-%d]: %s failed!\n", p->level, ' ',
9146                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_star_etc"));
9147     }
9148     _res = NULL;
9149   done:
9150     D(p->level--);
9151     return _res;
9152 }
9153 
9154 // kwds: '**' param_no_default
9155 static arg_ty
kwds_rule(Parser * p)9156 kwds_rule(Parser *p)
9157 {
9158     D(p->level++);
9159     if (p->error_indicator) {
9160         D(p->level--);
9161         return NULL;
9162     }
9163     arg_ty _res = NULL;
9164     int _mark = p->mark;
9165     { // '**' param_no_default
9166         if (p->error_indicator) {
9167             D(p->level--);
9168             return NULL;
9169         }
9170         D(fprintf(stderr, "%*c> kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
9171         Token * _literal;
9172         arg_ty a;
9173         if (
9174             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
9175             &&
9176             (a = param_no_default_rule(p))  // param_no_default
9177         )
9178         {
9179             D(fprintf(stderr, "%*c+ kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' param_no_default"));
9180             _res = a;
9181             if (_res == NULL && PyErr_Occurred()) {
9182                 p->error_indicator = 1;
9183                 D(p->level--);
9184                 return NULL;
9185             }
9186             goto done;
9187         }
9188         p->mark = _mark;
9189         D(fprintf(stderr, "%*c%s kwds[%d-%d]: %s failed!\n", p->level, ' ',
9190                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' param_no_default"));
9191     }
9192     _res = NULL;
9193   done:
9194     D(p->level--);
9195     return _res;
9196 }
9197 
9198 // param_no_default: param ',' TYPE_COMMENT? | param TYPE_COMMENT? &')'
9199 static arg_ty
param_no_default_rule(Parser * p)9200 param_no_default_rule(Parser *p)
9201 {
9202     D(p->level++);
9203     if (p->error_indicator) {
9204         D(p->level--);
9205         return NULL;
9206     }
9207     arg_ty _res = NULL;
9208     int _mark = p->mark;
9209     { // param ',' TYPE_COMMENT?
9210         if (p->error_indicator) {
9211             D(p->level--);
9212             return NULL;
9213         }
9214         D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
9215         Token * _literal;
9216         arg_ty a;
9217         void *tc;
9218         if (
9219             (a = param_rule(p))  // param
9220             &&
9221             (_literal = _PyPegen_expect_token(p, 12))  // token=','
9222             &&
9223             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
9224         )
9225         {
9226             D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param ',' TYPE_COMMENT?"));
9227             _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
9228             if (_res == NULL && PyErr_Occurred()) {
9229                 p->error_indicator = 1;
9230                 D(p->level--);
9231                 return NULL;
9232             }
9233             goto done;
9234         }
9235         p->mark = _mark;
9236         D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
9237                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param ',' TYPE_COMMENT?"));
9238     }
9239     { // param TYPE_COMMENT? &')'
9240         if (p->error_indicator) {
9241             D(p->level--);
9242             return NULL;
9243         }
9244         D(fprintf(stderr, "%*c> param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
9245         arg_ty a;
9246         void *tc;
9247         if (
9248             (a = param_rule(p))  // param
9249             &&
9250             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
9251             &&
9252             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
9253         )
9254         {
9255             D(fprintf(stderr, "%*c+ param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param TYPE_COMMENT? &')'"));
9256             _res = _PyPegen_add_type_comment_to_arg ( p , a , tc );
9257             if (_res == NULL && PyErr_Occurred()) {
9258                 p->error_indicator = 1;
9259                 D(p->level--);
9260                 return NULL;
9261             }
9262             goto done;
9263         }
9264         p->mark = _mark;
9265         D(fprintf(stderr, "%*c%s param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
9266                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param TYPE_COMMENT? &')'"));
9267     }
9268     _res = NULL;
9269   done:
9270     D(p->level--);
9271     return _res;
9272 }
9273 
9274 // param_with_default: param default ',' TYPE_COMMENT? | param default TYPE_COMMENT? &')'
9275 static NameDefaultPair*
param_with_default_rule(Parser * p)9276 param_with_default_rule(Parser *p)
9277 {
9278     D(p->level++);
9279     if (p->error_indicator) {
9280         D(p->level--);
9281         return NULL;
9282     }
9283     NameDefaultPair* _res = NULL;
9284     int _mark = p->mark;
9285     { // param default ',' TYPE_COMMENT?
9286         if (p->error_indicator) {
9287             D(p->level--);
9288             return NULL;
9289         }
9290         D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
9291         Token * _literal;
9292         arg_ty a;
9293         expr_ty c;
9294         void *tc;
9295         if (
9296             (a = param_rule(p))  // param
9297             &&
9298             (c = default_rule(p))  // default
9299             &&
9300             (_literal = _PyPegen_expect_token(p, 12))  // token=','
9301             &&
9302             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
9303         )
9304         {
9305             D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default ',' TYPE_COMMENT?"));
9306             _res = _PyPegen_name_default_pair ( p , a , c , tc );
9307             if (_res == NULL && PyErr_Occurred()) {
9308                 p->error_indicator = 1;
9309                 D(p->level--);
9310                 return NULL;
9311             }
9312             goto done;
9313         }
9314         p->mark = _mark;
9315         D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
9316                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default ',' TYPE_COMMENT?"));
9317     }
9318     { // param default TYPE_COMMENT? &')'
9319         if (p->error_indicator) {
9320             D(p->level--);
9321             return NULL;
9322         }
9323         D(fprintf(stderr, "%*c> param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
9324         arg_ty a;
9325         expr_ty c;
9326         void *tc;
9327         if (
9328             (a = param_rule(p))  // param
9329             &&
9330             (c = default_rule(p))  // default
9331             &&
9332             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
9333             &&
9334             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
9335         )
9336         {
9337             D(fprintf(stderr, "%*c+ param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default TYPE_COMMENT? &')'"));
9338             _res = _PyPegen_name_default_pair ( p , a , c , tc );
9339             if (_res == NULL && PyErr_Occurred()) {
9340                 p->error_indicator = 1;
9341                 D(p->level--);
9342                 return NULL;
9343             }
9344             goto done;
9345         }
9346         p->mark = _mark;
9347         D(fprintf(stderr, "%*c%s param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
9348                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default TYPE_COMMENT? &')'"));
9349     }
9350     _res = NULL;
9351   done:
9352     D(p->level--);
9353     return _res;
9354 }
9355 
9356 // param_maybe_default:
9357 //     | param default? ',' TYPE_COMMENT?
9358 //     | param default? TYPE_COMMENT? &')'
9359 static NameDefaultPair*
param_maybe_default_rule(Parser * p)9360 param_maybe_default_rule(Parser *p)
9361 {
9362     D(p->level++);
9363     if (p->error_indicator) {
9364         D(p->level--);
9365         return NULL;
9366     }
9367     NameDefaultPair* _res = NULL;
9368     int _mark = p->mark;
9369     { // param default? ',' TYPE_COMMENT?
9370         if (p->error_indicator) {
9371             D(p->level--);
9372             return NULL;
9373         }
9374         D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
9375         Token * _literal;
9376         arg_ty a;
9377         void *c;
9378         void *tc;
9379         if (
9380             (a = param_rule(p))  // param
9381             &&
9382             (c = default_rule(p), !p->error_indicator)  // default?
9383             &&
9384             (_literal = _PyPegen_expect_token(p, 12))  // token=','
9385             &&
9386             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
9387         )
9388         {
9389             D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
9390             _res = _PyPegen_name_default_pair ( p , a , c , tc );
9391             if (_res == NULL && PyErr_Occurred()) {
9392                 p->error_indicator = 1;
9393                 D(p->level--);
9394                 return NULL;
9395             }
9396             goto done;
9397         }
9398         p->mark = _mark;
9399         D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
9400                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? ',' TYPE_COMMENT?"));
9401     }
9402     { // param default? TYPE_COMMENT? &')'
9403         if (p->error_indicator) {
9404             D(p->level--);
9405             return NULL;
9406         }
9407         D(fprintf(stderr, "%*c> param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
9408         arg_ty a;
9409         void *c;
9410         void *tc;
9411         if (
9412             (a = param_rule(p))  // param
9413             &&
9414             (c = default_rule(p), !p->error_indicator)  // default?
9415             &&
9416             (tc = _PyPegen_expect_token(p, TYPE_COMMENT), !p->error_indicator)  // TYPE_COMMENT?
9417             &&
9418             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
9419         )
9420         {
9421             D(fprintf(stderr, "%*c+ param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
9422             _res = _PyPegen_name_default_pair ( p , a , c , tc );
9423             if (_res == NULL && PyErr_Occurred()) {
9424                 p->error_indicator = 1;
9425                 D(p->level--);
9426                 return NULL;
9427             }
9428             goto done;
9429         }
9430         p->mark = _mark;
9431         D(fprintf(stderr, "%*c%s param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
9432                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param default? TYPE_COMMENT? &')'"));
9433     }
9434     _res = NULL;
9435   done:
9436     D(p->level--);
9437     return _res;
9438 }
9439 
9440 // param: NAME annotation?
9441 static arg_ty
param_rule(Parser * p)9442 param_rule(Parser *p)
9443 {
9444     D(p->level++);
9445     if (p->error_indicator) {
9446         D(p->level--);
9447         return NULL;
9448     }
9449     arg_ty _res = NULL;
9450     int _mark = p->mark;
9451     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9452         p->error_indicator = 1;
9453         D(p->level--);
9454         return NULL;
9455     }
9456     int _start_lineno = p->tokens[_mark]->lineno;
9457     UNUSED(_start_lineno); // Only used by EXTRA macro
9458     int _start_col_offset = p->tokens[_mark]->col_offset;
9459     UNUSED(_start_col_offset); // Only used by EXTRA macro
9460     { // NAME annotation?
9461         if (p->error_indicator) {
9462             D(p->level--);
9463             return NULL;
9464         }
9465         D(fprintf(stderr, "%*c> param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
9466         expr_ty a;
9467         void *b;
9468         if (
9469             (a = _PyPegen_name_token(p))  // NAME
9470             &&
9471             (b = annotation_rule(p), !p->error_indicator)  // annotation?
9472         )
9473         {
9474             D(fprintf(stderr, "%*c+ param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME annotation?"));
9475             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9476             if (_token == NULL) {
9477                 D(p->level--);
9478                 return NULL;
9479             }
9480             int _end_lineno = _token->end_lineno;
9481             UNUSED(_end_lineno); // Only used by EXTRA macro
9482             int _end_col_offset = _token->end_col_offset;
9483             UNUSED(_end_col_offset); // Only used by EXTRA macro
9484             _res = _PyAST_arg ( a -> v . Name . id , b , NULL , EXTRA );
9485             if (_res == NULL && PyErr_Occurred()) {
9486                 p->error_indicator = 1;
9487                 D(p->level--);
9488                 return NULL;
9489             }
9490             goto done;
9491         }
9492         p->mark = _mark;
9493         D(fprintf(stderr, "%*c%s param[%d-%d]: %s failed!\n", p->level, ' ',
9494                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME annotation?"));
9495     }
9496     _res = NULL;
9497   done:
9498     D(p->level--);
9499     return _res;
9500 }
9501 
9502 // annotation: ':' expression
9503 static expr_ty
annotation_rule(Parser * p)9504 annotation_rule(Parser *p)
9505 {
9506     D(p->level++);
9507     if (p->error_indicator) {
9508         D(p->level--);
9509         return NULL;
9510     }
9511     expr_ty _res = NULL;
9512     int _mark = p->mark;
9513     { // ':' expression
9514         if (p->error_indicator) {
9515             D(p->level--);
9516             return NULL;
9517         }
9518         D(fprintf(stderr, "%*c> annotation[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression"));
9519         Token * _literal;
9520         expr_ty a;
9521         if (
9522             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
9523             &&
9524             (a = expression_rule(p))  // expression
9525         )
9526         {
9527             D(fprintf(stderr, "%*c+ annotation[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression"));
9528             _res = a;
9529             if (_res == NULL && PyErr_Occurred()) {
9530                 p->error_indicator = 1;
9531                 D(p->level--);
9532                 return NULL;
9533             }
9534             goto done;
9535         }
9536         p->mark = _mark;
9537         D(fprintf(stderr, "%*c%s annotation[%d-%d]: %s failed!\n", p->level, ' ',
9538                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression"));
9539     }
9540     _res = NULL;
9541   done:
9542     D(p->level--);
9543     return _res;
9544 }
9545 
9546 // default: '=' expression
9547 static expr_ty
default_rule(Parser * p)9548 default_rule(Parser *p)
9549 {
9550     D(p->level++);
9551     if (p->error_indicator) {
9552         D(p->level--);
9553         return NULL;
9554     }
9555     expr_ty _res = NULL;
9556     int _mark = p->mark;
9557     { // '=' expression
9558         if (p->error_indicator) {
9559             D(p->level--);
9560             return NULL;
9561         }
9562         D(fprintf(stderr, "%*c> default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' expression"));
9563         Token * _literal;
9564         expr_ty a;
9565         if (
9566             (_literal = _PyPegen_expect_token(p, 22))  // token='='
9567             &&
9568             (a = expression_rule(p))  // expression
9569         )
9570         {
9571             D(fprintf(stderr, "%*c+ default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' expression"));
9572             _res = a;
9573             if (_res == NULL && PyErr_Occurred()) {
9574                 p->error_indicator = 1;
9575                 D(p->level--);
9576                 return NULL;
9577             }
9578             goto done;
9579         }
9580         p->mark = _mark;
9581         D(fprintf(stderr, "%*c%s default[%d-%d]: %s failed!\n", p->level, ' ',
9582                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' expression"));
9583     }
9584     _res = NULL;
9585   done:
9586     D(p->level--);
9587     return _res;
9588 }
9589 
9590 // decorators: (('@' named_expression NEWLINE))+
9591 static asdl_expr_seq*
decorators_rule(Parser * p)9592 decorators_rule(Parser *p)
9593 {
9594     D(p->level++);
9595     if (p->error_indicator) {
9596         D(p->level--);
9597         return NULL;
9598     }
9599     asdl_expr_seq* _res = NULL;
9600     int _mark = p->mark;
9601     { // (('@' named_expression NEWLINE))+
9602         if (p->error_indicator) {
9603             D(p->level--);
9604             return NULL;
9605         }
9606         D(fprintf(stderr, "%*c> decorators[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
9607         asdl_expr_seq* a;
9608         if (
9609             (a = (asdl_expr_seq*)_loop1_84_rule(p))  // (('@' named_expression NEWLINE))+
9610         )
9611         {
9612             D(fprintf(stderr, "%*c+ decorators[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(('@' named_expression NEWLINE))+"));
9613             _res = a;
9614             if (_res == NULL && PyErr_Occurred()) {
9615                 p->error_indicator = 1;
9616                 D(p->level--);
9617                 return NULL;
9618             }
9619             goto done;
9620         }
9621         p->mark = _mark;
9622         D(fprintf(stderr, "%*c%s decorators[%d-%d]: %s failed!\n", p->level, ' ',
9623                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(('@' named_expression NEWLINE))+"));
9624     }
9625     _res = NULL;
9626   done:
9627     D(p->level--);
9628     return _res;
9629 }
9630 
9631 // class_def: decorators class_def_raw | class_def_raw
9632 static stmt_ty
class_def_rule(Parser * p)9633 class_def_rule(Parser *p)
9634 {
9635     D(p->level++);
9636     if (p->error_indicator) {
9637         D(p->level--);
9638         return NULL;
9639     }
9640     stmt_ty _res = NULL;
9641     int _mark = p->mark;
9642     { // decorators class_def_raw
9643         if (p->error_indicator) {
9644             D(p->level--);
9645             return NULL;
9646         }
9647         D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
9648         asdl_expr_seq* a;
9649         stmt_ty b;
9650         if (
9651             (a = decorators_rule(p))  // decorators
9652             &&
9653             (b = class_def_raw_rule(p))  // class_def_raw
9654         )
9655         {
9656             D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "decorators class_def_raw"));
9657             _res = _PyPegen_class_def_decorators ( p , a , b );
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 class_def[%d-%d]: %s failed!\n", p->level, ' ',
9667                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "decorators class_def_raw"));
9668     }
9669     { // class_def_raw
9670         if (p->error_indicator) {
9671             D(p->level--);
9672             return NULL;
9673         }
9674         D(fprintf(stderr, "%*c> class_def[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
9675         stmt_ty class_def_raw_var;
9676         if (
9677             (class_def_raw_var = class_def_raw_rule(p))  // class_def_raw
9678         )
9679         {
9680             D(fprintf(stderr, "%*c+ class_def[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "class_def_raw"));
9681             _res = class_def_raw_var;
9682             goto done;
9683         }
9684         p->mark = _mark;
9685         D(fprintf(stderr, "%*c%s class_def[%d-%d]: %s failed!\n", p->level, ' ',
9686                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "class_def_raw"));
9687     }
9688     _res = NULL;
9689   done:
9690     D(p->level--);
9691     return _res;
9692 }
9693 
9694 // class_def_raw: invalid_class_def_raw | 'class' NAME ['(' arguments? ')'] &&':' block
9695 static stmt_ty
class_def_raw_rule(Parser * p)9696 class_def_raw_rule(Parser *p)
9697 {
9698     D(p->level++);
9699     if (p->error_indicator) {
9700         D(p->level--);
9701         return NULL;
9702     }
9703     stmt_ty _res = NULL;
9704     int _mark = p->mark;
9705     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9706         p->error_indicator = 1;
9707         D(p->level--);
9708         return NULL;
9709     }
9710     int _start_lineno = p->tokens[_mark]->lineno;
9711     UNUSED(_start_lineno); // Only used by EXTRA macro
9712     int _start_col_offset = p->tokens[_mark]->col_offset;
9713     UNUSED(_start_col_offset); // Only used by EXTRA macro
9714     if (p->call_invalid_rules) { // invalid_class_def_raw
9715         if (p->error_indicator) {
9716             D(p->level--);
9717             return NULL;
9718         }
9719         D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
9720         void *invalid_class_def_raw_var;
9721         if (
9722             (invalid_class_def_raw_var = invalid_class_def_raw_rule(p))  // invalid_class_def_raw
9723         )
9724         {
9725             D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_class_def_raw"));
9726             _res = invalid_class_def_raw_var;
9727             goto done;
9728         }
9729         p->mark = _mark;
9730         D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
9731                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_class_def_raw"));
9732     }
9733     { // 'class' NAME ['(' arguments? ')'] &&':' block
9734         if (p->error_indicator) {
9735             D(p->level--);
9736             return NULL;
9737         }
9738         D(fprintf(stderr, "%*c> class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] &&':' block"));
9739         Token * _keyword;
9740         Token * _literal;
9741         expr_ty a;
9742         void *b;
9743         asdl_stmt_seq* c;
9744         if (
9745             (_keyword = _PyPegen_expect_token(p, 527))  // token='class'
9746             &&
9747             (a = _PyPegen_name_token(p))  // NAME
9748             &&
9749             (b = _tmp_85_rule(p), !p->error_indicator)  // ['(' arguments? ')']
9750             &&
9751             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
9752             &&
9753             (c = block_rule(p))  // block
9754         )
9755         {
9756             D(fprintf(stderr, "%*c+ class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] &&':' block"));
9757             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9758             if (_token == NULL) {
9759                 D(p->level--);
9760                 return NULL;
9761             }
9762             int _end_lineno = _token->end_lineno;
9763             UNUSED(_end_lineno); // Only used by EXTRA macro
9764             int _end_col_offset = _token->end_col_offset;
9765             UNUSED(_end_col_offset); // Only used by EXTRA macro
9766             _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 );
9767             if (_res == NULL && PyErr_Occurred()) {
9768                 p->error_indicator = 1;
9769                 D(p->level--);
9770                 return NULL;
9771             }
9772             goto done;
9773         }
9774         p->mark = _mark;
9775         D(fprintf(stderr, "%*c%s class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
9776                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME ['(' arguments? ')'] &&':' block"));
9777     }
9778     _res = NULL;
9779   done:
9780     D(p->level--);
9781     return _res;
9782 }
9783 
9784 // block: NEWLINE INDENT statements DEDENT | simple_stmts | invalid_block
9785 static asdl_stmt_seq*
block_rule(Parser * p)9786 block_rule(Parser *p)
9787 {
9788     D(p->level++);
9789     if (p->error_indicator) {
9790         D(p->level--);
9791         return NULL;
9792     }
9793     asdl_stmt_seq* _res = NULL;
9794     if (_PyPegen_is_memoized(p, block_type, &_res)) {
9795         D(p->level--);
9796         return _res;
9797     }
9798     int _mark = p->mark;
9799     { // NEWLINE INDENT statements DEDENT
9800         if (p->error_indicator) {
9801             D(p->level--);
9802             return NULL;
9803         }
9804         D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
9805         asdl_stmt_seq* a;
9806         Token * dedent_var;
9807         Token * indent_var;
9808         Token * newline_var;
9809         if (
9810             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
9811             &&
9812             (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
9813             &&
9814             (a = statements_rule(p))  // statements
9815             &&
9816             (dedent_var = _PyPegen_expect_token(p, DEDENT))  // token='DEDENT'
9817         )
9818         {
9819             D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
9820             _res = a;
9821             if (_res == NULL && PyErr_Occurred()) {
9822                 p->error_indicator = 1;
9823                 D(p->level--);
9824                 return NULL;
9825             }
9826             goto done;
9827         }
9828         p->mark = _mark;
9829         D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
9830                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT statements DEDENT"));
9831     }
9832     { // simple_stmts
9833         if (p->error_indicator) {
9834             D(p->level--);
9835             return NULL;
9836         }
9837         D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
9838         asdl_stmt_seq* simple_stmts_var;
9839         if (
9840             (simple_stmts_var = simple_stmts_rule(p))  // simple_stmts
9841         )
9842         {
9843             D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmts"));
9844             _res = simple_stmts_var;
9845             goto done;
9846         }
9847         p->mark = _mark;
9848         D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
9849                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmts"));
9850     }
9851     if (p->call_invalid_rules) { // invalid_block
9852         if (p->error_indicator) {
9853             D(p->level--);
9854             return NULL;
9855         }
9856         D(fprintf(stderr, "%*c> block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_block"));
9857         void *invalid_block_var;
9858         if (
9859             (invalid_block_var = invalid_block_rule(p))  // invalid_block
9860         )
9861         {
9862             D(fprintf(stderr, "%*c+ block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_block"));
9863             _res = invalid_block_var;
9864             goto done;
9865         }
9866         p->mark = _mark;
9867         D(fprintf(stderr, "%*c%s block[%d-%d]: %s failed!\n", p->level, ' ',
9868                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_block"));
9869     }
9870     _res = NULL;
9871   done:
9872     _PyPegen_insert_memo(p, _mark, block_type, _res);
9873     D(p->level--);
9874     return _res;
9875 }
9876 
9877 // star_expressions:
9878 //     | star_expression ((',' star_expression))+ ','?
9879 //     | star_expression ','
9880 //     | star_expression
9881 static expr_ty
star_expressions_rule(Parser * p)9882 star_expressions_rule(Parser *p)
9883 {
9884     D(p->level++);
9885     if (p->error_indicator) {
9886         D(p->level--);
9887         return NULL;
9888     }
9889     expr_ty _res = NULL;
9890     int _mark = p->mark;
9891     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
9892         p->error_indicator = 1;
9893         D(p->level--);
9894         return NULL;
9895     }
9896     int _start_lineno = p->tokens[_mark]->lineno;
9897     UNUSED(_start_lineno); // Only used by EXTRA macro
9898     int _start_col_offset = p->tokens[_mark]->col_offset;
9899     UNUSED(_start_col_offset); // Only used by EXTRA macro
9900     { // star_expression ((',' star_expression))+ ','?
9901         if (p->error_indicator) {
9902             D(p->level--);
9903             return NULL;
9904         }
9905         D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
9906         void *_opt_var;
9907         UNUSED(_opt_var); // Silence compiler warnings
9908         expr_ty a;
9909         asdl_seq * b;
9910         if (
9911             (a = star_expression_rule(p))  // star_expression
9912             &&
9913             (b = _loop1_86_rule(p))  // ((',' star_expression))+
9914             &&
9915             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
9916         )
9917         {
9918             D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
9919             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9920             if (_token == NULL) {
9921                 D(p->level--);
9922                 return NULL;
9923             }
9924             int _end_lineno = _token->end_lineno;
9925             UNUSED(_end_lineno); // Only used by EXTRA macro
9926             int _end_col_offset = _token->end_col_offset;
9927             UNUSED(_end_col_offset); // Only used by EXTRA macro
9928             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq * , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
9929             if (_res == NULL && PyErr_Occurred()) {
9930                 p->error_indicator = 1;
9931                 D(p->level--);
9932                 return NULL;
9933             }
9934             goto done;
9935         }
9936         p->mark = _mark;
9937         D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
9938                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ((',' star_expression))+ ','?"));
9939     }
9940     { // star_expression ','
9941         if (p->error_indicator) {
9942             D(p->level--);
9943             return NULL;
9944         }
9945         D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
9946         Token * _literal;
9947         expr_ty a;
9948         if (
9949             (a = star_expression_rule(p))  // star_expression
9950             &&
9951             (_literal = _PyPegen_expect_token(p, 12))  // token=','
9952         )
9953         {
9954             D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression ','"));
9955             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
9956             if (_token == NULL) {
9957                 D(p->level--);
9958                 return NULL;
9959             }
9960             int _end_lineno = _token->end_lineno;
9961             UNUSED(_end_lineno); // Only used by EXTRA macro
9962             int _end_col_offset = _token->end_col_offset;
9963             UNUSED(_end_col_offset); // Only used by EXTRA macro
9964             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq * , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
9965             if (_res == NULL && PyErr_Occurred()) {
9966                 p->error_indicator = 1;
9967                 D(p->level--);
9968                 return NULL;
9969             }
9970             goto done;
9971         }
9972         p->mark = _mark;
9973         D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
9974                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression ','"));
9975     }
9976     { // star_expression
9977         if (p->error_indicator) {
9978             D(p->level--);
9979             return NULL;
9980         }
9981         D(fprintf(stderr, "%*c> star_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expression"));
9982         expr_ty star_expression_var;
9983         if (
9984             (star_expression_var = star_expression_rule(p))  // star_expression
9985         )
9986         {
9987             D(fprintf(stderr, "%*c+ star_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expression"));
9988             _res = star_expression_var;
9989             goto done;
9990         }
9991         p->mark = _mark;
9992         D(fprintf(stderr, "%*c%s star_expressions[%d-%d]: %s failed!\n", p->level, ' ',
9993                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expression"));
9994     }
9995     _res = NULL;
9996   done:
9997     D(p->level--);
9998     return _res;
9999 }
10000 
10001 // star_expression: '*' bitwise_or | expression
10002 static expr_ty
star_expression_rule(Parser * p)10003 star_expression_rule(Parser *p)
10004 {
10005     D(p->level++);
10006     if (p->error_indicator) {
10007         D(p->level--);
10008         return NULL;
10009     }
10010     expr_ty _res = NULL;
10011     if (_PyPegen_is_memoized(p, star_expression_type, &_res)) {
10012         D(p->level--);
10013         return _res;
10014     }
10015     int _mark = p->mark;
10016     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10017         p->error_indicator = 1;
10018         D(p->level--);
10019         return NULL;
10020     }
10021     int _start_lineno = p->tokens[_mark]->lineno;
10022     UNUSED(_start_lineno); // Only used by EXTRA macro
10023     int _start_col_offset = p->tokens[_mark]->col_offset;
10024     UNUSED(_start_col_offset); // Only used by EXTRA macro
10025     { // '*' bitwise_or
10026         if (p->error_indicator) {
10027             D(p->level--);
10028             return NULL;
10029         }
10030         D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
10031         Token * _literal;
10032         expr_ty a;
10033         if (
10034             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
10035             &&
10036             (a = bitwise_or_rule(p))  // bitwise_or
10037         )
10038         {
10039             D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
10040             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10041             if (_token == NULL) {
10042                 D(p->level--);
10043                 return NULL;
10044             }
10045             int _end_lineno = _token->end_lineno;
10046             UNUSED(_end_lineno); // Only used by EXTRA macro
10047             int _end_col_offset = _token->end_col_offset;
10048             UNUSED(_end_col_offset); // Only used by EXTRA macro
10049             _res = _PyAST_Starred ( a , Load , EXTRA );
10050             if (_res == NULL && PyErr_Occurred()) {
10051                 p->error_indicator = 1;
10052                 D(p->level--);
10053                 return NULL;
10054             }
10055             goto done;
10056         }
10057         p->mark = _mark;
10058         D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
10059                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
10060     }
10061     { // expression
10062         if (p->error_indicator) {
10063             D(p->level--);
10064             return NULL;
10065         }
10066         D(fprintf(stderr, "%*c> star_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
10067         expr_ty expression_var;
10068         if (
10069             (expression_var = expression_rule(p))  // expression
10070         )
10071         {
10072             D(fprintf(stderr, "%*c+ star_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
10073             _res = expression_var;
10074             goto done;
10075         }
10076         p->mark = _mark;
10077         D(fprintf(stderr, "%*c%s star_expression[%d-%d]: %s failed!\n", p->level, ' ',
10078                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
10079     }
10080     _res = NULL;
10081   done:
10082     _PyPegen_insert_memo(p, _mark, star_expression_type, _res);
10083     D(p->level--);
10084     return _res;
10085 }
10086 
10087 // star_named_expressions: ','.star_named_expression+ ','?
10088 static asdl_expr_seq*
star_named_expressions_rule(Parser * p)10089 star_named_expressions_rule(Parser *p)
10090 {
10091     D(p->level++);
10092     if (p->error_indicator) {
10093         D(p->level--);
10094         return NULL;
10095     }
10096     asdl_expr_seq* _res = NULL;
10097     int _mark = p->mark;
10098     { // ','.star_named_expression+ ','?
10099         if (p->error_indicator) {
10100             D(p->level--);
10101             return NULL;
10102         }
10103         D(fprintf(stderr, "%*c> star_named_expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
10104         void *_opt_var;
10105         UNUSED(_opt_var); // Silence compiler warnings
10106         asdl_expr_seq* a;
10107         if (
10108             (a = (asdl_expr_seq*)_gather_87_rule(p))  // ','.star_named_expression+
10109             &&
10110             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10111         )
10112         {
10113             D(fprintf(stderr, "%*c+ star_named_expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_named_expression+ ','?"));
10114             _res = a;
10115             if (_res == NULL && PyErr_Occurred()) {
10116                 p->error_indicator = 1;
10117                 D(p->level--);
10118                 return NULL;
10119             }
10120             goto done;
10121         }
10122         p->mark = _mark;
10123         D(fprintf(stderr, "%*c%s star_named_expressions[%d-%d]: %s failed!\n", p->level, ' ',
10124                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_named_expression+ ','?"));
10125     }
10126     _res = NULL;
10127   done:
10128     D(p->level--);
10129     return _res;
10130 }
10131 
10132 // star_named_expression: '*' bitwise_or | named_expression
10133 static expr_ty
star_named_expression_rule(Parser * p)10134 star_named_expression_rule(Parser *p)
10135 {
10136     D(p->level++);
10137     if (p->error_indicator) {
10138         D(p->level--);
10139         return NULL;
10140     }
10141     expr_ty _res = NULL;
10142     int _mark = p->mark;
10143     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10144         p->error_indicator = 1;
10145         D(p->level--);
10146         return NULL;
10147     }
10148     int _start_lineno = p->tokens[_mark]->lineno;
10149     UNUSED(_start_lineno); // Only used by EXTRA macro
10150     int _start_col_offset = p->tokens[_mark]->col_offset;
10151     UNUSED(_start_col_offset); // Only used by EXTRA macro
10152     { // '*' bitwise_or
10153         if (p->error_indicator) {
10154             D(p->level--);
10155             return NULL;
10156         }
10157         D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
10158         Token * _literal;
10159         expr_ty a;
10160         if (
10161             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
10162             &&
10163             (a = bitwise_or_rule(p))  // bitwise_or
10164         )
10165         {
10166             D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' bitwise_or"));
10167             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10168             if (_token == NULL) {
10169                 D(p->level--);
10170                 return NULL;
10171             }
10172             int _end_lineno = _token->end_lineno;
10173             UNUSED(_end_lineno); // Only used by EXTRA macro
10174             int _end_col_offset = _token->end_col_offset;
10175             UNUSED(_end_col_offset); // Only used by EXTRA macro
10176             _res = _PyAST_Starred ( a , Load , EXTRA );
10177             if (_res == NULL && PyErr_Occurred()) {
10178                 p->error_indicator = 1;
10179                 D(p->level--);
10180                 return NULL;
10181             }
10182             goto done;
10183         }
10184         p->mark = _mark;
10185         D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
10186                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' bitwise_or"));
10187     }
10188     { // named_expression
10189         if (p->error_indicator) {
10190             D(p->level--);
10191             return NULL;
10192         }
10193         D(fprintf(stderr, "%*c> star_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
10194         expr_ty named_expression_var;
10195         if (
10196             (named_expression_var = named_expression_rule(p))  // named_expression
10197         )
10198         {
10199             D(fprintf(stderr, "%*c+ star_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
10200             _res = named_expression_var;
10201             goto done;
10202         }
10203         p->mark = _mark;
10204         D(fprintf(stderr, "%*c%s star_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
10205                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
10206     }
10207     _res = NULL;
10208   done:
10209     D(p->level--);
10210     return _res;
10211 }
10212 
10213 // assignment_expression: NAME ':=' ~ expression
10214 static expr_ty
assignment_expression_rule(Parser * p)10215 assignment_expression_rule(Parser *p)
10216 {
10217     D(p->level++);
10218     if (p->error_indicator) {
10219         D(p->level--);
10220         return NULL;
10221     }
10222     expr_ty _res = NULL;
10223     int _mark = p->mark;
10224     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10225         p->error_indicator = 1;
10226         D(p->level--);
10227         return NULL;
10228     }
10229     int _start_lineno = p->tokens[_mark]->lineno;
10230     UNUSED(_start_lineno); // Only used by EXTRA macro
10231     int _start_col_offset = p->tokens[_mark]->col_offset;
10232     UNUSED(_start_col_offset); // Only used by EXTRA macro
10233     { // NAME ':=' ~ expression
10234         if (p->error_indicator) {
10235             D(p->level--);
10236             return NULL;
10237         }
10238         D(fprintf(stderr, "%*c> assignment_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
10239         int _cut_var = 0;
10240         Token * _literal;
10241         expr_ty a;
10242         expr_ty b;
10243         if (
10244             (a = _PyPegen_name_token(p))  // NAME
10245             &&
10246             (_literal = _PyPegen_expect_token(p, 53))  // token=':='
10247             &&
10248             (_cut_var = 1)
10249             &&
10250             (b = expression_rule(p))  // expression
10251         )
10252         {
10253             D(fprintf(stderr, "%*c+ assignment_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME ':=' ~ expression"));
10254             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10255             if (_token == NULL) {
10256                 D(p->level--);
10257                 return NULL;
10258             }
10259             int _end_lineno = _token->end_lineno;
10260             UNUSED(_end_lineno); // Only used by EXTRA macro
10261             int _end_col_offset = _token->end_col_offset;
10262             UNUSED(_end_col_offset); // Only used by EXTRA macro
10263             _res = _PyAST_NamedExpr ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , b , EXTRA );
10264             if (_res == NULL && PyErr_Occurred()) {
10265                 p->error_indicator = 1;
10266                 D(p->level--);
10267                 return NULL;
10268             }
10269             goto done;
10270         }
10271         p->mark = _mark;
10272         D(fprintf(stderr, "%*c%s assignment_expression[%d-%d]: %s failed!\n", p->level, ' ',
10273                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME ':=' ~ expression"));
10274         if (_cut_var) {
10275             D(p->level--);
10276             return NULL;
10277         }
10278     }
10279     _res = NULL;
10280   done:
10281     D(p->level--);
10282     return _res;
10283 }
10284 
10285 // named_expression: assignment_expression | invalid_named_expression | expression !':='
10286 static expr_ty
named_expression_rule(Parser * p)10287 named_expression_rule(Parser *p)
10288 {
10289     D(p->level++);
10290     if (p->error_indicator) {
10291         D(p->level--);
10292         return NULL;
10293     }
10294     expr_ty _res = NULL;
10295     int _mark = p->mark;
10296     { // assignment_expression
10297         if (p->error_indicator) {
10298             D(p->level--);
10299             return NULL;
10300         }
10301         D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
10302         expr_ty assignment_expression_var;
10303         if (
10304             (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
10305         )
10306         {
10307             D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
10308             _res = assignment_expression_var;
10309             goto done;
10310         }
10311         p->mark = _mark;
10312         D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
10313                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
10314     }
10315     if (p->call_invalid_rules) { // invalid_named_expression
10316         if (p->error_indicator) {
10317             D(p->level--);
10318             return NULL;
10319         }
10320         D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
10321         void *invalid_named_expression_var;
10322         if (
10323             (invalid_named_expression_var = invalid_named_expression_rule(p))  // invalid_named_expression
10324         )
10325         {
10326             D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_named_expression"));
10327             _res = invalid_named_expression_var;
10328             goto done;
10329         }
10330         p->mark = _mark;
10331         D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
10332                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_named_expression"));
10333     }
10334     { // expression !':='
10335         if (p->error_indicator) {
10336             D(p->level--);
10337             return NULL;
10338         }
10339         D(fprintf(stderr, "%*c> named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
10340         expr_ty expression_var;
10341         if (
10342             (expression_var = expression_rule(p))  // expression
10343             &&
10344             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
10345         )
10346         {
10347             D(fprintf(stderr, "%*c+ named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
10348             _res = expression_var;
10349             goto done;
10350         }
10351         p->mark = _mark;
10352         D(fprintf(stderr, "%*c%s named_expression[%d-%d]: %s failed!\n", p->level, ' ',
10353                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
10354     }
10355     _res = NULL;
10356   done:
10357     D(p->level--);
10358     return _res;
10359 }
10360 
10361 // annotated_rhs: yield_expr | star_expressions
10362 static expr_ty
annotated_rhs_rule(Parser * p)10363 annotated_rhs_rule(Parser *p)
10364 {
10365     D(p->level++);
10366     if (p->error_indicator) {
10367         D(p->level--);
10368         return NULL;
10369     }
10370     expr_ty _res = NULL;
10371     int _mark = p->mark;
10372     { // yield_expr
10373         if (p->error_indicator) {
10374             D(p->level--);
10375             return NULL;
10376         }
10377         D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
10378         expr_ty yield_expr_var;
10379         if (
10380             (yield_expr_var = yield_expr_rule(p))  // yield_expr
10381         )
10382         {
10383             D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
10384             _res = yield_expr_var;
10385             goto done;
10386         }
10387         p->mark = _mark;
10388         D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
10389                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
10390     }
10391     { // star_expressions
10392         if (p->error_indicator) {
10393             D(p->level--);
10394             return NULL;
10395         }
10396         D(fprintf(stderr, "%*c> annotated_rhs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
10397         expr_ty star_expressions_var;
10398         if (
10399             (star_expressions_var = star_expressions_rule(p))  // star_expressions
10400         )
10401         {
10402             D(fprintf(stderr, "%*c+ annotated_rhs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
10403             _res = star_expressions_var;
10404             goto done;
10405         }
10406         p->mark = _mark;
10407         D(fprintf(stderr, "%*c%s annotated_rhs[%d-%d]: %s failed!\n", p->level, ' ',
10408                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
10409     }
10410     _res = NULL;
10411   done:
10412     D(p->level--);
10413     return _res;
10414 }
10415 
10416 // expressions: expression ((',' expression))+ ','? | expression ',' | expression
10417 static expr_ty
expressions_rule(Parser * p)10418 expressions_rule(Parser *p)
10419 {
10420     D(p->level++);
10421     if (p->error_indicator) {
10422         D(p->level--);
10423         return NULL;
10424     }
10425     expr_ty _res = NULL;
10426     int _mark = p->mark;
10427     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10428         p->error_indicator = 1;
10429         D(p->level--);
10430         return NULL;
10431     }
10432     int _start_lineno = p->tokens[_mark]->lineno;
10433     UNUSED(_start_lineno); // Only used by EXTRA macro
10434     int _start_col_offset = p->tokens[_mark]->col_offset;
10435     UNUSED(_start_col_offset); // Only used by EXTRA macro
10436     { // expression ((',' expression))+ ','?
10437         if (p->error_indicator) {
10438             D(p->level--);
10439             return NULL;
10440         }
10441         D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
10442         void *_opt_var;
10443         UNUSED(_opt_var); // Silence compiler warnings
10444         expr_ty a;
10445         asdl_seq * b;
10446         if (
10447             (a = expression_rule(p))  // expression
10448             &&
10449             (b = _loop1_89_rule(p))  // ((',' expression))+
10450             &&
10451             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
10452         )
10453         {
10454             D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ((',' expression))+ ','?"));
10455             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10456             if (_token == NULL) {
10457                 D(p->level--);
10458                 return NULL;
10459             }
10460             int _end_lineno = _token->end_lineno;
10461             UNUSED(_end_lineno); // Only used by EXTRA macro
10462             int _end_col_offset = _token->end_col_offset;
10463             UNUSED(_end_col_offset); // Only used by EXTRA macro
10464             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq * , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Load , EXTRA );
10465             if (_res == NULL && PyErr_Occurred()) {
10466                 p->error_indicator = 1;
10467                 D(p->level--);
10468                 return NULL;
10469             }
10470             goto done;
10471         }
10472         p->mark = _mark;
10473         D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
10474                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ((',' expression))+ ','?"));
10475     }
10476     { // expression ','
10477         if (p->error_indicator) {
10478             D(p->level--);
10479             return NULL;
10480         }
10481         D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ','"));
10482         Token * _literal;
10483         expr_ty a;
10484         if (
10485             (a = expression_rule(p))  // expression
10486             &&
10487             (_literal = _PyPegen_expect_token(p, 12))  // token=','
10488         )
10489         {
10490             D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ','"));
10491             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10492             if (_token == NULL) {
10493                 D(p->level--);
10494                 return NULL;
10495             }
10496             int _end_lineno = _token->end_lineno;
10497             UNUSED(_end_lineno); // Only used by EXTRA macro
10498             int _end_col_offset = _token->end_col_offset;
10499             UNUSED(_end_col_offset); // Only used by EXTRA macro
10500             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq * , _PyPegen_singleton_seq ( p , a ) ) , Load , EXTRA );
10501             if (_res == NULL && PyErr_Occurred()) {
10502                 p->error_indicator = 1;
10503                 D(p->level--);
10504                 return NULL;
10505             }
10506             goto done;
10507         }
10508         p->mark = _mark;
10509         D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
10510                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ','"));
10511     }
10512     { // expression
10513         if (p->error_indicator) {
10514             D(p->level--);
10515             return NULL;
10516         }
10517         D(fprintf(stderr, "%*c> expressions[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression"));
10518         expr_ty expression_var;
10519         if (
10520             (expression_var = expression_rule(p))  // expression
10521         )
10522         {
10523             D(fprintf(stderr, "%*c+ expressions[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression"));
10524             _res = expression_var;
10525             goto done;
10526         }
10527         p->mark = _mark;
10528         D(fprintf(stderr, "%*c%s expressions[%d-%d]: %s failed!\n", p->level, ' ',
10529                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression"));
10530     }
10531     _res = NULL;
10532   done:
10533     D(p->level--);
10534     return _res;
10535 }
10536 
10537 // expression:
10538 //     | invalid_expression
10539 //     | invalid_legacy_expression
10540 //     | disjunction 'if' disjunction 'else' expression
10541 //     | disjunction
10542 //     | lambdef
10543 static expr_ty
expression_rule(Parser * p)10544 expression_rule(Parser *p)
10545 {
10546     D(p->level++);
10547     if (p->error_indicator) {
10548         D(p->level--);
10549         return NULL;
10550     }
10551     expr_ty _res = NULL;
10552     if (_PyPegen_is_memoized(p, expression_type, &_res)) {
10553         D(p->level--);
10554         return _res;
10555     }
10556     int _mark = p->mark;
10557     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10558         p->error_indicator = 1;
10559         D(p->level--);
10560         return NULL;
10561     }
10562     int _start_lineno = p->tokens[_mark]->lineno;
10563     UNUSED(_start_lineno); // Only used by EXTRA macro
10564     int _start_col_offset = p->tokens[_mark]->col_offset;
10565     UNUSED(_start_col_offset); // Only used by EXTRA macro
10566     if (p->call_invalid_rules) { // invalid_expression
10567         if (p->error_indicator) {
10568             D(p->level--);
10569             return NULL;
10570         }
10571         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
10572         void *invalid_expression_var;
10573         if (
10574             (invalid_expression_var = invalid_expression_rule(p))  // invalid_expression
10575         )
10576         {
10577             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_expression"));
10578             _res = invalid_expression_var;
10579             goto done;
10580         }
10581         p->mark = _mark;
10582         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
10583                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_expression"));
10584     }
10585     if (p->call_invalid_rules) { // invalid_legacy_expression
10586         if (p->error_indicator) {
10587             D(p->level--);
10588             return NULL;
10589         }
10590         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
10591         void *invalid_legacy_expression_var;
10592         if (
10593             (invalid_legacy_expression_var = invalid_legacy_expression_rule(p))  // invalid_legacy_expression
10594         )
10595         {
10596             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_legacy_expression"));
10597             _res = invalid_legacy_expression_var;
10598             goto done;
10599         }
10600         p->mark = _mark;
10601         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
10602                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_legacy_expression"));
10603     }
10604     { // disjunction 'if' disjunction 'else' expression
10605         if (p->error_indicator) {
10606             D(p->level--);
10607             return NULL;
10608         }
10609         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
10610         Token * _keyword;
10611         Token * _keyword_1;
10612         expr_ty a;
10613         expr_ty b;
10614         expr_ty c;
10615         if (
10616             (a = disjunction_rule(p))  // disjunction
10617             &&
10618             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
10619             &&
10620             (b = disjunction_rule(p))  // disjunction
10621             &&
10622             (_keyword_1 = _PyPegen_expect_token(p, 516))  // token='else'
10623             &&
10624             (c = expression_rule(p))  // expression
10625         )
10626         {
10627             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
10628             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10629             if (_token == NULL) {
10630                 D(p->level--);
10631                 return NULL;
10632             }
10633             int _end_lineno = _token->end_lineno;
10634             UNUSED(_end_lineno); // Only used by EXTRA macro
10635             int _end_col_offset = _token->end_col_offset;
10636             UNUSED(_end_col_offset); // Only used by EXTRA macro
10637             _res = _PyAST_IfExp ( b , a , c , EXTRA );
10638             if (_res == NULL && PyErr_Occurred()) {
10639                 p->error_indicator = 1;
10640                 D(p->level--);
10641                 return NULL;
10642             }
10643             goto done;
10644         }
10645         p->mark = _mark;
10646         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
10647                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
10648     }
10649     { // disjunction
10650         if (p->error_indicator) {
10651             D(p->level--);
10652             return NULL;
10653         }
10654         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
10655         expr_ty disjunction_var;
10656         if (
10657             (disjunction_var = disjunction_rule(p))  // disjunction
10658         )
10659         {
10660             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
10661             _res = disjunction_var;
10662             goto done;
10663         }
10664         p->mark = _mark;
10665         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
10666                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
10667     }
10668     { // lambdef
10669         if (p->error_indicator) {
10670             D(p->level--);
10671             return NULL;
10672         }
10673         D(fprintf(stderr, "%*c> expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
10674         expr_ty lambdef_var;
10675         if (
10676             (lambdef_var = lambdef_rule(p))  // lambdef
10677         )
10678         {
10679             D(fprintf(stderr, "%*c+ expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
10680             _res = lambdef_var;
10681             goto done;
10682         }
10683         p->mark = _mark;
10684         D(fprintf(stderr, "%*c%s expression[%d-%d]: %s failed!\n", p->level, ' ',
10685                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
10686     }
10687     _res = NULL;
10688   done:
10689     _PyPegen_insert_memo(p, _mark, expression_type, _res);
10690     D(p->level--);
10691     return _res;
10692 }
10693 
10694 // lambdef: 'lambda' lambda_params? ':' expression
10695 static expr_ty
lambdef_rule(Parser * p)10696 lambdef_rule(Parser *p)
10697 {
10698     D(p->level++);
10699     if (p->error_indicator) {
10700         D(p->level--);
10701         return NULL;
10702     }
10703     expr_ty _res = NULL;
10704     int _mark = p->mark;
10705     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
10706         p->error_indicator = 1;
10707         D(p->level--);
10708         return NULL;
10709     }
10710     int _start_lineno = p->tokens[_mark]->lineno;
10711     UNUSED(_start_lineno); // Only used by EXTRA macro
10712     int _start_col_offset = p->tokens[_mark]->col_offset;
10713     UNUSED(_start_col_offset); // Only used by EXTRA macro
10714     { // 'lambda' lambda_params? ':' expression
10715         if (p->error_indicator) {
10716             D(p->level--);
10717             return NULL;
10718         }
10719         D(fprintf(stderr, "%*c> lambdef[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
10720         Token * _keyword;
10721         Token * _literal;
10722         void *a;
10723         expr_ty b;
10724         if (
10725             (_keyword = _PyPegen_expect_token(p, 528))  // token='lambda'
10726             &&
10727             (a = lambda_params_rule(p), !p->error_indicator)  // lambda_params?
10728             &&
10729             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
10730             &&
10731             (b = expression_rule(p))  // expression
10732         )
10733         {
10734             D(fprintf(stderr, "%*c+ lambdef[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'lambda' lambda_params? ':' expression"));
10735             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
10736             if (_token == NULL) {
10737                 D(p->level--);
10738                 return NULL;
10739             }
10740             int _end_lineno = _token->end_lineno;
10741             UNUSED(_end_lineno); // Only used by EXTRA macro
10742             int _end_col_offset = _token->end_col_offset;
10743             UNUSED(_end_col_offset); // Only used by EXTRA macro
10744             _res = _PyAST_Lambda ( ( a ) ? a : CHECK ( arguments_ty , _PyPegen_empty_arguments ( p ) ) , b , EXTRA );
10745             if (_res == NULL && PyErr_Occurred()) {
10746                 p->error_indicator = 1;
10747                 D(p->level--);
10748                 return NULL;
10749             }
10750             goto done;
10751         }
10752         p->mark = _mark;
10753         D(fprintf(stderr, "%*c%s lambdef[%d-%d]: %s failed!\n", p->level, ' ',
10754                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'lambda' lambda_params? ':' expression"));
10755     }
10756     _res = NULL;
10757   done:
10758     D(p->level--);
10759     return _res;
10760 }
10761 
10762 // lambda_params: invalid_lambda_parameters | lambda_parameters
10763 static arguments_ty
lambda_params_rule(Parser * p)10764 lambda_params_rule(Parser *p)
10765 {
10766     D(p->level++);
10767     if (p->error_indicator) {
10768         D(p->level--);
10769         return NULL;
10770     }
10771     arguments_ty _res = NULL;
10772     int _mark = p->mark;
10773     if (p->call_invalid_rules) { // invalid_lambda_parameters
10774         if (p->error_indicator) {
10775             D(p->level--);
10776             return NULL;
10777         }
10778         D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
10779         void *invalid_lambda_parameters_var;
10780         if (
10781             (invalid_lambda_parameters_var = invalid_lambda_parameters_rule(p))  // invalid_lambda_parameters
10782         )
10783         {
10784             D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_parameters"));
10785             _res = invalid_lambda_parameters_var;
10786             goto done;
10787         }
10788         p->mark = _mark;
10789         D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
10790                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_parameters"));
10791     }
10792     { // lambda_parameters
10793         if (p->error_indicator) {
10794             D(p->level--);
10795             return NULL;
10796         }
10797         D(fprintf(stderr, "%*c> lambda_params[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
10798         arguments_ty lambda_parameters_var;
10799         if (
10800             (lambda_parameters_var = lambda_parameters_rule(p))  // lambda_parameters
10801         )
10802         {
10803             D(fprintf(stderr, "%*c+ lambda_params[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_parameters"));
10804             _res = lambda_parameters_var;
10805             goto done;
10806         }
10807         p->mark = _mark;
10808         D(fprintf(stderr, "%*c%s lambda_params[%d-%d]: %s failed!\n", p->level, ' ',
10809                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_parameters"));
10810     }
10811     _res = NULL;
10812   done:
10813     D(p->level--);
10814     return _res;
10815 }
10816 
10817 // lambda_parameters:
10818 //     | lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
10819 //     | lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
10820 //     | lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
10821 //     | lambda_param_with_default+ lambda_star_etc?
10822 //     | lambda_star_etc
10823 static arguments_ty
lambda_parameters_rule(Parser * p)10824 lambda_parameters_rule(Parser *p)
10825 {
10826     D(p->level++);
10827     if (p->error_indicator) {
10828         D(p->level--);
10829         return NULL;
10830     }
10831     arguments_ty _res = NULL;
10832     int _mark = p->mark;
10833     { // lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?
10834         if (p->error_indicator) {
10835             D(p->level--);
10836             return NULL;
10837         }
10838         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?"));
10839         asdl_arg_seq* a;
10840         asdl_arg_seq* b;
10841         asdl_seq * c;
10842         void *d;
10843         if (
10844             (a = lambda_slash_no_default_rule(p))  // lambda_slash_no_default
10845             &&
10846             (b = (asdl_arg_seq*)_loop0_90_rule(p))  // lambda_param_no_default*
10847             &&
10848             (c = _loop0_91_rule(p))  // lambda_param_with_default*
10849             &&
10850             (d = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
10851         )
10852         {
10853             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?"));
10854             _res = _PyPegen_make_arguments ( p , a , NULL , b , c , d );
10855             if (_res == NULL && PyErr_Occurred()) {
10856                 p->error_indicator = 1;
10857                 D(p->level--);
10858                 return NULL;
10859             }
10860             goto done;
10861         }
10862         p->mark = _mark;
10863         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
10864                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_no_default lambda_param_no_default* lambda_param_with_default* lambda_star_etc?"));
10865     }
10866     { // lambda_slash_with_default lambda_param_with_default* lambda_star_etc?
10867         if (p->error_indicator) {
10868             D(p->level--);
10869             return NULL;
10870         }
10871         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?"));
10872         SlashWithDefault* a;
10873         asdl_seq * b;
10874         void *c;
10875         if (
10876             (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
10877             &&
10878             (b = _loop0_92_rule(p))  // lambda_param_with_default*
10879             &&
10880             (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
10881         )
10882         {
10883             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?"));
10884             _res = _PyPegen_make_arguments ( p , NULL , a , NULL , b , c );
10885             if (_res == NULL && PyErr_Occurred()) {
10886                 p->error_indicator = 1;
10887                 D(p->level--);
10888                 return NULL;
10889             }
10890             goto done;
10891         }
10892         p->mark = _mark;
10893         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
10894                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default lambda_param_with_default* lambda_star_etc?"));
10895     }
10896     { // lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?
10897         if (p->error_indicator) {
10898             D(p->level--);
10899             return NULL;
10900         }
10901         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?"));
10902         asdl_arg_seq* a;
10903         asdl_seq * b;
10904         void *c;
10905         if (
10906             (a = (asdl_arg_seq*)_loop1_93_rule(p))  // lambda_param_no_default+
10907             &&
10908             (b = _loop0_94_rule(p))  // lambda_param_with_default*
10909             &&
10910             (c = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
10911         )
10912         {
10913             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?"));
10914             _res = _PyPegen_make_arguments ( p , NULL , NULL , a , b , c );
10915             if (_res == NULL && PyErr_Occurred()) {
10916                 p->error_indicator = 1;
10917                 D(p->level--);
10918                 return NULL;
10919             }
10920             goto done;
10921         }
10922         p->mark = _mark;
10923         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
10924                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ lambda_param_with_default* lambda_star_etc?"));
10925     }
10926     { // lambda_param_with_default+ lambda_star_etc?
10927         if (p->error_indicator) {
10928             D(p->level--);
10929             return NULL;
10930         }
10931         D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
10932         asdl_seq * a;
10933         void *b;
10934         if (
10935             (a = _loop1_95_rule(p))  // lambda_param_with_default+
10936             &&
10937             (b = lambda_star_etc_rule(p), !p->error_indicator)  // lambda_star_etc?
10938         )
10939         {
10940             D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
10941             _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , a , b );
10942             if (_res == NULL && PyErr_Occurred()) {
10943                 p->error_indicator = 1;
10944                 D(p->level--);
10945                 return NULL;
10946             }
10947             goto done;
10948         }
10949         p->mark = _mark;
10950         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
10951                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+ lambda_star_etc?"));
10952     }
10953     { // lambda_star_etc
10954         if (p->error_indicator) {
10955             D(p->level--);
10956             return NULL;
10957         }
10958         D(fprintf(stderr, "%*c> lambda_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
10959         StarEtc* a;
10960         if (
10961             (a = lambda_star_etc_rule(p))  // lambda_star_etc
10962         )
10963         {
10964             D(fprintf(stderr, "%*c+ lambda_parameters[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_star_etc"));
10965             _res = _PyPegen_make_arguments ( p , NULL , NULL , NULL , NULL , a );
10966             if (_res == NULL && PyErr_Occurred()) {
10967                 p->error_indicator = 1;
10968                 D(p->level--);
10969                 return NULL;
10970             }
10971             goto done;
10972         }
10973         p->mark = _mark;
10974         D(fprintf(stderr, "%*c%s lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
10975                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_star_etc"));
10976     }
10977     _res = NULL;
10978   done:
10979     D(p->level--);
10980     return _res;
10981 }
10982 
10983 // lambda_slash_no_default:
10984 //     | lambda_param_no_default+ '/' ','
10985 //     | lambda_param_no_default+ '/' &':'
10986 static asdl_arg_seq*
lambda_slash_no_default_rule(Parser * p)10987 lambda_slash_no_default_rule(Parser *p)
10988 {
10989     D(p->level++);
10990     if (p->error_indicator) {
10991         D(p->level--);
10992         return NULL;
10993     }
10994     asdl_arg_seq* _res = NULL;
10995     int _mark = p->mark;
10996     { // lambda_param_no_default+ '/' ','
10997         if (p->error_indicator) {
10998             D(p->level--);
10999             return NULL;
11000         }
11001         D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
11002         Token * _literal;
11003         Token * _literal_1;
11004         asdl_arg_seq* a;
11005         if (
11006             (a = (asdl_arg_seq*)_loop1_96_rule(p))  // lambda_param_no_default+
11007             &&
11008             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
11009             &&
11010             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
11011         )
11012         {
11013             D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' ','"));
11014             _res = a;
11015             if (_res == NULL && PyErr_Occurred()) {
11016                 p->error_indicator = 1;
11017                 D(p->level--);
11018                 return NULL;
11019             }
11020             goto done;
11021         }
11022         p->mark = _mark;
11023         D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
11024                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' ','"));
11025     }
11026     { // lambda_param_no_default+ '/' &':'
11027         if (p->error_indicator) {
11028             D(p->level--);
11029             return NULL;
11030         }
11031         D(fprintf(stderr, "%*c> lambda_slash_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
11032         Token * _literal;
11033         asdl_arg_seq* a;
11034         if (
11035             (a = (asdl_arg_seq*)_loop1_97_rule(p))  // lambda_param_no_default+
11036             &&
11037             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
11038             &&
11039             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
11040         )
11041         {
11042             D(fprintf(stderr, "%*c+ lambda_slash_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
11043             _res = a;
11044             if (_res == NULL && PyErr_Occurred()) {
11045                 p->error_indicator = 1;
11046                 D(p->level--);
11047                 return NULL;
11048             }
11049             goto done;
11050         }
11051         p->mark = _mark;
11052         D(fprintf(stderr, "%*c%s lambda_slash_no_default[%d-%d]: %s failed!\n", p->level, ' ',
11053                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default+ '/' &':'"));
11054     }
11055     _res = NULL;
11056   done:
11057     D(p->level--);
11058     return _res;
11059 }
11060 
11061 // lambda_slash_with_default:
11062 //     | lambda_param_no_default* lambda_param_with_default+ '/' ','
11063 //     | lambda_param_no_default* lambda_param_with_default+ '/' &':'
11064 static SlashWithDefault*
lambda_slash_with_default_rule(Parser * p)11065 lambda_slash_with_default_rule(Parser *p)
11066 {
11067     D(p->level++);
11068     if (p->error_indicator) {
11069         D(p->level--);
11070         return NULL;
11071     }
11072     SlashWithDefault* _res = NULL;
11073     int _mark = p->mark;
11074     { // lambda_param_no_default* lambda_param_with_default+ '/' ','
11075         if (p->error_indicator) {
11076             D(p->level--);
11077             return NULL;
11078         }
11079         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+ '/' ','"));
11080         Token * _literal;
11081         Token * _literal_1;
11082         asdl_seq * a;
11083         asdl_seq * b;
11084         if (
11085             (a = _loop0_98_rule(p))  // lambda_param_no_default*
11086             &&
11087             (b = _loop1_99_rule(p))  // lambda_param_with_default+
11088             &&
11089             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
11090             &&
11091             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
11092         )
11093         {
11094             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+ '/' ','"));
11095             _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq * ) a , b );
11096             if (_res == NULL && PyErr_Occurred()) {
11097                 p->error_indicator = 1;
11098                 D(p->level--);
11099                 return NULL;
11100             }
11101             goto done;
11102         }
11103         p->mark = _mark;
11104         D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
11105                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' ','"));
11106     }
11107     { // lambda_param_no_default* lambda_param_with_default+ '/' &':'
11108         if (p->error_indicator) {
11109             D(p->level--);
11110             return NULL;
11111         }
11112         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+ '/' &':'"));
11113         Token * _literal;
11114         asdl_seq * a;
11115         asdl_seq * b;
11116         if (
11117             (a = _loop0_100_rule(p))  // lambda_param_no_default*
11118             &&
11119             (b = _loop1_101_rule(p))  // lambda_param_with_default+
11120             &&
11121             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
11122             &&
11123             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
11124         )
11125         {
11126             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+ '/' &':'"));
11127             _res = _PyPegen_slash_with_default ( p , ( asdl_arg_seq * ) a , b );
11128             if (_res == NULL && PyErr_Occurred()) {
11129                 p->error_indicator = 1;
11130                 D(p->level--);
11131                 return NULL;
11132             }
11133             goto done;
11134         }
11135         p->mark = _mark;
11136         D(fprintf(stderr, "%*c%s lambda_slash_with_default[%d-%d]: %s failed!\n", p->level, ' ',
11137                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* lambda_param_with_default+ '/' &':'"));
11138     }
11139     _res = NULL;
11140   done:
11141     D(p->level--);
11142     return _res;
11143 }
11144 
11145 // lambda_star_etc:
11146 //     | '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
11147 //     | '*' ',' lambda_param_maybe_default+ lambda_kwds?
11148 //     | lambda_kwds
11149 //     | invalid_lambda_star_etc
11150 static StarEtc*
lambda_star_etc_rule(Parser * p)11151 lambda_star_etc_rule(Parser *p)
11152 {
11153     D(p->level++);
11154     if (p->error_indicator) {
11155         D(p->level--);
11156         return NULL;
11157     }
11158     StarEtc* _res = NULL;
11159     int _mark = p->mark;
11160     { // '*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?
11161         if (p->error_indicator) {
11162             D(p->level--);
11163             return NULL;
11164         }
11165         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?"));
11166         Token * _literal;
11167         arg_ty a;
11168         asdl_seq * b;
11169         void *c;
11170         if (
11171             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11172             &&
11173             (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
11174             &&
11175             (b = _loop0_102_rule(p))  // lambda_param_maybe_default*
11176             &&
11177             (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
11178         )
11179         {
11180             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?"));
11181             _res = _PyPegen_star_etc ( p , a , b , c );
11182             if (_res == NULL && PyErr_Occurred()) {
11183                 p->error_indicator = 1;
11184                 D(p->level--);
11185                 return NULL;
11186             }
11187             goto done;
11188         }
11189         p->mark = _mark;
11190         D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
11191                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' lambda_param_no_default lambda_param_maybe_default* lambda_kwds?"));
11192     }
11193     { // '*' ',' lambda_param_maybe_default+ lambda_kwds?
11194         if (p->error_indicator) {
11195             D(p->level--);
11196             return NULL;
11197         }
11198         D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
11199         Token * _literal;
11200         Token * _literal_1;
11201         asdl_seq * b;
11202         void *c;
11203         if (
11204             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
11205             &&
11206             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
11207             &&
11208             (b = _loop1_103_rule(p))  // lambda_param_maybe_default+
11209             &&
11210             (c = lambda_kwds_rule(p), !p->error_indicator)  // lambda_kwds?
11211         )
11212         {
11213             D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
11214             _res = _PyPegen_star_etc ( p , NULL , b , c );
11215             if (_res == NULL && PyErr_Occurred()) {
11216                 p->error_indicator = 1;
11217                 D(p->level--);
11218                 return NULL;
11219             }
11220             goto done;
11221         }
11222         p->mark = _mark;
11223         D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
11224                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' lambda_param_maybe_default+ lambda_kwds?"));
11225     }
11226     { // lambda_kwds
11227         if (p->error_indicator) {
11228             D(p->level--);
11229             return NULL;
11230         }
11231         D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
11232         arg_ty a;
11233         if (
11234             (a = lambda_kwds_rule(p))  // lambda_kwds
11235         )
11236         {
11237             D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_kwds"));
11238             _res = _PyPegen_star_etc ( p , NULL , NULL , a );
11239             if (_res == NULL && PyErr_Occurred()) {
11240                 p->error_indicator = 1;
11241                 D(p->level--);
11242                 return NULL;
11243             }
11244             goto done;
11245         }
11246         p->mark = _mark;
11247         D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
11248                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_kwds"));
11249     }
11250     if (p->call_invalid_rules) { // invalid_lambda_star_etc
11251         if (p->error_indicator) {
11252             D(p->level--);
11253             return NULL;
11254         }
11255         D(fprintf(stderr, "%*c> lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
11256         void *invalid_lambda_star_etc_var;
11257         if (
11258             (invalid_lambda_star_etc_var = invalid_lambda_star_etc_rule(p))  // invalid_lambda_star_etc
11259         )
11260         {
11261             D(fprintf(stderr, "%*c+ lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_lambda_star_etc"));
11262             _res = invalid_lambda_star_etc_var;
11263             goto done;
11264         }
11265         p->mark = _mark;
11266         D(fprintf(stderr, "%*c%s lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
11267                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_lambda_star_etc"));
11268     }
11269     _res = NULL;
11270   done:
11271     D(p->level--);
11272     return _res;
11273 }
11274 
11275 // lambda_kwds: '**' lambda_param_no_default
11276 static arg_ty
lambda_kwds_rule(Parser * p)11277 lambda_kwds_rule(Parser *p)
11278 {
11279     D(p->level++);
11280     if (p->error_indicator) {
11281         D(p->level--);
11282         return NULL;
11283     }
11284     arg_ty _res = NULL;
11285     int _mark = p->mark;
11286     { // '**' lambda_param_no_default
11287         if (p->error_indicator) {
11288             D(p->level--);
11289             return NULL;
11290         }
11291         D(fprintf(stderr, "%*c> lambda_kwds[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
11292         Token * _literal;
11293         arg_ty a;
11294         if (
11295             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
11296             &&
11297             (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
11298         )
11299         {
11300             D(fprintf(stderr, "%*c+ lambda_kwds[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' lambda_param_no_default"));
11301             _res = a;
11302             if (_res == NULL && PyErr_Occurred()) {
11303                 p->error_indicator = 1;
11304                 D(p->level--);
11305                 return NULL;
11306             }
11307             goto done;
11308         }
11309         p->mark = _mark;
11310         D(fprintf(stderr, "%*c%s lambda_kwds[%d-%d]: %s failed!\n", p->level, ' ',
11311                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' lambda_param_no_default"));
11312     }
11313     _res = NULL;
11314   done:
11315     D(p->level--);
11316     return _res;
11317 }
11318 
11319 // lambda_param_no_default: lambda_param ',' | lambda_param &':'
11320 static arg_ty
lambda_param_no_default_rule(Parser * p)11321 lambda_param_no_default_rule(Parser *p)
11322 {
11323     D(p->level++);
11324     if (p->error_indicator) {
11325         D(p->level--);
11326         return NULL;
11327     }
11328     arg_ty _res = NULL;
11329     int _mark = p->mark;
11330     { // lambda_param ','
11331         if (p->error_indicator) {
11332             D(p->level--);
11333             return NULL;
11334         }
11335         D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
11336         Token * _literal;
11337         arg_ty a;
11338         if (
11339             (a = lambda_param_rule(p))  // lambda_param
11340             &&
11341             (_literal = _PyPegen_expect_token(p, 12))  // token=','
11342         )
11343         {
11344             D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param ','"));
11345             _res = a;
11346             if (_res == NULL && PyErr_Occurred()) {
11347                 p->error_indicator = 1;
11348                 D(p->level--);
11349                 return NULL;
11350             }
11351             goto done;
11352         }
11353         p->mark = _mark;
11354         D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
11355                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param ','"));
11356     }
11357     { // lambda_param &':'
11358         if (p->error_indicator) {
11359             D(p->level--);
11360             return NULL;
11361         }
11362         D(fprintf(stderr, "%*c> lambda_param_no_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
11363         arg_ty a;
11364         if (
11365             (a = lambda_param_rule(p))  // lambda_param
11366             &&
11367             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
11368         )
11369         {
11370             D(fprintf(stderr, "%*c+ lambda_param_no_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param &':'"));
11371             _res = a;
11372             if (_res == NULL && PyErr_Occurred()) {
11373                 p->error_indicator = 1;
11374                 D(p->level--);
11375                 return NULL;
11376             }
11377             goto done;
11378         }
11379         p->mark = _mark;
11380         D(fprintf(stderr, "%*c%s lambda_param_no_default[%d-%d]: %s failed!\n", p->level, ' ',
11381                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param &':'"));
11382     }
11383     _res = NULL;
11384   done:
11385     D(p->level--);
11386     return _res;
11387 }
11388 
11389 // lambda_param_with_default: lambda_param default ',' | lambda_param default &':'
11390 static NameDefaultPair*
lambda_param_with_default_rule(Parser * p)11391 lambda_param_with_default_rule(Parser *p)
11392 {
11393     D(p->level++);
11394     if (p->error_indicator) {
11395         D(p->level--);
11396         return NULL;
11397     }
11398     NameDefaultPair* _res = NULL;
11399     int _mark = p->mark;
11400     { // lambda_param default ','
11401         if (p->error_indicator) {
11402             D(p->level--);
11403             return NULL;
11404         }
11405         D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
11406         Token * _literal;
11407         arg_ty a;
11408         expr_ty c;
11409         if (
11410             (a = lambda_param_rule(p))  // lambda_param
11411             &&
11412             (c = default_rule(p))  // default
11413             &&
11414             (_literal = _PyPegen_expect_token(p, 12))  // token=','
11415         )
11416         {
11417             D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default ','"));
11418             _res = _PyPegen_name_default_pair ( p , a , c , NULL );
11419             if (_res == NULL && PyErr_Occurred()) {
11420                 p->error_indicator = 1;
11421                 D(p->level--);
11422                 return NULL;
11423             }
11424             goto done;
11425         }
11426         p->mark = _mark;
11427         D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
11428                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default ','"));
11429     }
11430     { // lambda_param default &':'
11431         if (p->error_indicator) {
11432             D(p->level--);
11433             return NULL;
11434         }
11435         D(fprintf(stderr, "%*c> lambda_param_with_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
11436         arg_ty a;
11437         expr_ty c;
11438         if (
11439             (a = lambda_param_rule(p))  // lambda_param
11440             &&
11441             (c = default_rule(p))  // default
11442             &&
11443             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
11444         )
11445         {
11446             D(fprintf(stderr, "%*c+ lambda_param_with_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default &':'"));
11447             _res = _PyPegen_name_default_pair ( p , a , c , NULL );
11448             if (_res == NULL && PyErr_Occurred()) {
11449                 p->error_indicator = 1;
11450                 D(p->level--);
11451                 return NULL;
11452             }
11453             goto done;
11454         }
11455         p->mark = _mark;
11456         D(fprintf(stderr, "%*c%s lambda_param_with_default[%d-%d]: %s failed!\n", p->level, ' ',
11457                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default &':'"));
11458     }
11459     _res = NULL;
11460   done:
11461     D(p->level--);
11462     return _res;
11463 }
11464 
11465 // lambda_param_maybe_default: lambda_param default? ',' | lambda_param default? &':'
11466 static NameDefaultPair*
lambda_param_maybe_default_rule(Parser * p)11467 lambda_param_maybe_default_rule(Parser *p)
11468 {
11469     D(p->level++);
11470     if (p->error_indicator) {
11471         D(p->level--);
11472         return NULL;
11473     }
11474     NameDefaultPair* _res = NULL;
11475     int _mark = p->mark;
11476     { // lambda_param default? ','
11477         if (p->error_indicator) {
11478             D(p->level--);
11479             return NULL;
11480         }
11481         D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
11482         Token * _literal;
11483         arg_ty a;
11484         void *c;
11485         if (
11486             (a = lambda_param_rule(p))  // lambda_param
11487             &&
11488             (c = default_rule(p), !p->error_indicator)  // default?
11489             &&
11490             (_literal = _PyPegen_expect_token(p, 12))  // token=','
11491         )
11492         {
11493             D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? ','"));
11494             _res = _PyPegen_name_default_pair ( p , a , c , NULL );
11495             if (_res == NULL && PyErr_Occurred()) {
11496                 p->error_indicator = 1;
11497                 D(p->level--);
11498                 return NULL;
11499             }
11500             goto done;
11501         }
11502         p->mark = _mark;
11503         D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
11504                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? ','"));
11505     }
11506     { // lambda_param default? &':'
11507         if (p->error_indicator) {
11508             D(p->level--);
11509             return NULL;
11510         }
11511         D(fprintf(stderr, "%*c> lambda_param_maybe_default[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
11512         arg_ty a;
11513         void *c;
11514         if (
11515             (a = lambda_param_rule(p))  // lambda_param
11516             &&
11517             (c = default_rule(p), !p->error_indicator)  // default?
11518             &&
11519             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 11)  // token=':'
11520         )
11521         {
11522             D(fprintf(stderr, "%*c+ lambda_param_maybe_default[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param default? &':'"));
11523             _res = _PyPegen_name_default_pair ( p , a , c , NULL );
11524             if (_res == NULL && PyErr_Occurred()) {
11525                 p->error_indicator = 1;
11526                 D(p->level--);
11527                 return NULL;
11528             }
11529             goto done;
11530         }
11531         p->mark = _mark;
11532         D(fprintf(stderr, "%*c%s lambda_param_maybe_default[%d-%d]: %s failed!\n", p->level, ' ',
11533                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param default? &':'"));
11534     }
11535     _res = NULL;
11536   done:
11537     D(p->level--);
11538     return _res;
11539 }
11540 
11541 // lambda_param: NAME
11542 static arg_ty
lambda_param_rule(Parser * p)11543 lambda_param_rule(Parser *p)
11544 {
11545     D(p->level++);
11546     if (p->error_indicator) {
11547         D(p->level--);
11548         return NULL;
11549     }
11550     arg_ty _res = NULL;
11551     int _mark = p->mark;
11552     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11553         p->error_indicator = 1;
11554         D(p->level--);
11555         return NULL;
11556     }
11557     int _start_lineno = p->tokens[_mark]->lineno;
11558     UNUSED(_start_lineno); // Only used by EXTRA macro
11559     int _start_col_offset = p->tokens[_mark]->col_offset;
11560     UNUSED(_start_col_offset); // Only used by EXTRA macro
11561     { // NAME
11562         if (p->error_indicator) {
11563             D(p->level--);
11564             return NULL;
11565         }
11566         D(fprintf(stderr, "%*c> lambda_param[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
11567         expr_ty a;
11568         if (
11569             (a = _PyPegen_name_token(p))  // NAME
11570         )
11571         {
11572             D(fprintf(stderr, "%*c+ lambda_param[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
11573             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11574             if (_token == NULL) {
11575                 D(p->level--);
11576                 return NULL;
11577             }
11578             int _end_lineno = _token->end_lineno;
11579             UNUSED(_end_lineno); // Only used by EXTRA macro
11580             int _end_col_offset = _token->end_col_offset;
11581             UNUSED(_end_col_offset); // Only used by EXTRA macro
11582             _res = _PyAST_arg ( a -> v . Name . id , NULL , NULL , EXTRA );
11583             if (_res == NULL && PyErr_Occurred()) {
11584                 p->error_indicator = 1;
11585                 D(p->level--);
11586                 return NULL;
11587             }
11588             goto done;
11589         }
11590         p->mark = _mark;
11591         D(fprintf(stderr, "%*c%s lambda_param[%d-%d]: %s failed!\n", p->level, ' ',
11592                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
11593     }
11594     _res = NULL;
11595   done:
11596     D(p->level--);
11597     return _res;
11598 }
11599 
11600 // disjunction: conjunction (('or' conjunction))+ | conjunction
11601 static expr_ty
disjunction_rule(Parser * p)11602 disjunction_rule(Parser *p)
11603 {
11604     D(p->level++);
11605     if (p->error_indicator) {
11606         D(p->level--);
11607         return NULL;
11608     }
11609     expr_ty _res = NULL;
11610     if (_PyPegen_is_memoized(p, disjunction_type, &_res)) {
11611         D(p->level--);
11612         return _res;
11613     }
11614     int _mark = p->mark;
11615     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11616         p->error_indicator = 1;
11617         D(p->level--);
11618         return NULL;
11619     }
11620     int _start_lineno = p->tokens[_mark]->lineno;
11621     UNUSED(_start_lineno); // Only used by EXTRA macro
11622     int _start_col_offset = p->tokens[_mark]->col_offset;
11623     UNUSED(_start_col_offset); // Only used by EXTRA macro
11624     { // conjunction (('or' conjunction))+
11625         if (p->error_indicator) {
11626             D(p->level--);
11627             return NULL;
11628         }
11629         D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
11630         expr_ty a;
11631         asdl_seq * b;
11632         if (
11633             (a = conjunction_rule(p))  // conjunction
11634             &&
11635             (b = _loop1_104_rule(p))  // (('or' conjunction))+
11636         )
11637         {
11638             D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction (('or' conjunction))+"));
11639             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11640             if (_token == NULL) {
11641                 D(p->level--);
11642                 return NULL;
11643             }
11644             int _end_lineno = _token->end_lineno;
11645             UNUSED(_end_lineno); // Only used by EXTRA macro
11646             int _end_col_offset = _token->end_col_offset;
11647             UNUSED(_end_col_offset); // Only used by EXTRA macro
11648             _res = _PyAST_BoolOp ( Or , CHECK ( asdl_expr_seq * , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
11649             if (_res == NULL && PyErr_Occurred()) {
11650                 p->error_indicator = 1;
11651                 D(p->level--);
11652                 return NULL;
11653             }
11654             goto done;
11655         }
11656         p->mark = _mark;
11657         D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
11658                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction (('or' conjunction))+"));
11659     }
11660     { // conjunction
11661         if (p->error_indicator) {
11662             D(p->level--);
11663             return NULL;
11664         }
11665         D(fprintf(stderr, "%*c> disjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "conjunction"));
11666         expr_ty conjunction_var;
11667         if (
11668             (conjunction_var = conjunction_rule(p))  // conjunction
11669         )
11670         {
11671             D(fprintf(stderr, "%*c+ disjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "conjunction"));
11672             _res = conjunction_var;
11673             goto done;
11674         }
11675         p->mark = _mark;
11676         D(fprintf(stderr, "%*c%s disjunction[%d-%d]: %s failed!\n", p->level, ' ',
11677                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "conjunction"));
11678     }
11679     _res = NULL;
11680   done:
11681     _PyPegen_insert_memo(p, _mark, disjunction_type, _res);
11682     D(p->level--);
11683     return _res;
11684 }
11685 
11686 // conjunction: inversion (('and' inversion))+ | inversion
11687 static expr_ty
conjunction_rule(Parser * p)11688 conjunction_rule(Parser *p)
11689 {
11690     D(p->level++);
11691     if (p->error_indicator) {
11692         D(p->level--);
11693         return NULL;
11694     }
11695     expr_ty _res = NULL;
11696     if (_PyPegen_is_memoized(p, conjunction_type, &_res)) {
11697         D(p->level--);
11698         return _res;
11699     }
11700     int _mark = p->mark;
11701     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11702         p->error_indicator = 1;
11703         D(p->level--);
11704         return NULL;
11705     }
11706     int _start_lineno = p->tokens[_mark]->lineno;
11707     UNUSED(_start_lineno); // Only used by EXTRA macro
11708     int _start_col_offset = p->tokens[_mark]->col_offset;
11709     UNUSED(_start_col_offset); // Only used by EXTRA macro
11710     { // inversion (('and' inversion))+
11711         if (p->error_indicator) {
11712             D(p->level--);
11713             return NULL;
11714         }
11715         D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
11716         expr_ty a;
11717         asdl_seq * b;
11718         if (
11719             (a = inversion_rule(p))  // inversion
11720             &&
11721             (b = _loop1_105_rule(p))  // (('and' inversion))+
11722         )
11723         {
11724             D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion (('and' inversion))+"));
11725             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11726             if (_token == NULL) {
11727                 D(p->level--);
11728                 return NULL;
11729             }
11730             int _end_lineno = _token->end_lineno;
11731             UNUSED(_end_lineno); // Only used by EXTRA macro
11732             int _end_col_offset = _token->end_col_offset;
11733             UNUSED(_end_col_offset); // Only used by EXTRA macro
11734             _res = _PyAST_BoolOp ( And , CHECK ( asdl_expr_seq * , _PyPegen_seq_insert_in_front ( p , a , b ) ) , EXTRA );
11735             if (_res == NULL && PyErr_Occurred()) {
11736                 p->error_indicator = 1;
11737                 D(p->level--);
11738                 return NULL;
11739             }
11740             goto done;
11741         }
11742         p->mark = _mark;
11743         D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
11744                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion (('and' inversion))+"));
11745     }
11746     { // inversion
11747         if (p->error_indicator) {
11748             D(p->level--);
11749             return NULL;
11750         }
11751         D(fprintf(stderr, "%*c> conjunction[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "inversion"));
11752         expr_ty inversion_var;
11753         if (
11754             (inversion_var = inversion_rule(p))  // inversion
11755         )
11756         {
11757             D(fprintf(stderr, "%*c+ conjunction[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "inversion"));
11758             _res = inversion_var;
11759             goto done;
11760         }
11761         p->mark = _mark;
11762         D(fprintf(stderr, "%*c%s conjunction[%d-%d]: %s failed!\n", p->level, ' ',
11763                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "inversion"));
11764     }
11765     _res = NULL;
11766   done:
11767     _PyPegen_insert_memo(p, _mark, conjunction_type, _res);
11768     D(p->level--);
11769     return _res;
11770 }
11771 
11772 // inversion: 'not' inversion | comparison
11773 static expr_ty
inversion_rule(Parser * p)11774 inversion_rule(Parser *p)
11775 {
11776     D(p->level++);
11777     if (p->error_indicator) {
11778         D(p->level--);
11779         return NULL;
11780     }
11781     expr_ty _res = NULL;
11782     if (_PyPegen_is_memoized(p, inversion_type, &_res)) {
11783         D(p->level--);
11784         return _res;
11785     }
11786     int _mark = p->mark;
11787     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11788         p->error_indicator = 1;
11789         D(p->level--);
11790         return NULL;
11791     }
11792     int _start_lineno = p->tokens[_mark]->lineno;
11793     UNUSED(_start_lineno); // Only used by EXTRA macro
11794     int _start_col_offset = p->tokens[_mark]->col_offset;
11795     UNUSED(_start_col_offset); // Only used by EXTRA macro
11796     { // 'not' inversion
11797         if (p->error_indicator) {
11798             D(p->level--);
11799             return NULL;
11800         }
11801         D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
11802         Token * _keyword;
11803         expr_ty a;
11804         if (
11805             (_keyword = _PyPegen_expect_token(p, 529))  // token='not'
11806             &&
11807             (a = inversion_rule(p))  // inversion
11808         )
11809         {
11810             D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' inversion"));
11811             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11812             if (_token == NULL) {
11813                 D(p->level--);
11814                 return NULL;
11815             }
11816             int _end_lineno = _token->end_lineno;
11817             UNUSED(_end_lineno); // Only used by EXTRA macro
11818             int _end_col_offset = _token->end_col_offset;
11819             UNUSED(_end_col_offset); // Only used by EXTRA macro
11820             _res = _PyAST_UnaryOp ( Not , a , EXTRA );
11821             if (_res == NULL && PyErr_Occurred()) {
11822                 p->error_indicator = 1;
11823                 D(p->level--);
11824                 return NULL;
11825             }
11826             goto done;
11827         }
11828         p->mark = _mark;
11829         D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
11830                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' inversion"));
11831     }
11832     { // comparison
11833         if (p->error_indicator) {
11834             D(p->level--);
11835             return NULL;
11836         }
11837         D(fprintf(stderr, "%*c> inversion[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "comparison"));
11838         expr_ty comparison_var;
11839         if (
11840             (comparison_var = comparison_rule(p))  // comparison
11841         )
11842         {
11843             D(fprintf(stderr, "%*c+ inversion[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "comparison"));
11844             _res = comparison_var;
11845             goto done;
11846         }
11847         p->mark = _mark;
11848         D(fprintf(stderr, "%*c%s inversion[%d-%d]: %s failed!\n", p->level, ' ',
11849                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "comparison"));
11850     }
11851     _res = NULL;
11852   done:
11853     _PyPegen_insert_memo(p, _mark, inversion_type, _res);
11854     D(p->level--);
11855     return _res;
11856 }
11857 
11858 // comparison: bitwise_or compare_op_bitwise_or_pair+ | bitwise_or
11859 static expr_ty
comparison_rule(Parser * p)11860 comparison_rule(Parser *p)
11861 {
11862     D(p->level++);
11863     if (p->error_indicator) {
11864         D(p->level--);
11865         return NULL;
11866     }
11867     expr_ty _res = NULL;
11868     int _mark = p->mark;
11869     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
11870         p->error_indicator = 1;
11871         D(p->level--);
11872         return NULL;
11873     }
11874     int _start_lineno = p->tokens[_mark]->lineno;
11875     UNUSED(_start_lineno); // Only used by EXTRA macro
11876     int _start_col_offset = p->tokens[_mark]->col_offset;
11877     UNUSED(_start_col_offset); // Only used by EXTRA macro
11878     { // bitwise_or compare_op_bitwise_or_pair+
11879         if (p->error_indicator) {
11880             D(p->level--);
11881             return NULL;
11882         }
11883         D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
11884         expr_ty a;
11885         asdl_seq * b;
11886         if (
11887             (a = bitwise_or_rule(p))  // bitwise_or
11888             &&
11889             (b = _loop1_106_rule(p))  // compare_op_bitwise_or_pair+
11890         )
11891         {
11892             D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
11893             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
11894             if (_token == NULL) {
11895                 D(p->level--);
11896                 return NULL;
11897             }
11898             int _end_lineno = _token->end_lineno;
11899             UNUSED(_end_lineno); // Only used by EXTRA macro
11900             int _end_col_offset = _token->end_col_offset;
11901             UNUSED(_end_col_offset); // Only used by EXTRA macro
11902             _res = _PyAST_Compare ( a , CHECK ( asdl_int_seq * , _PyPegen_get_cmpops ( p , b ) ) , CHECK ( asdl_expr_seq * , _PyPegen_get_exprs ( p , b ) ) , EXTRA );
11903             if (_res == NULL && PyErr_Occurred()) {
11904                 p->error_indicator = 1;
11905                 D(p->level--);
11906                 return NULL;
11907             }
11908             goto done;
11909         }
11910         p->mark = _mark;
11911         D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
11912                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or compare_op_bitwise_or_pair+"));
11913     }
11914     { // bitwise_or
11915         if (p->error_indicator) {
11916             D(p->level--);
11917             return NULL;
11918         }
11919         D(fprintf(stderr, "%*c> comparison[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
11920         expr_ty bitwise_or_var;
11921         if (
11922             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
11923         )
11924         {
11925             D(fprintf(stderr, "%*c+ comparison[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or"));
11926             _res = bitwise_or_var;
11927             goto done;
11928         }
11929         p->mark = _mark;
11930         D(fprintf(stderr, "%*c%s comparison[%d-%d]: %s failed!\n", p->level, ' ',
11931                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or"));
11932     }
11933     _res = NULL;
11934   done:
11935     D(p->level--);
11936     return _res;
11937 }
11938 
11939 // compare_op_bitwise_or_pair:
11940 //     | eq_bitwise_or
11941 //     | noteq_bitwise_or
11942 //     | lte_bitwise_or
11943 //     | lt_bitwise_or
11944 //     | gte_bitwise_or
11945 //     | gt_bitwise_or
11946 //     | notin_bitwise_or
11947 //     | in_bitwise_or
11948 //     | isnot_bitwise_or
11949 //     | is_bitwise_or
11950 static CmpopExprPair*
compare_op_bitwise_or_pair_rule(Parser * p)11951 compare_op_bitwise_or_pair_rule(Parser *p)
11952 {
11953     D(p->level++);
11954     if (p->error_indicator) {
11955         D(p->level--);
11956         return NULL;
11957     }
11958     CmpopExprPair* _res = NULL;
11959     int _mark = p->mark;
11960     { // eq_bitwise_or
11961         if (p->error_indicator) {
11962             D(p->level--);
11963             return NULL;
11964         }
11965         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
11966         CmpopExprPair* eq_bitwise_or_var;
11967         if (
11968             (eq_bitwise_or_var = eq_bitwise_or_rule(p))  // eq_bitwise_or
11969         )
11970         {
11971             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "eq_bitwise_or"));
11972             _res = eq_bitwise_or_var;
11973             goto done;
11974         }
11975         p->mark = _mark;
11976         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
11977                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "eq_bitwise_or"));
11978     }
11979     { // noteq_bitwise_or
11980         if (p->error_indicator) {
11981             D(p->level--);
11982             return NULL;
11983         }
11984         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
11985         CmpopExprPair* noteq_bitwise_or_var;
11986         if (
11987             (noteq_bitwise_or_var = noteq_bitwise_or_rule(p))  // noteq_bitwise_or
11988         )
11989         {
11990             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "noteq_bitwise_or"));
11991             _res = noteq_bitwise_or_var;
11992             goto done;
11993         }
11994         p->mark = _mark;
11995         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
11996                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "noteq_bitwise_or"));
11997     }
11998     { // lte_bitwise_or
11999         if (p->error_indicator) {
12000             D(p->level--);
12001             return NULL;
12002         }
12003         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
12004         CmpopExprPair* lte_bitwise_or_var;
12005         if (
12006             (lte_bitwise_or_var = lte_bitwise_or_rule(p))  // lte_bitwise_or
12007         )
12008         {
12009             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lte_bitwise_or"));
12010             _res = lte_bitwise_or_var;
12011             goto done;
12012         }
12013         p->mark = _mark;
12014         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12015                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lte_bitwise_or"));
12016     }
12017     { // lt_bitwise_or
12018         if (p->error_indicator) {
12019             D(p->level--);
12020             return NULL;
12021         }
12022         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
12023         CmpopExprPair* lt_bitwise_or_var;
12024         if (
12025             (lt_bitwise_or_var = lt_bitwise_or_rule(p))  // lt_bitwise_or
12026         )
12027         {
12028             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lt_bitwise_or"));
12029             _res = lt_bitwise_or_var;
12030             goto done;
12031         }
12032         p->mark = _mark;
12033         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12034                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lt_bitwise_or"));
12035     }
12036     { // gte_bitwise_or
12037         if (p->error_indicator) {
12038             D(p->level--);
12039             return NULL;
12040         }
12041         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
12042         CmpopExprPair* gte_bitwise_or_var;
12043         if (
12044             (gte_bitwise_or_var = gte_bitwise_or_rule(p))  // gte_bitwise_or
12045         )
12046         {
12047             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gte_bitwise_or"));
12048             _res = gte_bitwise_or_var;
12049             goto done;
12050         }
12051         p->mark = _mark;
12052         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12053                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gte_bitwise_or"));
12054     }
12055     { // gt_bitwise_or
12056         if (p->error_indicator) {
12057             D(p->level--);
12058             return NULL;
12059         }
12060         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
12061         CmpopExprPair* gt_bitwise_or_var;
12062         if (
12063             (gt_bitwise_or_var = gt_bitwise_or_rule(p))  // gt_bitwise_or
12064         )
12065         {
12066             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "gt_bitwise_or"));
12067             _res = gt_bitwise_or_var;
12068             goto done;
12069         }
12070         p->mark = _mark;
12071         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12072                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "gt_bitwise_or"));
12073     }
12074     { // notin_bitwise_or
12075         if (p->error_indicator) {
12076             D(p->level--);
12077             return NULL;
12078         }
12079         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
12080         CmpopExprPair* notin_bitwise_or_var;
12081         if (
12082             (notin_bitwise_or_var = notin_bitwise_or_rule(p))  // notin_bitwise_or
12083         )
12084         {
12085             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "notin_bitwise_or"));
12086             _res = notin_bitwise_or_var;
12087             goto done;
12088         }
12089         p->mark = _mark;
12090         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12091                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "notin_bitwise_or"));
12092     }
12093     { // in_bitwise_or
12094         if (p->error_indicator) {
12095             D(p->level--);
12096             return NULL;
12097         }
12098         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
12099         CmpopExprPair* in_bitwise_or_var;
12100         if (
12101             (in_bitwise_or_var = in_bitwise_or_rule(p))  // in_bitwise_or
12102         )
12103         {
12104             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "in_bitwise_or"));
12105             _res = in_bitwise_or_var;
12106             goto done;
12107         }
12108         p->mark = _mark;
12109         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12110                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "in_bitwise_or"));
12111     }
12112     { // isnot_bitwise_or
12113         if (p->error_indicator) {
12114             D(p->level--);
12115             return NULL;
12116         }
12117         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
12118         CmpopExprPair* isnot_bitwise_or_var;
12119         if (
12120             (isnot_bitwise_or_var = isnot_bitwise_or_rule(p))  // isnot_bitwise_or
12121         )
12122         {
12123             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "isnot_bitwise_or"));
12124             _res = isnot_bitwise_or_var;
12125             goto done;
12126         }
12127         p->mark = _mark;
12128         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12129                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "isnot_bitwise_or"));
12130     }
12131     { // is_bitwise_or
12132         if (p->error_indicator) {
12133             D(p->level--);
12134             return NULL;
12135         }
12136         D(fprintf(stderr, "%*c> compare_op_bitwise_or_pair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
12137         CmpopExprPair* is_bitwise_or_var;
12138         if (
12139             (is_bitwise_or_var = is_bitwise_or_rule(p))  // is_bitwise_or
12140         )
12141         {
12142             D(fprintf(stderr, "%*c+ compare_op_bitwise_or_pair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "is_bitwise_or"));
12143             _res = is_bitwise_or_var;
12144             goto done;
12145         }
12146         p->mark = _mark;
12147         D(fprintf(stderr, "%*c%s compare_op_bitwise_or_pair[%d-%d]: %s failed!\n", p->level, ' ',
12148                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "is_bitwise_or"));
12149     }
12150     _res = NULL;
12151   done:
12152     D(p->level--);
12153     return _res;
12154 }
12155 
12156 // eq_bitwise_or: '==' bitwise_or
12157 static CmpopExprPair*
eq_bitwise_or_rule(Parser * p)12158 eq_bitwise_or_rule(Parser *p)
12159 {
12160     D(p->level++);
12161     if (p->error_indicator) {
12162         D(p->level--);
12163         return NULL;
12164     }
12165     CmpopExprPair* _res = NULL;
12166     int _mark = p->mark;
12167     { // '==' bitwise_or
12168         if (p->error_indicator) {
12169             D(p->level--);
12170             return NULL;
12171         }
12172         D(fprintf(stderr, "%*c> eq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
12173         Token * _literal;
12174         expr_ty a;
12175         if (
12176             (_literal = _PyPegen_expect_token(p, 27))  // token='=='
12177             &&
12178             (a = bitwise_or_rule(p))  // bitwise_or
12179         )
12180         {
12181             D(fprintf(stderr, "%*c+ eq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'==' bitwise_or"));
12182             _res = _PyPegen_cmpop_expr_pair ( p , Eq , a );
12183             if (_res == NULL && PyErr_Occurred()) {
12184                 p->error_indicator = 1;
12185                 D(p->level--);
12186                 return NULL;
12187             }
12188             goto done;
12189         }
12190         p->mark = _mark;
12191         D(fprintf(stderr, "%*c%s eq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12192                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'==' bitwise_or"));
12193     }
12194     _res = NULL;
12195   done:
12196     D(p->level--);
12197     return _res;
12198 }
12199 
12200 // noteq_bitwise_or: ('!=') bitwise_or
12201 static CmpopExprPair*
noteq_bitwise_or_rule(Parser * p)12202 noteq_bitwise_or_rule(Parser *p)
12203 {
12204     D(p->level++);
12205     if (p->error_indicator) {
12206         D(p->level--);
12207         return NULL;
12208     }
12209     CmpopExprPair* _res = NULL;
12210     int _mark = p->mark;
12211     { // ('!=') bitwise_or
12212         if (p->error_indicator) {
12213             D(p->level--);
12214             return NULL;
12215         }
12216         D(fprintf(stderr, "%*c> noteq_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
12217         void *_tmp_107_var;
12218         expr_ty a;
12219         if (
12220             (_tmp_107_var = _tmp_107_rule(p))  // '!='
12221             &&
12222             (a = bitwise_or_rule(p))  // bitwise_or
12223         )
12224         {
12225             D(fprintf(stderr, "%*c+ noteq_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('!=') bitwise_or"));
12226             _res = _PyPegen_cmpop_expr_pair ( p , NotEq , a );
12227             if (_res == NULL && PyErr_Occurred()) {
12228                 p->error_indicator = 1;
12229                 D(p->level--);
12230                 return NULL;
12231             }
12232             goto done;
12233         }
12234         p->mark = _mark;
12235         D(fprintf(stderr, "%*c%s noteq_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12236                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('!=') bitwise_or"));
12237     }
12238     _res = NULL;
12239   done:
12240     D(p->level--);
12241     return _res;
12242 }
12243 
12244 // lte_bitwise_or: '<=' bitwise_or
12245 static CmpopExprPair*
lte_bitwise_or_rule(Parser * p)12246 lte_bitwise_or_rule(Parser *p)
12247 {
12248     D(p->level++);
12249     if (p->error_indicator) {
12250         D(p->level--);
12251         return NULL;
12252     }
12253     CmpopExprPair* _res = NULL;
12254     int _mark = p->mark;
12255     { // '<=' bitwise_or
12256         if (p->error_indicator) {
12257             D(p->level--);
12258             return NULL;
12259         }
12260         D(fprintf(stderr, "%*c> lte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12261         Token * _literal;
12262         expr_ty a;
12263         if (
12264             (_literal = _PyPegen_expect_token(p, 29))  // token='<='
12265             &&
12266             (a = bitwise_or_rule(p))  // bitwise_or
12267         )
12268         {
12269             D(fprintf(stderr, "%*c+ lte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<=' bitwise_or"));
12270             _res = _PyPegen_cmpop_expr_pair ( p , LtE , a );
12271             if (_res == NULL && PyErr_Occurred()) {
12272                 p->error_indicator = 1;
12273                 D(p->level--);
12274                 return NULL;
12275             }
12276             goto done;
12277         }
12278         p->mark = _mark;
12279         D(fprintf(stderr, "%*c%s lte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12280                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<=' bitwise_or"));
12281     }
12282     _res = NULL;
12283   done:
12284     D(p->level--);
12285     return _res;
12286 }
12287 
12288 // lt_bitwise_or: '<' bitwise_or
12289 static CmpopExprPair*
lt_bitwise_or_rule(Parser * p)12290 lt_bitwise_or_rule(Parser *p)
12291 {
12292     D(p->level++);
12293     if (p->error_indicator) {
12294         D(p->level--);
12295         return NULL;
12296     }
12297     CmpopExprPair* _res = NULL;
12298     int _mark = p->mark;
12299     { // '<' bitwise_or
12300         if (p->error_indicator) {
12301             D(p->level--);
12302             return NULL;
12303         }
12304         D(fprintf(stderr, "%*c> lt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12305         Token * _literal;
12306         expr_ty a;
12307         if (
12308             (_literal = _PyPegen_expect_token(p, 20))  // token='<'
12309             &&
12310             (a = bitwise_or_rule(p))  // bitwise_or
12311         )
12312         {
12313             D(fprintf(stderr, "%*c+ lt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'<' bitwise_or"));
12314             _res = _PyPegen_cmpop_expr_pair ( p , Lt , a );
12315             if (_res == NULL && PyErr_Occurred()) {
12316                 p->error_indicator = 1;
12317                 D(p->level--);
12318                 return NULL;
12319             }
12320             goto done;
12321         }
12322         p->mark = _mark;
12323         D(fprintf(stderr, "%*c%s lt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12324                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'<' bitwise_or"));
12325     }
12326     _res = NULL;
12327   done:
12328     D(p->level--);
12329     return _res;
12330 }
12331 
12332 // gte_bitwise_or: '>=' bitwise_or
12333 static CmpopExprPair*
gte_bitwise_or_rule(Parser * p)12334 gte_bitwise_or_rule(Parser *p)
12335 {
12336     D(p->level++);
12337     if (p->error_indicator) {
12338         D(p->level--);
12339         return NULL;
12340     }
12341     CmpopExprPair* _res = NULL;
12342     int _mark = p->mark;
12343     { // '>=' bitwise_or
12344         if (p->error_indicator) {
12345             D(p->level--);
12346             return NULL;
12347         }
12348         D(fprintf(stderr, "%*c> gte_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12349         Token * _literal;
12350         expr_ty a;
12351         if (
12352             (_literal = _PyPegen_expect_token(p, 30))  // token='>='
12353             &&
12354             (a = bitwise_or_rule(p))  // bitwise_or
12355         )
12356         {
12357             D(fprintf(stderr, "%*c+ gte_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>=' bitwise_or"));
12358             _res = _PyPegen_cmpop_expr_pair ( p , GtE , a );
12359             if (_res == NULL && PyErr_Occurred()) {
12360                 p->error_indicator = 1;
12361                 D(p->level--);
12362                 return NULL;
12363             }
12364             goto done;
12365         }
12366         p->mark = _mark;
12367         D(fprintf(stderr, "%*c%s gte_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12368                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>=' bitwise_or"));
12369     }
12370     _res = NULL;
12371   done:
12372     D(p->level--);
12373     return _res;
12374 }
12375 
12376 // gt_bitwise_or: '>' bitwise_or
12377 static CmpopExprPair*
gt_bitwise_or_rule(Parser * p)12378 gt_bitwise_or_rule(Parser *p)
12379 {
12380     D(p->level++);
12381     if (p->error_indicator) {
12382         D(p->level--);
12383         return NULL;
12384     }
12385     CmpopExprPair* _res = NULL;
12386     int _mark = p->mark;
12387     { // '>' bitwise_or
12388         if (p->error_indicator) {
12389             D(p->level--);
12390             return NULL;
12391         }
12392         D(fprintf(stderr, "%*c> gt_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12393         Token * _literal;
12394         expr_ty a;
12395         if (
12396             (_literal = _PyPegen_expect_token(p, 21))  // token='>'
12397             &&
12398             (a = bitwise_or_rule(p))  // bitwise_or
12399         )
12400         {
12401             D(fprintf(stderr, "%*c+ gt_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'>' bitwise_or"));
12402             _res = _PyPegen_cmpop_expr_pair ( p , Gt , a );
12403             if (_res == NULL && PyErr_Occurred()) {
12404                 p->error_indicator = 1;
12405                 D(p->level--);
12406                 return NULL;
12407             }
12408             goto done;
12409         }
12410         p->mark = _mark;
12411         D(fprintf(stderr, "%*c%s gt_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12412                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'>' bitwise_or"));
12413     }
12414     _res = NULL;
12415   done:
12416     D(p->level--);
12417     return _res;
12418 }
12419 
12420 // notin_bitwise_or: 'not' 'in' bitwise_or
12421 static CmpopExprPair*
notin_bitwise_or_rule(Parser * p)12422 notin_bitwise_or_rule(Parser *p)
12423 {
12424     D(p->level++);
12425     if (p->error_indicator) {
12426         D(p->level--);
12427         return NULL;
12428     }
12429     CmpopExprPair* _res = NULL;
12430     int _mark = p->mark;
12431     { // 'not' 'in' bitwise_or
12432         if (p->error_indicator) {
12433             D(p->level--);
12434             return NULL;
12435         }
12436         D(fprintf(stderr, "%*c> notin_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
12437         Token * _keyword;
12438         Token * _keyword_1;
12439         expr_ty a;
12440         if (
12441             (_keyword = _PyPegen_expect_token(p, 529))  // token='not'
12442             &&
12443             (_keyword_1 = _PyPegen_expect_token(p, 518))  // token='in'
12444             &&
12445             (a = bitwise_or_rule(p))  // bitwise_or
12446         )
12447         {
12448             D(fprintf(stderr, "%*c+ notin_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'not' 'in' bitwise_or"));
12449             _res = _PyPegen_cmpop_expr_pair ( p , NotIn , a );
12450             if (_res == NULL && PyErr_Occurred()) {
12451                 p->error_indicator = 1;
12452                 D(p->level--);
12453                 return NULL;
12454             }
12455             goto done;
12456         }
12457         p->mark = _mark;
12458         D(fprintf(stderr, "%*c%s notin_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12459                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'not' 'in' bitwise_or"));
12460     }
12461     _res = NULL;
12462   done:
12463     D(p->level--);
12464     return _res;
12465 }
12466 
12467 // in_bitwise_or: 'in' bitwise_or
12468 static CmpopExprPair*
in_bitwise_or_rule(Parser * p)12469 in_bitwise_or_rule(Parser *p)
12470 {
12471     D(p->level++);
12472     if (p->error_indicator) {
12473         D(p->level--);
12474         return NULL;
12475     }
12476     CmpopExprPair* _res = NULL;
12477     int _mark = p->mark;
12478     { // 'in' bitwise_or
12479         if (p->error_indicator) {
12480             D(p->level--);
12481             return NULL;
12482         }
12483         D(fprintf(stderr, "%*c> in_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
12484         Token * _keyword;
12485         expr_ty a;
12486         if (
12487             (_keyword = _PyPegen_expect_token(p, 518))  // token='in'
12488             &&
12489             (a = bitwise_or_rule(p))  // bitwise_or
12490         )
12491         {
12492             D(fprintf(stderr, "%*c+ in_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'in' bitwise_or"));
12493             _res = _PyPegen_cmpop_expr_pair ( p , In , a );
12494             if (_res == NULL && PyErr_Occurred()) {
12495                 p->error_indicator = 1;
12496                 D(p->level--);
12497                 return NULL;
12498             }
12499             goto done;
12500         }
12501         p->mark = _mark;
12502         D(fprintf(stderr, "%*c%s in_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12503                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'in' bitwise_or"));
12504     }
12505     _res = NULL;
12506   done:
12507     D(p->level--);
12508     return _res;
12509 }
12510 
12511 // isnot_bitwise_or: 'is' 'not' bitwise_or
12512 static CmpopExprPair*
isnot_bitwise_or_rule(Parser * p)12513 isnot_bitwise_or_rule(Parser *p)
12514 {
12515     D(p->level++);
12516     if (p->error_indicator) {
12517         D(p->level--);
12518         return NULL;
12519     }
12520     CmpopExprPair* _res = NULL;
12521     int _mark = p->mark;
12522     { // 'is' 'not' bitwise_or
12523         if (p->error_indicator) {
12524             D(p->level--);
12525             return NULL;
12526         }
12527         D(fprintf(stderr, "%*c> isnot_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
12528         Token * _keyword;
12529         Token * _keyword_1;
12530         expr_ty a;
12531         if (
12532             (_keyword = _PyPegen_expect_token(p, 530))  // token='is'
12533             &&
12534             (_keyword_1 = _PyPegen_expect_token(p, 529))  // token='not'
12535             &&
12536             (a = bitwise_or_rule(p))  // bitwise_or
12537         )
12538         {
12539             D(fprintf(stderr, "%*c+ isnot_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' 'not' bitwise_or"));
12540             _res = _PyPegen_cmpop_expr_pair ( p , IsNot , a );
12541             if (_res == NULL && PyErr_Occurred()) {
12542                 p->error_indicator = 1;
12543                 D(p->level--);
12544                 return NULL;
12545             }
12546             goto done;
12547         }
12548         p->mark = _mark;
12549         D(fprintf(stderr, "%*c%s isnot_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12550                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' 'not' bitwise_or"));
12551     }
12552     _res = NULL;
12553   done:
12554     D(p->level--);
12555     return _res;
12556 }
12557 
12558 // is_bitwise_or: 'is' bitwise_or
12559 static CmpopExprPair*
is_bitwise_or_rule(Parser * p)12560 is_bitwise_or_rule(Parser *p)
12561 {
12562     D(p->level++);
12563     if (p->error_indicator) {
12564         D(p->level--);
12565         return NULL;
12566     }
12567     CmpopExprPair* _res = NULL;
12568     int _mark = p->mark;
12569     { // 'is' bitwise_or
12570         if (p->error_indicator) {
12571             D(p->level--);
12572             return NULL;
12573         }
12574         D(fprintf(stderr, "%*c> is_bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
12575         Token * _keyword;
12576         expr_ty a;
12577         if (
12578             (_keyword = _PyPegen_expect_token(p, 530))  // token='is'
12579             &&
12580             (a = bitwise_or_rule(p))  // bitwise_or
12581         )
12582         {
12583             D(fprintf(stderr, "%*c+ is_bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'is' bitwise_or"));
12584             _res = _PyPegen_cmpop_expr_pair ( p , Is , a );
12585             if (_res == NULL && PyErr_Occurred()) {
12586                 p->error_indicator = 1;
12587                 D(p->level--);
12588                 return NULL;
12589             }
12590             goto done;
12591         }
12592         p->mark = _mark;
12593         D(fprintf(stderr, "%*c%s is_bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12594                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'is' bitwise_or"));
12595     }
12596     _res = NULL;
12597   done:
12598     D(p->level--);
12599     return _res;
12600 }
12601 
12602 // Left-recursive
12603 // bitwise_or: bitwise_or '|' bitwise_xor | bitwise_xor
12604 static expr_ty bitwise_or_raw(Parser *);
12605 static expr_ty
bitwise_or_rule(Parser * p)12606 bitwise_or_rule(Parser *p)
12607 {
12608     D(p->level++);
12609     expr_ty _res = NULL;
12610     if (_PyPegen_is_memoized(p, bitwise_or_type, &_res)) {
12611         D(p->level--);
12612         return _res;
12613     }
12614     int _mark = p->mark;
12615     int _resmark = p->mark;
12616     while (1) {
12617         int tmpvar_2 = _PyPegen_update_memo(p, _mark, bitwise_or_type, _res);
12618         if (tmpvar_2) {
12619             D(p->level--);
12620             return _res;
12621         }
12622         p->mark = _mark;
12623         p->in_raw_rule++;
12624         void *_raw = bitwise_or_raw(p);
12625         p->in_raw_rule--;
12626         if (p->error_indicator)
12627             return NULL;
12628         if (_raw == NULL || p->mark <= _resmark)
12629             break;
12630         _resmark = p->mark;
12631         _res = _raw;
12632     }
12633     p->mark = _resmark;
12634     D(p->level--);
12635     return _res;
12636 }
12637 static expr_ty
bitwise_or_raw(Parser * p)12638 bitwise_or_raw(Parser *p)
12639 {
12640     D(p->level++);
12641     if (p->error_indicator) {
12642         D(p->level--);
12643         return NULL;
12644     }
12645     expr_ty _res = NULL;
12646     int _mark = p->mark;
12647     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12648         p->error_indicator = 1;
12649         D(p->level--);
12650         return NULL;
12651     }
12652     int _start_lineno = p->tokens[_mark]->lineno;
12653     UNUSED(_start_lineno); // Only used by EXTRA macro
12654     int _start_col_offset = p->tokens[_mark]->col_offset;
12655     UNUSED(_start_col_offset); // Only used by EXTRA macro
12656     { // bitwise_or '|' bitwise_xor
12657         if (p->error_indicator) {
12658             D(p->level--);
12659             return NULL;
12660         }
12661         D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
12662         Token * _literal;
12663         expr_ty a;
12664         expr_ty b;
12665         if (
12666             (a = bitwise_or_rule(p))  // bitwise_or
12667             &&
12668             (_literal = _PyPegen_expect_token(p, 18))  // token='|'
12669             &&
12670             (b = bitwise_xor_rule(p))  // bitwise_xor
12671         )
12672         {
12673             D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_or '|' bitwise_xor"));
12674             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12675             if (_token == NULL) {
12676                 D(p->level--);
12677                 return NULL;
12678             }
12679             int _end_lineno = _token->end_lineno;
12680             UNUSED(_end_lineno); // Only used by EXTRA macro
12681             int _end_col_offset = _token->end_col_offset;
12682             UNUSED(_end_col_offset); // Only used by EXTRA macro
12683             _res = _PyAST_BinOp ( a , BitOr , b , EXTRA );
12684             if (_res == NULL && PyErr_Occurred()) {
12685                 p->error_indicator = 1;
12686                 D(p->level--);
12687                 return NULL;
12688             }
12689             goto done;
12690         }
12691         p->mark = _mark;
12692         D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12693                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_or '|' bitwise_xor"));
12694     }
12695     { // bitwise_xor
12696         if (p->error_indicator) {
12697             D(p->level--);
12698             return NULL;
12699         }
12700         D(fprintf(stderr, "%*c> bitwise_or[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
12701         expr_ty bitwise_xor_var;
12702         if (
12703             (bitwise_xor_var = bitwise_xor_rule(p))  // bitwise_xor
12704         )
12705         {
12706             D(fprintf(stderr, "%*c+ bitwise_or[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor"));
12707             _res = bitwise_xor_var;
12708             goto done;
12709         }
12710         p->mark = _mark;
12711         D(fprintf(stderr, "%*c%s bitwise_or[%d-%d]: %s failed!\n", p->level, ' ',
12712                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor"));
12713     }
12714     _res = NULL;
12715   done:
12716     D(p->level--);
12717     return _res;
12718 }
12719 
12720 // Left-recursive
12721 // bitwise_xor: bitwise_xor '^' bitwise_and | bitwise_and
12722 static expr_ty bitwise_xor_raw(Parser *);
12723 static expr_ty
bitwise_xor_rule(Parser * p)12724 bitwise_xor_rule(Parser *p)
12725 {
12726     D(p->level++);
12727     expr_ty _res = NULL;
12728     if (_PyPegen_is_memoized(p, bitwise_xor_type, &_res)) {
12729         D(p->level--);
12730         return _res;
12731     }
12732     int _mark = p->mark;
12733     int _resmark = p->mark;
12734     while (1) {
12735         int tmpvar_3 = _PyPegen_update_memo(p, _mark, bitwise_xor_type, _res);
12736         if (tmpvar_3) {
12737             D(p->level--);
12738             return _res;
12739         }
12740         p->mark = _mark;
12741         p->in_raw_rule++;
12742         void *_raw = bitwise_xor_raw(p);
12743         p->in_raw_rule--;
12744         if (p->error_indicator)
12745             return NULL;
12746         if (_raw == NULL || p->mark <= _resmark)
12747             break;
12748         _resmark = p->mark;
12749         _res = _raw;
12750     }
12751     p->mark = _resmark;
12752     D(p->level--);
12753     return _res;
12754 }
12755 static expr_ty
bitwise_xor_raw(Parser * p)12756 bitwise_xor_raw(Parser *p)
12757 {
12758     D(p->level++);
12759     if (p->error_indicator) {
12760         D(p->level--);
12761         return NULL;
12762     }
12763     expr_ty _res = NULL;
12764     int _mark = p->mark;
12765     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12766         p->error_indicator = 1;
12767         D(p->level--);
12768         return NULL;
12769     }
12770     int _start_lineno = p->tokens[_mark]->lineno;
12771     UNUSED(_start_lineno); // Only used by EXTRA macro
12772     int _start_col_offset = p->tokens[_mark]->col_offset;
12773     UNUSED(_start_col_offset); // Only used by EXTRA macro
12774     { // bitwise_xor '^' bitwise_and
12775         if (p->error_indicator) {
12776             D(p->level--);
12777             return NULL;
12778         }
12779         D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
12780         Token * _literal;
12781         expr_ty a;
12782         expr_ty b;
12783         if (
12784             (a = bitwise_xor_rule(p))  // bitwise_xor
12785             &&
12786             (_literal = _PyPegen_expect_token(p, 32))  // token='^'
12787             &&
12788             (b = bitwise_and_rule(p))  // bitwise_and
12789         )
12790         {
12791             D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_xor '^' bitwise_and"));
12792             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12793             if (_token == NULL) {
12794                 D(p->level--);
12795                 return NULL;
12796             }
12797             int _end_lineno = _token->end_lineno;
12798             UNUSED(_end_lineno); // Only used by EXTRA macro
12799             int _end_col_offset = _token->end_col_offset;
12800             UNUSED(_end_col_offset); // Only used by EXTRA macro
12801             _res = _PyAST_BinOp ( a , BitXor , b , EXTRA );
12802             if (_res == NULL && PyErr_Occurred()) {
12803                 p->error_indicator = 1;
12804                 D(p->level--);
12805                 return NULL;
12806             }
12807             goto done;
12808         }
12809         p->mark = _mark;
12810         D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
12811                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_xor '^' bitwise_and"));
12812     }
12813     { // bitwise_and
12814         if (p->error_indicator) {
12815             D(p->level--);
12816             return NULL;
12817         }
12818         D(fprintf(stderr, "%*c> bitwise_xor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
12819         expr_ty bitwise_and_var;
12820         if (
12821             (bitwise_and_var = bitwise_and_rule(p))  // bitwise_and
12822         )
12823         {
12824             D(fprintf(stderr, "%*c+ bitwise_xor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and"));
12825             _res = bitwise_and_var;
12826             goto done;
12827         }
12828         p->mark = _mark;
12829         D(fprintf(stderr, "%*c%s bitwise_xor[%d-%d]: %s failed!\n", p->level, ' ',
12830                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and"));
12831     }
12832     _res = NULL;
12833   done:
12834     D(p->level--);
12835     return _res;
12836 }
12837 
12838 // Left-recursive
12839 // bitwise_and: bitwise_and '&' shift_expr | shift_expr
12840 static expr_ty bitwise_and_raw(Parser *);
12841 static expr_ty
bitwise_and_rule(Parser * p)12842 bitwise_and_rule(Parser *p)
12843 {
12844     D(p->level++);
12845     expr_ty _res = NULL;
12846     if (_PyPegen_is_memoized(p, bitwise_and_type, &_res)) {
12847         D(p->level--);
12848         return _res;
12849     }
12850     int _mark = p->mark;
12851     int _resmark = p->mark;
12852     while (1) {
12853         int tmpvar_4 = _PyPegen_update_memo(p, _mark, bitwise_and_type, _res);
12854         if (tmpvar_4) {
12855             D(p->level--);
12856             return _res;
12857         }
12858         p->mark = _mark;
12859         p->in_raw_rule++;
12860         void *_raw = bitwise_and_raw(p);
12861         p->in_raw_rule--;
12862         if (p->error_indicator)
12863             return NULL;
12864         if (_raw == NULL || p->mark <= _resmark)
12865             break;
12866         _resmark = p->mark;
12867         _res = _raw;
12868     }
12869     p->mark = _resmark;
12870     D(p->level--);
12871     return _res;
12872 }
12873 static expr_ty
bitwise_and_raw(Parser * p)12874 bitwise_and_raw(Parser *p)
12875 {
12876     D(p->level++);
12877     if (p->error_indicator) {
12878         D(p->level--);
12879         return NULL;
12880     }
12881     expr_ty _res = NULL;
12882     int _mark = p->mark;
12883     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
12884         p->error_indicator = 1;
12885         D(p->level--);
12886         return NULL;
12887     }
12888     int _start_lineno = p->tokens[_mark]->lineno;
12889     UNUSED(_start_lineno); // Only used by EXTRA macro
12890     int _start_col_offset = p->tokens[_mark]->col_offset;
12891     UNUSED(_start_col_offset); // Only used by EXTRA macro
12892     { // bitwise_and '&' shift_expr
12893         if (p->error_indicator) {
12894             D(p->level--);
12895             return NULL;
12896         }
12897         D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
12898         Token * _literal;
12899         expr_ty a;
12900         expr_ty b;
12901         if (
12902             (a = bitwise_and_rule(p))  // bitwise_and
12903             &&
12904             (_literal = _PyPegen_expect_token(p, 19))  // token='&'
12905             &&
12906             (b = shift_expr_rule(p))  // shift_expr
12907         )
12908         {
12909             D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "bitwise_and '&' shift_expr"));
12910             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
12911             if (_token == NULL) {
12912                 D(p->level--);
12913                 return NULL;
12914             }
12915             int _end_lineno = _token->end_lineno;
12916             UNUSED(_end_lineno); // Only used by EXTRA macro
12917             int _end_col_offset = _token->end_col_offset;
12918             UNUSED(_end_col_offset); // Only used by EXTRA macro
12919             _res = _PyAST_BinOp ( a , BitAnd , b , EXTRA );
12920             if (_res == NULL && PyErr_Occurred()) {
12921                 p->error_indicator = 1;
12922                 D(p->level--);
12923                 return NULL;
12924             }
12925             goto done;
12926         }
12927         p->mark = _mark;
12928         D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
12929                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "bitwise_and '&' shift_expr"));
12930     }
12931     { // shift_expr
12932         if (p->error_indicator) {
12933             D(p->level--);
12934             return NULL;
12935         }
12936         D(fprintf(stderr, "%*c> bitwise_and[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr"));
12937         expr_ty shift_expr_var;
12938         if (
12939             (shift_expr_var = shift_expr_rule(p))  // shift_expr
12940         )
12941         {
12942             D(fprintf(stderr, "%*c+ bitwise_and[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr"));
12943             _res = shift_expr_var;
12944             goto done;
12945         }
12946         p->mark = _mark;
12947         D(fprintf(stderr, "%*c%s bitwise_and[%d-%d]: %s failed!\n", p->level, ' ',
12948                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr"));
12949     }
12950     _res = NULL;
12951   done:
12952     D(p->level--);
12953     return _res;
12954 }
12955 
12956 // Left-recursive
12957 // shift_expr: shift_expr '<<' sum | shift_expr '>>' sum | sum
12958 static expr_ty shift_expr_raw(Parser *);
12959 static expr_ty
shift_expr_rule(Parser * p)12960 shift_expr_rule(Parser *p)
12961 {
12962     D(p->level++);
12963     expr_ty _res = NULL;
12964     if (_PyPegen_is_memoized(p, shift_expr_type, &_res)) {
12965         D(p->level--);
12966         return _res;
12967     }
12968     int _mark = p->mark;
12969     int _resmark = p->mark;
12970     while (1) {
12971         int tmpvar_5 = _PyPegen_update_memo(p, _mark, shift_expr_type, _res);
12972         if (tmpvar_5) {
12973             D(p->level--);
12974             return _res;
12975         }
12976         p->mark = _mark;
12977         p->in_raw_rule++;
12978         void *_raw = shift_expr_raw(p);
12979         p->in_raw_rule--;
12980         if (p->error_indicator)
12981             return NULL;
12982         if (_raw == NULL || p->mark <= _resmark)
12983             break;
12984         _resmark = p->mark;
12985         _res = _raw;
12986     }
12987     p->mark = _resmark;
12988     D(p->level--);
12989     return _res;
12990 }
12991 static expr_ty
shift_expr_raw(Parser * p)12992 shift_expr_raw(Parser *p)
12993 {
12994     D(p->level++);
12995     if (p->error_indicator) {
12996         D(p->level--);
12997         return NULL;
12998     }
12999     expr_ty _res = NULL;
13000     int _mark = p->mark;
13001     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13002         p->error_indicator = 1;
13003         D(p->level--);
13004         return NULL;
13005     }
13006     int _start_lineno = p->tokens[_mark]->lineno;
13007     UNUSED(_start_lineno); // Only used by EXTRA macro
13008     int _start_col_offset = p->tokens[_mark]->col_offset;
13009     UNUSED(_start_col_offset); // Only used by EXTRA macro
13010     { // shift_expr '<<' sum
13011         if (p->error_indicator) {
13012             D(p->level--);
13013             return NULL;
13014         }
13015         D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
13016         Token * _literal;
13017         expr_ty a;
13018         expr_ty b;
13019         if (
13020             (a = shift_expr_rule(p))  // shift_expr
13021             &&
13022             (_literal = _PyPegen_expect_token(p, 33))  // token='<<'
13023             &&
13024             (b = sum_rule(p))  // sum
13025         )
13026         {
13027             D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '<<' sum"));
13028             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13029             if (_token == NULL) {
13030                 D(p->level--);
13031                 return NULL;
13032             }
13033             int _end_lineno = _token->end_lineno;
13034             UNUSED(_end_lineno); // Only used by EXTRA macro
13035             int _end_col_offset = _token->end_col_offset;
13036             UNUSED(_end_col_offset); // Only used by EXTRA macro
13037             _res = _PyAST_BinOp ( a , LShift , b , EXTRA );
13038             if (_res == NULL && PyErr_Occurred()) {
13039                 p->error_indicator = 1;
13040                 D(p->level--);
13041                 return NULL;
13042             }
13043             goto done;
13044         }
13045         p->mark = _mark;
13046         D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13047                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '<<' sum"));
13048     }
13049     { // shift_expr '>>' sum
13050         if (p->error_indicator) {
13051             D(p->level--);
13052             return NULL;
13053         }
13054         D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
13055         Token * _literal;
13056         expr_ty a;
13057         expr_ty b;
13058         if (
13059             (a = shift_expr_rule(p))  // shift_expr
13060             &&
13061             (_literal = _PyPegen_expect_token(p, 34))  // token='>>'
13062             &&
13063             (b = sum_rule(p))  // sum
13064         )
13065         {
13066             D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "shift_expr '>>' sum"));
13067             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13068             if (_token == NULL) {
13069                 D(p->level--);
13070                 return NULL;
13071             }
13072             int _end_lineno = _token->end_lineno;
13073             UNUSED(_end_lineno); // Only used by EXTRA macro
13074             int _end_col_offset = _token->end_col_offset;
13075             UNUSED(_end_col_offset); // Only used by EXTRA macro
13076             _res = _PyAST_BinOp ( a , RShift , b , EXTRA );
13077             if (_res == NULL && PyErr_Occurred()) {
13078                 p->error_indicator = 1;
13079                 D(p->level--);
13080                 return NULL;
13081             }
13082             goto done;
13083         }
13084         p->mark = _mark;
13085         D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13086                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "shift_expr '>>' sum"));
13087     }
13088     { // sum
13089         if (p->error_indicator) {
13090             D(p->level--);
13091             return NULL;
13092         }
13093         D(fprintf(stderr, "%*c> shift_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum"));
13094         expr_ty sum_var;
13095         if (
13096             (sum_var = sum_rule(p))  // sum
13097         )
13098         {
13099             D(fprintf(stderr, "%*c+ shift_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum"));
13100             _res = sum_var;
13101             goto done;
13102         }
13103         p->mark = _mark;
13104         D(fprintf(stderr, "%*c%s shift_expr[%d-%d]: %s failed!\n", p->level, ' ',
13105                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum"));
13106     }
13107     _res = NULL;
13108   done:
13109     D(p->level--);
13110     return _res;
13111 }
13112 
13113 // Left-recursive
13114 // sum: sum '+' term | sum '-' term | term
13115 static expr_ty sum_raw(Parser *);
13116 static expr_ty
sum_rule(Parser * p)13117 sum_rule(Parser *p)
13118 {
13119     D(p->level++);
13120     expr_ty _res = NULL;
13121     if (_PyPegen_is_memoized(p, sum_type, &_res)) {
13122         D(p->level--);
13123         return _res;
13124     }
13125     int _mark = p->mark;
13126     int _resmark = p->mark;
13127     while (1) {
13128         int tmpvar_6 = _PyPegen_update_memo(p, _mark, sum_type, _res);
13129         if (tmpvar_6) {
13130             D(p->level--);
13131             return _res;
13132         }
13133         p->mark = _mark;
13134         p->in_raw_rule++;
13135         void *_raw = sum_raw(p);
13136         p->in_raw_rule--;
13137         if (p->error_indicator)
13138             return NULL;
13139         if (_raw == NULL || p->mark <= _resmark)
13140             break;
13141         _resmark = p->mark;
13142         _res = _raw;
13143     }
13144     p->mark = _resmark;
13145     D(p->level--);
13146     return _res;
13147 }
13148 static expr_ty
sum_raw(Parser * p)13149 sum_raw(Parser *p)
13150 {
13151     D(p->level++);
13152     if (p->error_indicator) {
13153         D(p->level--);
13154         return NULL;
13155     }
13156     expr_ty _res = NULL;
13157     int _mark = p->mark;
13158     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13159         p->error_indicator = 1;
13160         D(p->level--);
13161         return NULL;
13162     }
13163     int _start_lineno = p->tokens[_mark]->lineno;
13164     UNUSED(_start_lineno); // Only used by EXTRA macro
13165     int _start_col_offset = p->tokens[_mark]->col_offset;
13166     UNUSED(_start_col_offset); // Only used by EXTRA macro
13167     { // sum '+' term
13168         if (p->error_indicator) {
13169             D(p->level--);
13170             return NULL;
13171         }
13172         D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
13173         Token * _literal;
13174         expr_ty a;
13175         expr_ty b;
13176         if (
13177             (a = sum_rule(p))  // sum
13178             &&
13179             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
13180             &&
13181             (b = term_rule(p))  // term
13182         )
13183         {
13184             D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '+' term"));
13185             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13186             if (_token == NULL) {
13187                 D(p->level--);
13188                 return NULL;
13189             }
13190             int _end_lineno = _token->end_lineno;
13191             UNUSED(_end_lineno); // Only used by EXTRA macro
13192             int _end_col_offset = _token->end_col_offset;
13193             UNUSED(_end_col_offset); // Only used by EXTRA macro
13194             _res = _PyAST_BinOp ( a , Add , b , EXTRA );
13195             if (_res == NULL && PyErr_Occurred()) {
13196                 p->error_indicator = 1;
13197                 D(p->level--);
13198                 return NULL;
13199             }
13200             goto done;
13201         }
13202         p->mark = _mark;
13203         D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13204                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '+' term"));
13205     }
13206     { // sum '-' term
13207         if (p->error_indicator) {
13208             D(p->level--);
13209             return NULL;
13210         }
13211         D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13212         Token * _literal;
13213         expr_ty a;
13214         expr_ty b;
13215         if (
13216             (a = sum_rule(p))  // sum
13217             &&
13218             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
13219             &&
13220             (b = term_rule(p))  // term
13221         )
13222         {
13223             D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "sum '-' term"));
13224             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13225             if (_token == NULL) {
13226                 D(p->level--);
13227                 return NULL;
13228             }
13229             int _end_lineno = _token->end_lineno;
13230             UNUSED(_end_lineno); // Only used by EXTRA macro
13231             int _end_col_offset = _token->end_col_offset;
13232             UNUSED(_end_col_offset); // Only used by EXTRA macro
13233             _res = _PyAST_BinOp ( a , Sub , b , EXTRA );
13234             if (_res == NULL && PyErr_Occurred()) {
13235                 p->error_indicator = 1;
13236                 D(p->level--);
13237                 return NULL;
13238             }
13239             goto done;
13240         }
13241         p->mark = _mark;
13242         D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13243                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "sum '-' term"));
13244     }
13245     { // term
13246         if (p->error_indicator) {
13247             D(p->level--);
13248             return NULL;
13249         }
13250         D(fprintf(stderr, "%*c> sum[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term"));
13251         expr_ty term_var;
13252         if (
13253             (term_var = term_rule(p))  // term
13254         )
13255         {
13256             D(fprintf(stderr, "%*c+ sum[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term"));
13257             _res = term_var;
13258             goto done;
13259         }
13260         p->mark = _mark;
13261         D(fprintf(stderr, "%*c%s sum[%d-%d]: %s failed!\n", p->level, ' ',
13262                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term"));
13263     }
13264     _res = NULL;
13265   done:
13266     D(p->level--);
13267     return _res;
13268 }
13269 
13270 // Left-recursive
13271 // term:
13272 //     | term '*' factor
13273 //     | term '/' factor
13274 //     | term '//' factor
13275 //     | term '%' factor
13276 //     | term '@' factor
13277 //     | factor
13278 static expr_ty term_raw(Parser *);
13279 static expr_ty
term_rule(Parser * p)13280 term_rule(Parser *p)
13281 {
13282     D(p->level++);
13283     expr_ty _res = NULL;
13284     if (_PyPegen_is_memoized(p, term_type, &_res)) {
13285         D(p->level--);
13286         return _res;
13287     }
13288     int _mark = p->mark;
13289     int _resmark = p->mark;
13290     while (1) {
13291         int tmpvar_7 = _PyPegen_update_memo(p, _mark, term_type, _res);
13292         if (tmpvar_7) {
13293             D(p->level--);
13294             return _res;
13295         }
13296         p->mark = _mark;
13297         p->in_raw_rule++;
13298         void *_raw = term_raw(p);
13299         p->in_raw_rule--;
13300         if (p->error_indicator)
13301             return NULL;
13302         if (_raw == NULL || p->mark <= _resmark)
13303             break;
13304         _resmark = p->mark;
13305         _res = _raw;
13306     }
13307     p->mark = _resmark;
13308     D(p->level--);
13309     return _res;
13310 }
13311 static expr_ty
term_raw(Parser * p)13312 term_raw(Parser *p)
13313 {
13314     D(p->level++);
13315     if (p->error_indicator) {
13316         D(p->level--);
13317         return NULL;
13318     }
13319     expr_ty _res = NULL;
13320     int _mark = p->mark;
13321     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13322         p->error_indicator = 1;
13323         D(p->level--);
13324         return NULL;
13325     }
13326     int _start_lineno = p->tokens[_mark]->lineno;
13327     UNUSED(_start_lineno); // Only used by EXTRA macro
13328     int _start_col_offset = p->tokens[_mark]->col_offset;
13329     UNUSED(_start_col_offset); // Only used by EXTRA macro
13330     { // term '*' factor
13331         if (p->error_indicator) {
13332             D(p->level--);
13333             return NULL;
13334         }
13335         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13336         Token * _literal;
13337         expr_ty a;
13338         expr_ty b;
13339         if (
13340             (a = term_rule(p))  // term
13341             &&
13342             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
13343             &&
13344             (b = factor_rule(p))  // factor
13345         )
13346         {
13347             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '*' factor"));
13348             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13349             if (_token == NULL) {
13350                 D(p->level--);
13351                 return NULL;
13352             }
13353             int _end_lineno = _token->end_lineno;
13354             UNUSED(_end_lineno); // Only used by EXTRA macro
13355             int _end_col_offset = _token->end_col_offset;
13356             UNUSED(_end_col_offset); // Only used by EXTRA macro
13357             _res = _PyAST_BinOp ( a , Mult , b , EXTRA );
13358             if (_res == NULL && PyErr_Occurred()) {
13359                 p->error_indicator = 1;
13360                 D(p->level--);
13361                 return NULL;
13362             }
13363             goto done;
13364         }
13365         p->mark = _mark;
13366         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13367                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '*' factor"));
13368     }
13369     { // term '/' factor
13370         if (p->error_indicator) {
13371             D(p->level--);
13372             return NULL;
13373         }
13374         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
13375         Token * _literal;
13376         expr_ty a;
13377         expr_ty b;
13378         if (
13379             (a = term_rule(p))  // term
13380             &&
13381             (_literal = _PyPegen_expect_token(p, 17))  // token='/'
13382             &&
13383             (b = factor_rule(p))  // factor
13384         )
13385         {
13386             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '/' factor"));
13387             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13388             if (_token == NULL) {
13389                 D(p->level--);
13390                 return NULL;
13391             }
13392             int _end_lineno = _token->end_lineno;
13393             UNUSED(_end_lineno); // Only used by EXTRA macro
13394             int _end_col_offset = _token->end_col_offset;
13395             UNUSED(_end_col_offset); // Only used by EXTRA macro
13396             _res = _PyAST_BinOp ( a , Div , b , EXTRA );
13397             if (_res == NULL && PyErr_Occurred()) {
13398                 p->error_indicator = 1;
13399                 D(p->level--);
13400                 return NULL;
13401             }
13402             goto done;
13403         }
13404         p->mark = _mark;
13405         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13406                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '/' factor"));
13407     }
13408     { // term '//' factor
13409         if (p->error_indicator) {
13410             D(p->level--);
13411             return NULL;
13412         }
13413         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
13414         Token * _literal;
13415         expr_ty a;
13416         expr_ty b;
13417         if (
13418             (a = term_rule(p))  // term
13419             &&
13420             (_literal = _PyPegen_expect_token(p, 47))  // token='//'
13421             &&
13422             (b = factor_rule(p))  // factor
13423         )
13424         {
13425             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '//' factor"));
13426             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13427             if (_token == NULL) {
13428                 D(p->level--);
13429                 return NULL;
13430             }
13431             int _end_lineno = _token->end_lineno;
13432             UNUSED(_end_lineno); // Only used by EXTRA macro
13433             int _end_col_offset = _token->end_col_offset;
13434             UNUSED(_end_col_offset); // Only used by EXTRA macro
13435             _res = _PyAST_BinOp ( a , FloorDiv , b , EXTRA );
13436             if (_res == NULL && PyErr_Occurred()) {
13437                 p->error_indicator = 1;
13438                 D(p->level--);
13439                 return NULL;
13440             }
13441             goto done;
13442         }
13443         p->mark = _mark;
13444         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13445                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '//' factor"));
13446     }
13447     { // term '%' factor
13448         if (p->error_indicator) {
13449             D(p->level--);
13450             return NULL;
13451         }
13452         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
13453         Token * _literal;
13454         expr_ty a;
13455         expr_ty b;
13456         if (
13457             (a = term_rule(p))  // term
13458             &&
13459             (_literal = _PyPegen_expect_token(p, 24))  // token='%'
13460             &&
13461             (b = factor_rule(p))  // factor
13462         )
13463         {
13464             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '%' factor"));
13465             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13466             if (_token == NULL) {
13467                 D(p->level--);
13468                 return NULL;
13469             }
13470             int _end_lineno = _token->end_lineno;
13471             UNUSED(_end_lineno); // Only used by EXTRA macro
13472             int _end_col_offset = _token->end_col_offset;
13473             UNUSED(_end_col_offset); // Only used by EXTRA macro
13474             _res = _PyAST_BinOp ( a , Mod , b , EXTRA );
13475             if (_res == NULL && PyErr_Occurred()) {
13476                 p->error_indicator = 1;
13477                 D(p->level--);
13478                 return NULL;
13479             }
13480             goto done;
13481         }
13482         p->mark = _mark;
13483         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13484                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '%' factor"));
13485     }
13486     { // term '@' factor
13487         if (p->error_indicator) {
13488             D(p->level--);
13489             return NULL;
13490         }
13491         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
13492         Token * _literal;
13493         expr_ty a;
13494         expr_ty b;
13495         if (
13496             (a = term_rule(p))  // term
13497             &&
13498             (_literal = _PyPegen_expect_token(p, 49))  // token='@'
13499             &&
13500             (b = factor_rule(p))  // factor
13501         )
13502         {
13503             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "term '@' factor"));
13504             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13505             if (_token == NULL) {
13506                 D(p->level--);
13507                 return NULL;
13508             }
13509             int _end_lineno = _token->end_lineno;
13510             UNUSED(_end_lineno); // Only used by EXTRA macro
13511             int _end_col_offset = _token->end_col_offset;
13512             UNUSED(_end_col_offset); // Only used by EXTRA macro
13513             _res = CHECK_VERSION ( expr_ty , 5 , "The '@' operator is" , _PyAST_BinOp ( a , MatMult , b , EXTRA ) );
13514             if (_res == NULL && PyErr_Occurred()) {
13515                 p->error_indicator = 1;
13516                 D(p->level--);
13517                 return NULL;
13518             }
13519             goto done;
13520         }
13521         p->mark = _mark;
13522         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13523                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "term '@' factor"));
13524     }
13525     { // factor
13526         if (p->error_indicator) {
13527             D(p->level--);
13528             return NULL;
13529         }
13530         D(fprintf(stderr, "%*c> term[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "factor"));
13531         expr_ty factor_var;
13532         if (
13533             (factor_var = factor_rule(p))  // factor
13534         )
13535         {
13536             D(fprintf(stderr, "%*c+ term[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "factor"));
13537             _res = factor_var;
13538             goto done;
13539         }
13540         p->mark = _mark;
13541         D(fprintf(stderr, "%*c%s term[%d-%d]: %s failed!\n", p->level, ' ',
13542                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "factor"));
13543     }
13544     _res = NULL;
13545   done:
13546     D(p->level--);
13547     return _res;
13548 }
13549 
13550 // factor: '+' factor | '-' factor | '~' factor | power
13551 static expr_ty
factor_rule(Parser * p)13552 factor_rule(Parser *p)
13553 {
13554     D(p->level++);
13555     if (p->error_indicator) {
13556         D(p->level--);
13557         return NULL;
13558     }
13559     expr_ty _res = NULL;
13560     if (_PyPegen_is_memoized(p, factor_type, &_res)) {
13561         D(p->level--);
13562         return _res;
13563     }
13564     int _mark = p->mark;
13565     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13566         p->error_indicator = 1;
13567         D(p->level--);
13568         return NULL;
13569     }
13570     int _start_lineno = p->tokens[_mark]->lineno;
13571     UNUSED(_start_lineno); // Only used by EXTRA macro
13572     int _start_col_offset = p->tokens[_mark]->col_offset;
13573     UNUSED(_start_col_offset); // Only used by EXTRA macro
13574     { // '+' factor
13575         if (p->error_indicator) {
13576             D(p->level--);
13577             return NULL;
13578         }
13579         D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+' factor"));
13580         Token * _literal;
13581         expr_ty a;
13582         if (
13583             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
13584             &&
13585             (a = factor_rule(p))  // factor
13586         )
13587         {
13588             D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+' factor"));
13589             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13590             if (_token == NULL) {
13591                 D(p->level--);
13592                 return NULL;
13593             }
13594             int _end_lineno = _token->end_lineno;
13595             UNUSED(_end_lineno); // Only used by EXTRA macro
13596             int _end_col_offset = _token->end_col_offset;
13597             UNUSED(_end_col_offset); // Only used by EXTRA macro
13598             _res = _PyAST_UnaryOp ( UAdd , a , EXTRA );
13599             if (_res == NULL && PyErr_Occurred()) {
13600                 p->error_indicator = 1;
13601                 D(p->level--);
13602                 return NULL;
13603             }
13604             goto done;
13605         }
13606         p->mark = _mark;
13607         D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
13608                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+' factor"));
13609     }
13610     { // '-' factor
13611         if (p->error_indicator) {
13612             D(p->level--);
13613             return NULL;
13614         }
13615         D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-' factor"));
13616         Token * _literal;
13617         expr_ty a;
13618         if (
13619             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
13620             &&
13621             (a = factor_rule(p))  // factor
13622         )
13623         {
13624             D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-' factor"));
13625             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13626             if (_token == NULL) {
13627                 D(p->level--);
13628                 return NULL;
13629             }
13630             int _end_lineno = _token->end_lineno;
13631             UNUSED(_end_lineno); // Only used by EXTRA macro
13632             int _end_col_offset = _token->end_col_offset;
13633             UNUSED(_end_col_offset); // Only used by EXTRA macro
13634             _res = _PyAST_UnaryOp ( USub , a , EXTRA );
13635             if (_res == NULL && PyErr_Occurred()) {
13636                 p->error_indicator = 1;
13637                 D(p->level--);
13638                 return NULL;
13639             }
13640             goto done;
13641         }
13642         p->mark = _mark;
13643         D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
13644                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-' factor"));
13645     }
13646     { // '~' factor
13647         if (p->error_indicator) {
13648             D(p->level--);
13649             return NULL;
13650         }
13651         D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'~' factor"));
13652         Token * _literal;
13653         expr_ty a;
13654         if (
13655             (_literal = _PyPegen_expect_token(p, 31))  // token='~'
13656             &&
13657             (a = factor_rule(p))  // factor
13658         )
13659         {
13660             D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'~' factor"));
13661             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13662             if (_token == NULL) {
13663                 D(p->level--);
13664                 return NULL;
13665             }
13666             int _end_lineno = _token->end_lineno;
13667             UNUSED(_end_lineno); // Only used by EXTRA macro
13668             int _end_col_offset = _token->end_col_offset;
13669             UNUSED(_end_col_offset); // Only used by EXTRA macro
13670             _res = _PyAST_UnaryOp ( Invert , a , EXTRA );
13671             if (_res == NULL && PyErr_Occurred()) {
13672                 p->error_indicator = 1;
13673                 D(p->level--);
13674                 return NULL;
13675             }
13676             goto done;
13677         }
13678         p->mark = _mark;
13679         D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
13680                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'~' factor"));
13681     }
13682     { // power
13683         if (p->error_indicator) {
13684             D(p->level--);
13685             return NULL;
13686         }
13687         D(fprintf(stderr, "%*c> factor[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "power"));
13688         expr_ty power_var;
13689         if (
13690             (power_var = power_rule(p))  // power
13691         )
13692         {
13693             D(fprintf(stderr, "%*c+ factor[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "power"));
13694             _res = power_var;
13695             goto done;
13696         }
13697         p->mark = _mark;
13698         D(fprintf(stderr, "%*c%s factor[%d-%d]: %s failed!\n", p->level, ' ',
13699                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "power"));
13700     }
13701     _res = NULL;
13702   done:
13703     _PyPegen_insert_memo(p, _mark, factor_type, _res);
13704     D(p->level--);
13705     return _res;
13706 }
13707 
13708 // power: await_primary '**' factor | await_primary
13709 static expr_ty
power_rule(Parser * p)13710 power_rule(Parser *p)
13711 {
13712     D(p->level++);
13713     if (p->error_indicator) {
13714         D(p->level--);
13715         return NULL;
13716     }
13717     expr_ty _res = NULL;
13718     int _mark = p->mark;
13719     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13720         p->error_indicator = 1;
13721         D(p->level--);
13722         return NULL;
13723     }
13724     int _start_lineno = p->tokens[_mark]->lineno;
13725     UNUSED(_start_lineno); // Only used by EXTRA macro
13726     int _start_col_offset = p->tokens[_mark]->col_offset;
13727     UNUSED(_start_col_offset); // Only used by EXTRA macro
13728     { // await_primary '**' factor
13729         if (p->error_indicator) {
13730             D(p->level--);
13731             return NULL;
13732         }
13733         D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
13734         Token * _literal;
13735         expr_ty a;
13736         expr_ty b;
13737         if (
13738             (a = await_primary_rule(p))  // await_primary
13739             &&
13740             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
13741             &&
13742             (b = factor_rule(p))  // factor
13743         )
13744         {
13745             D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary '**' factor"));
13746             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13747             if (_token == NULL) {
13748                 D(p->level--);
13749                 return NULL;
13750             }
13751             int _end_lineno = _token->end_lineno;
13752             UNUSED(_end_lineno); // Only used by EXTRA macro
13753             int _end_col_offset = _token->end_col_offset;
13754             UNUSED(_end_col_offset); // Only used by EXTRA macro
13755             _res = _PyAST_BinOp ( a , Pow , b , EXTRA );
13756             if (_res == NULL && PyErr_Occurred()) {
13757                 p->error_indicator = 1;
13758                 D(p->level--);
13759                 return NULL;
13760             }
13761             goto done;
13762         }
13763         p->mark = _mark;
13764         D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
13765                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary '**' factor"));
13766     }
13767     { // await_primary
13768         if (p->error_indicator) {
13769             D(p->level--);
13770             return NULL;
13771         }
13772         D(fprintf(stderr, "%*c> power[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "await_primary"));
13773         expr_ty await_primary_var;
13774         if (
13775             (await_primary_var = await_primary_rule(p))  // await_primary
13776         )
13777         {
13778             D(fprintf(stderr, "%*c+ power[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "await_primary"));
13779             _res = await_primary_var;
13780             goto done;
13781         }
13782         p->mark = _mark;
13783         D(fprintf(stderr, "%*c%s power[%d-%d]: %s failed!\n", p->level, ' ',
13784                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "await_primary"));
13785     }
13786     _res = NULL;
13787   done:
13788     D(p->level--);
13789     return _res;
13790 }
13791 
13792 // await_primary: AWAIT primary | primary
13793 static expr_ty
await_primary_rule(Parser * p)13794 await_primary_rule(Parser *p)
13795 {
13796     D(p->level++);
13797     if (p->error_indicator) {
13798         D(p->level--);
13799         return NULL;
13800     }
13801     expr_ty _res = NULL;
13802     if (_PyPegen_is_memoized(p, await_primary_type, &_res)) {
13803         D(p->level--);
13804         return _res;
13805     }
13806     int _mark = p->mark;
13807     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13808         p->error_indicator = 1;
13809         D(p->level--);
13810         return NULL;
13811     }
13812     int _start_lineno = p->tokens[_mark]->lineno;
13813     UNUSED(_start_lineno); // Only used by EXTRA macro
13814     int _start_col_offset = p->tokens[_mark]->col_offset;
13815     UNUSED(_start_col_offset); // Only used by EXTRA macro
13816     { // AWAIT primary
13817         if (p->error_indicator) {
13818             D(p->level--);
13819             return NULL;
13820         }
13821         D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "AWAIT primary"));
13822         expr_ty a;
13823         Token * await_var;
13824         if (
13825             (await_var = _PyPegen_expect_token(p, AWAIT))  // token='AWAIT'
13826             &&
13827             (a = primary_rule(p))  // primary
13828         )
13829         {
13830             D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "AWAIT primary"));
13831             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13832             if (_token == NULL) {
13833                 D(p->level--);
13834                 return NULL;
13835             }
13836             int _end_lineno = _token->end_lineno;
13837             UNUSED(_end_lineno); // Only used by EXTRA macro
13838             int _end_col_offset = _token->end_col_offset;
13839             UNUSED(_end_col_offset); // Only used by EXTRA macro
13840             _res = CHECK_VERSION ( expr_ty , 5 , "Await expressions are" , _PyAST_Await ( a , EXTRA ) );
13841             if (_res == NULL && PyErr_Occurred()) {
13842                 p->error_indicator = 1;
13843                 D(p->level--);
13844                 return NULL;
13845             }
13846             goto done;
13847         }
13848         p->mark = _mark;
13849         D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
13850                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "AWAIT primary"));
13851     }
13852     { // primary
13853         if (p->error_indicator) {
13854             D(p->level--);
13855             return NULL;
13856         }
13857         D(fprintf(stderr, "%*c> await_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary"));
13858         expr_ty primary_var;
13859         if (
13860             (primary_var = primary_rule(p))  // primary
13861         )
13862         {
13863             D(fprintf(stderr, "%*c+ await_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary"));
13864             _res = primary_var;
13865             goto done;
13866         }
13867         p->mark = _mark;
13868         D(fprintf(stderr, "%*c%s await_primary[%d-%d]: %s failed!\n", p->level, ' ',
13869                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary"));
13870     }
13871     _res = NULL;
13872   done:
13873     _PyPegen_insert_memo(p, _mark, await_primary_type, _res);
13874     D(p->level--);
13875     return _res;
13876 }
13877 
13878 // Left-recursive
13879 // primary:
13880 //     | primary '.' NAME
13881 //     | primary genexp
13882 //     | primary '(' arguments? ')'
13883 //     | primary '[' slices ']'
13884 //     | atom
13885 static expr_ty primary_raw(Parser *);
13886 static expr_ty
primary_rule(Parser * p)13887 primary_rule(Parser *p)
13888 {
13889     D(p->level++);
13890     expr_ty _res = NULL;
13891     if (_PyPegen_is_memoized(p, primary_type, &_res)) {
13892         D(p->level--);
13893         return _res;
13894     }
13895     int _mark = p->mark;
13896     int _resmark = p->mark;
13897     while (1) {
13898         int tmpvar_8 = _PyPegen_update_memo(p, _mark, primary_type, _res);
13899         if (tmpvar_8) {
13900             D(p->level--);
13901             return _res;
13902         }
13903         p->mark = _mark;
13904         p->in_raw_rule++;
13905         void *_raw = primary_raw(p);
13906         p->in_raw_rule--;
13907         if (p->error_indicator)
13908             return NULL;
13909         if (_raw == NULL || p->mark <= _resmark)
13910             break;
13911         _resmark = p->mark;
13912         _res = _raw;
13913     }
13914     p->mark = _resmark;
13915     D(p->level--);
13916     return _res;
13917 }
13918 static expr_ty
primary_raw(Parser * p)13919 primary_raw(Parser *p)
13920 {
13921     D(p->level++);
13922     if (p->error_indicator) {
13923         D(p->level--);
13924         return NULL;
13925     }
13926     expr_ty _res = NULL;
13927     int _mark = p->mark;
13928     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
13929         p->error_indicator = 1;
13930         D(p->level--);
13931         return NULL;
13932     }
13933     int _start_lineno = p->tokens[_mark]->lineno;
13934     UNUSED(_start_lineno); // Only used by EXTRA macro
13935     int _start_col_offset = p->tokens[_mark]->col_offset;
13936     UNUSED(_start_col_offset); // Only used by EXTRA macro
13937     { // primary '.' NAME
13938         if (p->error_indicator) {
13939             D(p->level--);
13940             return NULL;
13941         }
13942         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
13943         Token * _literal;
13944         expr_ty a;
13945         expr_ty b;
13946         if (
13947             (a = primary_rule(p))  // primary
13948             &&
13949             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
13950             &&
13951             (b = _PyPegen_name_token(p))  // NAME
13952         )
13953         {
13954             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '.' NAME"));
13955             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13956             if (_token == NULL) {
13957                 D(p->level--);
13958                 return NULL;
13959             }
13960             int _end_lineno = _token->end_lineno;
13961             UNUSED(_end_lineno); // Only used by EXTRA macro
13962             int _end_col_offset = _token->end_col_offset;
13963             UNUSED(_end_col_offset); // Only used by EXTRA macro
13964             _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
13965             if (_res == NULL && PyErr_Occurred()) {
13966                 p->error_indicator = 1;
13967                 D(p->level--);
13968                 return NULL;
13969             }
13970             goto done;
13971         }
13972         p->mark = _mark;
13973         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
13974                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '.' NAME"));
13975     }
13976     { // primary genexp
13977         if (p->error_indicator) {
13978             D(p->level--);
13979             return NULL;
13980         }
13981         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary genexp"));
13982         expr_ty a;
13983         expr_ty b;
13984         if (
13985             (a = primary_rule(p))  // primary
13986             &&
13987             (b = genexp_rule(p))  // genexp
13988         )
13989         {
13990             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary genexp"));
13991             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
13992             if (_token == NULL) {
13993                 D(p->level--);
13994                 return NULL;
13995             }
13996             int _end_lineno = _token->end_lineno;
13997             UNUSED(_end_lineno); // Only used by EXTRA macro
13998             int _end_col_offset = _token->end_col_offset;
13999             UNUSED(_end_col_offset); // Only used by EXTRA macro
14000             _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq * , ( asdl_expr_seq * ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
14001             if (_res == NULL && PyErr_Occurred()) {
14002                 p->error_indicator = 1;
14003                 D(p->level--);
14004                 return NULL;
14005             }
14006             goto done;
14007         }
14008         p->mark = _mark;
14009         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14010                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary genexp"));
14011     }
14012     { // primary '(' arguments? ')'
14013         if (p->error_indicator) {
14014             D(p->level--);
14015             return NULL;
14016         }
14017         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
14018         Token * _literal;
14019         Token * _literal_1;
14020         expr_ty a;
14021         void *b;
14022         if (
14023             (a = primary_rule(p))  // primary
14024             &&
14025             (_literal = _PyPegen_expect_token(p, 7))  // token='('
14026             &&
14027             (b = arguments_rule(p), !p->error_indicator)  // arguments?
14028             &&
14029             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
14030         )
14031         {
14032             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '(' arguments? ')'"));
14033             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14034             if (_token == NULL) {
14035                 D(p->level--);
14036                 return NULL;
14037             }
14038             int _end_lineno = _token->end_lineno;
14039             UNUSED(_end_lineno); // Only used by EXTRA macro
14040             int _end_col_offset = _token->end_col_offset;
14041             UNUSED(_end_col_offset); // Only used by EXTRA macro
14042             _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
14043             if (_res == NULL && PyErr_Occurred()) {
14044                 p->error_indicator = 1;
14045                 D(p->level--);
14046                 return NULL;
14047             }
14048             goto done;
14049         }
14050         p->mark = _mark;
14051         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14052                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '(' arguments? ')'"));
14053     }
14054     { // primary '[' slices ']'
14055         if (p->error_indicator) {
14056             D(p->level--);
14057             return NULL;
14058         }
14059         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
14060         Token * _literal;
14061         Token * _literal_1;
14062         expr_ty a;
14063         expr_ty b;
14064         if (
14065             (a = primary_rule(p))  // primary
14066             &&
14067             (_literal = _PyPegen_expect_token(p, 9))  // token='['
14068             &&
14069             (b = slices_rule(p))  // slices
14070             &&
14071             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
14072         )
14073         {
14074             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "primary '[' slices ']'"));
14075             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14076             if (_token == NULL) {
14077                 D(p->level--);
14078                 return NULL;
14079             }
14080             int _end_lineno = _token->end_lineno;
14081             UNUSED(_end_lineno); // Only used by EXTRA macro
14082             int _end_col_offset = _token->end_col_offset;
14083             UNUSED(_end_col_offset); // Only used by EXTRA macro
14084             _res = _PyAST_Subscript ( a , b , Load , EXTRA );
14085             if (_res == NULL && PyErr_Occurred()) {
14086                 p->error_indicator = 1;
14087                 D(p->level--);
14088                 return NULL;
14089             }
14090             goto done;
14091         }
14092         p->mark = _mark;
14093         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14094                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "primary '[' slices ']'"));
14095     }
14096     { // atom
14097         if (p->error_indicator) {
14098             D(p->level--);
14099             return NULL;
14100         }
14101         D(fprintf(stderr, "%*c> primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom"));
14102         expr_ty atom_var;
14103         if (
14104             (atom_var = atom_rule(p))  // atom
14105         )
14106         {
14107             D(fprintf(stderr, "%*c+ primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom"));
14108             _res = atom_var;
14109             goto done;
14110         }
14111         p->mark = _mark;
14112         D(fprintf(stderr, "%*c%s primary[%d-%d]: %s failed!\n", p->level, ' ',
14113                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom"));
14114     }
14115     _res = NULL;
14116   done:
14117     D(p->level--);
14118     return _res;
14119 }
14120 
14121 // slices: slice !',' | ','.slice+ ','?
14122 static expr_ty
slices_rule(Parser * p)14123 slices_rule(Parser *p)
14124 {
14125     D(p->level++);
14126     if (p->error_indicator) {
14127         D(p->level--);
14128         return NULL;
14129     }
14130     expr_ty _res = NULL;
14131     int _mark = p->mark;
14132     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14133         p->error_indicator = 1;
14134         D(p->level--);
14135         return NULL;
14136     }
14137     int _start_lineno = p->tokens[_mark]->lineno;
14138     UNUSED(_start_lineno); // Only used by EXTRA macro
14139     int _start_col_offset = p->tokens[_mark]->col_offset;
14140     UNUSED(_start_col_offset); // Only used by EXTRA macro
14141     { // slice !','
14142         if (p->error_indicator) {
14143             D(p->level--);
14144             return NULL;
14145         }
14146         D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice !','"));
14147         expr_ty a;
14148         if (
14149             (a = slice_rule(p))  // slice
14150             &&
14151             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
14152         )
14153         {
14154             D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice !','"));
14155             _res = a;
14156             if (_res == NULL && PyErr_Occurred()) {
14157                 p->error_indicator = 1;
14158                 D(p->level--);
14159                 return NULL;
14160             }
14161             goto done;
14162         }
14163         p->mark = _mark;
14164         D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
14165                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice !','"));
14166     }
14167     { // ','.slice+ ','?
14168         if (p->error_indicator) {
14169             D(p->level--);
14170             return NULL;
14171         }
14172         D(fprintf(stderr, "%*c> slices[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.slice+ ','?"));
14173         void *_opt_var;
14174         UNUSED(_opt_var); // Silence compiler warnings
14175         asdl_expr_seq* a;
14176         if (
14177             (a = (asdl_expr_seq*)_gather_108_rule(p))  // ','.slice+
14178             &&
14179             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
14180         )
14181         {
14182             D(fprintf(stderr, "%*c+ slices[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.slice+ ','?"));
14183             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14184             if (_token == NULL) {
14185                 D(p->level--);
14186                 return NULL;
14187             }
14188             int _end_lineno = _token->end_lineno;
14189             UNUSED(_end_lineno); // Only used by EXTRA macro
14190             int _end_col_offset = _token->end_col_offset;
14191             UNUSED(_end_col_offset); // Only used by EXTRA macro
14192             _res = _PyAST_Tuple ( a , Load , EXTRA );
14193             if (_res == NULL && PyErr_Occurred()) {
14194                 p->error_indicator = 1;
14195                 D(p->level--);
14196                 return NULL;
14197             }
14198             goto done;
14199         }
14200         p->mark = _mark;
14201         D(fprintf(stderr, "%*c%s slices[%d-%d]: %s failed!\n", p->level, ' ',
14202                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.slice+ ','?"));
14203     }
14204     _res = NULL;
14205   done:
14206     D(p->level--);
14207     return _res;
14208 }
14209 
14210 // slice: expression? ':' expression? [':' expression?] | named_expression
14211 static expr_ty
slice_rule(Parser * p)14212 slice_rule(Parser *p)
14213 {
14214     D(p->level++);
14215     if (p->error_indicator) {
14216         D(p->level--);
14217         return NULL;
14218     }
14219     expr_ty _res = NULL;
14220     int _mark = p->mark;
14221     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14222         p->error_indicator = 1;
14223         D(p->level--);
14224         return NULL;
14225     }
14226     int _start_lineno = p->tokens[_mark]->lineno;
14227     UNUSED(_start_lineno); // Only used by EXTRA macro
14228     int _start_col_offset = p->tokens[_mark]->col_offset;
14229     UNUSED(_start_col_offset); // Only used by EXTRA macro
14230     { // expression? ':' expression? [':' expression?]
14231         if (p->error_indicator) {
14232             D(p->level--);
14233             return NULL;
14234         }
14235         D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14236         Token * _literal;
14237         void *a;
14238         void *b;
14239         void *c;
14240         if (
14241             (a = expression_rule(p), !p->error_indicator)  // expression?
14242             &&
14243             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
14244             &&
14245             (b = expression_rule(p), !p->error_indicator)  // expression?
14246             &&
14247             (c = _tmp_110_rule(p), !p->error_indicator)  // [':' expression?]
14248         )
14249         {
14250             D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14251             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14252             if (_token == NULL) {
14253                 D(p->level--);
14254                 return NULL;
14255             }
14256             int _end_lineno = _token->end_lineno;
14257             UNUSED(_end_lineno); // Only used by EXTRA macro
14258             int _end_col_offset = _token->end_col_offset;
14259             UNUSED(_end_col_offset); // Only used by EXTRA macro
14260             _res = _PyAST_Slice ( a , b , c , EXTRA );
14261             if (_res == NULL && PyErr_Occurred()) {
14262                 p->error_indicator = 1;
14263                 D(p->level--);
14264                 return NULL;
14265             }
14266             goto done;
14267         }
14268         p->mark = _mark;
14269         D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14270                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression? ':' expression? [':' expression?]"));
14271     }
14272     { // named_expression
14273         if (p->error_indicator) {
14274             D(p->level--);
14275             return NULL;
14276         }
14277         D(fprintf(stderr, "%*c> slice[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
14278         expr_ty a;
14279         if (
14280             (a = named_expression_rule(p))  // named_expression
14281         )
14282         {
14283             D(fprintf(stderr, "%*c+ slice[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
14284             _res = a;
14285             if (_res == NULL && PyErr_Occurred()) {
14286                 p->error_indicator = 1;
14287                 D(p->level--);
14288                 return NULL;
14289             }
14290             goto done;
14291         }
14292         p->mark = _mark;
14293         D(fprintf(stderr, "%*c%s slice[%d-%d]: %s failed!\n", p->level, ' ',
14294                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
14295     }
14296     _res = NULL;
14297   done:
14298     D(p->level--);
14299     return _res;
14300 }
14301 
14302 // atom:
14303 //     | NAME
14304 //     | 'True'
14305 //     | 'False'
14306 //     | 'None'
14307 //     | &STRING strings
14308 //     | NUMBER
14309 //     | &'(' (tuple | group | genexp)
14310 //     | &'[' (list | listcomp)
14311 //     | &'{' (dict | set | dictcomp | setcomp)
14312 //     | '...'
14313 static expr_ty
atom_rule(Parser * p)14314 atom_rule(Parser *p)
14315 {
14316     D(p->level++);
14317     if (p->error_indicator) {
14318         D(p->level--);
14319         return NULL;
14320     }
14321     expr_ty _res = NULL;
14322     int _mark = p->mark;
14323     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14324         p->error_indicator = 1;
14325         D(p->level--);
14326         return NULL;
14327     }
14328     int _start_lineno = p->tokens[_mark]->lineno;
14329     UNUSED(_start_lineno); // Only used by EXTRA macro
14330     int _start_col_offset = p->tokens[_mark]->col_offset;
14331     UNUSED(_start_col_offset); // Only used by EXTRA macro
14332     { // NAME
14333         if (p->error_indicator) {
14334             D(p->level--);
14335             return NULL;
14336         }
14337         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
14338         expr_ty name_var;
14339         if (
14340             (name_var = _PyPegen_name_token(p))  // NAME
14341         )
14342         {
14343             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
14344             _res = name_var;
14345             goto done;
14346         }
14347         p->mark = _mark;
14348         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14349                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
14350     }
14351     { // 'True'
14352         if (p->error_indicator) {
14353             D(p->level--);
14354             return NULL;
14355         }
14356         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
14357         Token * _keyword;
14358         if (
14359             (_keyword = _PyPegen_expect_token(p, 524))  // token='True'
14360         )
14361         {
14362             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
14363             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14364             if (_token == NULL) {
14365                 D(p->level--);
14366                 return NULL;
14367             }
14368             int _end_lineno = _token->end_lineno;
14369             UNUSED(_end_lineno); // Only used by EXTRA macro
14370             int _end_col_offset = _token->end_col_offset;
14371             UNUSED(_end_col_offset); // Only used by EXTRA macro
14372             _res = _PyAST_Constant ( Py_True , NULL , EXTRA );
14373             if (_res == NULL && PyErr_Occurred()) {
14374                 p->error_indicator = 1;
14375                 D(p->level--);
14376                 return NULL;
14377             }
14378             goto done;
14379         }
14380         p->mark = _mark;
14381         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14382                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
14383     }
14384     { // 'False'
14385         if (p->error_indicator) {
14386             D(p->level--);
14387             return NULL;
14388         }
14389         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
14390         Token * _keyword;
14391         if (
14392             (_keyword = _PyPegen_expect_token(p, 525))  // token='False'
14393         )
14394         {
14395             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
14396             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14397             if (_token == NULL) {
14398                 D(p->level--);
14399                 return NULL;
14400             }
14401             int _end_lineno = _token->end_lineno;
14402             UNUSED(_end_lineno); // Only used by EXTRA macro
14403             int _end_col_offset = _token->end_col_offset;
14404             UNUSED(_end_col_offset); // Only used by EXTRA macro
14405             _res = _PyAST_Constant ( Py_False , NULL , EXTRA );
14406             if (_res == NULL && PyErr_Occurred()) {
14407                 p->error_indicator = 1;
14408                 D(p->level--);
14409                 return NULL;
14410             }
14411             goto done;
14412         }
14413         p->mark = _mark;
14414         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14415                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
14416     }
14417     { // 'None'
14418         if (p->error_indicator) {
14419             D(p->level--);
14420             return NULL;
14421         }
14422         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
14423         Token * _keyword;
14424         if (
14425             (_keyword = _PyPegen_expect_token(p, 523))  // token='None'
14426         )
14427         {
14428             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
14429             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14430             if (_token == NULL) {
14431                 D(p->level--);
14432                 return NULL;
14433             }
14434             int _end_lineno = _token->end_lineno;
14435             UNUSED(_end_lineno); // Only used by EXTRA macro
14436             int _end_col_offset = _token->end_col_offset;
14437             UNUSED(_end_col_offset); // Only used by EXTRA macro
14438             _res = _PyAST_Constant ( Py_None , NULL , EXTRA );
14439             if (_res == NULL && PyErr_Occurred()) {
14440                 p->error_indicator = 1;
14441                 D(p->level--);
14442                 return NULL;
14443             }
14444             goto done;
14445         }
14446         p->mark = _mark;
14447         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14448                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
14449     }
14450     { // &STRING strings
14451         if (p->error_indicator) {
14452             D(p->level--);
14453             return NULL;
14454         }
14455         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&STRING strings"));
14456         expr_ty strings_var;
14457         if (
14458             _PyPegen_lookahead(1, _PyPegen_string_token, p)
14459             &&
14460             (strings_var = strings_rule(p))  // strings
14461         )
14462         {
14463             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&STRING strings"));
14464             _res = strings_var;
14465             goto done;
14466         }
14467         p->mark = _mark;
14468         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14469                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&STRING strings"));
14470     }
14471     { // NUMBER
14472         if (p->error_indicator) {
14473             D(p->level--);
14474             return NULL;
14475         }
14476         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NUMBER"));
14477         expr_ty number_var;
14478         if (
14479             (number_var = _PyPegen_number_token(p))  // NUMBER
14480         )
14481         {
14482             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NUMBER"));
14483             _res = number_var;
14484             goto done;
14485         }
14486         p->mark = _mark;
14487         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14488                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NUMBER"));
14489     }
14490     { // &'(' (tuple | group | genexp)
14491         if (p->error_indicator) {
14492             D(p->level--);
14493             return NULL;
14494         }
14495         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
14496         void *_tmp_111_var;
14497         if (
14498             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 7)  // token='('
14499             &&
14500             (_tmp_111_var = _tmp_111_rule(p))  // tuple | group | genexp
14501         )
14502         {
14503             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'(' (tuple | group | genexp)"));
14504             _res = _tmp_111_var;
14505             goto done;
14506         }
14507         p->mark = _mark;
14508         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14509                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'(' (tuple | group | genexp)"));
14510     }
14511     { // &'[' (list | listcomp)
14512         if (p->error_indicator) {
14513             D(p->level--);
14514             return NULL;
14515         }
14516         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
14517         void *_tmp_112_var;
14518         if (
14519             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 9)  // token='['
14520             &&
14521             (_tmp_112_var = _tmp_112_rule(p))  // list | listcomp
14522         )
14523         {
14524             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'[' (list | listcomp)"));
14525             _res = _tmp_112_var;
14526             goto done;
14527         }
14528         p->mark = _mark;
14529         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14530                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'[' (list | listcomp)"));
14531     }
14532     { // &'{' (dict | set | dictcomp | setcomp)
14533         if (p->error_indicator) {
14534             D(p->level--);
14535             return NULL;
14536         }
14537         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
14538         void *_tmp_113_var;
14539         if (
14540             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 25)  // token='{'
14541             &&
14542             (_tmp_113_var = _tmp_113_rule(p))  // dict | set | dictcomp | setcomp
14543         )
14544         {
14545             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
14546             _res = _tmp_113_var;
14547             goto done;
14548         }
14549         p->mark = _mark;
14550         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14551                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "&'{' (dict | set | dictcomp | setcomp)"));
14552     }
14553     { // '...'
14554         if (p->error_indicator) {
14555             D(p->level--);
14556             return NULL;
14557         }
14558         D(fprintf(stderr, "%*c> atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
14559         Token * _literal;
14560         if (
14561             (_literal = _PyPegen_expect_token(p, 52))  // token='...'
14562         )
14563         {
14564             D(fprintf(stderr, "%*c+ atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
14565             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14566             if (_token == NULL) {
14567                 D(p->level--);
14568                 return NULL;
14569             }
14570             int _end_lineno = _token->end_lineno;
14571             UNUSED(_end_lineno); // Only used by EXTRA macro
14572             int _end_col_offset = _token->end_col_offset;
14573             UNUSED(_end_col_offset); // Only used by EXTRA macro
14574             _res = _PyAST_Constant ( Py_Ellipsis , NULL , EXTRA );
14575             if (_res == NULL && PyErr_Occurred()) {
14576                 p->error_indicator = 1;
14577                 D(p->level--);
14578                 return NULL;
14579             }
14580             goto done;
14581         }
14582         p->mark = _mark;
14583         D(fprintf(stderr, "%*c%s atom[%d-%d]: %s failed!\n", p->level, ' ',
14584                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
14585     }
14586     _res = NULL;
14587   done:
14588     D(p->level--);
14589     return _res;
14590 }
14591 
14592 // strings: STRING+
14593 static expr_ty
strings_rule(Parser * p)14594 strings_rule(Parser *p)
14595 {
14596     D(p->level++);
14597     if (p->error_indicator) {
14598         D(p->level--);
14599         return NULL;
14600     }
14601     expr_ty _res = NULL;
14602     if (_PyPegen_is_memoized(p, strings_type, &_res)) {
14603         D(p->level--);
14604         return _res;
14605     }
14606     int _mark = p->mark;
14607     { // STRING+
14608         if (p->error_indicator) {
14609             D(p->level--);
14610             return NULL;
14611         }
14612         D(fprintf(stderr, "%*c> strings[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING+"));
14613         asdl_seq * a;
14614         if (
14615             (a = _loop1_114_rule(p))  // STRING+
14616         )
14617         {
14618             D(fprintf(stderr, "%*c+ strings[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "STRING+"));
14619             _res = _PyPegen_concatenate_strings ( p , a );
14620             if (_res == NULL && PyErr_Occurred()) {
14621                 p->error_indicator = 1;
14622                 D(p->level--);
14623                 return NULL;
14624             }
14625             goto done;
14626         }
14627         p->mark = _mark;
14628         D(fprintf(stderr, "%*c%s strings[%d-%d]: %s failed!\n", p->level, ' ',
14629                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING+"));
14630     }
14631     _res = NULL;
14632   done:
14633     _PyPegen_insert_memo(p, _mark, strings_type, _res);
14634     D(p->level--);
14635     return _res;
14636 }
14637 
14638 // list: '[' star_named_expressions? ']'
14639 static expr_ty
list_rule(Parser * p)14640 list_rule(Parser *p)
14641 {
14642     D(p->level++);
14643     if (p->error_indicator) {
14644         D(p->level--);
14645         return NULL;
14646     }
14647     expr_ty _res = NULL;
14648     int _mark = p->mark;
14649     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14650         p->error_indicator = 1;
14651         D(p->level--);
14652         return NULL;
14653     }
14654     int _start_lineno = p->tokens[_mark]->lineno;
14655     UNUSED(_start_lineno); // Only used by EXTRA macro
14656     int _start_col_offset = p->tokens[_mark]->col_offset;
14657     UNUSED(_start_col_offset); // Only used by EXTRA macro
14658     { // '[' star_named_expressions? ']'
14659         if (p->error_indicator) {
14660             D(p->level--);
14661             return NULL;
14662         }
14663         D(fprintf(stderr, "%*c> list[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
14664         Token * _literal;
14665         Token * _literal_1;
14666         void *a;
14667         if (
14668             (_literal = _PyPegen_expect_token(p, 9))  // token='['
14669             &&
14670             (a = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
14671             &&
14672             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
14673         )
14674         {
14675             D(fprintf(stderr, "%*c+ list[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_named_expressions? ']'"));
14676             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14677             if (_token == NULL) {
14678                 D(p->level--);
14679                 return NULL;
14680             }
14681             int _end_lineno = _token->end_lineno;
14682             UNUSED(_end_lineno); // Only used by EXTRA macro
14683             int _end_col_offset = _token->end_col_offset;
14684             UNUSED(_end_col_offset); // Only used by EXTRA macro
14685             _res = _PyAST_List ( a , Load , EXTRA );
14686             if (_res == NULL && PyErr_Occurred()) {
14687                 p->error_indicator = 1;
14688                 D(p->level--);
14689                 return NULL;
14690             }
14691             goto done;
14692         }
14693         p->mark = _mark;
14694         D(fprintf(stderr, "%*c%s list[%d-%d]: %s failed!\n", p->level, ' ',
14695                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_named_expressions? ']'"));
14696     }
14697     _res = NULL;
14698   done:
14699     D(p->level--);
14700     return _res;
14701 }
14702 
14703 // listcomp: '[' named_expression for_if_clauses ']' | invalid_comprehension
14704 static expr_ty
listcomp_rule(Parser * p)14705 listcomp_rule(Parser *p)
14706 {
14707     D(p->level++);
14708     if (p->error_indicator) {
14709         D(p->level--);
14710         return NULL;
14711     }
14712     expr_ty _res = NULL;
14713     int _mark = p->mark;
14714     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14715         p->error_indicator = 1;
14716         D(p->level--);
14717         return NULL;
14718     }
14719     int _start_lineno = p->tokens[_mark]->lineno;
14720     UNUSED(_start_lineno); // Only used by EXTRA macro
14721     int _start_col_offset = p->tokens[_mark]->col_offset;
14722     UNUSED(_start_col_offset); // Only used by EXTRA macro
14723     { // '[' named_expression for_if_clauses ']'
14724         if (p->error_indicator) {
14725             D(p->level--);
14726             return NULL;
14727         }
14728         D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
14729         Token * _literal;
14730         Token * _literal_1;
14731         expr_ty a;
14732         asdl_comprehension_seq* b;
14733         if (
14734             (_literal = _PyPegen_expect_token(p, 9))  // token='['
14735             &&
14736             (a = named_expression_rule(p))  // named_expression
14737             &&
14738             (b = for_if_clauses_rule(p))  // for_if_clauses
14739             &&
14740             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
14741         )
14742         {
14743             D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
14744             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14745             if (_token == NULL) {
14746                 D(p->level--);
14747                 return NULL;
14748             }
14749             int _end_lineno = _token->end_lineno;
14750             UNUSED(_end_lineno); // Only used by EXTRA macro
14751             int _end_col_offset = _token->end_col_offset;
14752             UNUSED(_end_col_offset); // Only used by EXTRA macro
14753             _res = _PyAST_ListComp ( a , b , EXTRA );
14754             if (_res == NULL && PyErr_Occurred()) {
14755                 p->error_indicator = 1;
14756                 D(p->level--);
14757                 return NULL;
14758             }
14759             goto done;
14760         }
14761         p->mark = _mark;
14762         D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
14763                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' named_expression for_if_clauses ']'"));
14764     }
14765     if (p->call_invalid_rules) { // invalid_comprehension
14766         if (p->error_indicator) {
14767             D(p->level--);
14768             return NULL;
14769         }
14770         D(fprintf(stderr, "%*c> listcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
14771         void *invalid_comprehension_var;
14772         if (
14773             (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
14774         )
14775         {
14776             D(fprintf(stderr, "%*c+ listcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
14777             _res = invalid_comprehension_var;
14778             goto done;
14779         }
14780         p->mark = _mark;
14781         D(fprintf(stderr, "%*c%s listcomp[%d-%d]: %s failed!\n", p->level, ' ',
14782                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
14783     }
14784     _res = NULL;
14785   done:
14786     D(p->level--);
14787     return _res;
14788 }
14789 
14790 // tuple: '(' [star_named_expression ',' star_named_expressions?] ')'
14791 static expr_ty
tuple_rule(Parser * p)14792 tuple_rule(Parser *p)
14793 {
14794     D(p->level++);
14795     if (p->error_indicator) {
14796         D(p->level--);
14797         return NULL;
14798     }
14799     expr_ty _res = NULL;
14800     int _mark = p->mark;
14801     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14802         p->error_indicator = 1;
14803         D(p->level--);
14804         return NULL;
14805     }
14806     int _start_lineno = p->tokens[_mark]->lineno;
14807     UNUSED(_start_lineno); // Only used by EXTRA macro
14808     int _start_col_offset = p->tokens[_mark]->col_offset;
14809     UNUSED(_start_col_offset); // Only used by EXTRA macro
14810     { // '(' [star_named_expression ',' star_named_expressions?] ')'
14811         if (p->error_indicator) {
14812             D(p->level--);
14813             return NULL;
14814         }
14815         D(fprintf(stderr, "%*c> tuple[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
14816         Token * _literal;
14817         Token * _literal_1;
14818         void *a;
14819         if (
14820             (_literal = _PyPegen_expect_token(p, 7))  // token='('
14821             &&
14822             (a = _tmp_115_rule(p), !p->error_indicator)  // [star_named_expression ',' star_named_expressions?]
14823             &&
14824             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
14825         )
14826         {
14827             D(fprintf(stderr, "%*c+ tuple[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
14828             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14829             if (_token == NULL) {
14830                 D(p->level--);
14831                 return NULL;
14832             }
14833             int _end_lineno = _token->end_lineno;
14834             UNUSED(_end_lineno); // Only used by EXTRA macro
14835             int _end_col_offset = _token->end_col_offset;
14836             UNUSED(_end_col_offset); // Only used by EXTRA macro
14837             _res = _PyAST_Tuple ( a , Load , EXTRA );
14838             if (_res == NULL && PyErr_Occurred()) {
14839                 p->error_indicator = 1;
14840                 D(p->level--);
14841                 return NULL;
14842             }
14843             goto done;
14844         }
14845         p->mark = _mark;
14846         D(fprintf(stderr, "%*c%s tuple[%d-%d]: %s failed!\n", p->level, ' ',
14847                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' [star_named_expression ',' star_named_expressions?] ')'"));
14848     }
14849     _res = NULL;
14850   done:
14851     D(p->level--);
14852     return _res;
14853 }
14854 
14855 // group: '(' (yield_expr | named_expression) ')' | invalid_group
14856 static expr_ty
group_rule(Parser * p)14857 group_rule(Parser *p)
14858 {
14859     D(p->level++);
14860     if (p->error_indicator) {
14861         D(p->level--);
14862         return NULL;
14863     }
14864     expr_ty _res = NULL;
14865     int _mark = p->mark;
14866     { // '(' (yield_expr | named_expression) ')'
14867         if (p->error_indicator) {
14868             D(p->level--);
14869             return NULL;
14870         }
14871         D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
14872         Token * _literal;
14873         Token * _literal_1;
14874         void *a;
14875         if (
14876             (_literal = _PyPegen_expect_token(p, 7))  // token='('
14877             &&
14878             (a = _tmp_116_rule(p))  // yield_expr | named_expression
14879             &&
14880             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
14881         )
14882         {
14883             D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
14884             _res = a;
14885             if (_res == NULL && PyErr_Occurred()) {
14886                 p->error_indicator = 1;
14887                 D(p->level--);
14888                 return NULL;
14889             }
14890             goto done;
14891         }
14892         p->mark = _mark;
14893         D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
14894                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (yield_expr | named_expression) ')'"));
14895     }
14896     if (p->call_invalid_rules) { // invalid_group
14897         if (p->error_indicator) {
14898             D(p->level--);
14899             return NULL;
14900         }
14901         D(fprintf(stderr, "%*c> group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_group"));
14902         void *invalid_group_var;
14903         if (
14904             (invalid_group_var = invalid_group_rule(p))  // invalid_group
14905         )
14906         {
14907             D(fprintf(stderr, "%*c+ group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_group"));
14908             _res = invalid_group_var;
14909             goto done;
14910         }
14911         p->mark = _mark;
14912         D(fprintf(stderr, "%*c%s group[%d-%d]: %s failed!\n", p->level, ' ',
14913                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_group"));
14914     }
14915     _res = NULL;
14916   done:
14917     D(p->level--);
14918     return _res;
14919 }
14920 
14921 // genexp:
14922 //     | '(' (assignment_expression | expression !':=') for_if_clauses ')'
14923 //     | invalid_comprehension
14924 static expr_ty
genexp_rule(Parser * p)14925 genexp_rule(Parser *p)
14926 {
14927     D(p->level++);
14928     if (p->error_indicator) {
14929         D(p->level--);
14930         return NULL;
14931     }
14932     expr_ty _res = NULL;
14933     int _mark = p->mark;
14934     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
14935         p->error_indicator = 1;
14936         D(p->level--);
14937         return NULL;
14938     }
14939     int _start_lineno = p->tokens[_mark]->lineno;
14940     UNUSED(_start_lineno); // Only used by EXTRA macro
14941     int _start_col_offset = p->tokens[_mark]->col_offset;
14942     UNUSED(_start_col_offset); // Only used by EXTRA macro
14943     { // '(' (assignment_expression | expression !':=') for_if_clauses ')'
14944         if (p->error_indicator) {
14945             D(p->level--);
14946             return NULL;
14947         }
14948         D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
14949         Token * _literal;
14950         Token * _literal_1;
14951         void *a;
14952         asdl_comprehension_seq* b;
14953         if (
14954             (_literal = _PyPegen_expect_token(p, 7))  // token='('
14955             &&
14956             (a = _tmp_117_rule(p))  // assignment_expression | expression !':='
14957             &&
14958             (b = for_if_clauses_rule(p))  // for_if_clauses
14959             &&
14960             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
14961         )
14962         {
14963             D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
14964             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
14965             if (_token == NULL) {
14966                 D(p->level--);
14967                 return NULL;
14968             }
14969             int _end_lineno = _token->end_lineno;
14970             UNUSED(_end_lineno); // Only used by EXTRA macro
14971             int _end_col_offset = _token->end_col_offset;
14972             UNUSED(_end_col_offset); // Only used by EXTRA macro
14973             _res = _PyAST_GeneratorExp ( a , b , EXTRA );
14974             if (_res == NULL && PyErr_Occurred()) {
14975                 p->error_indicator = 1;
14976                 D(p->level--);
14977                 return NULL;
14978             }
14979             goto done;
14980         }
14981         p->mark = _mark;
14982         D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
14983                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' (assignment_expression | expression !':=') for_if_clauses ')'"));
14984     }
14985     if (p->call_invalid_rules) { // invalid_comprehension
14986         if (p->error_indicator) {
14987             D(p->level--);
14988             return NULL;
14989         }
14990         D(fprintf(stderr, "%*c> genexp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
14991         void *invalid_comprehension_var;
14992         if (
14993             (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
14994         )
14995         {
14996             D(fprintf(stderr, "%*c+ genexp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
14997             _res = invalid_comprehension_var;
14998             goto done;
14999         }
15000         p->mark = _mark;
15001         D(fprintf(stderr, "%*c%s genexp[%d-%d]: %s failed!\n", p->level, ' ',
15002                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
15003     }
15004     _res = NULL;
15005   done:
15006     D(p->level--);
15007     return _res;
15008 }
15009 
15010 // set: '{' star_named_expressions '}'
15011 static expr_ty
set_rule(Parser * p)15012 set_rule(Parser *p)
15013 {
15014     D(p->level++);
15015     if (p->error_indicator) {
15016         D(p->level--);
15017         return NULL;
15018     }
15019     expr_ty _res = NULL;
15020     int _mark = p->mark;
15021     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15022         p->error_indicator = 1;
15023         D(p->level--);
15024         return NULL;
15025     }
15026     int _start_lineno = p->tokens[_mark]->lineno;
15027     UNUSED(_start_lineno); // Only used by EXTRA macro
15028     int _start_col_offset = p->tokens[_mark]->col_offset;
15029     UNUSED(_start_col_offset); // Only used by EXTRA macro
15030     { // '{' star_named_expressions '}'
15031         if (p->error_indicator) {
15032             D(p->level--);
15033             return NULL;
15034         }
15035         D(fprintf(stderr, "%*c> set[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
15036         Token * _literal;
15037         Token * _literal_1;
15038         asdl_expr_seq* a;
15039         if (
15040             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
15041             &&
15042             (a = star_named_expressions_rule(p))  // star_named_expressions
15043             &&
15044             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
15045         )
15046         {
15047             D(fprintf(stderr, "%*c+ set[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' star_named_expressions '}'"));
15048             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15049             if (_token == NULL) {
15050                 D(p->level--);
15051                 return NULL;
15052             }
15053             int _end_lineno = _token->end_lineno;
15054             UNUSED(_end_lineno); // Only used by EXTRA macro
15055             int _end_col_offset = _token->end_col_offset;
15056             UNUSED(_end_col_offset); // Only used by EXTRA macro
15057             _res = _PyAST_Set ( a , EXTRA );
15058             if (_res == NULL && PyErr_Occurred()) {
15059                 p->error_indicator = 1;
15060                 D(p->level--);
15061                 return NULL;
15062             }
15063             goto done;
15064         }
15065         p->mark = _mark;
15066         D(fprintf(stderr, "%*c%s set[%d-%d]: %s failed!\n", p->level, ' ',
15067                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' star_named_expressions '}'"));
15068     }
15069     _res = NULL;
15070   done:
15071     D(p->level--);
15072     return _res;
15073 }
15074 
15075 // setcomp: '{' named_expression for_if_clauses '}' | invalid_comprehension
15076 static expr_ty
setcomp_rule(Parser * p)15077 setcomp_rule(Parser *p)
15078 {
15079     D(p->level++);
15080     if (p->error_indicator) {
15081         D(p->level--);
15082         return NULL;
15083     }
15084     expr_ty _res = NULL;
15085     int _mark = p->mark;
15086     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15087         p->error_indicator = 1;
15088         D(p->level--);
15089         return NULL;
15090     }
15091     int _start_lineno = p->tokens[_mark]->lineno;
15092     UNUSED(_start_lineno); // Only used by EXTRA macro
15093     int _start_col_offset = p->tokens[_mark]->col_offset;
15094     UNUSED(_start_col_offset); // Only used by EXTRA macro
15095     { // '{' named_expression for_if_clauses '}'
15096         if (p->error_indicator) {
15097             D(p->level--);
15098             return NULL;
15099         }
15100         D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
15101         Token * _literal;
15102         Token * _literal_1;
15103         expr_ty a;
15104         asdl_comprehension_seq* b;
15105         if (
15106             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
15107             &&
15108             (a = named_expression_rule(p))  // named_expression
15109             &&
15110             (b = for_if_clauses_rule(p))  // for_if_clauses
15111             &&
15112             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
15113         )
15114         {
15115             D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
15116             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15117             if (_token == NULL) {
15118                 D(p->level--);
15119                 return NULL;
15120             }
15121             int _end_lineno = _token->end_lineno;
15122             UNUSED(_end_lineno); // Only used by EXTRA macro
15123             int _end_col_offset = _token->end_col_offset;
15124             UNUSED(_end_col_offset); // Only used by EXTRA macro
15125             _res = _PyAST_SetComp ( a , b , EXTRA );
15126             if (_res == NULL && PyErr_Occurred()) {
15127                 p->error_indicator = 1;
15128                 D(p->level--);
15129                 return NULL;
15130             }
15131             goto done;
15132         }
15133         p->mark = _mark;
15134         D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
15135                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' named_expression for_if_clauses '}'"));
15136     }
15137     if (p->call_invalid_rules) { // invalid_comprehension
15138         if (p->error_indicator) {
15139             D(p->level--);
15140             return NULL;
15141         }
15142         D(fprintf(stderr, "%*c> setcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
15143         void *invalid_comprehension_var;
15144         if (
15145             (invalid_comprehension_var = invalid_comprehension_rule(p))  // invalid_comprehension
15146         )
15147         {
15148             D(fprintf(stderr, "%*c+ setcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_comprehension"));
15149             _res = invalid_comprehension_var;
15150             goto done;
15151         }
15152         p->mark = _mark;
15153         D(fprintf(stderr, "%*c%s setcomp[%d-%d]: %s failed!\n", p->level, ' ',
15154                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_comprehension"));
15155     }
15156     _res = NULL;
15157   done:
15158     D(p->level--);
15159     return _res;
15160 }
15161 
15162 // dict: '{' double_starred_kvpairs? '}' | '{' invalid_double_starred_kvpairs '}'
15163 static expr_ty
dict_rule(Parser * p)15164 dict_rule(Parser *p)
15165 {
15166     D(p->level++);
15167     if (p->error_indicator) {
15168         D(p->level--);
15169         return NULL;
15170     }
15171     expr_ty _res = NULL;
15172     int _mark = p->mark;
15173     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15174         p->error_indicator = 1;
15175         D(p->level--);
15176         return NULL;
15177     }
15178     int _start_lineno = p->tokens[_mark]->lineno;
15179     UNUSED(_start_lineno); // Only used by EXTRA macro
15180     int _start_col_offset = p->tokens[_mark]->col_offset;
15181     UNUSED(_start_col_offset); // Only used by EXTRA macro
15182     { // '{' double_starred_kvpairs? '}'
15183         if (p->error_indicator) {
15184             D(p->level--);
15185             return NULL;
15186         }
15187         D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
15188         Token * _literal;
15189         Token * _literal_1;
15190         void *a;
15191         if (
15192             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
15193             &&
15194             (a = double_starred_kvpairs_rule(p), !p->error_indicator)  // double_starred_kvpairs?
15195             &&
15196             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
15197         )
15198         {
15199             D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
15200             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15201             if (_token == NULL) {
15202                 D(p->level--);
15203                 return NULL;
15204             }
15205             int _end_lineno = _token->end_lineno;
15206             UNUSED(_end_lineno); // Only used by EXTRA macro
15207             int _end_col_offset = _token->end_col_offset;
15208             UNUSED(_end_col_offset); // Only used by EXTRA macro
15209             _res = _PyAST_Dict ( CHECK ( asdl_expr_seq * , _PyPegen_get_keys ( p , a ) ) , CHECK ( asdl_expr_seq * , _PyPegen_get_values ( p , a ) ) , EXTRA );
15210             if (_res == NULL && PyErr_Occurred()) {
15211                 p->error_indicator = 1;
15212                 D(p->level--);
15213                 return NULL;
15214             }
15215             goto done;
15216         }
15217         p->mark = _mark;
15218         D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
15219                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' double_starred_kvpairs? '}'"));
15220     }
15221     { // '{' invalid_double_starred_kvpairs '}'
15222         if (p->error_indicator) {
15223             D(p->level--);
15224             return NULL;
15225         }
15226         D(fprintf(stderr, "%*c> dict[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
15227         Token * _literal;
15228         Token * _literal_1;
15229         void *invalid_double_starred_kvpairs_var;
15230         if (
15231             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
15232             &&
15233             (invalid_double_starred_kvpairs_var = invalid_double_starred_kvpairs_rule(p))  // invalid_double_starred_kvpairs
15234             &&
15235             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
15236         )
15237         {
15238             D(fprintf(stderr, "%*c+ dict[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
15239             _res = _PyPegen_dummy_name(p, _literal, invalid_double_starred_kvpairs_var, _literal_1);
15240             goto done;
15241         }
15242         p->mark = _mark;
15243         D(fprintf(stderr, "%*c%s dict[%d-%d]: %s failed!\n", p->level, ' ',
15244                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' invalid_double_starred_kvpairs '}'"));
15245     }
15246     _res = NULL;
15247   done:
15248     D(p->level--);
15249     return _res;
15250 }
15251 
15252 // dictcomp: '{' kvpair for_if_clauses '}' | invalid_dict_comprehension
15253 static expr_ty
dictcomp_rule(Parser * p)15254 dictcomp_rule(Parser *p)
15255 {
15256     D(p->level++);
15257     if (p->error_indicator) {
15258         D(p->level--);
15259         return NULL;
15260     }
15261     expr_ty _res = NULL;
15262     int _mark = p->mark;
15263     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15264         p->error_indicator = 1;
15265         D(p->level--);
15266         return NULL;
15267     }
15268     int _start_lineno = p->tokens[_mark]->lineno;
15269     UNUSED(_start_lineno); // Only used by EXTRA macro
15270     int _start_col_offset = p->tokens[_mark]->col_offset;
15271     UNUSED(_start_col_offset); // Only used by EXTRA macro
15272     { // '{' kvpair for_if_clauses '}'
15273         if (p->error_indicator) {
15274             D(p->level--);
15275             return NULL;
15276         }
15277         D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
15278         Token * _literal;
15279         Token * _literal_1;
15280         KeyValuePair* a;
15281         asdl_comprehension_seq* b;
15282         if (
15283             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
15284             &&
15285             (a = kvpair_rule(p))  // kvpair
15286             &&
15287             (b = for_if_clauses_rule(p))  // for_if_clauses
15288             &&
15289             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
15290         )
15291         {
15292             D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
15293             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15294             if (_token == NULL) {
15295                 D(p->level--);
15296                 return NULL;
15297             }
15298             int _end_lineno = _token->end_lineno;
15299             UNUSED(_end_lineno); // Only used by EXTRA macro
15300             int _end_col_offset = _token->end_col_offset;
15301             UNUSED(_end_col_offset); // Only used by EXTRA macro
15302             _res = _PyAST_DictComp ( a -> key , a -> value , b , EXTRA );
15303             if (_res == NULL && PyErr_Occurred()) {
15304                 p->error_indicator = 1;
15305                 D(p->level--);
15306                 return NULL;
15307             }
15308             goto done;
15309         }
15310         p->mark = _mark;
15311         D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
15312                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' kvpair for_if_clauses '}'"));
15313     }
15314     if (p->call_invalid_rules) { // invalid_dict_comprehension
15315         if (p->error_indicator) {
15316             D(p->level--);
15317             return NULL;
15318         }
15319         D(fprintf(stderr, "%*c> dictcomp[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
15320         void *invalid_dict_comprehension_var;
15321         if (
15322             (invalid_dict_comprehension_var = invalid_dict_comprehension_rule(p))  // invalid_dict_comprehension
15323         )
15324         {
15325             D(fprintf(stderr, "%*c+ dictcomp[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_dict_comprehension"));
15326             _res = invalid_dict_comprehension_var;
15327             goto done;
15328         }
15329         p->mark = _mark;
15330         D(fprintf(stderr, "%*c%s dictcomp[%d-%d]: %s failed!\n", p->level, ' ',
15331                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_dict_comprehension"));
15332     }
15333     _res = NULL;
15334   done:
15335     D(p->level--);
15336     return _res;
15337 }
15338 
15339 // double_starred_kvpairs: ','.double_starred_kvpair+ ','?
15340 static asdl_seq*
double_starred_kvpairs_rule(Parser * p)15341 double_starred_kvpairs_rule(Parser *p)
15342 {
15343     D(p->level++);
15344     if (p->error_indicator) {
15345         D(p->level--);
15346         return NULL;
15347     }
15348     asdl_seq* _res = NULL;
15349     int _mark = p->mark;
15350     { // ','.double_starred_kvpair+ ','?
15351         if (p->error_indicator) {
15352             D(p->level--);
15353             return NULL;
15354         }
15355         D(fprintf(stderr, "%*c> double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
15356         void *_opt_var;
15357         UNUSED(_opt_var); // Silence compiler warnings
15358         asdl_seq * a;
15359         if (
15360             (a = _gather_118_rule(p))  // ','.double_starred_kvpair+
15361             &&
15362             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
15363         )
15364         {
15365             D(fprintf(stderr, "%*c+ double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ','?"));
15366             _res = a;
15367             if (_res == NULL && PyErr_Occurred()) {
15368                 p->error_indicator = 1;
15369                 D(p->level--);
15370                 return NULL;
15371             }
15372             goto done;
15373         }
15374         p->mark = _mark;
15375         D(fprintf(stderr, "%*c%s double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
15376                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ','?"));
15377     }
15378     _res = NULL;
15379   done:
15380     D(p->level--);
15381     return _res;
15382 }
15383 
15384 // double_starred_kvpair: '**' bitwise_or | kvpair
15385 static KeyValuePair*
double_starred_kvpair_rule(Parser * p)15386 double_starred_kvpair_rule(Parser *p)
15387 {
15388     D(p->level++);
15389     if (p->error_indicator) {
15390         D(p->level--);
15391         return NULL;
15392     }
15393     KeyValuePair* _res = NULL;
15394     int _mark = p->mark;
15395     { // '**' bitwise_or
15396         if (p->error_indicator) {
15397             D(p->level--);
15398             return NULL;
15399         }
15400         D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
15401         Token * _literal;
15402         expr_ty a;
15403         if (
15404             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
15405             &&
15406             (a = bitwise_or_rule(p))  // bitwise_or
15407         )
15408         {
15409             D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' bitwise_or"));
15410             _res = _PyPegen_key_value_pair ( p , NULL , a );
15411             if (_res == NULL && PyErr_Occurred()) {
15412                 p->error_indicator = 1;
15413                 D(p->level--);
15414                 return NULL;
15415             }
15416             goto done;
15417         }
15418         p->mark = _mark;
15419         D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
15420                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' bitwise_or"));
15421     }
15422     { // kvpair
15423         if (p->error_indicator) {
15424             D(p->level--);
15425             return NULL;
15426         }
15427         D(fprintf(stderr, "%*c> double_starred_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kvpair"));
15428         KeyValuePair* kvpair_var;
15429         if (
15430             (kvpair_var = kvpair_rule(p))  // kvpair
15431         )
15432         {
15433             D(fprintf(stderr, "%*c+ double_starred_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kvpair"));
15434             _res = kvpair_var;
15435             goto done;
15436         }
15437         p->mark = _mark;
15438         D(fprintf(stderr, "%*c%s double_starred_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
15439                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kvpair"));
15440     }
15441     _res = NULL;
15442   done:
15443     D(p->level--);
15444     return _res;
15445 }
15446 
15447 // kvpair: expression ':' expression
15448 static KeyValuePair*
kvpair_rule(Parser * p)15449 kvpair_rule(Parser *p)
15450 {
15451     D(p->level++);
15452     if (p->error_indicator) {
15453         D(p->level--);
15454         return NULL;
15455     }
15456     KeyValuePair* _res = NULL;
15457     int _mark = p->mark;
15458     { // expression ':' expression
15459         if (p->error_indicator) {
15460             D(p->level--);
15461             return NULL;
15462         }
15463         D(fprintf(stderr, "%*c> kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
15464         Token * _literal;
15465         expr_ty a;
15466         expr_ty b;
15467         if (
15468             (a = expression_rule(p))  // expression
15469             &&
15470             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
15471             &&
15472             (b = expression_rule(p))  // expression
15473         )
15474         {
15475             D(fprintf(stderr, "%*c+ kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
15476             _res = _PyPegen_key_value_pair ( p , a , b );
15477             if (_res == NULL && PyErr_Occurred()) {
15478                 p->error_indicator = 1;
15479                 D(p->level--);
15480                 return NULL;
15481             }
15482             goto done;
15483         }
15484         p->mark = _mark;
15485         D(fprintf(stderr, "%*c%s kvpair[%d-%d]: %s failed!\n", p->level, ' ',
15486                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
15487     }
15488     _res = NULL;
15489   done:
15490     D(p->level--);
15491     return _res;
15492 }
15493 
15494 // for_if_clauses: for_if_clause+
15495 static asdl_comprehension_seq*
for_if_clauses_rule(Parser * p)15496 for_if_clauses_rule(Parser *p)
15497 {
15498     D(p->level++);
15499     if (p->error_indicator) {
15500         D(p->level--);
15501         return NULL;
15502     }
15503     asdl_comprehension_seq* _res = NULL;
15504     int _mark = p->mark;
15505     { // for_if_clause+
15506         if (p->error_indicator) {
15507             D(p->level--);
15508             return NULL;
15509         }
15510         D(fprintf(stderr, "%*c> for_if_clauses[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
15511         asdl_comprehension_seq* a;
15512         if (
15513             (a = (asdl_comprehension_seq*)_loop1_120_rule(p))  // for_if_clause+
15514         )
15515         {
15516             D(fprintf(stderr, "%*c+ for_if_clauses[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "for_if_clause+"));
15517             _res = a;
15518             if (_res == NULL && PyErr_Occurred()) {
15519                 p->error_indicator = 1;
15520                 D(p->level--);
15521                 return NULL;
15522             }
15523             goto done;
15524         }
15525         p->mark = _mark;
15526         D(fprintf(stderr, "%*c%s for_if_clauses[%d-%d]: %s failed!\n", p->level, ' ',
15527                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause+"));
15528     }
15529     _res = NULL;
15530   done:
15531     D(p->level--);
15532     return _res;
15533 }
15534 
15535 // for_if_clause:
15536 //     | ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
15537 //     | 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
15538 //     | invalid_for_target
15539 static comprehension_ty
for_if_clause_rule(Parser * p)15540 for_if_clause_rule(Parser *p)
15541 {
15542     D(p->level++);
15543     if (p->error_indicator) {
15544         D(p->level--);
15545         return NULL;
15546     }
15547     comprehension_ty _res = NULL;
15548     int _mark = p->mark;
15549     { // ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
15550         if (p->error_indicator) {
15551             D(p->level--);
15552             return NULL;
15553         }
15554         D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
15555         int _cut_var = 0;
15556         Token * _keyword;
15557         Token * _keyword_1;
15558         expr_ty a;
15559         Token * async_var;
15560         expr_ty b;
15561         asdl_expr_seq* c;
15562         if (
15563             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
15564             &&
15565             (_keyword = _PyPegen_expect_token(p, 517))  // token='for'
15566             &&
15567             (a = star_targets_rule(p))  // star_targets
15568             &&
15569             (_keyword_1 = _PyPegen_expect_token(p, 518))  // token='in'
15570             &&
15571             (_cut_var = 1)
15572             &&
15573             (b = disjunction_rule(p))  // disjunction
15574             &&
15575             (c = (asdl_expr_seq*)_loop0_121_rule(p))  // (('if' disjunction))*
15576         )
15577         {
15578             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))*"));
15579             _res = CHECK_VERSION ( comprehension_ty , 6 , "Async comprehensions are" , _PyAST_comprehension ( a , b , c , 1 , p -> arena ) );
15580             if (_res == NULL && PyErr_Occurred()) {
15581                 p->error_indicator = 1;
15582                 D(p->level--);
15583                 return NULL;
15584             }
15585             goto done;
15586         }
15587         p->mark = _mark;
15588         D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
15589                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC 'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
15590         if (_cut_var) {
15591             D(p->level--);
15592             return NULL;
15593         }
15594     }
15595     { // 'for' star_targets 'in' ~ disjunction (('if' disjunction))*
15596         if (p->error_indicator) {
15597             D(p->level--);
15598             return NULL;
15599         }
15600         D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
15601         int _cut_var = 0;
15602         Token * _keyword;
15603         Token * _keyword_1;
15604         expr_ty a;
15605         expr_ty b;
15606         asdl_expr_seq* c;
15607         if (
15608             (_keyword = _PyPegen_expect_token(p, 517))  // token='for'
15609             &&
15610             (a = star_targets_rule(p))  // star_targets
15611             &&
15612             (_keyword_1 = _PyPegen_expect_token(p, 518))  // token='in'
15613             &&
15614             (_cut_var = 1)
15615             &&
15616             (b = disjunction_rule(p))  // disjunction
15617             &&
15618             (c = (asdl_expr_seq*)_loop0_122_rule(p))  // (('if' disjunction))*
15619         )
15620         {
15621             D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
15622             _res = _PyAST_comprehension ( a , b , c , 0 , p -> arena );
15623             if (_res == NULL && PyErr_Occurred()) {
15624                 p->error_indicator = 1;
15625                 D(p->level--);
15626                 return NULL;
15627             }
15628             goto done;
15629         }
15630         p->mark = _mark;
15631         D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
15632                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for' star_targets 'in' ~ disjunction (('if' disjunction))*"));
15633         if (_cut_var) {
15634             D(p->level--);
15635             return NULL;
15636         }
15637     }
15638     if (p->call_invalid_rules) { // invalid_for_target
15639         if (p->error_indicator) {
15640             D(p->level--);
15641             return NULL;
15642         }
15643         D(fprintf(stderr, "%*c> for_if_clause[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
15644         void *invalid_for_target_var;
15645         if (
15646             (invalid_for_target_var = invalid_for_target_rule(p))  // invalid_for_target
15647         )
15648         {
15649             D(fprintf(stderr, "%*c+ for_if_clause[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_for_target"));
15650             _res = invalid_for_target_var;
15651             goto done;
15652         }
15653         p->mark = _mark;
15654         D(fprintf(stderr, "%*c%s for_if_clause[%d-%d]: %s failed!\n", p->level, ' ',
15655                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_for_target"));
15656     }
15657     _res = NULL;
15658   done:
15659     D(p->level--);
15660     return _res;
15661 }
15662 
15663 // yield_expr: 'yield' 'from' expression | 'yield' star_expressions?
15664 static expr_ty
yield_expr_rule(Parser * p)15665 yield_expr_rule(Parser *p)
15666 {
15667     D(p->level++);
15668     if (p->error_indicator) {
15669         D(p->level--);
15670         return NULL;
15671     }
15672     expr_ty _res = NULL;
15673     int _mark = p->mark;
15674     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15675         p->error_indicator = 1;
15676         D(p->level--);
15677         return NULL;
15678     }
15679     int _start_lineno = p->tokens[_mark]->lineno;
15680     UNUSED(_start_lineno); // Only used by EXTRA macro
15681     int _start_col_offset = p->tokens[_mark]->col_offset;
15682     UNUSED(_start_col_offset); // Only used by EXTRA macro
15683     { // 'yield' 'from' expression
15684         if (p->error_indicator) {
15685             D(p->level--);
15686             return NULL;
15687         }
15688         D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
15689         Token * _keyword;
15690         Token * _keyword_1;
15691         expr_ty a;
15692         if (
15693             (_keyword = _PyPegen_expect_token(p, 504))  // token='yield'
15694             &&
15695             (_keyword_1 = _PyPegen_expect_token(p, 514))  // token='from'
15696             &&
15697             (a = expression_rule(p))  // expression
15698         )
15699         {
15700             D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' 'from' expression"));
15701             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15702             if (_token == NULL) {
15703                 D(p->level--);
15704                 return NULL;
15705             }
15706             int _end_lineno = _token->end_lineno;
15707             UNUSED(_end_lineno); // Only used by EXTRA macro
15708             int _end_col_offset = _token->end_col_offset;
15709             UNUSED(_end_col_offset); // Only used by EXTRA macro
15710             _res = _PyAST_YieldFrom ( a , EXTRA );
15711             if (_res == NULL && PyErr_Occurred()) {
15712                 p->error_indicator = 1;
15713                 D(p->level--);
15714                 return NULL;
15715             }
15716             goto done;
15717         }
15718         p->mark = _mark;
15719         D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
15720                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' 'from' expression"));
15721     }
15722     { // 'yield' star_expressions?
15723         if (p->error_indicator) {
15724             D(p->level--);
15725             return NULL;
15726         }
15727         D(fprintf(stderr, "%*c> yield_expr[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
15728         Token * _keyword;
15729         void *a;
15730         if (
15731             (_keyword = _PyPegen_expect_token(p, 504))  // token='yield'
15732             &&
15733             (a = star_expressions_rule(p), !p->error_indicator)  // star_expressions?
15734         )
15735         {
15736             D(fprintf(stderr, "%*c+ yield_expr[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'yield' star_expressions?"));
15737             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15738             if (_token == NULL) {
15739                 D(p->level--);
15740                 return NULL;
15741             }
15742             int _end_lineno = _token->end_lineno;
15743             UNUSED(_end_lineno); // Only used by EXTRA macro
15744             int _end_col_offset = _token->end_col_offset;
15745             UNUSED(_end_col_offset); // Only used by EXTRA macro
15746             _res = _PyAST_Yield ( a , EXTRA );
15747             if (_res == NULL && PyErr_Occurred()) {
15748                 p->error_indicator = 1;
15749                 D(p->level--);
15750                 return NULL;
15751             }
15752             goto done;
15753         }
15754         p->mark = _mark;
15755         D(fprintf(stderr, "%*c%s yield_expr[%d-%d]: %s failed!\n", p->level, ' ',
15756                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'yield' star_expressions?"));
15757     }
15758     _res = NULL;
15759   done:
15760     D(p->level--);
15761     return _res;
15762 }
15763 
15764 // arguments: args ','? &')' | invalid_arguments
15765 static expr_ty
arguments_rule(Parser * p)15766 arguments_rule(Parser *p)
15767 {
15768     D(p->level++);
15769     if (p->error_indicator) {
15770         D(p->level--);
15771         return NULL;
15772     }
15773     expr_ty _res = NULL;
15774     if (_PyPegen_is_memoized(p, arguments_type, &_res)) {
15775         D(p->level--);
15776         return _res;
15777     }
15778     int _mark = p->mark;
15779     { // args ','? &')'
15780         if (p->error_indicator) {
15781             D(p->level--);
15782             return NULL;
15783         }
15784         D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
15785         void *_opt_var;
15786         UNUSED(_opt_var); // Silence compiler warnings
15787         expr_ty a;
15788         if (
15789             (a = args_rule(p))  // args
15790             &&
15791             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
15792             &&
15793             _PyPegen_lookahead_with_int(1, _PyPegen_expect_token, p, 8)  // token=')'
15794         )
15795         {
15796             D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ','? &')'"));
15797             _res = a;
15798             if (_res == NULL && PyErr_Occurred()) {
15799                 p->error_indicator = 1;
15800                 D(p->level--);
15801                 return NULL;
15802             }
15803             goto done;
15804         }
15805         p->mark = _mark;
15806         D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
15807                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ','? &')'"));
15808     }
15809     if (p->call_invalid_rules) { // invalid_arguments
15810         if (p->error_indicator) {
15811             D(p->level--);
15812             return NULL;
15813         }
15814         D(fprintf(stderr, "%*c> arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
15815         void *invalid_arguments_var;
15816         if (
15817             (invalid_arguments_var = invalid_arguments_rule(p))  // invalid_arguments
15818         )
15819         {
15820             D(fprintf(stderr, "%*c+ arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_arguments"));
15821             _res = invalid_arguments_var;
15822             goto done;
15823         }
15824         p->mark = _mark;
15825         D(fprintf(stderr, "%*c%s arguments[%d-%d]: %s failed!\n", p->level, ' ',
15826                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_arguments"));
15827     }
15828     _res = NULL;
15829   done:
15830     _PyPegen_insert_memo(p, _mark, arguments_type, _res);
15831     D(p->level--);
15832     return _res;
15833 }
15834 
15835 // args:
15836 //     | ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
15837 //     | kwargs
15838 static expr_ty
args_rule(Parser * p)15839 args_rule(Parser *p)
15840 {
15841     D(p->level++);
15842     if (p->error_indicator) {
15843         D(p->level--);
15844         return NULL;
15845     }
15846     expr_ty _res = NULL;
15847     int _mark = p->mark;
15848     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
15849         p->error_indicator = 1;
15850         D(p->level--);
15851         return NULL;
15852     }
15853     int _start_lineno = p->tokens[_mark]->lineno;
15854     UNUSED(_start_lineno); // Only used by EXTRA macro
15855     int _start_col_offset = p->tokens[_mark]->col_offset;
15856     UNUSED(_start_col_offset); // Only used by EXTRA macro
15857     { // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]
15858         if (p->error_indicator) {
15859             D(p->level--);
15860             return NULL;
15861         }
15862         D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
15863         asdl_expr_seq* a;
15864         void *b;
15865         if (
15866             (a = (asdl_expr_seq*)_gather_123_rule(p))  // ','.(starred_expression | (assignment_expression | expression !':=') !'=')+
15867             &&
15868             (b = _tmp_125_rule(p), !p->error_indicator)  // [',' kwargs]
15869         )
15870         {
15871             D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
15872             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15873             if (_token == NULL) {
15874                 D(p->level--);
15875                 return NULL;
15876             }
15877             int _end_lineno = _token->end_lineno;
15878             UNUSED(_end_lineno); // Only used by EXTRA macro
15879             int _end_col_offset = _token->end_col_offset;
15880             UNUSED(_end_col_offset); // Only used by EXTRA macro
15881             _res = _PyPegen_collect_call_seqs ( p , a , b , EXTRA );
15882             if (_res == NULL && PyErr_Occurred()) {
15883                 p->error_indicator = 1;
15884                 D(p->level--);
15885                 return NULL;
15886             }
15887             goto done;
15888         }
15889         p->mark = _mark;
15890         D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
15891                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.(starred_expression | (assignment_expression | expression !':=') !'=')+ [',' kwargs]"));
15892     }
15893     { // kwargs
15894         if (p->error_indicator) {
15895             D(p->level--);
15896             return NULL;
15897         }
15898         D(fprintf(stderr, "%*c> args[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwargs"));
15899         asdl_seq* a;
15900         if (
15901             (a = kwargs_rule(p))  // kwargs
15902         )
15903         {
15904             D(fprintf(stderr, "%*c+ args[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwargs"));
15905             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
15906             if (_token == NULL) {
15907                 D(p->level--);
15908                 return NULL;
15909             }
15910             int _end_lineno = _token->end_lineno;
15911             UNUSED(_end_lineno); // Only used by EXTRA macro
15912             int _end_col_offset = _token->end_col_offset;
15913             UNUSED(_end_col_offset); // Only used by EXTRA macro
15914             _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 );
15915             if (_res == NULL && PyErr_Occurred()) {
15916                 p->error_indicator = 1;
15917                 D(p->level--);
15918                 return NULL;
15919             }
15920             goto done;
15921         }
15922         p->mark = _mark;
15923         D(fprintf(stderr, "%*c%s args[%d-%d]: %s failed!\n", p->level, ' ',
15924                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwargs"));
15925     }
15926     _res = NULL;
15927   done:
15928     D(p->level--);
15929     return _res;
15930 }
15931 
15932 // kwargs:
15933 //     | ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
15934 //     | ','.kwarg_or_starred+
15935 //     | ','.kwarg_or_double_starred+
15936 static asdl_seq*
kwargs_rule(Parser * p)15937 kwargs_rule(Parser *p)
15938 {
15939     D(p->level++);
15940     if (p->error_indicator) {
15941         D(p->level--);
15942         return NULL;
15943     }
15944     asdl_seq* _res = NULL;
15945     int _mark = p->mark;
15946     { // ','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+
15947         if (p->error_indicator) {
15948             D(p->level--);
15949             return NULL;
15950         }
15951         D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
15952         Token * _literal;
15953         asdl_seq * a;
15954         asdl_seq * b;
15955         if (
15956             (a = _gather_126_rule(p))  // ','.kwarg_or_starred+
15957             &&
15958             (_literal = _PyPegen_expect_token(p, 12))  // token=','
15959             &&
15960             (b = _gather_128_rule(p))  // ','.kwarg_or_double_starred+
15961         )
15962         {
15963             D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
15964             _res = _PyPegen_join_sequences ( p , a , b );
15965             if (_res == NULL && PyErr_Occurred()) {
15966                 p->error_indicator = 1;
15967                 D(p->level--);
15968                 return NULL;
15969             }
15970             goto done;
15971         }
15972         p->mark = _mark;
15973         D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
15974                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+ ',' ','.kwarg_or_double_starred+"));
15975     }
15976     { // ','.kwarg_or_starred+
15977         if (p->error_indicator) {
15978             D(p->level--);
15979             return NULL;
15980         }
15981         D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
15982         asdl_seq * _gather_130_var;
15983         if (
15984             (_gather_130_var = _gather_130_rule(p))  // ','.kwarg_or_starred+
15985         )
15986         {
15987             D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_starred+"));
15988             _res = _gather_130_var;
15989             goto done;
15990         }
15991         p->mark = _mark;
15992         D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
15993                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_starred+"));
15994     }
15995     { // ','.kwarg_or_double_starred+
15996         if (p->error_indicator) {
15997             D(p->level--);
15998             return NULL;
15999         }
16000         D(fprintf(stderr, "%*c> kwargs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
16001         asdl_seq * _gather_132_var;
16002         if (
16003             (_gather_132_var = _gather_132_rule(p))  // ','.kwarg_or_double_starred+
16004         )
16005         {
16006             D(fprintf(stderr, "%*c+ kwargs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.kwarg_or_double_starred+"));
16007             _res = _gather_132_var;
16008             goto done;
16009         }
16010         p->mark = _mark;
16011         D(fprintf(stderr, "%*c%s kwargs[%d-%d]: %s failed!\n", p->level, ' ',
16012                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.kwarg_or_double_starred+"));
16013     }
16014     _res = NULL;
16015   done:
16016     D(p->level--);
16017     return _res;
16018 }
16019 
16020 // starred_expression: '*' expression
16021 static expr_ty
starred_expression_rule(Parser * p)16022 starred_expression_rule(Parser *p)
16023 {
16024     D(p->level++);
16025     if (p->error_indicator) {
16026         D(p->level--);
16027         return NULL;
16028     }
16029     expr_ty _res = NULL;
16030     int _mark = p->mark;
16031     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16032         p->error_indicator = 1;
16033         D(p->level--);
16034         return NULL;
16035     }
16036     int _start_lineno = p->tokens[_mark]->lineno;
16037     UNUSED(_start_lineno); // Only used by EXTRA macro
16038     int _start_col_offset = p->tokens[_mark]->col_offset;
16039     UNUSED(_start_col_offset); // Only used by EXTRA macro
16040     { // '*' expression
16041         if (p->error_indicator) {
16042             D(p->level--);
16043             return NULL;
16044         }
16045         D(fprintf(stderr, "%*c> starred_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' expression"));
16046         Token * _literal;
16047         expr_ty a;
16048         if (
16049             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
16050             &&
16051             (a = expression_rule(p))  // expression
16052         )
16053         {
16054             D(fprintf(stderr, "%*c+ starred_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' expression"));
16055             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16056             if (_token == NULL) {
16057                 D(p->level--);
16058                 return NULL;
16059             }
16060             int _end_lineno = _token->end_lineno;
16061             UNUSED(_end_lineno); // Only used by EXTRA macro
16062             int _end_col_offset = _token->end_col_offset;
16063             UNUSED(_end_col_offset); // Only used by EXTRA macro
16064             _res = _PyAST_Starred ( a , Load , EXTRA );
16065             if (_res == NULL && PyErr_Occurred()) {
16066                 p->error_indicator = 1;
16067                 D(p->level--);
16068                 return NULL;
16069             }
16070             goto done;
16071         }
16072         p->mark = _mark;
16073         D(fprintf(stderr, "%*c%s starred_expression[%d-%d]: %s failed!\n", p->level, ' ',
16074                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' expression"));
16075     }
16076     _res = NULL;
16077   done:
16078     D(p->level--);
16079     return _res;
16080 }
16081 
16082 // kwarg_or_starred: invalid_kwarg | NAME '=' expression | starred_expression
16083 static KeywordOrStarred*
kwarg_or_starred_rule(Parser * p)16084 kwarg_or_starred_rule(Parser *p)
16085 {
16086     D(p->level++);
16087     if (p->error_indicator) {
16088         D(p->level--);
16089         return NULL;
16090     }
16091     KeywordOrStarred* _res = NULL;
16092     int _mark = p->mark;
16093     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16094         p->error_indicator = 1;
16095         D(p->level--);
16096         return NULL;
16097     }
16098     int _start_lineno = p->tokens[_mark]->lineno;
16099     UNUSED(_start_lineno); // Only used by EXTRA macro
16100     int _start_col_offset = p->tokens[_mark]->col_offset;
16101     UNUSED(_start_col_offset); // Only used by EXTRA macro
16102     if (p->call_invalid_rules) { // invalid_kwarg
16103         if (p->error_indicator) {
16104             D(p->level--);
16105             return NULL;
16106         }
16107         D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
16108         void *invalid_kwarg_var;
16109         if (
16110             (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
16111         )
16112         {
16113             D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
16114             _res = invalid_kwarg_var;
16115             goto done;
16116         }
16117         p->mark = _mark;
16118         D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
16119                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
16120     }
16121     { // NAME '=' expression
16122         if (p->error_indicator) {
16123             D(p->level--);
16124             return NULL;
16125         }
16126         D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
16127         Token * _literal;
16128         expr_ty a;
16129         expr_ty b;
16130         if (
16131             (a = _PyPegen_name_token(p))  // NAME
16132             &&
16133             (_literal = _PyPegen_expect_token(p, 22))  // token='='
16134             &&
16135             (b = expression_rule(p))  // expression
16136         )
16137         {
16138             D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
16139             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16140             if (_token == NULL) {
16141                 D(p->level--);
16142                 return NULL;
16143             }
16144             int _end_lineno = _token->end_lineno;
16145             UNUSED(_end_lineno); // Only used by EXTRA macro
16146             int _end_col_offset = _token->end_col_offset;
16147             UNUSED(_end_col_offset); // Only used by EXTRA macro
16148             _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
16149             if (_res == NULL && PyErr_Occurred()) {
16150                 p->error_indicator = 1;
16151                 D(p->level--);
16152                 return NULL;
16153             }
16154             goto done;
16155         }
16156         p->mark = _mark;
16157         D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
16158                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
16159     }
16160     { // starred_expression
16161         if (p->error_indicator) {
16162             D(p->level--);
16163             return NULL;
16164         }
16165         D(fprintf(stderr, "%*c> kwarg_or_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
16166         expr_ty a;
16167         if (
16168             (a = starred_expression_rule(p))  // starred_expression
16169         )
16170         {
16171             D(fprintf(stderr, "%*c+ kwarg_or_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
16172             _res = _PyPegen_keyword_or_starred ( p , a , 0 );
16173             if (_res == NULL && PyErr_Occurred()) {
16174                 p->error_indicator = 1;
16175                 D(p->level--);
16176                 return NULL;
16177             }
16178             goto done;
16179         }
16180         p->mark = _mark;
16181         D(fprintf(stderr, "%*c%s kwarg_or_starred[%d-%d]: %s failed!\n", p->level, ' ',
16182                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
16183     }
16184     _res = NULL;
16185   done:
16186     D(p->level--);
16187     return _res;
16188 }
16189 
16190 // kwarg_or_double_starred: invalid_kwarg | NAME '=' expression | '**' expression
16191 static KeywordOrStarred*
kwarg_or_double_starred_rule(Parser * p)16192 kwarg_or_double_starred_rule(Parser *p)
16193 {
16194     D(p->level++);
16195     if (p->error_indicator) {
16196         D(p->level--);
16197         return NULL;
16198     }
16199     KeywordOrStarred* _res = NULL;
16200     int _mark = p->mark;
16201     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16202         p->error_indicator = 1;
16203         D(p->level--);
16204         return NULL;
16205     }
16206     int _start_lineno = p->tokens[_mark]->lineno;
16207     UNUSED(_start_lineno); // Only used by EXTRA macro
16208     int _start_col_offset = p->tokens[_mark]->col_offset;
16209     UNUSED(_start_col_offset); // Only used by EXTRA macro
16210     if (p->call_invalid_rules) { // invalid_kwarg
16211         if (p->error_indicator) {
16212             D(p->level--);
16213             return NULL;
16214         }
16215         D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
16216         void *invalid_kwarg_var;
16217         if (
16218             (invalid_kwarg_var = invalid_kwarg_rule(p))  // invalid_kwarg
16219         )
16220         {
16221             D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_kwarg"));
16222             _res = invalid_kwarg_var;
16223             goto done;
16224         }
16225         p->mark = _mark;
16226         D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
16227                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_kwarg"));
16228     }
16229     { // NAME '=' expression
16230         if (p->error_indicator) {
16231             D(p->level--);
16232             return NULL;
16233         }
16234         D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
16235         Token * _literal;
16236         expr_ty a;
16237         expr_ty b;
16238         if (
16239             (a = _PyPegen_name_token(p))  // NAME
16240             &&
16241             (_literal = _PyPegen_expect_token(p, 22))  // token='='
16242             &&
16243             (b = expression_rule(p))  // expression
16244         )
16245         {
16246             D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression"));
16247             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16248             if (_token == NULL) {
16249                 D(p->level--);
16250                 return NULL;
16251             }
16252             int _end_lineno = _token->end_lineno;
16253             UNUSED(_end_lineno); // Only used by EXTRA macro
16254             int _end_col_offset = _token->end_col_offset;
16255             UNUSED(_end_col_offset); // Only used by EXTRA macro
16256             _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( a -> v . Name . id , b , EXTRA ) ) , 1 );
16257             if (_res == NULL && PyErr_Occurred()) {
16258                 p->error_indicator = 1;
16259                 D(p->level--);
16260                 return NULL;
16261             }
16262             goto done;
16263         }
16264         p->mark = _mark;
16265         D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
16266                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression"));
16267     }
16268     { // '**' expression
16269         if (p->error_indicator) {
16270             D(p->level--);
16271             return NULL;
16272         }
16273         D(fprintf(stderr, "%*c> kwarg_or_double_starred[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**' expression"));
16274         Token * _literal;
16275         expr_ty a;
16276         if (
16277             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
16278             &&
16279             (a = expression_rule(p))  // expression
16280         )
16281         {
16282             D(fprintf(stderr, "%*c+ kwarg_or_double_starred[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**' expression"));
16283             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16284             if (_token == NULL) {
16285                 D(p->level--);
16286                 return NULL;
16287             }
16288             int _end_lineno = _token->end_lineno;
16289             UNUSED(_end_lineno); // Only used by EXTRA macro
16290             int _end_col_offset = _token->end_col_offset;
16291             UNUSED(_end_col_offset); // Only used by EXTRA macro
16292             _res = _PyPegen_keyword_or_starred ( p , CHECK ( keyword_ty , _PyAST_keyword ( NULL , a , EXTRA ) ) , 1 );
16293             if (_res == NULL && PyErr_Occurred()) {
16294                 p->error_indicator = 1;
16295                 D(p->level--);
16296                 return NULL;
16297             }
16298             goto done;
16299         }
16300         p->mark = _mark;
16301         D(fprintf(stderr, "%*c%s kwarg_or_double_starred[%d-%d]: %s failed!\n", p->level, ' ',
16302                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**' expression"));
16303     }
16304     _res = NULL;
16305   done:
16306     D(p->level--);
16307     return _res;
16308 }
16309 
16310 // star_targets: star_target !',' | star_target ((',' star_target))* ','?
16311 static expr_ty
star_targets_rule(Parser * p)16312 star_targets_rule(Parser *p)
16313 {
16314     D(p->level++);
16315     if (p->error_indicator) {
16316         D(p->level--);
16317         return NULL;
16318     }
16319     expr_ty _res = NULL;
16320     int _mark = p->mark;
16321     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16322         p->error_indicator = 1;
16323         D(p->level--);
16324         return NULL;
16325     }
16326     int _start_lineno = p->tokens[_mark]->lineno;
16327     UNUSED(_start_lineno); // Only used by EXTRA macro
16328     int _start_col_offset = p->tokens[_mark]->col_offset;
16329     UNUSED(_start_col_offset); // Only used by EXTRA macro
16330     { // star_target !','
16331         if (p->error_indicator) {
16332             D(p->level--);
16333             return NULL;
16334         }
16335         D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target !','"));
16336         expr_ty a;
16337         if (
16338             (a = star_target_rule(p))  // star_target
16339             &&
16340             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 12)  // token=','
16341         )
16342         {
16343             D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target !','"));
16344             _res = a;
16345             if (_res == NULL && PyErr_Occurred()) {
16346                 p->error_indicator = 1;
16347                 D(p->level--);
16348                 return NULL;
16349             }
16350             goto done;
16351         }
16352         p->mark = _mark;
16353         D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
16354                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target !','"));
16355     }
16356     { // star_target ((',' star_target))* ','?
16357         if (p->error_indicator) {
16358             D(p->level--);
16359             return NULL;
16360         }
16361         D(fprintf(stderr, "%*c> star_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
16362         void *_opt_var;
16363         UNUSED(_opt_var); // Silence compiler warnings
16364         expr_ty a;
16365         asdl_seq * b;
16366         if (
16367             (a = star_target_rule(p))  // star_target
16368             &&
16369             (b = _loop0_134_rule(p))  // ((',' star_target))*
16370             &&
16371             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
16372         )
16373         {
16374             D(fprintf(stderr, "%*c+ star_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))* ','?"));
16375             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16376             if (_token == NULL) {
16377                 D(p->level--);
16378                 return NULL;
16379             }
16380             int _end_lineno = _token->end_lineno;
16381             UNUSED(_end_lineno); // Only used by EXTRA macro
16382             int _end_col_offset = _token->end_col_offset;
16383             UNUSED(_end_col_offset); // Only used by EXTRA macro
16384             _res = _PyAST_Tuple ( CHECK ( asdl_expr_seq * , _PyPegen_seq_insert_in_front ( p , a , b ) ) , Store , EXTRA );
16385             if (_res == NULL && PyErr_Occurred()) {
16386                 p->error_indicator = 1;
16387                 D(p->level--);
16388                 return NULL;
16389             }
16390             goto done;
16391         }
16392         p->mark = _mark;
16393         D(fprintf(stderr, "%*c%s star_targets[%d-%d]: %s failed!\n", p->level, ' ',
16394                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))* ','?"));
16395     }
16396     _res = NULL;
16397   done:
16398     D(p->level--);
16399     return _res;
16400 }
16401 
16402 // star_targets_list_seq: ','.star_target+ ','?
16403 static asdl_expr_seq*
star_targets_list_seq_rule(Parser * p)16404 star_targets_list_seq_rule(Parser *p)
16405 {
16406     D(p->level++);
16407     if (p->error_indicator) {
16408         D(p->level--);
16409         return NULL;
16410     }
16411     asdl_expr_seq* _res = NULL;
16412     int _mark = p->mark;
16413     { // ','.star_target+ ','?
16414         if (p->error_indicator) {
16415             D(p->level--);
16416             return NULL;
16417         }
16418         D(fprintf(stderr, "%*c> star_targets_list_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
16419         void *_opt_var;
16420         UNUSED(_opt_var); // Silence compiler warnings
16421         asdl_expr_seq* a;
16422         if (
16423             (a = (asdl_expr_seq*)_gather_135_rule(p))  // ','.star_target+
16424             &&
16425             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
16426         )
16427         {
16428             D(fprintf(stderr, "%*c+ star_targets_list_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.star_target+ ','?"));
16429             _res = a;
16430             if (_res == NULL && PyErr_Occurred()) {
16431                 p->error_indicator = 1;
16432                 D(p->level--);
16433                 return NULL;
16434             }
16435             goto done;
16436         }
16437         p->mark = _mark;
16438         D(fprintf(stderr, "%*c%s star_targets_list_seq[%d-%d]: %s failed!\n", p->level, ' ',
16439                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.star_target+ ','?"));
16440     }
16441     _res = NULL;
16442   done:
16443     D(p->level--);
16444     return _res;
16445 }
16446 
16447 // star_targets_tuple_seq: star_target ((',' star_target))+ ','? | star_target ','
16448 static asdl_expr_seq*
star_targets_tuple_seq_rule(Parser * p)16449 star_targets_tuple_seq_rule(Parser *p)
16450 {
16451     D(p->level++);
16452     if (p->error_indicator) {
16453         D(p->level--);
16454         return NULL;
16455     }
16456     asdl_expr_seq* _res = NULL;
16457     int _mark = p->mark;
16458     { // star_target ((',' star_target))+ ','?
16459         if (p->error_indicator) {
16460             D(p->level--);
16461             return NULL;
16462         }
16463         D(fprintf(stderr, "%*c> star_targets_tuple_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
16464         void *_opt_var;
16465         UNUSED(_opt_var); // Silence compiler warnings
16466         expr_ty a;
16467         asdl_seq * b;
16468         if (
16469             (a = star_target_rule(p))  // star_target
16470             &&
16471             (b = _loop1_137_rule(p))  // ((',' star_target))+
16472             &&
16473             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
16474         )
16475         {
16476             D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ((',' star_target))+ ','?"));
16477             _res = ( asdl_expr_seq * ) _PyPegen_seq_insert_in_front ( p , a , b );
16478             if (_res == NULL && PyErr_Occurred()) {
16479                 p->error_indicator = 1;
16480                 D(p->level--);
16481                 return NULL;
16482             }
16483             goto done;
16484         }
16485         p->mark = _mark;
16486         D(fprintf(stderr, "%*c%s star_targets_tuple_seq[%d-%d]: %s failed!\n", p->level, ' ',
16487                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ((',' star_target))+ ','?"));
16488     }
16489     { // star_target ','
16490         if (p->error_indicator) {
16491             D(p->level--);
16492             return NULL;
16493         }
16494         D(fprintf(stderr, "%*c> star_targets_tuple_seq[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target ','"));
16495         Token * _literal;
16496         expr_ty a;
16497         if (
16498             (a = star_target_rule(p))  // star_target
16499             &&
16500             (_literal = _PyPegen_expect_token(p, 12))  // token=','
16501         )
16502         {
16503             D(fprintf(stderr, "%*c+ star_targets_tuple_seq[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target ','"));
16504             _res = ( asdl_expr_seq * ) _PyPegen_singleton_seq ( p , a );
16505             if (_res == NULL && PyErr_Occurred()) {
16506                 p->error_indicator = 1;
16507                 D(p->level--);
16508                 return NULL;
16509             }
16510             goto done;
16511         }
16512         p->mark = _mark;
16513         D(fprintf(stderr, "%*c%s star_targets_tuple_seq[%d-%d]: %s failed!\n", p->level, ' ',
16514                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target ','"));
16515     }
16516     _res = NULL;
16517   done:
16518     D(p->level--);
16519     return _res;
16520 }
16521 
16522 // star_target: '*' (!'*' star_target) | target_with_star_atom
16523 static expr_ty
star_target_rule(Parser * p)16524 star_target_rule(Parser *p)
16525 {
16526     D(p->level++);
16527     if (p->error_indicator) {
16528         D(p->level--);
16529         return NULL;
16530     }
16531     expr_ty _res = NULL;
16532     if (_PyPegen_is_memoized(p, star_target_type, &_res)) {
16533         D(p->level--);
16534         return _res;
16535     }
16536     int _mark = p->mark;
16537     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16538         p->error_indicator = 1;
16539         D(p->level--);
16540         return NULL;
16541     }
16542     int _start_lineno = p->tokens[_mark]->lineno;
16543     UNUSED(_start_lineno); // Only used by EXTRA macro
16544     int _start_col_offset = p->tokens[_mark]->col_offset;
16545     UNUSED(_start_col_offset); // Only used by EXTRA macro
16546     { // '*' (!'*' star_target)
16547         if (p->error_indicator) {
16548             D(p->level--);
16549             return NULL;
16550         }
16551         D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
16552         Token * _literal;
16553         void *a;
16554         if (
16555             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
16556             &&
16557             (a = _tmp_138_rule(p))  // !'*' star_target
16558         )
16559         {
16560             D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (!'*' star_target)"));
16561             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16562             if (_token == NULL) {
16563                 D(p->level--);
16564                 return NULL;
16565             }
16566             int _end_lineno = _token->end_lineno;
16567             UNUSED(_end_lineno); // Only used by EXTRA macro
16568             int _end_col_offset = _token->end_col_offset;
16569             UNUSED(_end_col_offset); // Only used by EXTRA macro
16570             _res = _PyAST_Starred ( CHECK ( expr_ty , _PyPegen_set_expr_context ( p , a , Store ) ) , Store , EXTRA );
16571             if (_res == NULL && PyErr_Occurred()) {
16572                 p->error_indicator = 1;
16573                 D(p->level--);
16574                 return NULL;
16575             }
16576             goto done;
16577         }
16578         p->mark = _mark;
16579         D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
16580                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (!'*' star_target)"));
16581     }
16582     { // target_with_star_atom
16583         if (p->error_indicator) {
16584             D(p->level--);
16585             return NULL;
16586         }
16587         D(fprintf(stderr, "%*c> star_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
16588         expr_ty target_with_star_atom_var;
16589         if (
16590             (target_with_star_atom_var = target_with_star_atom_rule(p))  // target_with_star_atom
16591         )
16592         {
16593             D(fprintf(stderr, "%*c+ star_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "target_with_star_atom"));
16594             _res = target_with_star_atom_var;
16595             goto done;
16596         }
16597         p->mark = _mark;
16598         D(fprintf(stderr, "%*c%s star_target[%d-%d]: %s failed!\n", p->level, ' ',
16599                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "target_with_star_atom"));
16600     }
16601     _res = NULL;
16602   done:
16603     _PyPegen_insert_memo(p, _mark, star_target_type, _res);
16604     D(p->level--);
16605     return _res;
16606 }
16607 
16608 // target_with_star_atom:
16609 //     | t_primary '.' NAME !t_lookahead
16610 //     | t_primary '[' slices ']' !t_lookahead
16611 //     | star_atom
16612 static expr_ty
target_with_star_atom_rule(Parser * p)16613 target_with_star_atom_rule(Parser *p)
16614 {
16615     D(p->level++);
16616     if (p->error_indicator) {
16617         D(p->level--);
16618         return NULL;
16619     }
16620     expr_ty _res = NULL;
16621     if (_PyPegen_is_memoized(p, target_with_star_atom_type, &_res)) {
16622         D(p->level--);
16623         return _res;
16624     }
16625     int _mark = p->mark;
16626     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16627         p->error_indicator = 1;
16628         D(p->level--);
16629         return NULL;
16630     }
16631     int _start_lineno = p->tokens[_mark]->lineno;
16632     UNUSED(_start_lineno); // Only used by EXTRA macro
16633     int _start_col_offset = p->tokens[_mark]->col_offset;
16634     UNUSED(_start_col_offset); // Only used by EXTRA macro
16635     { // t_primary '.' NAME !t_lookahead
16636         if (p->error_indicator) {
16637             D(p->level--);
16638             return NULL;
16639         }
16640         D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
16641         Token * _literal;
16642         expr_ty a;
16643         expr_ty b;
16644         if (
16645             (a = t_primary_rule(p))  // t_primary
16646             &&
16647             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
16648             &&
16649             (b = _PyPegen_name_token(p))  // NAME
16650             &&
16651             _PyPegen_lookahead(0, t_lookahead_rule, p)
16652         )
16653         {
16654             D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
16655             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16656             if (_token == NULL) {
16657                 D(p->level--);
16658                 return NULL;
16659             }
16660             int _end_lineno = _token->end_lineno;
16661             UNUSED(_end_lineno); // Only used by EXTRA macro
16662             int _end_col_offset = _token->end_col_offset;
16663             UNUSED(_end_col_offset); // Only used by EXTRA macro
16664             _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
16665             if (_res == NULL && PyErr_Occurred()) {
16666                 p->error_indicator = 1;
16667                 D(p->level--);
16668                 return NULL;
16669             }
16670             goto done;
16671         }
16672         p->mark = _mark;
16673         D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
16674                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
16675     }
16676     { // t_primary '[' slices ']' !t_lookahead
16677         if (p->error_indicator) {
16678             D(p->level--);
16679             return NULL;
16680         }
16681         D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
16682         Token * _literal;
16683         Token * _literal_1;
16684         expr_ty a;
16685         expr_ty b;
16686         if (
16687             (a = t_primary_rule(p))  // t_primary
16688             &&
16689             (_literal = _PyPegen_expect_token(p, 9))  // token='['
16690             &&
16691             (b = slices_rule(p))  // slices
16692             &&
16693             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
16694             &&
16695             _PyPegen_lookahead(0, t_lookahead_rule, p)
16696         )
16697         {
16698             D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
16699             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16700             if (_token == NULL) {
16701                 D(p->level--);
16702                 return NULL;
16703             }
16704             int _end_lineno = _token->end_lineno;
16705             UNUSED(_end_lineno); // Only used by EXTRA macro
16706             int _end_col_offset = _token->end_col_offset;
16707             UNUSED(_end_col_offset); // Only used by EXTRA macro
16708             _res = _PyAST_Subscript ( a , b , Store , EXTRA );
16709             if (_res == NULL && PyErr_Occurred()) {
16710                 p->error_indicator = 1;
16711                 D(p->level--);
16712                 return NULL;
16713             }
16714             goto done;
16715         }
16716         p->mark = _mark;
16717         D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
16718                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
16719     }
16720     { // star_atom
16721         if (p->error_indicator) {
16722             D(p->level--);
16723             return NULL;
16724         }
16725         D(fprintf(stderr, "%*c> target_with_star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_atom"));
16726         expr_ty star_atom_var;
16727         if (
16728             (star_atom_var = star_atom_rule(p))  // star_atom
16729         )
16730         {
16731             D(fprintf(stderr, "%*c+ target_with_star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_atom"));
16732             _res = star_atom_var;
16733             goto done;
16734         }
16735         p->mark = _mark;
16736         D(fprintf(stderr, "%*c%s target_with_star_atom[%d-%d]: %s failed!\n", p->level, ' ',
16737                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_atom"));
16738     }
16739     _res = NULL;
16740   done:
16741     _PyPegen_insert_memo(p, _mark, target_with_star_atom_type, _res);
16742     D(p->level--);
16743     return _res;
16744 }
16745 
16746 // star_atom:
16747 //     | NAME
16748 //     | '(' target_with_star_atom ')'
16749 //     | '(' star_targets_tuple_seq? ')'
16750 //     | '[' star_targets_list_seq? ']'
16751 static expr_ty
star_atom_rule(Parser * p)16752 star_atom_rule(Parser *p)
16753 {
16754     D(p->level++);
16755     if (p->error_indicator) {
16756         D(p->level--);
16757         return NULL;
16758     }
16759     expr_ty _res = NULL;
16760     int _mark = p->mark;
16761     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
16762         p->error_indicator = 1;
16763         D(p->level--);
16764         return NULL;
16765     }
16766     int _start_lineno = p->tokens[_mark]->lineno;
16767     UNUSED(_start_lineno); // Only used by EXTRA macro
16768     int _start_col_offset = p->tokens[_mark]->col_offset;
16769     UNUSED(_start_col_offset); // Only used by EXTRA macro
16770     { // NAME
16771         if (p->error_indicator) {
16772             D(p->level--);
16773             return NULL;
16774         }
16775         D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
16776         expr_ty a;
16777         if (
16778             (a = _PyPegen_name_token(p))  // NAME
16779         )
16780         {
16781             D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
16782             _res = _PyPegen_set_expr_context ( p , a , Store );
16783             if (_res == NULL && PyErr_Occurred()) {
16784                 p->error_indicator = 1;
16785                 D(p->level--);
16786                 return NULL;
16787             }
16788             goto done;
16789         }
16790         p->mark = _mark;
16791         D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
16792                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
16793     }
16794     { // '(' target_with_star_atom ')'
16795         if (p->error_indicator) {
16796             D(p->level--);
16797             return NULL;
16798         }
16799         D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' target_with_star_atom ')'"));
16800         Token * _literal;
16801         Token * _literal_1;
16802         expr_ty a;
16803         if (
16804             (_literal = _PyPegen_expect_token(p, 7))  // token='('
16805             &&
16806             (a = target_with_star_atom_rule(p))  // target_with_star_atom
16807             &&
16808             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
16809         )
16810         {
16811             D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' target_with_star_atom ')'"));
16812             _res = _PyPegen_set_expr_context ( p , a , Store );
16813             if (_res == NULL && PyErr_Occurred()) {
16814                 p->error_indicator = 1;
16815                 D(p->level--);
16816                 return NULL;
16817             }
16818             goto done;
16819         }
16820         p->mark = _mark;
16821         D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
16822                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' target_with_star_atom ')'"));
16823     }
16824     { // '(' star_targets_tuple_seq? ')'
16825         if (p->error_indicator) {
16826             D(p->level--);
16827             return NULL;
16828         }
16829         D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
16830         Token * _literal;
16831         Token * _literal_1;
16832         void *a;
16833         if (
16834             (_literal = _PyPegen_expect_token(p, 7))  // token='('
16835             &&
16836             (a = star_targets_tuple_seq_rule(p), !p->error_indicator)  // star_targets_tuple_seq?
16837             &&
16838             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
16839         )
16840         {
16841             D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
16842             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16843             if (_token == NULL) {
16844                 D(p->level--);
16845                 return NULL;
16846             }
16847             int _end_lineno = _token->end_lineno;
16848             UNUSED(_end_lineno); // Only used by EXTRA macro
16849             int _end_col_offset = _token->end_col_offset;
16850             UNUSED(_end_col_offset); // Only used by EXTRA macro
16851             _res = _PyAST_Tuple ( a , Store , EXTRA );
16852             if (_res == NULL && PyErr_Occurred()) {
16853                 p->error_indicator = 1;
16854                 D(p->level--);
16855                 return NULL;
16856             }
16857             goto done;
16858         }
16859         p->mark = _mark;
16860         D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
16861                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' star_targets_tuple_seq? ')'"));
16862     }
16863     { // '[' star_targets_list_seq? ']'
16864         if (p->error_indicator) {
16865             D(p->level--);
16866             return NULL;
16867         }
16868         D(fprintf(stderr, "%*c> star_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
16869         Token * _literal;
16870         Token * _literal_1;
16871         void *a;
16872         if (
16873             (_literal = _PyPegen_expect_token(p, 9))  // token='['
16874             &&
16875             (a = star_targets_list_seq_rule(p), !p->error_indicator)  // star_targets_list_seq?
16876             &&
16877             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
16878         )
16879         {
16880             D(fprintf(stderr, "%*c+ star_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' star_targets_list_seq? ']'"));
16881             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
16882             if (_token == NULL) {
16883                 D(p->level--);
16884                 return NULL;
16885             }
16886             int _end_lineno = _token->end_lineno;
16887             UNUSED(_end_lineno); // Only used by EXTRA macro
16888             int _end_col_offset = _token->end_col_offset;
16889             UNUSED(_end_col_offset); // Only used by EXTRA macro
16890             _res = _PyAST_List ( a , Store , EXTRA );
16891             if (_res == NULL && PyErr_Occurred()) {
16892                 p->error_indicator = 1;
16893                 D(p->level--);
16894                 return NULL;
16895             }
16896             goto done;
16897         }
16898         p->mark = _mark;
16899         D(fprintf(stderr, "%*c%s star_atom[%d-%d]: %s failed!\n", p->level, ' ',
16900                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' star_targets_list_seq? ']'"));
16901     }
16902     _res = NULL;
16903   done:
16904     D(p->level--);
16905     return _res;
16906 }
16907 
16908 // single_target: single_subscript_attribute_target | NAME | '(' single_target ')'
16909 static expr_ty
single_target_rule(Parser * p)16910 single_target_rule(Parser *p)
16911 {
16912     D(p->level++);
16913     if (p->error_indicator) {
16914         D(p->level--);
16915         return NULL;
16916     }
16917     expr_ty _res = NULL;
16918     int _mark = p->mark;
16919     { // single_subscript_attribute_target
16920         if (p->error_indicator) {
16921             D(p->level--);
16922             return NULL;
16923         }
16924         D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
16925         expr_ty single_subscript_attribute_target_var;
16926         if (
16927             (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
16928         )
16929         {
16930             D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
16931             _res = single_subscript_attribute_target_var;
16932             goto done;
16933         }
16934         p->mark = _mark;
16935         D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
16936                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
16937     }
16938     { // NAME
16939         if (p->error_indicator) {
16940             D(p->level--);
16941             return NULL;
16942         }
16943         D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
16944         expr_ty a;
16945         if (
16946             (a = _PyPegen_name_token(p))  // NAME
16947         )
16948         {
16949             D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
16950             _res = _PyPegen_set_expr_context ( p , a , Store );
16951             if (_res == NULL && PyErr_Occurred()) {
16952                 p->error_indicator = 1;
16953                 D(p->level--);
16954                 return NULL;
16955             }
16956             goto done;
16957         }
16958         p->mark = _mark;
16959         D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
16960                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
16961     }
16962     { // '(' single_target ')'
16963         if (p->error_indicator) {
16964             D(p->level--);
16965             return NULL;
16966         }
16967         D(fprintf(stderr, "%*c> single_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
16968         Token * _literal;
16969         Token * _literal_1;
16970         expr_ty a;
16971         if (
16972             (_literal = _PyPegen_expect_token(p, 7))  // token='('
16973             &&
16974             (a = single_target_rule(p))  // single_target
16975             &&
16976             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
16977         )
16978         {
16979             D(fprintf(stderr, "%*c+ single_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
16980             _res = a;
16981             if (_res == NULL && PyErr_Occurred()) {
16982                 p->error_indicator = 1;
16983                 D(p->level--);
16984                 return NULL;
16985             }
16986             goto done;
16987         }
16988         p->mark = _mark;
16989         D(fprintf(stderr, "%*c%s single_target[%d-%d]: %s failed!\n", p->level, ' ',
16990                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
16991     }
16992     _res = NULL;
16993   done:
16994     D(p->level--);
16995     return _res;
16996 }
16997 
16998 // single_subscript_attribute_target:
16999 //     | t_primary '.' NAME !t_lookahead
17000 //     | t_primary '[' slices ']' !t_lookahead
17001 static expr_ty
single_subscript_attribute_target_rule(Parser * p)17002 single_subscript_attribute_target_rule(Parser *p)
17003 {
17004     D(p->level++);
17005     if (p->error_indicator) {
17006         D(p->level--);
17007         return NULL;
17008     }
17009     expr_ty _res = NULL;
17010     int _mark = p->mark;
17011     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17012         p->error_indicator = 1;
17013         D(p->level--);
17014         return NULL;
17015     }
17016     int _start_lineno = p->tokens[_mark]->lineno;
17017     UNUSED(_start_lineno); // Only used by EXTRA macro
17018     int _start_col_offset = p->tokens[_mark]->col_offset;
17019     UNUSED(_start_col_offset); // Only used by EXTRA macro
17020     { // t_primary '.' NAME !t_lookahead
17021         if (p->error_indicator) {
17022             D(p->level--);
17023             return NULL;
17024         }
17025         D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17026         Token * _literal;
17027         expr_ty a;
17028         expr_ty b;
17029         if (
17030             (a = t_primary_rule(p))  // t_primary
17031             &&
17032             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
17033             &&
17034             (b = _PyPegen_name_token(p))  // NAME
17035             &&
17036             _PyPegen_lookahead(0, t_lookahead_rule, p)
17037         )
17038         {
17039             D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17040             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17041             if (_token == NULL) {
17042                 D(p->level--);
17043                 return NULL;
17044             }
17045             int _end_lineno = _token->end_lineno;
17046             UNUSED(_end_lineno); // Only used by EXTRA macro
17047             int _end_col_offset = _token->end_col_offset;
17048             UNUSED(_end_col_offset); // Only used by EXTRA macro
17049             _res = _PyAST_Attribute ( a , b -> v . Name . id , Store , EXTRA );
17050             if (_res == NULL && PyErr_Occurred()) {
17051                 p->error_indicator = 1;
17052                 D(p->level--);
17053                 return NULL;
17054             }
17055             goto done;
17056         }
17057         p->mark = _mark;
17058         D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
17059                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17060     }
17061     { // t_primary '[' slices ']' !t_lookahead
17062         if (p->error_indicator) {
17063             D(p->level--);
17064             return NULL;
17065         }
17066         D(fprintf(stderr, "%*c> single_subscript_attribute_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17067         Token * _literal;
17068         Token * _literal_1;
17069         expr_ty a;
17070         expr_ty b;
17071         if (
17072             (a = t_primary_rule(p))  // t_primary
17073             &&
17074             (_literal = _PyPegen_expect_token(p, 9))  // token='['
17075             &&
17076             (b = slices_rule(p))  // slices
17077             &&
17078             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17079             &&
17080             _PyPegen_lookahead(0, t_lookahead_rule, p)
17081         )
17082         {
17083             D(fprintf(stderr, "%*c+ single_subscript_attribute_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17084             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17085             if (_token == NULL) {
17086                 D(p->level--);
17087                 return NULL;
17088             }
17089             int _end_lineno = _token->end_lineno;
17090             UNUSED(_end_lineno); // Only used by EXTRA macro
17091             int _end_col_offset = _token->end_col_offset;
17092             UNUSED(_end_col_offset); // Only used by EXTRA macro
17093             _res = _PyAST_Subscript ( a , b , Store , EXTRA );
17094             if (_res == NULL && PyErr_Occurred()) {
17095                 p->error_indicator = 1;
17096                 D(p->level--);
17097                 return NULL;
17098             }
17099             goto done;
17100         }
17101         p->mark = _mark;
17102         D(fprintf(stderr, "%*c%s single_subscript_attribute_target[%d-%d]: %s failed!\n", p->level, ' ',
17103                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17104     }
17105     _res = NULL;
17106   done:
17107     D(p->level--);
17108     return _res;
17109 }
17110 
17111 // del_targets: ','.del_target+ ','?
17112 static asdl_expr_seq*
del_targets_rule(Parser * p)17113 del_targets_rule(Parser *p)
17114 {
17115     D(p->level++);
17116     if (p->error_indicator) {
17117         D(p->level--);
17118         return NULL;
17119     }
17120     asdl_expr_seq* _res = NULL;
17121     int _mark = p->mark;
17122     { // ','.del_target+ ','?
17123         if (p->error_indicator) {
17124             D(p->level--);
17125             return NULL;
17126         }
17127         D(fprintf(stderr, "%*c> del_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
17128         void *_opt_var;
17129         UNUSED(_opt_var); // Silence compiler warnings
17130         asdl_expr_seq* a;
17131         if (
17132             (a = (asdl_expr_seq*)_gather_139_rule(p))  // ','.del_target+
17133             &&
17134             (_opt_var = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
17135         )
17136         {
17137             D(fprintf(stderr, "%*c+ del_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.del_target+ ','?"));
17138             _res = a;
17139             if (_res == NULL && PyErr_Occurred()) {
17140                 p->error_indicator = 1;
17141                 D(p->level--);
17142                 return NULL;
17143             }
17144             goto done;
17145         }
17146         p->mark = _mark;
17147         D(fprintf(stderr, "%*c%s del_targets[%d-%d]: %s failed!\n", p->level, ' ',
17148                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.del_target+ ','?"));
17149     }
17150     _res = NULL;
17151   done:
17152     D(p->level--);
17153     return _res;
17154 }
17155 
17156 // del_target:
17157 //     | t_primary '.' NAME !t_lookahead
17158 //     | t_primary '[' slices ']' !t_lookahead
17159 //     | del_t_atom
17160 static expr_ty
del_target_rule(Parser * p)17161 del_target_rule(Parser *p)
17162 {
17163     D(p->level++);
17164     if (p->error_indicator) {
17165         D(p->level--);
17166         return NULL;
17167     }
17168     expr_ty _res = NULL;
17169     if (_PyPegen_is_memoized(p, del_target_type, &_res)) {
17170         D(p->level--);
17171         return _res;
17172     }
17173     int _mark = p->mark;
17174     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17175         p->error_indicator = 1;
17176         D(p->level--);
17177         return NULL;
17178     }
17179     int _start_lineno = p->tokens[_mark]->lineno;
17180     UNUSED(_start_lineno); // Only used by EXTRA macro
17181     int _start_col_offset = p->tokens[_mark]->col_offset;
17182     UNUSED(_start_col_offset); // Only used by EXTRA macro
17183     { // t_primary '.' NAME !t_lookahead
17184         if (p->error_indicator) {
17185             D(p->level--);
17186             return NULL;
17187         }
17188         D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17189         Token * _literal;
17190         expr_ty a;
17191         expr_ty b;
17192         if (
17193             (a = t_primary_rule(p))  // t_primary
17194             &&
17195             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
17196             &&
17197             (b = _PyPegen_name_token(p))  // NAME
17198             &&
17199             _PyPegen_lookahead(0, t_lookahead_rule, p)
17200         )
17201         {
17202             D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17203             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17204             if (_token == NULL) {
17205                 D(p->level--);
17206                 return NULL;
17207             }
17208             int _end_lineno = _token->end_lineno;
17209             UNUSED(_end_lineno); // Only used by EXTRA macro
17210             int _end_col_offset = _token->end_col_offset;
17211             UNUSED(_end_col_offset); // Only used by EXTRA macro
17212             _res = _PyAST_Attribute ( a , b -> v . Name . id , Del , EXTRA );
17213             if (_res == NULL && PyErr_Occurred()) {
17214                 p->error_indicator = 1;
17215                 D(p->level--);
17216                 return NULL;
17217             }
17218             goto done;
17219         }
17220         p->mark = _mark;
17221         D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
17222                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME !t_lookahead"));
17223     }
17224     { // t_primary '[' slices ']' !t_lookahead
17225         if (p->error_indicator) {
17226             D(p->level--);
17227             return NULL;
17228         }
17229         D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17230         Token * _literal;
17231         Token * _literal_1;
17232         expr_ty a;
17233         expr_ty b;
17234         if (
17235             (a = t_primary_rule(p))  // t_primary
17236             &&
17237             (_literal = _PyPegen_expect_token(p, 9))  // token='['
17238             &&
17239             (b = slices_rule(p))  // slices
17240             &&
17241             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17242             &&
17243             _PyPegen_lookahead(0, t_lookahead_rule, p)
17244         )
17245         {
17246             D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17247             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17248             if (_token == NULL) {
17249                 D(p->level--);
17250                 return NULL;
17251             }
17252             int _end_lineno = _token->end_lineno;
17253             UNUSED(_end_lineno); // Only used by EXTRA macro
17254             int _end_col_offset = _token->end_col_offset;
17255             UNUSED(_end_col_offset); // Only used by EXTRA macro
17256             _res = _PyAST_Subscript ( a , b , Del , EXTRA );
17257             if (_res == NULL && PyErr_Occurred()) {
17258                 p->error_indicator = 1;
17259                 D(p->level--);
17260                 return NULL;
17261             }
17262             goto done;
17263         }
17264         p->mark = _mark;
17265         D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
17266                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' !t_lookahead"));
17267     }
17268     { // del_t_atom
17269         if (p->error_indicator) {
17270             D(p->level--);
17271             return NULL;
17272         }
17273         D(fprintf(stderr, "%*c> del_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
17274         expr_ty del_t_atom_var;
17275         if (
17276             (del_t_atom_var = del_t_atom_rule(p))  // del_t_atom
17277         )
17278         {
17279             D(fprintf(stderr, "%*c+ del_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_t_atom"));
17280             _res = del_t_atom_var;
17281             goto done;
17282         }
17283         p->mark = _mark;
17284         D(fprintf(stderr, "%*c%s del_target[%d-%d]: %s failed!\n", p->level, ' ',
17285                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_t_atom"));
17286     }
17287     _res = NULL;
17288   done:
17289     _PyPegen_insert_memo(p, _mark, del_target_type, _res);
17290     D(p->level--);
17291     return _res;
17292 }
17293 
17294 // del_t_atom: NAME | '(' del_target ')' | '(' del_targets? ')' | '[' del_targets? ']'
17295 static expr_ty
del_t_atom_rule(Parser * p)17296 del_t_atom_rule(Parser *p)
17297 {
17298     D(p->level++);
17299     if (p->error_indicator) {
17300         D(p->level--);
17301         return NULL;
17302     }
17303     expr_ty _res = NULL;
17304     int _mark = p->mark;
17305     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17306         p->error_indicator = 1;
17307         D(p->level--);
17308         return NULL;
17309     }
17310     int _start_lineno = p->tokens[_mark]->lineno;
17311     UNUSED(_start_lineno); // Only used by EXTRA macro
17312     int _start_col_offset = p->tokens[_mark]->col_offset;
17313     UNUSED(_start_col_offset); // Only used by EXTRA macro
17314     { // NAME
17315         if (p->error_indicator) {
17316             D(p->level--);
17317             return NULL;
17318         }
17319         D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME"));
17320         expr_ty a;
17321         if (
17322             (a = _PyPegen_name_token(p))  // NAME
17323         )
17324         {
17325             D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME"));
17326             _res = _PyPegen_set_expr_context ( p , a , Del );
17327             if (_res == NULL && PyErr_Occurred()) {
17328                 p->error_indicator = 1;
17329                 D(p->level--);
17330                 return NULL;
17331             }
17332             goto done;
17333         }
17334         p->mark = _mark;
17335         D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
17336                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME"));
17337     }
17338     { // '(' del_target ')'
17339         if (p->error_indicator) {
17340             D(p->level--);
17341             return NULL;
17342         }
17343         D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
17344         Token * _literal;
17345         Token * _literal_1;
17346         expr_ty a;
17347         if (
17348             (_literal = _PyPegen_expect_token(p, 7))  // token='('
17349             &&
17350             (a = del_target_rule(p))  // del_target
17351             &&
17352             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17353         )
17354         {
17355             D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_target ')'"));
17356             _res = _PyPegen_set_expr_context ( p , a , Del );
17357             if (_res == NULL && PyErr_Occurred()) {
17358                 p->error_indicator = 1;
17359                 D(p->level--);
17360                 return NULL;
17361             }
17362             goto done;
17363         }
17364         p->mark = _mark;
17365         D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
17366                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_target ')'"));
17367     }
17368     { // '(' del_targets? ')'
17369         if (p->error_indicator) {
17370             D(p->level--);
17371             return NULL;
17372         }
17373         D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
17374         Token * _literal;
17375         Token * _literal_1;
17376         void *a;
17377         if (
17378             (_literal = _PyPegen_expect_token(p, 7))  // token='('
17379             &&
17380             (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
17381             &&
17382             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17383         )
17384         {
17385             D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' del_targets? ')'"));
17386             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17387             if (_token == NULL) {
17388                 D(p->level--);
17389                 return NULL;
17390             }
17391             int _end_lineno = _token->end_lineno;
17392             UNUSED(_end_lineno); // Only used by EXTRA macro
17393             int _end_col_offset = _token->end_col_offset;
17394             UNUSED(_end_col_offset); // Only used by EXTRA macro
17395             _res = _PyAST_Tuple ( a , Del , EXTRA );
17396             if (_res == NULL && PyErr_Occurred()) {
17397                 p->error_indicator = 1;
17398                 D(p->level--);
17399                 return NULL;
17400             }
17401             goto done;
17402         }
17403         p->mark = _mark;
17404         D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
17405                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' del_targets? ')'"));
17406     }
17407     { // '[' del_targets? ']'
17408         if (p->error_indicator) {
17409             D(p->level--);
17410             return NULL;
17411         }
17412         D(fprintf(stderr, "%*c> del_t_atom[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
17413         Token * _literal;
17414         Token * _literal_1;
17415         void *a;
17416         if (
17417             (_literal = _PyPegen_expect_token(p, 9))  // token='['
17418             &&
17419             (a = del_targets_rule(p), !p->error_indicator)  // del_targets?
17420             &&
17421             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17422         )
17423         {
17424             D(fprintf(stderr, "%*c+ del_t_atom[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'[' del_targets? ']'"));
17425             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17426             if (_token == NULL) {
17427                 D(p->level--);
17428                 return NULL;
17429             }
17430             int _end_lineno = _token->end_lineno;
17431             UNUSED(_end_lineno); // Only used by EXTRA macro
17432             int _end_col_offset = _token->end_col_offset;
17433             UNUSED(_end_col_offset); // Only used by EXTRA macro
17434             _res = _PyAST_List ( a , Del , EXTRA );
17435             if (_res == NULL && PyErr_Occurred()) {
17436                 p->error_indicator = 1;
17437                 D(p->level--);
17438                 return NULL;
17439             }
17440             goto done;
17441         }
17442         p->mark = _mark;
17443         D(fprintf(stderr, "%*c%s del_t_atom[%d-%d]: %s failed!\n", p->level, ' ',
17444                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'[' del_targets? ']'"));
17445     }
17446     _res = NULL;
17447   done:
17448     D(p->level--);
17449     return _res;
17450 }
17451 
17452 // Left-recursive
17453 // t_primary:
17454 //     | t_primary '.' NAME &t_lookahead
17455 //     | t_primary '[' slices ']' &t_lookahead
17456 //     | t_primary genexp &t_lookahead
17457 //     | t_primary '(' arguments? ')' &t_lookahead
17458 //     | atom &t_lookahead
17459 static expr_ty t_primary_raw(Parser *);
17460 static expr_ty
t_primary_rule(Parser * p)17461 t_primary_rule(Parser *p)
17462 {
17463     D(p->level++);
17464     expr_ty _res = NULL;
17465     if (_PyPegen_is_memoized(p, t_primary_type, &_res)) {
17466         D(p->level--);
17467         return _res;
17468     }
17469     int _mark = p->mark;
17470     int _resmark = p->mark;
17471     while (1) {
17472         int tmpvar_9 = _PyPegen_update_memo(p, _mark, t_primary_type, _res);
17473         if (tmpvar_9) {
17474             D(p->level--);
17475             return _res;
17476         }
17477         p->mark = _mark;
17478         p->in_raw_rule++;
17479         void *_raw = t_primary_raw(p);
17480         p->in_raw_rule--;
17481         if (p->error_indicator)
17482             return NULL;
17483         if (_raw == NULL || p->mark <= _resmark)
17484             break;
17485         _resmark = p->mark;
17486         _res = _raw;
17487     }
17488     p->mark = _resmark;
17489     D(p->level--);
17490     return _res;
17491 }
17492 static expr_ty
t_primary_raw(Parser * p)17493 t_primary_raw(Parser *p)
17494 {
17495     D(p->level++);
17496     if (p->error_indicator) {
17497         D(p->level--);
17498         return NULL;
17499     }
17500     expr_ty _res = NULL;
17501     int _mark = p->mark;
17502     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
17503         p->error_indicator = 1;
17504         D(p->level--);
17505         return NULL;
17506     }
17507     int _start_lineno = p->tokens[_mark]->lineno;
17508     UNUSED(_start_lineno); // Only used by EXTRA macro
17509     int _start_col_offset = p->tokens[_mark]->col_offset;
17510     UNUSED(_start_col_offset); // Only used by EXTRA macro
17511     { // t_primary '.' NAME &t_lookahead
17512         if (p->error_indicator) {
17513             D(p->level--);
17514             return NULL;
17515         }
17516         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
17517         Token * _literal;
17518         expr_ty a;
17519         expr_ty b;
17520         if (
17521             (a = t_primary_rule(p))  // t_primary
17522             &&
17523             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
17524             &&
17525             (b = _PyPegen_name_token(p))  // NAME
17526             &&
17527             _PyPegen_lookahead(1, t_lookahead_rule, p)
17528         )
17529         {
17530             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
17531             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17532             if (_token == NULL) {
17533                 D(p->level--);
17534                 return NULL;
17535             }
17536             int _end_lineno = _token->end_lineno;
17537             UNUSED(_end_lineno); // Only used by EXTRA macro
17538             int _end_col_offset = _token->end_col_offset;
17539             UNUSED(_end_col_offset); // Only used by EXTRA macro
17540             _res = _PyAST_Attribute ( a , b -> v . Name . id , Load , EXTRA );
17541             if (_res == NULL && PyErr_Occurred()) {
17542                 p->error_indicator = 1;
17543                 D(p->level--);
17544                 return NULL;
17545             }
17546             goto done;
17547         }
17548         p->mark = _mark;
17549         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
17550                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '.' NAME &t_lookahead"));
17551     }
17552     { // t_primary '[' slices ']' &t_lookahead
17553         if (p->error_indicator) {
17554             D(p->level--);
17555             return NULL;
17556         }
17557         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
17558         Token * _literal;
17559         Token * _literal_1;
17560         expr_ty a;
17561         expr_ty b;
17562         if (
17563             (a = t_primary_rule(p))  // t_primary
17564             &&
17565             (_literal = _PyPegen_expect_token(p, 9))  // token='['
17566             &&
17567             (b = slices_rule(p))  // slices
17568             &&
17569             (_literal_1 = _PyPegen_expect_token(p, 10))  // token=']'
17570             &&
17571             _PyPegen_lookahead(1, t_lookahead_rule, p)
17572         )
17573         {
17574             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
17575             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17576             if (_token == NULL) {
17577                 D(p->level--);
17578                 return NULL;
17579             }
17580             int _end_lineno = _token->end_lineno;
17581             UNUSED(_end_lineno); // Only used by EXTRA macro
17582             int _end_col_offset = _token->end_col_offset;
17583             UNUSED(_end_col_offset); // Only used by EXTRA macro
17584             _res = _PyAST_Subscript ( a , b , Load , EXTRA );
17585             if (_res == NULL && PyErr_Occurred()) {
17586                 p->error_indicator = 1;
17587                 D(p->level--);
17588                 return NULL;
17589             }
17590             goto done;
17591         }
17592         p->mark = _mark;
17593         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
17594                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '[' slices ']' &t_lookahead"));
17595     }
17596     { // t_primary genexp &t_lookahead
17597         if (p->error_indicator) {
17598             D(p->level--);
17599             return NULL;
17600         }
17601         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
17602         expr_ty a;
17603         expr_ty b;
17604         if (
17605             (a = t_primary_rule(p))  // t_primary
17606             &&
17607             (b = genexp_rule(p))  // genexp
17608             &&
17609             _PyPegen_lookahead(1, t_lookahead_rule, p)
17610         )
17611         {
17612             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary genexp &t_lookahead"));
17613             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17614             if (_token == NULL) {
17615                 D(p->level--);
17616                 return NULL;
17617             }
17618             int _end_lineno = _token->end_lineno;
17619             UNUSED(_end_lineno); // Only used by EXTRA macro
17620             int _end_col_offset = _token->end_col_offset;
17621             UNUSED(_end_col_offset); // Only used by EXTRA macro
17622             _res = _PyAST_Call ( a , CHECK ( asdl_expr_seq * , ( asdl_expr_seq * ) _PyPegen_singleton_seq ( p , b ) ) , NULL , EXTRA );
17623             if (_res == NULL && PyErr_Occurred()) {
17624                 p->error_indicator = 1;
17625                 D(p->level--);
17626                 return NULL;
17627             }
17628             goto done;
17629         }
17630         p->mark = _mark;
17631         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
17632                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary genexp &t_lookahead"));
17633     }
17634     { // t_primary '(' arguments? ')' &t_lookahead
17635         if (p->error_indicator) {
17636             D(p->level--);
17637             return NULL;
17638         }
17639         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
17640         Token * _literal;
17641         Token * _literal_1;
17642         expr_ty a;
17643         void *b;
17644         if (
17645             (a = t_primary_rule(p))  // t_primary
17646             &&
17647             (_literal = _PyPegen_expect_token(p, 7))  // token='('
17648             &&
17649             (b = arguments_rule(p), !p->error_indicator)  // arguments?
17650             &&
17651             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
17652             &&
17653             _PyPegen_lookahead(1, t_lookahead_rule, p)
17654         )
17655         {
17656             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
17657             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
17658             if (_token == NULL) {
17659                 D(p->level--);
17660                 return NULL;
17661             }
17662             int _end_lineno = _token->end_lineno;
17663             UNUSED(_end_lineno); // Only used by EXTRA macro
17664             int _end_col_offset = _token->end_col_offset;
17665             UNUSED(_end_col_offset); // Only used by EXTRA macro
17666             _res = _PyAST_Call ( a , ( b ) ? ( ( expr_ty ) b ) -> v . Call . args : NULL , ( b ) ? ( ( expr_ty ) b ) -> v . Call . keywords : NULL , EXTRA );
17667             if (_res == NULL && PyErr_Occurred()) {
17668                 p->error_indicator = 1;
17669                 D(p->level--);
17670                 return NULL;
17671             }
17672             goto done;
17673         }
17674         p->mark = _mark;
17675         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
17676                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "t_primary '(' arguments? ')' &t_lookahead"));
17677     }
17678     { // atom &t_lookahead
17679         if (p->error_indicator) {
17680             D(p->level--);
17681             return NULL;
17682         }
17683         D(fprintf(stderr, "%*c> t_primary[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
17684         expr_ty a;
17685         if (
17686             (a = atom_rule(p))  // atom
17687             &&
17688             _PyPegen_lookahead(1, t_lookahead_rule, p)
17689         )
17690         {
17691             D(fprintf(stderr, "%*c+ t_primary[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "atom &t_lookahead"));
17692             _res = a;
17693             if (_res == NULL && PyErr_Occurred()) {
17694                 p->error_indicator = 1;
17695                 D(p->level--);
17696                 return NULL;
17697             }
17698             goto done;
17699         }
17700         p->mark = _mark;
17701         D(fprintf(stderr, "%*c%s t_primary[%d-%d]: %s failed!\n", p->level, ' ',
17702                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "atom &t_lookahead"));
17703     }
17704     _res = NULL;
17705   done:
17706     D(p->level--);
17707     return _res;
17708 }
17709 
17710 // t_lookahead: '(' | '[' | '.'
17711 static void *
t_lookahead_rule(Parser * p)17712 t_lookahead_rule(Parser *p)
17713 {
17714     D(p->level++);
17715     if (p->error_indicator) {
17716         D(p->level--);
17717         return NULL;
17718     }
17719     void * _res = NULL;
17720     int _mark = p->mark;
17721     { // '('
17722         if (p->error_indicator) {
17723             D(p->level--);
17724             return NULL;
17725         }
17726         D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
17727         Token * _literal;
17728         if (
17729             (_literal = _PyPegen_expect_token(p, 7))  // token='('
17730         )
17731         {
17732             D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
17733             _res = _literal;
17734             goto done;
17735         }
17736         p->mark = _mark;
17737         D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
17738                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
17739     }
17740     { // '['
17741         if (p->error_indicator) {
17742             D(p->level--);
17743             return NULL;
17744         }
17745         D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
17746         Token * _literal;
17747         if (
17748             (_literal = _PyPegen_expect_token(p, 9))  // token='['
17749         )
17750         {
17751             D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
17752             _res = _literal;
17753             goto done;
17754         }
17755         p->mark = _mark;
17756         D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
17757                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
17758     }
17759     { // '.'
17760         if (p->error_indicator) {
17761             D(p->level--);
17762             return NULL;
17763         }
17764         D(fprintf(stderr, "%*c> t_lookahead[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
17765         Token * _literal;
17766         if (
17767             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
17768         )
17769         {
17770             D(fprintf(stderr, "%*c+ t_lookahead[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
17771             _res = _literal;
17772             goto done;
17773         }
17774         p->mark = _mark;
17775         D(fprintf(stderr, "%*c%s t_lookahead[%d-%d]: %s failed!\n", p->level, ' ',
17776                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
17777     }
17778     _res = NULL;
17779   done:
17780     D(p->level--);
17781     return _res;
17782 }
17783 
17784 // invalid_arguments:
17785 //     | args ',' '*'
17786 //     | expression for_if_clauses ',' [args | expression for_if_clauses]
17787 //     | NAME '=' expression for_if_clauses
17788 //     | args for_if_clauses
17789 //     | args ',' expression for_if_clauses
17790 //     | args ',' args
17791 static void *
invalid_arguments_rule(Parser * p)17792 invalid_arguments_rule(Parser *p)
17793 {
17794     D(p->level++);
17795     if (p->error_indicator) {
17796         D(p->level--);
17797         return NULL;
17798     }
17799     void * _res = NULL;
17800     int _mark = p->mark;
17801     { // args ',' '*'
17802         if (p->error_indicator) {
17803             D(p->level--);
17804             return NULL;
17805         }
17806         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' '*'"));
17807         Token * _literal;
17808         Token * _literal_1;
17809         expr_ty a;
17810         if (
17811             (a = args_rule(p))  // args
17812             &&
17813             (_literal = _PyPegen_expect_token(p, 12))  // token=','
17814             &&
17815             (_literal_1 = _PyPegen_expect_token(p, 16))  // token='*'
17816         )
17817         {
17818             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' '*'"));
17819             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable argument unpacking follows keyword argument unpacking" );
17820             if (_res == NULL && PyErr_Occurred()) {
17821                 p->error_indicator = 1;
17822                 D(p->level--);
17823                 return NULL;
17824             }
17825             goto done;
17826         }
17827         p->mark = _mark;
17828         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
17829                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' '*'"));
17830     }
17831     { // expression for_if_clauses ',' [args | expression for_if_clauses]
17832         if (p->error_indicator) {
17833             D(p->level--);
17834             return NULL;
17835         }
17836         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
17837         Token * _literal;
17838         void *_opt_var;
17839         UNUSED(_opt_var); // Silence compiler warnings
17840         expr_ty a;
17841         asdl_comprehension_seq* b;
17842         if (
17843             (a = expression_rule(p))  // expression
17844             &&
17845             (b = for_if_clauses_rule(p))  // for_if_clauses
17846             &&
17847             (_literal = _PyPegen_expect_token(p, 12))  // token=','
17848             &&
17849             (_opt_var = _tmp_141_rule(p), !p->error_indicator)  // [args | expression for_if_clauses]
17850         )
17851         {
17852             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]"));
17853             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , PyPegen_last_item ( b , comprehension_ty ) -> target , "Generator expression must be parenthesized" );
17854             if (_res == NULL && PyErr_Occurred()) {
17855                 p->error_indicator = 1;
17856                 D(p->level--);
17857                 return NULL;
17858             }
17859             goto done;
17860         }
17861         p->mark = _mark;
17862         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
17863                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses ',' [args | expression for_if_clauses]"));
17864     }
17865     { // NAME '=' expression for_if_clauses
17866         if (p->error_indicator) {
17867             D(p->level--);
17868             return NULL;
17869         }
17870         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
17871         expr_ty a;
17872         Token * b;
17873         expr_ty expression_var;
17874         asdl_comprehension_seq* for_if_clauses_var;
17875         if (
17876             (a = _PyPegen_name_token(p))  // NAME
17877             &&
17878             (b = _PyPegen_expect_token(p, 22))  // token='='
17879             &&
17880             (expression_var = expression_rule(p))  // expression
17881             &&
17882             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
17883         )
17884         {
17885             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
17886             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
17887             if (_res == NULL && PyErr_Occurred()) {
17888                 p->error_indicator = 1;
17889                 D(p->level--);
17890                 return NULL;
17891             }
17892             goto done;
17893         }
17894         p->mark = _mark;
17895         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
17896                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
17897     }
17898     { // args for_if_clauses
17899         if (p->error_indicator) {
17900             D(p->level--);
17901             return NULL;
17902         }
17903         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
17904         expr_ty a;
17905         asdl_comprehension_seq* b;
17906         if (
17907             (a = args_rule(p))  // args
17908             &&
17909             (b = for_if_clauses_rule(p))  // for_if_clauses
17910         )
17911         {
17912             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args for_if_clauses"));
17913             _res = _PyPegen_nonparen_genexp_in_call ( p , a , b );
17914             if (_res == NULL && PyErr_Occurred()) {
17915                 p->error_indicator = 1;
17916                 D(p->level--);
17917                 return NULL;
17918             }
17919             goto done;
17920         }
17921         p->mark = _mark;
17922         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
17923                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args for_if_clauses"));
17924     }
17925     { // args ',' expression for_if_clauses
17926         if (p->error_indicator) {
17927             D(p->level--);
17928             return NULL;
17929         }
17930         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
17931         Token * _literal;
17932         expr_ty a;
17933         expr_ty args_var;
17934         asdl_comprehension_seq* b;
17935         if (
17936             (args_var = args_rule(p))  // args
17937             &&
17938             (_literal = _PyPegen_expect_token(p, 12))  // token=','
17939             &&
17940             (a = expression_rule(p))  // expression
17941             &&
17942             (b = for_if_clauses_rule(p))  // for_if_clauses
17943         )
17944         {
17945             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' expression for_if_clauses"));
17946             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , asdl_seq_GET ( b , b -> size - 1 ) -> target , "Generator expression must be parenthesized" );
17947             if (_res == NULL && PyErr_Occurred()) {
17948                 p->error_indicator = 1;
17949                 D(p->level--);
17950                 return NULL;
17951             }
17952             goto done;
17953         }
17954         p->mark = _mark;
17955         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
17956                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' expression for_if_clauses"));
17957     }
17958     { // args ',' args
17959         if (p->error_indicator) {
17960             D(p->level--);
17961             return NULL;
17962         }
17963         D(fprintf(stderr, "%*c> invalid_arguments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args ',' args"));
17964         Token * _literal;
17965         expr_ty a;
17966         expr_ty args_var;
17967         if (
17968             (a = args_rule(p))  // args
17969             &&
17970             (_literal = _PyPegen_expect_token(p, 12))  // token=','
17971             &&
17972             (args_var = args_rule(p))  // args
17973         )
17974         {
17975             D(fprintf(stderr, "%*c+ invalid_arguments[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args ',' args"));
17976             _res = _PyPegen_arguments_parsing_error ( p , a );
17977             if (_res == NULL && PyErr_Occurred()) {
17978                 p->error_indicator = 1;
17979                 D(p->level--);
17980                 return NULL;
17981             }
17982             goto done;
17983         }
17984         p->mark = _mark;
17985         D(fprintf(stderr, "%*c%s invalid_arguments[%d-%d]: %s failed!\n", p->level, ' ',
17986                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args ',' args"));
17987     }
17988     _res = NULL;
17989   done:
17990     D(p->level--);
17991     return _res;
17992 }
17993 
17994 // invalid_kwarg:
17995 //     | ('True' | 'False' | 'None') '='
17996 //     | NAME '=' expression for_if_clauses
17997 //     | !(NAME '=') expression '='
17998 static void *
invalid_kwarg_rule(Parser * p)17999 invalid_kwarg_rule(Parser *p)
18000 {
18001     D(p->level++);
18002     if (p->error_indicator) {
18003         D(p->level--);
18004         return NULL;
18005     }
18006     void * _res = NULL;
18007     int _mark = p->mark;
18008     { // ('True' | 'False' | 'None') '='
18009         if (p->error_indicator) {
18010             D(p->level--);
18011             return NULL;
18012         }
18013         D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('True' | 'False' | 'None') '='"));
18014         Token* a;
18015         Token * b;
18016         if (
18017             (a = (Token*)_tmp_142_rule(p))  // 'True' | 'False' | 'None'
18018             &&
18019             (b = _PyPegen_expect_token(p, 22))  // token='='
18020         )
18021         {
18022             D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('True' | 'False' | 'None') '='"));
18023             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "cannot assign to %s" , PyBytes_AS_STRING ( a -> bytes ) );
18024             if (_res == NULL && PyErr_Occurred()) {
18025                 p->error_indicator = 1;
18026                 D(p->level--);
18027                 return NULL;
18028             }
18029             goto done;
18030         }
18031         p->mark = _mark;
18032         D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
18033                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('True' | 'False' | 'None') '='"));
18034     }
18035     { // NAME '=' expression for_if_clauses
18036         if (p->error_indicator) {
18037             D(p->level--);
18038             return NULL;
18039         }
18040         D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
18041         expr_ty a;
18042         Token * b;
18043         expr_ty expression_var;
18044         asdl_comprehension_seq* for_if_clauses_var;
18045         if (
18046             (a = _PyPegen_name_token(p))  // NAME
18047             &&
18048             (b = _PyPegen_expect_token(p, 22))  // token='='
18049             &&
18050             (expression_var = expression_rule(p))  // expression
18051             &&
18052             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
18053         )
18054         {
18055             D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' expression for_if_clauses"));
18056             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
18057             if (_res == NULL && PyErr_Occurred()) {
18058                 p->error_indicator = 1;
18059                 D(p->level--);
18060                 return NULL;
18061             }
18062             goto done;
18063         }
18064         p->mark = _mark;
18065         D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
18066                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' expression for_if_clauses"));
18067     }
18068     { // !(NAME '=') expression '='
18069         if (p->error_indicator) {
18070             D(p->level--);
18071             return NULL;
18072         }
18073         D(fprintf(stderr, "%*c> invalid_kwarg[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
18074         expr_ty a;
18075         Token * b;
18076         if (
18077             _PyPegen_lookahead(0, _tmp_143_rule, p)
18078             &&
18079             (a = expression_rule(p))  // expression
18080             &&
18081             (b = _PyPegen_expect_token(p, 22))  // token='='
18082         )
18083         {
18084             D(fprintf(stderr, "%*c+ invalid_kwarg[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(NAME '=') expression '='"));
18085             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expression cannot contain assignment, perhaps you meant \"==\"?" );
18086             if (_res == NULL && PyErr_Occurred()) {
18087                 p->error_indicator = 1;
18088                 D(p->level--);
18089                 return NULL;
18090             }
18091             goto done;
18092         }
18093         p->mark = _mark;
18094         D(fprintf(stderr, "%*c%s invalid_kwarg[%d-%d]: %s failed!\n", p->level, ' ',
18095                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME '=') expression '='"));
18096     }
18097     _res = NULL;
18098   done:
18099     D(p->level--);
18100     return _res;
18101 }
18102 
18103 // expression_without_invalid:
18104 //     | disjunction 'if' disjunction 'else' expression
18105 //     | disjunction
18106 //     | lambdef
18107 static expr_ty
expression_without_invalid_rule(Parser * p)18108 expression_without_invalid_rule(Parser *p)
18109 {
18110     D(p->level++);
18111     if (p->error_indicator) {
18112         D(p->level--);
18113         return NULL;
18114     }
18115     expr_ty _res = NULL;
18116     int _mark = p->mark;
18117     if (p->mark == p->fill && _PyPegen_fill_token(p) < 0) {
18118         p->error_indicator = 1;
18119         D(p->level--);
18120         return NULL;
18121     }
18122     int _start_lineno = p->tokens[_mark]->lineno;
18123     UNUSED(_start_lineno); // Only used by EXTRA macro
18124     int _start_col_offset = p->tokens[_mark]->col_offset;
18125     UNUSED(_start_col_offset); // Only used by EXTRA macro
18126     { // disjunction 'if' disjunction 'else' expression
18127         if (p->error_indicator) {
18128             D(p->level--);
18129             return NULL;
18130         }
18131         D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
18132         Token * _keyword;
18133         Token * _keyword_1;
18134         expr_ty a;
18135         expr_ty b;
18136         expr_ty c;
18137         if (
18138             (a = disjunction_rule(p))  // disjunction
18139             &&
18140             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
18141             &&
18142             (b = disjunction_rule(p))  // disjunction
18143             &&
18144             (_keyword_1 = _PyPegen_expect_token(p, 516))  // token='else'
18145             &&
18146             (c = expression_rule(p))  // expression
18147         )
18148         {
18149             D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
18150             Token *_token = _PyPegen_get_last_nonnwhitespace_token(p);
18151             if (_token == NULL) {
18152                 D(p->level--);
18153                 return NULL;
18154             }
18155             int _end_lineno = _token->end_lineno;
18156             UNUSED(_end_lineno); // Only used by EXTRA macro
18157             int _end_col_offset = _token->end_col_offset;
18158             UNUSED(_end_col_offset); // Only used by EXTRA macro
18159             _res = _PyAST_IfExp ( b , a , c , EXTRA );
18160             if (_res == NULL && PyErr_Occurred()) {
18161                 p->error_indicator = 1;
18162                 D(p->level--);
18163                 return NULL;
18164             }
18165             goto done;
18166         }
18167         p->mark = _mark;
18168         D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
18169                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction 'else' expression"));
18170     }
18171     { // disjunction
18172         if (p->error_indicator) {
18173             D(p->level--);
18174             return NULL;
18175         }
18176         D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction"));
18177         expr_ty disjunction_var;
18178         if (
18179             (disjunction_var = disjunction_rule(p))  // disjunction
18180         )
18181         {
18182             D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction"));
18183             _res = disjunction_var;
18184             goto done;
18185         }
18186         p->mark = _mark;
18187         D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
18188                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction"));
18189     }
18190     { // lambdef
18191         if (p->error_indicator) {
18192             D(p->level--);
18193             return NULL;
18194         }
18195         D(fprintf(stderr, "%*c> expression_without_invalid[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambdef"));
18196         expr_ty lambdef_var;
18197         if (
18198             (lambdef_var = lambdef_rule(p))  // lambdef
18199         )
18200         {
18201             D(fprintf(stderr, "%*c+ expression_without_invalid[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambdef"));
18202             _res = lambdef_var;
18203             goto done;
18204         }
18205         p->mark = _mark;
18206         D(fprintf(stderr, "%*c%s expression_without_invalid[%d-%d]: %s failed!\n", p->level, ' ',
18207                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambdef"));
18208     }
18209     _res = NULL;
18210   done:
18211     D(p->level--);
18212     return _res;
18213 }
18214 
18215 // invalid_legacy_expression: NAME !'(' star_expressions
18216 static void *
invalid_legacy_expression_rule(Parser * p)18217 invalid_legacy_expression_rule(Parser *p)
18218 {
18219     D(p->level++);
18220     if (p->error_indicator) {
18221         D(p->level--);
18222         return NULL;
18223     }
18224     void * _res = NULL;
18225     int _mark = p->mark;
18226     { // NAME !'(' star_expressions
18227         if (p->error_indicator) {
18228             D(p->level--);
18229             return NULL;
18230         }
18231         D(fprintf(stderr, "%*c> invalid_legacy_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
18232         expr_ty a;
18233         expr_ty b;
18234         if (
18235             (a = _PyPegen_name_token(p))  // NAME
18236             &&
18237             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 7)  // token='('
18238             &&
18239             (b = star_expressions_rule(p))  // star_expressions
18240         )
18241         {
18242             D(fprintf(stderr, "%*c+ invalid_legacy_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME !'(' star_expressions"));
18243             _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;
18244             if (_res == NULL && PyErr_Occurred()) {
18245                 p->error_indicator = 1;
18246                 D(p->level--);
18247                 return NULL;
18248             }
18249             goto done;
18250         }
18251         p->mark = _mark;
18252         D(fprintf(stderr, "%*c%s invalid_legacy_expression[%d-%d]: %s failed!\n", p->level, ' ',
18253                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME !'(' star_expressions"));
18254     }
18255     _res = NULL;
18256   done:
18257     D(p->level--);
18258     return _res;
18259 }
18260 
18261 // invalid_expression:
18262 //     | !(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid
18263 //     | disjunction 'if' disjunction !('else' | ':')
18264 static void *
invalid_expression_rule(Parser * p)18265 invalid_expression_rule(Parser *p)
18266 {
18267     D(p->level++);
18268     if (p->error_indicator) {
18269         D(p->level--);
18270         return NULL;
18271     }
18272     void * _res = NULL;
18273     int _mark = p->mark;
18274     { // !(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid
18275         if (p->error_indicator) {
18276             D(p->level--);
18277             return NULL;
18278         }
18279         D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
18280         expr_ty a;
18281         expr_ty b;
18282         if (
18283             _PyPegen_lookahead(0, _tmp_144_rule, p)
18284             &&
18285             (a = disjunction_rule(p))  // disjunction
18286             &&
18287             (b = expression_without_invalid_rule(p))  // expression_without_invalid
18288         )
18289         {
18290             D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
18291             _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?" );
18292             if (_res == NULL && PyErr_Occurred()) {
18293                 p->error_indicator = 1;
18294                 D(p->level--);
18295                 return NULL;
18296             }
18297             goto done;
18298         }
18299         p->mark = _mark;
18300         D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
18301                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(NAME STRING | SOFT_KEYWORD) disjunction expression_without_invalid"));
18302     }
18303     { // disjunction 'if' disjunction !('else' | ':')
18304         if (p->error_indicator) {
18305             D(p->level--);
18306             return NULL;
18307         }
18308         D(fprintf(stderr, "%*c> invalid_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
18309         Token * _keyword;
18310         expr_ty a;
18311         expr_ty b;
18312         if (
18313             (a = disjunction_rule(p))  // disjunction
18314             &&
18315             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
18316             &&
18317             (b = disjunction_rule(p))  // disjunction
18318             &&
18319             _PyPegen_lookahead(0, _tmp_145_rule, p)
18320         )
18321         {
18322             D(fprintf(stderr, "%*c+ invalid_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
18323             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "expected 'else' after 'if' expression" );
18324             if (_res == NULL && PyErr_Occurred()) {
18325                 p->error_indicator = 1;
18326                 D(p->level--);
18327                 return NULL;
18328             }
18329             goto done;
18330         }
18331         p->mark = _mark;
18332         D(fprintf(stderr, "%*c%s invalid_expression[%d-%d]: %s failed!\n", p->level, ' ',
18333                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "disjunction 'if' disjunction !('else' | ':')"));
18334     }
18335     _res = NULL;
18336   done:
18337     D(p->level--);
18338     return _res;
18339 }
18340 
18341 // invalid_named_expression:
18342 //     | expression ':=' expression
18343 //     | NAME '=' bitwise_or !('=' | ':=')
18344 //     | !(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')
18345 static void *
invalid_named_expression_rule(Parser * p)18346 invalid_named_expression_rule(Parser *p)
18347 {
18348     D(p->level++);
18349     if (p->error_indicator) {
18350         D(p->level--);
18351         return NULL;
18352     }
18353     void * _res = NULL;
18354     int _mark = p->mark;
18355     { // expression ':=' expression
18356         if (p->error_indicator) {
18357             D(p->level--);
18358             return NULL;
18359         }
18360         D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
18361         Token * _literal;
18362         expr_ty a;
18363         expr_ty expression_var;
18364         if (
18365             (a = expression_rule(p))  // expression
18366             &&
18367             (_literal = _PyPegen_expect_token(p, 53))  // token=':='
18368             &&
18369             (expression_var = expression_rule(p))  // expression
18370         )
18371         {
18372             D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':=' expression"));
18373             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use assignment expressions with %s" , _PyPegen_get_expr_name ( a ) );
18374             if (_res == NULL && PyErr_Occurred()) {
18375                 p->error_indicator = 1;
18376                 D(p->level--);
18377                 return NULL;
18378             }
18379             goto done;
18380         }
18381         p->mark = _mark;
18382         D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
18383                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':=' expression"));
18384     }
18385     { // NAME '=' bitwise_or !('=' | ':=')
18386         if (p->error_indicator) {
18387             D(p->level--);
18388             return NULL;
18389         }
18390         D(fprintf(stderr, "%*c> invalid_named_expression[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
18391         Token * _literal;
18392         expr_ty a;
18393         expr_ty b;
18394         if (
18395             (a = _PyPegen_name_token(p))  // NAME
18396             &&
18397             (_literal = _PyPegen_expect_token(p, 22))  // token='='
18398             &&
18399             (b = bitwise_or_rule(p))  // bitwise_or
18400             &&
18401             _PyPegen_lookahead(0, _tmp_146_rule, p)
18402         )
18403         {
18404             D(fprintf(stderr, "%*c+ invalid_named_expression[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
18405             _res = p -> in_raw_rule ? NULL : RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "invalid syntax. Maybe you meant '==' or ':=' instead of '='?" );
18406             if (_res == NULL && PyErr_Occurred()) {
18407                 p->error_indicator = 1;
18408                 D(p->level--);
18409                 return NULL;
18410             }
18411             goto done;
18412         }
18413         p->mark = _mark;
18414         D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
18415                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '=' bitwise_or !('=' | ':=')"));
18416     }
18417     { // !(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')
18418         if (p->error_indicator) {
18419             D(p->level--);
18420             return NULL;
18421         }
18422         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 !('=' | ':=')"));
18423         expr_ty a;
18424         Token * b;
18425         expr_ty bitwise_or_var;
18426         if (
18427             _PyPegen_lookahead(0, _tmp_147_rule, p)
18428             &&
18429             (a = bitwise_or_rule(p))  // bitwise_or
18430             &&
18431             (b = _PyPegen_expect_token(p, 22))  // token='='
18432             &&
18433             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
18434             &&
18435             _PyPegen_lookahead(0, _tmp_148_rule, p)
18436         )
18437         {
18438             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 !('=' | ':=')"));
18439             _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 ) );
18440             if (_res == NULL && PyErr_Occurred()) {
18441                 p->error_indicator = 1;
18442                 D(p->level--);
18443                 return NULL;
18444             }
18445             goto done;
18446         }
18447         p->mark = _mark;
18448         D(fprintf(stderr, "%*c%s invalid_named_expression[%d-%d]: %s failed!\n", p->level, ' ',
18449                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!(list | tuple | genexp | 'True' | 'None' | 'False') bitwise_or '=' bitwise_or !('=' | ':=')"));
18450     }
18451     _res = NULL;
18452   done:
18453     D(p->level--);
18454     return _res;
18455 }
18456 
18457 // invalid_assignment:
18458 //     | invalid_ann_assign_target ':' expression
18459 //     | star_named_expression ',' star_named_expressions* ':' expression
18460 //     | expression ':' expression
18461 //     | ((star_targets '='))* star_expressions '='
18462 //     | ((star_targets '='))* yield_expr '='
18463 //     | star_expressions augassign (yield_expr | star_expressions)
18464 static void *
invalid_assignment_rule(Parser * p)18465 invalid_assignment_rule(Parser *p)
18466 {
18467     D(p->level++);
18468     if (p->error_indicator) {
18469         D(p->level--);
18470         return NULL;
18471     }
18472     void * _res = NULL;
18473     int _mark = p->mark;
18474     { // invalid_ann_assign_target ':' expression
18475         if (p->error_indicator) {
18476             D(p->level--);
18477             return NULL;
18478         }
18479         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "invalid_ann_assign_target ':' expression"));
18480         Token * _literal;
18481         expr_ty a;
18482         expr_ty expression_var;
18483         if (
18484             (a = invalid_ann_assign_target_rule(p))  // invalid_ann_assign_target
18485             &&
18486             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
18487             &&
18488             (expression_var = expression_rule(p))  // expression
18489         )
18490         {
18491             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "invalid_ann_assign_target ':' expression"));
18492             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not %s) can be annotated" , _PyPegen_get_expr_name ( a ) );
18493             if (_res == NULL && PyErr_Occurred()) {
18494                 p->error_indicator = 1;
18495                 D(p->level--);
18496                 return NULL;
18497             }
18498             goto done;
18499         }
18500         p->mark = _mark;
18501         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
18502                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "invalid_ann_assign_target ':' expression"));
18503     }
18504     { // star_named_expression ',' star_named_expressions* ':' expression
18505         if (p->error_indicator) {
18506             D(p->level--);
18507             return NULL;
18508         }
18509         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
18510         Token * _literal;
18511         Token * _literal_1;
18512         asdl_seq * _loop0_149_var;
18513         expr_ty a;
18514         expr_ty expression_var;
18515         if (
18516             (a = star_named_expression_rule(p))  // star_named_expression
18517             &&
18518             (_literal = _PyPegen_expect_token(p, 12))  // token=','
18519             &&
18520             (_loop0_149_var = _loop0_149_rule(p))  // star_named_expressions*
18521             &&
18522             (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
18523             &&
18524             (expression_var = expression_rule(p))  // expression
18525         )
18526         {
18527             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
18528             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "only single target (not tuple) can be annotated" );
18529             if (_res == NULL && PyErr_Occurred()) {
18530                 p->error_indicator = 1;
18531                 D(p->level--);
18532                 return NULL;
18533             }
18534             goto done;
18535         }
18536         p->mark = _mark;
18537         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
18538                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions* ':' expression"));
18539     }
18540     { // expression ':' expression
18541         if (p->error_indicator) {
18542             D(p->level--);
18543             return NULL;
18544         }
18545         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
18546         Token * _literal;
18547         expr_ty a;
18548         expr_ty expression_var;
18549         if (
18550             (a = expression_rule(p))  // expression
18551             &&
18552             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
18553             &&
18554             (expression_var = expression_rule(p))  // expression
18555         )
18556         {
18557             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' expression"));
18558             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "illegal target for annotation" );
18559             if (_res == NULL && PyErr_Occurred()) {
18560                 p->error_indicator = 1;
18561                 D(p->level--);
18562                 return NULL;
18563             }
18564             goto done;
18565         }
18566         p->mark = _mark;
18567         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
18568                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' expression"));
18569     }
18570     { // ((star_targets '='))* star_expressions '='
18571         if (p->error_indicator) {
18572             D(p->level--);
18573             return NULL;
18574         }
18575         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
18576         Token * _literal;
18577         asdl_seq * _loop0_150_var;
18578         expr_ty a;
18579         if (
18580             (_loop0_150_var = _loop0_150_rule(p))  // ((star_targets '='))*
18581             &&
18582             (a = star_expressions_rule(p))  // star_expressions
18583             &&
18584             (_literal = _PyPegen_expect_token(p, 22))  // token='='
18585         )
18586         {
18587             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* star_expressions '='"));
18588             _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( STAR_TARGETS , a );
18589             if (_res == NULL && PyErr_Occurred()) {
18590                 p->error_indicator = 1;
18591                 D(p->level--);
18592                 return NULL;
18593             }
18594             goto done;
18595         }
18596         p->mark = _mark;
18597         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
18598                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* star_expressions '='"));
18599     }
18600     { // ((star_targets '='))* yield_expr '='
18601         if (p->error_indicator) {
18602             D(p->level--);
18603             return NULL;
18604         }
18605         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
18606         Token * _literal;
18607         asdl_seq * _loop0_151_var;
18608         expr_ty a;
18609         if (
18610             (_loop0_151_var = _loop0_151_rule(p))  // ((star_targets '='))*
18611             &&
18612             (a = yield_expr_rule(p))  // yield_expr
18613             &&
18614             (_literal = _PyPegen_expect_token(p, 22))  // token='='
18615         )
18616         {
18617             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "((star_targets '='))* yield_expr '='"));
18618             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "assignment to yield expression not possible" );
18619             if (_res == NULL && PyErr_Occurred()) {
18620                 p->error_indicator = 1;
18621                 D(p->level--);
18622                 return NULL;
18623             }
18624             goto done;
18625         }
18626         p->mark = _mark;
18627         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
18628                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "((star_targets '='))* yield_expr '='"));
18629     }
18630     { // star_expressions augassign (yield_expr | star_expressions)
18631         if (p->error_indicator) {
18632             D(p->level--);
18633             return NULL;
18634         }
18635         D(fprintf(stderr, "%*c> invalid_assignment[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)"));
18636         void *_tmp_152_var;
18637         expr_ty a;
18638         AugOperator* augassign_var;
18639         if (
18640             (a = star_expressions_rule(p))  // star_expressions
18641             &&
18642             (augassign_var = augassign_rule(p))  // augassign
18643             &&
18644             (_tmp_152_var = _tmp_152_rule(p))  // yield_expr | star_expressions
18645         )
18646         {
18647             D(fprintf(stderr, "%*c+ invalid_assignment[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)"));
18648             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "'%s' is an illegal expression for augmented assignment" , _PyPegen_get_expr_name ( a ) );
18649             if (_res == NULL && PyErr_Occurred()) {
18650                 p->error_indicator = 1;
18651                 D(p->level--);
18652                 return NULL;
18653             }
18654             goto done;
18655         }
18656         p->mark = _mark;
18657         D(fprintf(stderr, "%*c%s invalid_assignment[%d-%d]: %s failed!\n", p->level, ' ',
18658                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions augassign (yield_expr | star_expressions)"));
18659     }
18660     _res = NULL;
18661   done:
18662     D(p->level--);
18663     return _res;
18664 }
18665 
18666 // invalid_ann_assign_target: list | tuple | '(' invalid_ann_assign_target ')'
18667 static expr_ty
invalid_ann_assign_target_rule(Parser * p)18668 invalid_ann_assign_target_rule(Parser *p)
18669 {
18670     D(p->level++);
18671     if (p->error_indicator) {
18672         D(p->level--);
18673         return NULL;
18674     }
18675     expr_ty _res = NULL;
18676     int _mark = p->mark;
18677     { // list
18678         if (p->error_indicator) {
18679             D(p->level--);
18680             return NULL;
18681         }
18682         D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
18683         expr_ty list_var;
18684         if (
18685             (list_var = list_rule(p))  // list
18686         )
18687         {
18688             D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
18689             _res = list_var;
18690             goto done;
18691         }
18692         p->mark = _mark;
18693         D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
18694                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
18695     }
18696     { // tuple
18697         if (p->error_indicator) {
18698             D(p->level--);
18699             return NULL;
18700         }
18701         D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
18702         expr_ty tuple_var;
18703         if (
18704             (tuple_var = tuple_rule(p))  // tuple
18705         )
18706         {
18707             D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
18708             _res = tuple_var;
18709             goto done;
18710         }
18711         p->mark = _mark;
18712         D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
18713                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
18714     }
18715     { // '(' invalid_ann_assign_target ')'
18716         if (p->error_indicator) {
18717             D(p->level--);
18718             return NULL;
18719         }
18720         D(fprintf(stderr, "%*c> invalid_ann_assign_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
18721         Token * _literal;
18722         Token * _literal_1;
18723         expr_ty a;
18724         if (
18725             (_literal = _PyPegen_expect_token(p, 7))  // token='('
18726             &&
18727             (a = invalid_ann_assign_target_rule(p))  // invalid_ann_assign_target
18728             &&
18729             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
18730         )
18731         {
18732             D(fprintf(stderr, "%*c+ invalid_ann_assign_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
18733             _res = a;
18734             if (_res == NULL && PyErr_Occurred()) {
18735                 p->error_indicator = 1;
18736                 D(p->level--);
18737                 return NULL;
18738             }
18739             goto done;
18740         }
18741         p->mark = _mark;
18742         D(fprintf(stderr, "%*c%s invalid_ann_assign_target[%d-%d]: %s failed!\n", p->level, ' ',
18743                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' invalid_ann_assign_target ')'"));
18744     }
18745     _res = NULL;
18746   done:
18747     D(p->level--);
18748     return _res;
18749 }
18750 
18751 // invalid_del_stmt: 'del' star_expressions
18752 static void *
invalid_del_stmt_rule(Parser * p)18753 invalid_del_stmt_rule(Parser *p)
18754 {
18755     D(p->level++);
18756     if (p->error_indicator) {
18757         D(p->level--);
18758         return NULL;
18759     }
18760     void * _res = NULL;
18761     int _mark = p->mark;
18762     { // 'del' star_expressions
18763         if (p->error_indicator) {
18764             D(p->level--);
18765             return NULL;
18766         }
18767         D(fprintf(stderr, "%*c> invalid_del_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'del' star_expressions"));
18768         Token * _keyword;
18769         expr_ty a;
18770         if (
18771             (_keyword = _PyPegen_expect_token(p, 503))  // token='del'
18772             &&
18773             (a = star_expressions_rule(p))  // star_expressions
18774         )
18775         {
18776             D(fprintf(stderr, "%*c+ invalid_del_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'del' star_expressions"));
18777             _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( DEL_TARGETS , a );
18778             if (_res == NULL && PyErr_Occurred()) {
18779                 p->error_indicator = 1;
18780                 D(p->level--);
18781                 return NULL;
18782             }
18783             goto done;
18784         }
18785         p->mark = _mark;
18786         D(fprintf(stderr, "%*c%s invalid_del_stmt[%d-%d]: %s failed!\n", p->level, ' ',
18787                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'del' star_expressions"));
18788     }
18789     _res = NULL;
18790   done:
18791     D(p->level--);
18792     return _res;
18793 }
18794 
18795 // invalid_block: NEWLINE !INDENT
18796 static void *
invalid_block_rule(Parser * p)18797 invalid_block_rule(Parser *p)
18798 {
18799     D(p->level++);
18800     if (p->error_indicator) {
18801         D(p->level--);
18802         return NULL;
18803     }
18804     void * _res = NULL;
18805     int _mark = p->mark;
18806     { // NEWLINE !INDENT
18807         if (p->error_indicator) {
18808             D(p->level--);
18809             return NULL;
18810         }
18811         D(fprintf(stderr, "%*c> invalid_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
18812         Token * newline_var;
18813         if (
18814             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
18815             &&
18816             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
18817         )
18818         {
18819             D(fprintf(stderr, "%*c+ invalid_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE !INDENT"));
18820             _res = RAISE_INDENTATION_ERROR ( "expected an indented block" );
18821             if (_res == NULL && PyErr_Occurred()) {
18822                 p->error_indicator = 1;
18823                 D(p->level--);
18824                 return NULL;
18825             }
18826             goto done;
18827         }
18828         p->mark = _mark;
18829         D(fprintf(stderr, "%*c%s invalid_block[%d-%d]: %s failed!\n", p->level, ' ',
18830                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE !INDENT"));
18831     }
18832     _res = NULL;
18833   done:
18834     D(p->level--);
18835     return _res;
18836 }
18837 
18838 // invalid_comprehension:
18839 //     | ('[' | '(' | '{') starred_expression for_if_clauses
18840 //     | ('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses
18841 //     | ('[' | '{') star_named_expression ',' for_if_clauses
18842 static void *
invalid_comprehension_rule(Parser * p)18843 invalid_comprehension_rule(Parser *p)
18844 {
18845     D(p->level++);
18846     if (p->error_indicator) {
18847         D(p->level--);
18848         return NULL;
18849     }
18850     void * _res = NULL;
18851     int _mark = p->mark;
18852     { // ('[' | '(' | '{') starred_expression for_if_clauses
18853         if (p->error_indicator) {
18854             D(p->level--);
18855             return NULL;
18856         }
18857         D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
18858         void *_tmp_153_var;
18859         expr_ty a;
18860         asdl_comprehension_seq* for_if_clauses_var;
18861         if (
18862             (_tmp_153_var = _tmp_153_rule(p))  // '[' | '(' | '{'
18863             &&
18864             (a = starred_expression_rule(p))  // starred_expression
18865             &&
18866             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
18867         )
18868         {
18869             D(fprintf(stderr, "%*c+ invalid_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
18870             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "iterable unpacking cannot be used in comprehension" );
18871             if (_res == NULL && PyErr_Occurred()) {
18872                 p->error_indicator = 1;
18873                 D(p->level--);
18874                 return NULL;
18875             }
18876             goto done;
18877         }
18878         p->mark = _mark;
18879         D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
18880                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '(' | '{') starred_expression for_if_clauses"));
18881     }
18882     { // ('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses
18883         if (p->error_indicator) {
18884             D(p->level--);
18885             return NULL;
18886         }
18887         D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses"));
18888         Token * _literal;
18889         void *_tmp_154_var;
18890         expr_ty a;
18891         asdl_expr_seq* b;
18892         asdl_comprehension_seq* for_if_clauses_var;
18893         if (
18894             (_tmp_154_var = _tmp_154_rule(p))  // '[' | '{'
18895             &&
18896             (a = star_named_expression_rule(p))  // star_named_expression
18897             &&
18898             (_literal = _PyPegen_expect_token(p, 12))  // token=','
18899             &&
18900             (b = star_named_expressions_rule(p))  // star_named_expressions
18901             &&
18902             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
18903         )
18904         {
18905             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"));
18906             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , PyPegen_last_item ( b , expr_ty ) , "did you forget parentheses around the comprehension target?" );
18907             if (_res == NULL && PyErr_Occurred()) {
18908                 p->error_indicator = 1;
18909                 D(p->level--);
18910                 return NULL;
18911             }
18912             goto done;
18913         }
18914         p->mark = _mark;
18915         D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
18916                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' star_named_expressions for_if_clauses"));
18917     }
18918     { // ('[' | '{') star_named_expression ',' for_if_clauses
18919         if (p->error_indicator) {
18920             D(p->level--);
18921             return NULL;
18922         }
18923         D(fprintf(stderr, "%*c> invalid_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
18924         void *_tmp_155_var;
18925         expr_ty a;
18926         Token * b;
18927         asdl_comprehension_seq* for_if_clauses_var;
18928         if (
18929             (_tmp_155_var = _tmp_155_rule(p))  // '[' | '{'
18930             &&
18931             (a = star_named_expression_rule(p))  // star_named_expression
18932             &&
18933             (b = _PyPegen_expect_token(p, 12))  // token=','
18934             &&
18935             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
18936         )
18937         {
18938             D(fprintf(stderr, "%*c+ invalid_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
18939             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( a , b , "did you forget parentheses around the comprehension target?" );
18940             if (_res == NULL && PyErr_Occurred()) {
18941                 p->error_indicator = 1;
18942                 D(p->level--);
18943                 return NULL;
18944             }
18945             goto done;
18946         }
18947         p->mark = _mark;
18948         D(fprintf(stderr, "%*c%s invalid_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
18949                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('[' | '{') star_named_expression ',' for_if_clauses"));
18950     }
18951     _res = NULL;
18952   done:
18953     D(p->level--);
18954     return _res;
18955 }
18956 
18957 // invalid_dict_comprehension: '{' '**' bitwise_or for_if_clauses '}'
18958 static void *
invalid_dict_comprehension_rule(Parser * p)18959 invalid_dict_comprehension_rule(Parser *p)
18960 {
18961     D(p->level++);
18962     if (p->error_indicator) {
18963         D(p->level--);
18964         return NULL;
18965     }
18966     void * _res = NULL;
18967     int _mark = p->mark;
18968     { // '{' '**' bitwise_or for_if_clauses '}'
18969         if (p->error_indicator) {
18970             D(p->level--);
18971             return NULL;
18972         }
18973         D(fprintf(stderr, "%*c> invalid_dict_comprehension[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
18974         Token * _literal;
18975         Token * _literal_1;
18976         Token * a;
18977         expr_ty bitwise_or_var;
18978         asdl_comprehension_seq* for_if_clauses_var;
18979         if (
18980             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
18981             &&
18982             (a = _PyPegen_expect_token(p, 35))  // token='**'
18983             &&
18984             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
18985             &&
18986             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
18987             &&
18988             (_literal_1 = _PyPegen_expect_token(p, 26))  // token='}'
18989         )
18990         {
18991             D(fprintf(stderr, "%*c+ invalid_dict_comprehension[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
18992             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "dict unpacking cannot be used in dict comprehension" );
18993             if (_res == NULL && PyErr_Occurred()) {
18994                 p->error_indicator = 1;
18995                 D(p->level--);
18996                 return NULL;
18997             }
18998             goto done;
18999         }
19000         p->mark = _mark;
19001         D(fprintf(stderr, "%*c%s invalid_dict_comprehension[%d-%d]: %s failed!\n", p->level, ' ',
19002                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{' '**' bitwise_or for_if_clauses '}'"));
19003     }
19004     _res = NULL;
19005   done:
19006     D(p->level--);
19007     return _res;
19008 }
19009 
19010 // invalid_parameters: param_no_default* invalid_parameters_helper param_no_default
19011 static void *
invalid_parameters_rule(Parser * p)19012 invalid_parameters_rule(Parser *p)
19013 {
19014     D(p->level++);
19015     if (p->error_indicator) {
19016         D(p->level--);
19017         return NULL;
19018     }
19019     void * _res = NULL;
19020     int _mark = p->mark;
19021     { // param_no_default* invalid_parameters_helper param_no_default
19022         if (p->error_indicator) {
19023             D(p->level--);
19024             return NULL;
19025         }
19026         D(fprintf(stderr, "%*c> invalid_parameters[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default* invalid_parameters_helper param_no_default"));
19027         asdl_seq * _loop0_156_var;
19028         arg_ty a;
19029         void *invalid_parameters_helper_var;
19030         if (
19031             (_loop0_156_var = _loop0_156_rule(p))  // param_no_default*
19032             &&
19033             (invalid_parameters_helper_var = invalid_parameters_helper_rule(p))  // invalid_parameters_helper
19034             &&
19035             (a = param_no_default_rule(p))  // param_no_default
19036         )
19037         {
19038             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"));
19039             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "non-default argument follows default argument" );
19040             if (_res == NULL && PyErr_Occurred()) {
19041                 p->error_indicator = 1;
19042                 D(p->level--);
19043                 return NULL;
19044             }
19045             goto done;
19046         }
19047         p->mark = _mark;
19048         D(fprintf(stderr, "%*c%s invalid_parameters[%d-%d]: %s failed!\n", p->level, ' ',
19049                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default* invalid_parameters_helper param_no_default"));
19050     }
19051     _res = NULL;
19052   done:
19053     D(p->level--);
19054     return _res;
19055 }
19056 
19057 // invalid_parameters_helper: slash_with_default | param_with_default+
19058 static void *
invalid_parameters_helper_rule(Parser * p)19059 invalid_parameters_helper_rule(Parser *p)
19060 {
19061     D(p->level++);
19062     if (p->error_indicator) {
19063         D(p->level--);
19064         return NULL;
19065     }
19066     void * _res = NULL;
19067     int _mark = p->mark;
19068     { // slash_with_default
19069         if (p->error_indicator) {
19070             D(p->level--);
19071             return NULL;
19072         }
19073         D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
19074         SlashWithDefault* a;
19075         if (
19076             (a = slash_with_default_rule(p))  // slash_with_default
19077         )
19078         {
19079             D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slash_with_default"));
19080             _res = _PyPegen_singleton_seq ( p , a );
19081             if (_res == NULL && PyErr_Occurred()) {
19082                 p->error_indicator = 1;
19083                 D(p->level--);
19084                 return NULL;
19085             }
19086             goto done;
19087         }
19088         p->mark = _mark;
19089         D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
19090                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slash_with_default"));
19091     }
19092     { // param_with_default+
19093         if (p->error_indicator) {
19094             D(p->level--);
19095             return NULL;
19096         }
19097         D(fprintf(stderr, "%*c> invalid_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
19098         asdl_seq * _loop1_157_var;
19099         if (
19100             (_loop1_157_var = _loop1_157_rule(p))  // param_with_default+
19101         )
19102         {
19103             D(fprintf(stderr, "%*c+ invalid_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "param_with_default+"));
19104             _res = _loop1_157_var;
19105             goto done;
19106         }
19107         p->mark = _mark;
19108         D(fprintf(stderr, "%*c%s invalid_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
19109                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default+"));
19110     }
19111     _res = NULL;
19112   done:
19113     D(p->level--);
19114     return _res;
19115 }
19116 
19117 // invalid_lambda_parameters:
19118 //     | lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default
19119 static void *
invalid_lambda_parameters_rule(Parser * p)19120 invalid_lambda_parameters_rule(Parser *p)
19121 {
19122     D(p->level++);
19123     if (p->error_indicator) {
19124         D(p->level--);
19125         return NULL;
19126     }
19127     void * _res = NULL;
19128     int _mark = p->mark;
19129     { // lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default
19130         if (p->error_indicator) {
19131             D(p->level--);
19132             return NULL;
19133         }
19134         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"));
19135         asdl_seq * _loop0_158_var;
19136         arg_ty a;
19137         void *invalid_lambda_parameters_helper_var;
19138         if (
19139             (_loop0_158_var = _loop0_158_rule(p))  // lambda_param_no_default*
19140             &&
19141             (invalid_lambda_parameters_helper_var = invalid_lambda_parameters_helper_rule(p))  // invalid_lambda_parameters_helper
19142             &&
19143             (a = lambda_param_no_default_rule(p))  // lambda_param_no_default
19144         )
19145         {
19146             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"));
19147             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "non-default argument follows default argument" );
19148             if (_res == NULL && PyErr_Occurred()) {
19149                 p->error_indicator = 1;
19150                 D(p->level--);
19151                 return NULL;
19152             }
19153             goto done;
19154         }
19155         p->mark = _mark;
19156         D(fprintf(stderr, "%*c%s invalid_lambda_parameters[%d-%d]: %s failed!\n", p->level, ' ',
19157                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default* invalid_lambda_parameters_helper lambda_param_no_default"));
19158     }
19159     _res = NULL;
19160   done:
19161     D(p->level--);
19162     return _res;
19163 }
19164 
19165 // invalid_lambda_parameters_helper:
19166 //     | lambda_slash_with_default
19167 //     | lambda_param_with_default+
19168 static void *
invalid_lambda_parameters_helper_rule(Parser * p)19169 invalid_lambda_parameters_helper_rule(Parser *p)
19170 {
19171     D(p->level++);
19172     if (p->error_indicator) {
19173         D(p->level--);
19174         return NULL;
19175     }
19176     void * _res = NULL;
19177     int _mark = p->mark;
19178     { // lambda_slash_with_default
19179         if (p->error_indicator) {
19180             D(p->level--);
19181             return NULL;
19182         }
19183         D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
19184         SlashWithDefault* a;
19185         if (
19186             (a = lambda_slash_with_default_rule(p))  // lambda_slash_with_default
19187         )
19188         {
19189             D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_slash_with_default"));
19190             _res = _PyPegen_singleton_seq ( p , a );
19191             if (_res == NULL && PyErr_Occurred()) {
19192                 p->error_indicator = 1;
19193                 D(p->level--);
19194                 return NULL;
19195             }
19196             goto done;
19197         }
19198         p->mark = _mark;
19199         D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
19200                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_slash_with_default"));
19201     }
19202     { // lambda_param_with_default+
19203         if (p->error_indicator) {
19204             D(p->level--);
19205             return NULL;
19206         }
19207         D(fprintf(stderr, "%*c> invalid_lambda_parameters_helper[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
19208         asdl_seq * _loop1_159_var;
19209         if (
19210             (_loop1_159_var = _loop1_159_rule(p))  // lambda_param_with_default+
19211         )
19212         {
19213             D(fprintf(stderr, "%*c+ invalid_lambda_parameters_helper[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default+"));
19214             _res = _loop1_159_var;
19215             goto done;
19216         }
19217         p->mark = _mark;
19218         D(fprintf(stderr, "%*c%s invalid_lambda_parameters_helper[%d-%d]: %s failed!\n", p->level, ' ',
19219                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default+"));
19220     }
19221     _res = NULL;
19222   done:
19223     D(p->level--);
19224     return _res;
19225 }
19226 
19227 // invalid_star_etc: '*' (')' | ',' (')' | '**')) | '*' ',' TYPE_COMMENT
19228 static void *
invalid_star_etc_rule(Parser * p)19229 invalid_star_etc_rule(Parser *p)
19230 {
19231     D(p->level++);
19232     if (p->error_indicator) {
19233         D(p->level--);
19234         return NULL;
19235     }
19236     void * _res = NULL;
19237     int _mark = p->mark;
19238     { // '*' (')' | ',' (')' | '**'))
19239         if (p->error_indicator) {
19240             D(p->level--);
19241             return NULL;
19242         }
19243         D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
19244         void *_tmp_160_var;
19245         Token * a;
19246         if (
19247             (a = _PyPegen_expect_token(p, 16))  // token='*'
19248             &&
19249             (_tmp_160_var = _tmp_160_rule(p))  // ')' | ',' (')' | '**')
19250         )
19251         {
19252             D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
19253             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "named arguments must follow bare *" );
19254             if (_res == NULL && PyErr_Occurred()) {
19255                 p->error_indicator = 1;
19256                 D(p->level--);
19257                 return NULL;
19258             }
19259             goto done;
19260         }
19261         p->mark = _mark;
19262         D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
19263                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (')' | ',' (')' | '**'))"));
19264     }
19265     { // '*' ',' TYPE_COMMENT
19266         if (p->error_indicator) {
19267             D(p->level--);
19268             return NULL;
19269         }
19270         D(fprintf(stderr, "%*c> invalid_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
19271         Token * _literal;
19272         Token * _literal_1;
19273         Token * type_comment_var;
19274         if (
19275             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
19276             &&
19277             (_literal_1 = _PyPegen_expect_token(p, 12))  // token=','
19278             &&
19279             (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
19280         )
19281         {
19282             D(fprintf(stderr, "%*c+ invalid_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' ',' TYPE_COMMENT"));
19283             _res = RAISE_SYNTAX_ERROR ( "bare * has associated type comment" );
19284             if (_res == NULL && PyErr_Occurred()) {
19285                 p->error_indicator = 1;
19286                 D(p->level--);
19287                 return NULL;
19288             }
19289             goto done;
19290         }
19291         p->mark = _mark;
19292         D(fprintf(stderr, "%*c%s invalid_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
19293                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' ',' TYPE_COMMENT"));
19294     }
19295     _res = NULL;
19296   done:
19297     D(p->level--);
19298     return _res;
19299 }
19300 
19301 // invalid_lambda_star_etc: '*' (':' | ',' (':' | '**'))
19302 static void *
invalid_lambda_star_etc_rule(Parser * p)19303 invalid_lambda_star_etc_rule(Parser *p)
19304 {
19305     D(p->level++);
19306     if (p->error_indicator) {
19307         D(p->level--);
19308         return NULL;
19309     }
19310     void * _res = NULL;
19311     int _mark = p->mark;
19312     { // '*' (':' | ',' (':' | '**'))
19313         if (p->error_indicator) {
19314             D(p->level--);
19315             return NULL;
19316         }
19317         D(fprintf(stderr, "%*c> invalid_lambda_star_etc[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
19318         Token * _literal;
19319         void *_tmp_161_var;
19320         if (
19321             (_literal = _PyPegen_expect_token(p, 16))  // token='*'
19322             &&
19323             (_tmp_161_var = _tmp_161_rule(p))  // ':' | ',' (':' | '**')
19324         )
19325         {
19326             D(fprintf(stderr, "%*c+ invalid_lambda_star_etc[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
19327             _res = RAISE_SYNTAX_ERROR ( "named arguments must follow bare *" );
19328             if (_res == NULL && PyErr_Occurred()) {
19329                 p->error_indicator = 1;
19330                 D(p->level--);
19331                 return NULL;
19332             }
19333             goto done;
19334         }
19335         p->mark = _mark;
19336         D(fprintf(stderr, "%*c%s invalid_lambda_star_etc[%d-%d]: %s failed!\n", p->level, ' ',
19337                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'*' (':' | ',' (':' | '**'))"));
19338     }
19339     _res = NULL;
19340   done:
19341     D(p->level--);
19342     return _res;
19343 }
19344 
19345 // invalid_double_type_comments: TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
19346 static void *
invalid_double_type_comments_rule(Parser * p)19347 invalid_double_type_comments_rule(Parser *p)
19348 {
19349     D(p->level++);
19350     if (p->error_indicator) {
19351         D(p->level--);
19352         return NULL;
19353     }
19354     void * _res = NULL;
19355     int _mark = p->mark;
19356     { // TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT
19357         if (p->error_indicator) {
19358             D(p->level--);
19359             return NULL;
19360         }
19361         D(fprintf(stderr, "%*c> invalid_double_type_comments[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
19362         Token * indent_var;
19363         Token * newline_var;
19364         Token * newline_var_1;
19365         Token * type_comment_var;
19366         Token * type_comment_var_1;
19367         if (
19368             (type_comment_var = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
19369             &&
19370             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19371             &&
19372             (type_comment_var_1 = _PyPegen_expect_token(p, TYPE_COMMENT))  // token='TYPE_COMMENT'
19373             &&
19374             (newline_var_1 = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19375             &&
19376             (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
19377         )
19378         {
19379             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"));
19380             _res = RAISE_SYNTAX_ERROR ( "Cannot have two type comments on def" );
19381             if (_res == NULL && PyErr_Occurred()) {
19382                 p->error_indicator = 1;
19383                 D(p->level--);
19384                 return NULL;
19385             }
19386             goto done;
19387         }
19388         p->mark = _mark;
19389         D(fprintf(stderr, "%*c%s invalid_double_type_comments[%d-%d]: %s failed!\n", p->level, ' ',
19390                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "TYPE_COMMENT NEWLINE TYPE_COMMENT NEWLINE INDENT"));
19391     }
19392     _res = NULL;
19393   done:
19394     D(p->level--);
19395     return _res;
19396 }
19397 
19398 // invalid_with_item: expression 'as' expression &(',' | ')' | ':')
19399 static void *
invalid_with_item_rule(Parser * p)19400 invalid_with_item_rule(Parser *p)
19401 {
19402     D(p->level++);
19403     if (p->error_indicator) {
19404         D(p->level--);
19405         return NULL;
19406     }
19407     void * _res = NULL;
19408     int _mark = p->mark;
19409     { // expression 'as' expression &(',' | ')' | ':')
19410         if (p->error_indicator) {
19411             D(p->level--);
19412             return NULL;
19413         }
19414         D(fprintf(stderr, "%*c> invalid_with_item[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
19415         Token * _keyword;
19416         expr_ty a;
19417         expr_ty expression_var;
19418         if (
19419             (expression_var = expression_rule(p))  // expression
19420             &&
19421             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
19422             &&
19423             (a = expression_rule(p))  // expression
19424             &&
19425             _PyPegen_lookahead(1, _tmp_162_rule, p)
19426         )
19427         {
19428             D(fprintf(stderr, "%*c+ invalid_with_item[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
19429             _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( STAR_TARGETS , a );
19430             if (_res == NULL && PyErr_Occurred()) {
19431                 p->error_indicator = 1;
19432                 D(p->level--);
19433                 return NULL;
19434             }
19435             goto done;
19436         }
19437         p->mark = _mark;
19438         D(fprintf(stderr, "%*c%s invalid_with_item[%d-%d]: %s failed!\n", p->level, ' ',
19439                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression 'as' expression &(',' | ')' | ':')"));
19440     }
19441     _res = NULL;
19442   done:
19443     D(p->level--);
19444     return _res;
19445 }
19446 
19447 // invalid_for_target: ASYNC? 'for' star_expressions
19448 static void *
invalid_for_target_rule(Parser * p)19449 invalid_for_target_rule(Parser *p)
19450 {
19451     D(p->level++);
19452     if (p->error_indicator) {
19453         D(p->level--);
19454         return NULL;
19455     }
19456     void * _res = NULL;
19457     int _mark = p->mark;
19458     { // ASYNC? 'for' star_expressions
19459         if (p->error_indicator) {
19460             D(p->level--);
19461             return NULL;
19462         }
19463         D(fprintf(stderr, "%*c> invalid_for_target[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'for' star_expressions"));
19464         Token * _keyword;
19465         void *_opt_var;
19466         UNUSED(_opt_var); // Silence compiler warnings
19467         expr_ty a;
19468         if (
19469             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
19470             &&
19471             (_keyword = _PyPegen_expect_token(p, 517))  // token='for'
19472             &&
19473             (a = star_expressions_rule(p))  // star_expressions
19474         )
19475         {
19476             D(fprintf(stderr, "%*c+ invalid_for_target[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'for' star_expressions"));
19477             _res = RAISE_SYNTAX_ERROR_INVALID_TARGET ( FOR_TARGETS , a );
19478             if (_res == NULL && PyErr_Occurred()) {
19479                 p->error_indicator = 1;
19480                 D(p->level--);
19481                 return NULL;
19482             }
19483             goto done;
19484         }
19485         p->mark = _mark;
19486         D(fprintf(stderr, "%*c%s invalid_for_target[%d-%d]: %s failed!\n", p->level, ' ',
19487                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'for' star_expressions"));
19488     }
19489     _res = NULL;
19490   done:
19491     D(p->level--);
19492     return _res;
19493 }
19494 
19495 // invalid_group: '(' starred_expression ')' | '(' '**' expression ')'
19496 static void *
invalid_group_rule(Parser * p)19497 invalid_group_rule(Parser *p)
19498 {
19499     D(p->level++);
19500     if (p->error_indicator) {
19501         D(p->level--);
19502         return NULL;
19503     }
19504     void * _res = NULL;
19505     int _mark = p->mark;
19506     { // '(' starred_expression ')'
19507         if (p->error_indicator) {
19508             D(p->level--);
19509             return NULL;
19510         }
19511         D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' starred_expression ')'"));
19512         Token * _literal;
19513         Token * _literal_1;
19514         expr_ty a;
19515         if (
19516             (_literal = _PyPegen_expect_token(p, 7))  // token='('
19517             &&
19518             (a = starred_expression_rule(p))  // starred_expression
19519             &&
19520             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19521         )
19522         {
19523             D(fprintf(stderr, "%*c+ invalid_group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' starred_expression ')'"));
19524             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use starred expression here" );
19525             if (_res == NULL && PyErr_Occurred()) {
19526                 p->error_indicator = 1;
19527                 D(p->level--);
19528                 return NULL;
19529             }
19530             goto done;
19531         }
19532         p->mark = _mark;
19533         D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
19534                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' starred_expression ')'"));
19535     }
19536     { // '(' '**' expression ')'
19537         if (p->error_indicator) {
19538             D(p->level--);
19539             return NULL;
19540         }
19541         D(fprintf(stderr, "%*c> invalid_group[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' '**' expression ')'"));
19542         Token * _literal;
19543         Token * _literal_1;
19544         Token * a;
19545         expr_ty expression_var;
19546         if (
19547             (_literal = _PyPegen_expect_token(p, 7))  // token='('
19548             &&
19549             (a = _PyPegen_expect_token(p, 35))  // token='**'
19550             &&
19551             (expression_var = expression_rule(p))  // expression
19552             &&
19553             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19554         )
19555         {
19556             D(fprintf(stderr, "%*c+ invalid_group[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' '**' expression ')'"));
19557             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use double starred expression here" );
19558             if (_res == NULL && PyErr_Occurred()) {
19559                 p->error_indicator = 1;
19560                 D(p->level--);
19561                 return NULL;
19562             }
19563             goto done;
19564         }
19565         p->mark = _mark;
19566         D(fprintf(stderr, "%*c%s invalid_group[%d-%d]: %s failed!\n", p->level, ' ',
19567                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' '**' expression ')'"));
19568     }
19569     _res = NULL;
19570   done:
19571     D(p->level--);
19572     return _res;
19573 }
19574 
19575 // invalid_import_from_targets: import_from_as_names ',' NEWLINE
19576 static void *
invalid_import_from_targets_rule(Parser * p)19577 invalid_import_from_targets_rule(Parser *p)
19578 {
19579     D(p->level++);
19580     if (p->error_indicator) {
19581         D(p->level--);
19582         return NULL;
19583     }
19584     void * _res = NULL;
19585     int _mark = p->mark;
19586     { // import_from_as_names ',' NEWLINE
19587         if (p->error_indicator) {
19588             D(p->level--);
19589             return NULL;
19590         }
19591         D(fprintf(stderr, "%*c> invalid_import_from_targets[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_names ',' NEWLINE"));
19592         Token * _literal;
19593         asdl_alias_seq* import_from_as_names_var;
19594         Token * newline_var;
19595         if (
19596             (import_from_as_names_var = import_from_as_names_rule(p))  // import_from_as_names
19597             &&
19598             (_literal = _PyPegen_expect_token(p, 12))  // token=','
19599             &&
19600             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19601         )
19602         {
19603             D(fprintf(stderr, "%*c+ invalid_import_from_targets[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_names ',' NEWLINE"));
19604             _res = RAISE_SYNTAX_ERROR ( "trailing comma not allowed without surrounding parentheses" );
19605             if (_res == NULL && PyErr_Occurred()) {
19606                 p->error_indicator = 1;
19607                 D(p->level--);
19608                 return NULL;
19609             }
19610             goto done;
19611         }
19612         p->mark = _mark;
19613         D(fprintf(stderr, "%*c%s invalid_import_from_targets[%d-%d]: %s failed!\n", p->level, ' ',
19614                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_names ',' NEWLINE"));
19615     }
19616     _res = NULL;
19617   done:
19618     D(p->level--);
19619     return _res;
19620 }
19621 
19622 // invalid_with_stmt:
19623 //     | ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'
19624 //     | ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'
19625 static void *
invalid_with_stmt_rule(Parser * p)19626 invalid_with_stmt_rule(Parser *p)
19627 {
19628     D(p->level++);
19629     if (p->error_indicator) {
19630         D(p->level--);
19631         return NULL;
19632     }
19633     void * _res = NULL;
19634     int _mark = p->mark;
19635     { // ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'
19636         if (p->error_indicator) {
19637             D(p->level--);
19638             return NULL;
19639         }
19640         D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'"));
19641         asdl_seq * _gather_163_var;
19642         Token * _keyword;
19643         Token * _literal;
19644         void *_opt_var;
19645         UNUSED(_opt_var); // Silence compiler warnings
19646         if (
19647             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
19648             &&
19649             (_keyword = _PyPegen_expect_token(p, 519))  // token='with'
19650             &&
19651             (_gather_163_var = _gather_163_rule(p))  // ','.(expression ['as' star_target])+
19652             &&
19653             (_literal = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
19654         )
19655         {
19656             D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'"));
19657             _res = _PyPegen_dummy_name(p, _opt_var, _keyword, _gather_163_var, _literal);
19658             goto done;
19659         }
19660         p->mark = _mark;
19661         D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
19662                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ &&':'"));
19663     }
19664     { // ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'
19665         if (p->error_indicator) {
19666             D(p->level--);
19667             return NULL;
19668         }
19669         D(fprintf(stderr, "%*c> invalid_with_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'"));
19670         asdl_seq * _gather_165_var;
19671         Token * _keyword;
19672         Token * _literal;
19673         Token * _literal_1;
19674         Token * _literal_2;
19675         void *_opt_var;
19676         UNUSED(_opt_var); // Silence compiler warnings
19677         void *_opt_var_1;
19678         UNUSED(_opt_var_1); // Silence compiler warnings
19679         if (
19680             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
19681             &&
19682             (_keyword = _PyPegen_expect_token(p, 519))  // token='with'
19683             &&
19684             (_literal = _PyPegen_expect_token(p, 7))  // token='('
19685             &&
19686             (_gather_165_var = _gather_165_rule(p))  // ','.(expressions ['as' star_target])+
19687             &&
19688             (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
19689             &&
19690             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19691             &&
19692             (_literal_2 = _PyPegen_expect_forced_token(p, 11, ":"))  // forced_token=':'
19693         )
19694         {
19695             D(fprintf(stderr, "%*c+ invalid_with_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'"));
19696             _res = _PyPegen_dummy_name(p, _opt_var, _keyword, _literal, _gather_165_var, _opt_var_1, _literal_1, _literal_2);
19697             goto done;
19698         }
19699         p->mark = _mark;
19700         D(fprintf(stderr, "%*c%s invalid_with_stmt[%d-%d]: %s failed!\n", p->level, ' ',
19701                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' &&':'"));
19702     }
19703     _res = NULL;
19704   done:
19705     D(p->level--);
19706     return _res;
19707 }
19708 
19709 // invalid_with_stmt_indent:
19710 //     | ASYNC? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT
19711 //     | ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT
19712 static void *
invalid_with_stmt_indent_rule(Parser * p)19713 invalid_with_stmt_indent_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])+ ':' NEWLINE !INDENT
19723         if (p->error_indicator) {
19724             D(p->level--);
19725             return NULL;
19726         }
19727         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"));
19728         asdl_seq * _gather_167_var;
19729         Token * _literal;
19730         void *_opt_var;
19731         UNUSED(_opt_var); // Silence compiler warnings
19732         Token * a;
19733         Token * newline_var;
19734         if (
19735             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
19736             &&
19737             (a = _PyPegen_expect_token(p, 519))  // token='with'
19738             &&
19739             (_gather_167_var = _gather_167_rule(p))  // ','.(expression ['as' star_target])+
19740             &&
19741             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
19742             &&
19743             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19744             &&
19745             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
19746         )
19747         {
19748             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"));
19749             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'with' statement on line %d" , a -> lineno );
19750             if (_res == NULL && PyErr_Occurred()) {
19751                 p->error_indicator = 1;
19752                 D(p->level--);
19753                 return NULL;
19754             }
19755             goto done;
19756         }
19757         p->mark = _mark;
19758         D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
19759                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'with' ','.(expression ['as' star_target])+ ':' NEWLINE !INDENT"));
19760     }
19761     { // ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT
19762         if (p->error_indicator) {
19763             D(p->level--);
19764             return NULL;
19765         }
19766         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"));
19767         asdl_seq * _gather_169_var;
19768         Token * _literal;
19769         Token * _literal_1;
19770         Token * _literal_2;
19771         void *_opt_var;
19772         UNUSED(_opt_var); // Silence compiler warnings
19773         void *_opt_var_1;
19774         UNUSED(_opt_var_1); // Silence compiler warnings
19775         Token * a;
19776         Token * newline_var;
19777         if (
19778             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
19779             &&
19780             (a = _PyPegen_expect_token(p, 519))  // token='with'
19781             &&
19782             (_literal = _PyPegen_expect_token(p, 7))  // token='('
19783             &&
19784             (_gather_169_var = _gather_169_rule(p))  // ','.(expressions ['as' star_target])+
19785             &&
19786             (_opt_var_1 = _PyPegen_expect_token(p, 12), !p->error_indicator)  // ','?
19787             &&
19788             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
19789             &&
19790             (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
19791             &&
19792             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19793             &&
19794             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
19795         )
19796         {
19797             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"));
19798             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'with' statement on line %d" , a -> lineno );
19799             if (_res == NULL && PyErr_Occurred()) {
19800                 p->error_indicator = 1;
19801                 D(p->level--);
19802                 return NULL;
19803             }
19804             goto done;
19805         }
19806         p->mark = _mark;
19807         D(fprintf(stderr, "%*c%s invalid_with_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
19808                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'with' '(' ','.(expressions ['as' star_target])+ ','? ')' ':' NEWLINE !INDENT"));
19809     }
19810     _res = NULL;
19811   done:
19812     D(p->level--);
19813     return _res;
19814 }
19815 
19816 // invalid_try_stmt: 'try' ':' NEWLINE !INDENT | 'try' ':' block !('except' | 'finally')
19817 static void *
invalid_try_stmt_rule(Parser * p)19818 invalid_try_stmt_rule(Parser *p)
19819 {
19820     D(p->level++);
19821     if (p->error_indicator) {
19822         D(p->level--);
19823         return NULL;
19824     }
19825     void * _res = NULL;
19826     int _mark = p->mark;
19827     { // 'try' ':' NEWLINE !INDENT
19828         if (p->error_indicator) {
19829             D(p->level--);
19830             return NULL;
19831         }
19832         D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
19833         Token * _literal;
19834         Token * a;
19835         Token * newline_var;
19836         if (
19837             (a = _PyPegen_expect_token(p, 511))  // token='try'
19838             &&
19839             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
19840             &&
19841             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19842             &&
19843             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
19844         )
19845         {
19846             D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
19847             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'try' statement on line %d" , a -> lineno );
19848             if (_res == NULL && PyErr_Occurred()) {
19849                 p->error_indicator = 1;
19850                 D(p->level--);
19851                 return NULL;
19852             }
19853             goto done;
19854         }
19855         p->mark = _mark;
19856         D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
19857                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' NEWLINE !INDENT"));
19858     }
19859     { // 'try' ':' block !('except' | 'finally')
19860         if (p->error_indicator) {
19861             D(p->level--);
19862             return NULL;
19863         }
19864         D(fprintf(stderr, "%*c> invalid_try_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
19865         Token * _keyword;
19866         Token * _literal;
19867         asdl_stmt_seq* block_var;
19868         if (
19869             (_keyword = _PyPegen_expect_token(p, 511))  // token='try'
19870             &&
19871             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
19872             &&
19873             (block_var = block_rule(p))  // block
19874             &&
19875             _PyPegen_lookahead(0, _tmp_171_rule, p)
19876         )
19877         {
19878             D(fprintf(stderr, "%*c+ invalid_try_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
19879             _res = RAISE_SYNTAX_ERROR ( "expected 'except' or 'finally' block" );
19880             if (_res == NULL && PyErr_Occurred()) {
19881                 p->error_indicator = 1;
19882                 D(p->level--);
19883                 return NULL;
19884             }
19885             goto done;
19886         }
19887         p->mark = _mark;
19888         D(fprintf(stderr, "%*c%s invalid_try_stmt[%d-%d]: %s failed!\n", p->level, ' ',
19889                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'try' ':' block !('except' | 'finally')"));
19890     }
19891     _res = NULL;
19892   done:
19893     D(p->level--);
19894     return _res;
19895 }
19896 
19897 // invalid_except_stmt:
19898 //     | 'except' expression ',' expressions ['as' NAME] ':'
19899 //     | 'except' expression ['as' NAME] NEWLINE
19900 //     | 'except' NEWLINE
19901 static void *
invalid_except_stmt_rule(Parser * p)19902 invalid_except_stmt_rule(Parser *p)
19903 {
19904     D(p->level++);
19905     if (p->error_indicator) {
19906         D(p->level--);
19907         return NULL;
19908     }
19909     void * _res = NULL;
19910     int _mark = p->mark;
19911     { // 'except' expression ',' expressions ['as' NAME] ':'
19912         if (p->error_indicator) {
19913             D(p->level--);
19914             return NULL;
19915         }
19916         D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ',' expressions ['as' NAME] ':'"));
19917         Token * _keyword;
19918         Token * _literal;
19919         Token * _literal_1;
19920         void *_opt_var;
19921         UNUSED(_opt_var); // Silence compiler warnings
19922         expr_ty a;
19923         expr_ty expressions_var;
19924         if (
19925             (_keyword = _PyPegen_expect_token(p, 521))  // token='except'
19926             &&
19927             (a = expression_rule(p))  // expression
19928             &&
19929             (_literal = _PyPegen_expect_token(p, 12))  // token=','
19930             &&
19931             (expressions_var = expressions_rule(p))  // expressions
19932             &&
19933             (_opt_var = _tmp_172_rule(p), !p->error_indicator)  // ['as' NAME]
19934             &&
19935             (_literal_1 = _PyPegen_expect_token(p, 11))  // token=':'
19936         )
19937         {
19938             D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ',' expressions ['as' NAME] ':'"));
19939             _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "multiple exception types must be parenthesized" );
19940             if (_res == NULL && PyErr_Occurred()) {
19941                 p->error_indicator = 1;
19942                 D(p->level--);
19943                 return NULL;
19944             }
19945             goto done;
19946         }
19947         p->mark = _mark;
19948         D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
19949                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ',' expressions ['as' NAME] ':'"));
19950     }
19951     { // 'except' expression ['as' NAME] NEWLINE
19952         if (p->error_indicator) {
19953             D(p->level--);
19954             return NULL;
19955         }
19956         D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
19957         void *_opt_var;
19958         UNUSED(_opt_var); // Silence compiler warnings
19959         Token * a;
19960         expr_ty expression_var;
19961         Token * newline_var;
19962         if (
19963             (a = _PyPegen_expect_token(p, 521))  // token='except'
19964             &&
19965             (expression_var = expression_rule(p))  // expression
19966             &&
19967             (_opt_var = _tmp_173_rule(p), !p->error_indicator)  // ['as' NAME]
19968             &&
19969             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19970         )
19971         {
19972             D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
19973             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
19974             if (_res == NULL && PyErr_Occurred()) {
19975                 p->error_indicator = 1;
19976                 D(p->level--);
19977                 return NULL;
19978             }
19979             goto done;
19980         }
19981         p->mark = _mark;
19982         D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
19983                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] NEWLINE"));
19984     }
19985     { // 'except' NEWLINE
19986         if (p->error_indicator) {
19987             D(p->level--);
19988             return NULL;
19989         }
19990         D(fprintf(stderr, "%*c> invalid_except_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
19991         Token * a;
19992         Token * newline_var;
19993         if (
19994             (a = _PyPegen_expect_token(p, 521))  // token='except'
19995             &&
19996             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
19997         )
19998         {
19999             D(fprintf(stderr, "%*c+ invalid_except_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' NEWLINE"));
20000             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
20001             if (_res == NULL && PyErr_Occurred()) {
20002                 p->error_indicator = 1;
20003                 D(p->level--);
20004                 return NULL;
20005             }
20006             goto done;
20007         }
20008         p->mark = _mark;
20009         D(fprintf(stderr, "%*c%s invalid_except_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20010                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' NEWLINE"));
20011     }
20012     _res = NULL;
20013   done:
20014     D(p->level--);
20015     return _res;
20016 }
20017 
20018 // invalid_finally_stmt: 'finally' ':' NEWLINE !INDENT
20019 static void *
invalid_finally_stmt_rule(Parser * p)20020 invalid_finally_stmt_rule(Parser *p)
20021 {
20022     D(p->level++);
20023     if (p->error_indicator) {
20024         D(p->level--);
20025         return NULL;
20026     }
20027     void * _res = NULL;
20028     int _mark = p->mark;
20029     { // 'finally' ':' NEWLINE !INDENT
20030         if (p->error_indicator) {
20031             D(p->level--);
20032             return NULL;
20033         }
20034         D(fprintf(stderr, "%*c> invalid_finally_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
20035         Token * _literal;
20036         Token * a;
20037         Token * newline_var;
20038         if (
20039             (a = _PyPegen_expect_token(p, 522))  // token='finally'
20040             &&
20041             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20042             &&
20043             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20044             &&
20045             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20046         )
20047         {
20048             D(fprintf(stderr, "%*c+ invalid_finally_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
20049             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'finally' statement on line %d" , a -> lineno );
20050             if (_res == NULL && PyErr_Occurred()) {
20051                 p->error_indicator = 1;
20052                 D(p->level--);
20053                 return NULL;
20054             }
20055             goto done;
20056         }
20057         p->mark = _mark;
20058         D(fprintf(stderr, "%*c%s invalid_finally_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20059                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally' ':' NEWLINE !INDENT"));
20060     }
20061     _res = NULL;
20062   done:
20063     D(p->level--);
20064     return _res;
20065 }
20066 
20067 // invalid_except_stmt_indent:
20068 //     | 'except' expression ['as' NAME] ':' NEWLINE !INDENT
20069 //     | 'except' ':' NEWLINE !INDENT
20070 static void *
invalid_except_stmt_indent_rule(Parser * p)20071 invalid_except_stmt_indent_rule(Parser *p)
20072 {
20073     D(p->level++);
20074     if (p->error_indicator) {
20075         D(p->level--);
20076         return NULL;
20077     }
20078     void * _res = NULL;
20079     int _mark = p->mark;
20080     { // 'except' expression ['as' NAME] ':' NEWLINE !INDENT
20081         if (p->error_indicator) {
20082             D(p->level--);
20083             return NULL;
20084         }
20085         D(fprintf(stderr, "%*c> invalid_except_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
20086         Token * _literal;
20087         void *_opt_var;
20088         UNUSED(_opt_var); // Silence compiler warnings
20089         Token * a;
20090         expr_ty expression_var;
20091         Token * newline_var;
20092         if (
20093             (a = _PyPegen_expect_token(p, 521))  // token='except'
20094             &&
20095             (expression_var = expression_rule(p))  // expression
20096             &&
20097             (_opt_var = _tmp_174_rule(p), !p->error_indicator)  // ['as' NAME]
20098             &&
20099             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20100             &&
20101             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20102             &&
20103             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20104         )
20105         {
20106             D(fprintf(stderr, "%*c+ invalid_except_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
20107             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'except' statement on line %d" , a -> lineno );
20108             if (_res == NULL && PyErr_Occurred()) {
20109                 p->error_indicator = 1;
20110                 D(p->level--);
20111                 return NULL;
20112             }
20113             goto done;
20114         }
20115         p->mark = _mark;
20116         D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
20117                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' expression ['as' NAME] ':' NEWLINE !INDENT"));
20118     }
20119     { // 'except' ':' NEWLINE !INDENT
20120         if (p->error_indicator) {
20121             D(p->level--);
20122             return NULL;
20123         }
20124         D(fprintf(stderr, "%*c> invalid_except_stmt_indent[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
20125         Token * _literal;
20126         Token * a;
20127         Token * newline_var;
20128         if (
20129             (a = _PyPegen_expect_token(p, 521))  // token='except'
20130             &&
20131             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20132             &&
20133             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20134             &&
20135             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20136         )
20137         {
20138             D(fprintf(stderr, "%*c+ invalid_except_stmt_indent[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
20139             _res = RAISE_SYNTAX_ERROR ( "expected an indented block after except statement on line %d" , a -> lineno );
20140             if (_res == NULL && PyErr_Occurred()) {
20141                 p->error_indicator = 1;
20142                 D(p->level--);
20143                 return NULL;
20144             }
20145             goto done;
20146         }
20147         p->mark = _mark;
20148         D(fprintf(stderr, "%*c%s invalid_except_stmt_indent[%d-%d]: %s failed!\n", p->level, ' ',
20149                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except' ':' NEWLINE !INDENT"));
20150     }
20151     _res = NULL;
20152   done:
20153     D(p->level--);
20154     return _res;
20155 }
20156 
20157 // invalid_match_stmt:
20158 //     | "match" subject_expr !':'
20159 //     | "match" subject_expr ':' NEWLINE !INDENT
20160 static void *
invalid_match_stmt_rule(Parser * p)20161 invalid_match_stmt_rule(Parser *p)
20162 {
20163     D(p->level++);
20164     if (p->error_indicator) {
20165         D(p->level--);
20166         return NULL;
20167     }
20168     void * _res = NULL;
20169     int _mark = p->mark;
20170     { // "match" subject_expr !':'
20171         if (p->error_indicator) {
20172             D(p->level--);
20173             return NULL;
20174         }
20175         D(fprintf(stderr, "%*c> invalid_match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr !':'"));
20176         expr_ty _keyword;
20177         expr_ty subject_expr_var;
20178         if (
20179             (_keyword = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
20180             &&
20181             (subject_expr_var = subject_expr_rule(p))  // subject_expr
20182             &&
20183             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 11)  // token=':'
20184         )
20185         {
20186             D(fprintf(stderr, "%*c+ invalid_match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr !':'"));
20187             _res = CHECK_VERSION ( void * , 10 , "Pattern matching is" , RAISE_SYNTAX_ERROR ( "expected ':'" ) );
20188             if (_res == NULL && PyErr_Occurred()) {
20189                 p->error_indicator = 1;
20190                 D(p->level--);
20191                 return NULL;
20192             }
20193             goto done;
20194         }
20195         p->mark = _mark;
20196         D(fprintf(stderr, "%*c%s invalid_match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20197                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr !':'"));
20198     }
20199     { // "match" subject_expr ':' NEWLINE !INDENT
20200         if (p->error_indicator) {
20201             D(p->level--);
20202             return NULL;
20203         }
20204         D(fprintf(stderr, "%*c> invalid_match_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
20205         Token * _literal;
20206         expr_ty a;
20207         Token * newline_var;
20208         expr_ty subject;
20209         if (
20210             (a = _PyPegen_expect_soft_keyword(p, "match"))  // soft_keyword='"match"'
20211             &&
20212             (subject = subject_expr_rule(p))  // subject_expr
20213             &&
20214             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20215             &&
20216             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20217             &&
20218             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20219         )
20220         {
20221             D(fprintf(stderr, "%*c+ invalid_match_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
20222             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'match' statement on line %d" , a -> lineno );
20223             if (_res == NULL && PyErr_Occurred()) {
20224                 p->error_indicator = 1;
20225                 D(p->level--);
20226                 return NULL;
20227             }
20228             goto done;
20229         }
20230         p->mark = _mark;
20231         D(fprintf(stderr, "%*c%s invalid_match_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20232                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"match\" subject_expr ':' NEWLINE !INDENT"));
20233     }
20234     _res = NULL;
20235   done:
20236     D(p->level--);
20237     return _res;
20238 }
20239 
20240 // invalid_case_block:
20241 //     | "case" patterns guard? !':'
20242 //     | "case" patterns guard? ':' NEWLINE !INDENT
20243 static void *
invalid_case_block_rule(Parser * p)20244 invalid_case_block_rule(Parser *p)
20245 {
20246     D(p->level++);
20247     if (p->error_indicator) {
20248         D(p->level--);
20249         return NULL;
20250     }
20251     void * _res = NULL;
20252     int _mark = p->mark;
20253     { // "case" patterns guard? !':'
20254         if (p->error_indicator) {
20255             D(p->level--);
20256             return NULL;
20257         }
20258         D(fprintf(stderr, "%*c> invalid_case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? !':'"));
20259         expr_ty _keyword;
20260         void *_opt_var;
20261         UNUSED(_opt_var); // Silence compiler warnings
20262         pattern_ty patterns_var;
20263         if (
20264             (_keyword = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
20265             &&
20266             (patterns_var = patterns_rule(p))  // patterns
20267             &&
20268             (_opt_var = guard_rule(p), !p->error_indicator)  // guard?
20269             &&
20270             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 11)  // token=':'
20271         )
20272         {
20273             D(fprintf(stderr, "%*c+ invalid_case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? !':'"));
20274             _res = 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_case_block[%d-%d]: %s failed!\n", p->level, ' ',
20284                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? !':'"));
20285     }
20286     { // "case" patterns guard? ':' NEWLINE !INDENT
20287         if (p->error_indicator) {
20288             D(p->level--);
20289             return NULL;
20290         }
20291         D(fprintf(stderr, "%*c> invalid_case_block[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
20292         Token * _literal;
20293         void *_opt_var;
20294         UNUSED(_opt_var); // Silence compiler warnings
20295         expr_ty a;
20296         Token * newline_var;
20297         pattern_ty patterns_var;
20298         if (
20299             (a = _PyPegen_expect_soft_keyword(p, "case"))  // soft_keyword='"case"'
20300             &&
20301             (patterns_var = patterns_rule(p))  // patterns
20302             &&
20303             (_opt_var = guard_rule(p), !p->error_indicator)  // guard?
20304             &&
20305             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20306             &&
20307             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20308             &&
20309             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20310         )
20311         {
20312             D(fprintf(stderr, "%*c+ invalid_case_block[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
20313             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'case' statement on line %d" , a -> lineno );
20314             if (_res == NULL && PyErr_Occurred()) {
20315                 p->error_indicator = 1;
20316                 D(p->level--);
20317                 return NULL;
20318             }
20319             goto done;
20320         }
20321         p->mark = _mark;
20322         D(fprintf(stderr, "%*c%s invalid_case_block[%d-%d]: %s failed!\n", p->level, ' ',
20323                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "\"case\" patterns guard? ':' NEWLINE !INDENT"));
20324     }
20325     _res = NULL;
20326   done:
20327     D(p->level--);
20328     return _res;
20329 }
20330 
20331 // invalid_as_pattern: or_pattern 'as' "_" | or_pattern 'as' !NAME expression
20332 static void *
invalid_as_pattern_rule(Parser * p)20333 invalid_as_pattern_rule(Parser *p)
20334 {
20335     D(p->level++);
20336     if (p->error_indicator) {
20337         D(p->level--);
20338         return NULL;
20339     }
20340     void * _res = NULL;
20341     int _mark = p->mark;
20342     { // or_pattern 'as' "_"
20343         if (p->error_indicator) {
20344             D(p->level--);
20345             return NULL;
20346         }
20347         D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\""));
20348         Token * _keyword;
20349         expr_ty a;
20350         pattern_ty or_pattern_var;
20351         if (
20352             (or_pattern_var = or_pattern_rule(p))  // or_pattern
20353             &&
20354             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
20355             &&
20356             (a = _PyPegen_expect_soft_keyword(p, "_"))  // soft_keyword='"_"'
20357         )
20358         {
20359             D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' \"_\""));
20360             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "cannot use '_' as a target" );
20361             if (_res == NULL && PyErr_Occurred()) {
20362                 p->error_indicator = 1;
20363                 D(p->level--);
20364                 return NULL;
20365             }
20366             goto done;
20367         }
20368         p->mark = _mark;
20369         D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
20370                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' \"_\""));
20371     }
20372     { // or_pattern 'as' !NAME expression
20373         if (p->error_indicator) {
20374             D(p->level--);
20375             return NULL;
20376         }
20377         D(fprintf(stderr, "%*c> invalid_as_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' !NAME expression"));
20378         Token * _keyword;
20379         expr_ty a;
20380         pattern_ty or_pattern_var;
20381         if (
20382             (or_pattern_var = or_pattern_rule(p))  // or_pattern
20383             &&
20384             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
20385             &&
20386             _PyPegen_lookahead_with_name(0, _PyPegen_name_token, p)
20387             &&
20388             (a = expression_rule(p))  // expression
20389         )
20390         {
20391             D(fprintf(stderr, "%*c+ invalid_as_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "or_pattern 'as' !NAME expression"));
20392             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "invalid pattern target" );
20393             if (_res == NULL && PyErr_Occurred()) {
20394                 p->error_indicator = 1;
20395                 D(p->level--);
20396                 return NULL;
20397             }
20398             goto done;
20399         }
20400         p->mark = _mark;
20401         D(fprintf(stderr, "%*c%s invalid_as_pattern[%d-%d]: %s failed!\n", p->level, ' ',
20402                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "or_pattern 'as' !NAME expression"));
20403     }
20404     _res = NULL;
20405   done:
20406     D(p->level--);
20407     return _res;
20408 }
20409 
20410 // invalid_class_pattern: name_or_attr '(' invalid_class_argument_pattern
20411 static void *
invalid_class_pattern_rule(Parser * p)20412 invalid_class_pattern_rule(Parser *p)
20413 {
20414     D(p->level++);
20415     if (p->error_indicator) {
20416         D(p->level--);
20417         return NULL;
20418     }
20419     void * _res = NULL;
20420     int _mark = p->mark;
20421     { // name_or_attr '(' invalid_class_argument_pattern
20422         if (p->error_indicator) {
20423             D(p->level--);
20424             return NULL;
20425         }
20426         D(fprintf(stderr, "%*c> invalid_class_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
20427         Token * _literal;
20428         asdl_pattern_seq* a;
20429         expr_ty name_or_attr_var;
20430         if (
20431             (name_or_attr_var = name_or_attr_rule(p))  // name_or_attr
20432             &&
20433             (_literal = _PyPegen_expect_token(p, 7))  // token='('
20434             &&
20435             (a = invalid_class_argument_pattern_rule(p))  // invalid_class_argument_pattern
20436         )
20437         {
20438             D(fprintf(stderr, "%*c+ invalid_class_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
20439             _res = RAISE_SYNTAX_ERROR_KNOWN_RANGE ( PyPegen_first_item ( a , pattern_ty ) , PyPegen_last_item ( a , pattern_ty ) , "positional patterns follow keyword patterns" );
20440             if (_res == NULL && PyErr_Occurred()) {
20441                 p->error_indicator = 1;
20442                 D(p->level--);
20443                 return NULL;
20444             }
20445             goto done;
20446         }
20447         p->mark = _mark;
20448         D(fprintf(stderr, "%*c%s invalid_class_pattern[%d-%d]: %s failed!\n", p->level, ' ',
20449                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "name_or_attr '(' invalid_class_argument_pattern"));
20450     }
20451     _res = NULL;
20452   done:
20453     D(p->level--);
20454     return _res;
20455 }
20456 
20457 // invalid_class_argument_pattern:
20458 //     | [positional_patterns ','] keyword_patterns ',' positional_patterns
20459 static asdl_pattern_seq*
invalid_class_argument_pattern_rule(Parser * p)20460 invalid_class_argument_pattern_rule(Parser *p)
20461 {
20462     D(p->level++);
20463     if (p->error_indicator) {
20464         D(p->level--);
20465         return NULL;
20466     }
20467     asdl_pattern_seq* _res = NULL;
20468     int _mark = p->mark;
20469     { // [positional_patterns ','] keyword_patterns ',' positional_patterns
20470         if (p->error_indicator) {
20471             D(p->level--);
20472             return NULL;
20473         }
20474         D(fprintf(stderr, "%*c> invalid_class_argument_pattern[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
20475         Token * _literal;
20476         void *_opt_var;
20477         UNUSED(_opt_var); // Silence compiler warnings
20478         asdl_pattern_seq* a;
20479         asdl_seq* keyword_patterns_var;
20480         if (
20481             (_opt_var = _tmp_175_rule(p), !p->error_indicator)  // [positional_patterns ',']
20482             &&
20483             (keyword_patterns_var = keyword_patterns_rule(p))  // keyword_patterns
20484             &&
20485             (_literal = _PyPegen_expect_token(p, 12))  // token=','
20486             &&
20487             (a = positional_patterns_rule(p))  // positional_patterns
20488         )
20489         {
20490             D(fprintf(stderr, "%*c+ invalid_class_argument_pattern[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
20491             _res = a;
20492             if (_res == NULL && PyErr_Occurred()) {
20493                 p->error_indicator = 1;
20494                 D(p->level--);
20495                 return NULL;
20496             }
20497             goto done;
20498         }
20499         p->mark = _mark;
20500         D(fprintf(stderr, "%*c%s invalid_class_argument_pattern[%d-%d]: %s failed!\n", p->level, ' ',
20501                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "[positional_patterns ','] keyword_patterns ',' positional_patterns"));
20502     }
20503     _res = NULL;
20504   done:
20505     D(p->level--);
20506     return _res;
20507 }
20508 
20509 // invalid_if_stmt:
20510 //     | 'if' named_expression NEWLINE
20511 //     | 'if' named_expression ':' NEWLINE !INDENT
20512 static void *
invalid_if_stmt_rule(Parser * p)20513 invalid_if_stmt_rule(Parser *p)
20514 {
20515     D(p->level++);
20516     if (p->error_indicator) {
20517         D(p->level--);
20518         return NULL;
20519     }
20520     void * _res = NULL;
20521     int _mark = p->mark;
20522     { // 'if' named_expression NEWLINE
20523         if (p->error_indicator) {
20524             D(p->level--);
20525             return NULL;
20526         }
20527         D(fprintf(stderr, "%*c> invalid_if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression NEWLINE"));
20528         Token * _keyword;
20529         expr_ty named_expression_var;
20530         Token * newline_var;
20531         if (
20532             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
20533             &&
20534             (named_expression_var = named_expression_rule(p))  // named_expression
20535             &&
20536             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20537         )
20538         {
20539             D(fprintf(stderr, "%*c+ invalid_if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression NEWLINE"));
20540             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
20541             if (_res == NULL && PyErr_Occurred()) {
20542                 p->error_indicator = 1;
20543                 D(p->level--);
20544                 return NULL;
20545             }
20546             goto done;
20547         }
20548         p->mark = _mark;
20549         D(fprintf(stderr, "%*c%s invalid_if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20550                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression NEWLINE"));
20551     }
20552     { // 'if' named_expression ':' NEWLINE !INDENT
20553         if (p->error_indicator) {
20554             D(p->level--);
20555             return NULL;
20556         }
20557         D(fprintf(stderr, "%*c> invalid_if_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
20558         Token * _literal;
20559         Token * a;
20560         expr_ty a_1;
20561         Token * newline_var;
20562         if (
20563             (a = _PyPegen_expect_token(p, 510))  // token='if'
20564             &&
20565             (a_1 = named_expression_rule(p))  // named_expression
20566             &&
20567             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20568             &&
20569             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20570             &&
20571             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20572         )
20573         {
20574             D(fprintf(stderr, "%*c+ invalid_if_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
20575             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'if' statement on line %d" , a -> lineno );
20576             if (_res == NULL && PyErr_Occurred()) {
20577                 p->error_indicator = 1;
20578                 D(p->level--);
20579                 return NULL;
20580             }
20581             goto done;
20582         }
20583         p->mark = _mark;
20584         D(fprintf(stderr, "%*c%s invalid_if_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20585                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' named_expression ':' NEWLINE !INDENT"));
20586     }
20587     _res = NULL;
20588   done:
20589     D(p->level--);
20590     return _res;
20591 }
20592 
20593 // invalid_elif_stmt:
20594 //     | 'elif' named_expression NEWLINE
20595 //     | 'elif' named_expression ':' NEWLINE !INDENT
20596 static void *
invalid_elif_stmt_rule(Parser * p)20597 invalid_elif_stmt_rule(Parser *p)
20598 {
20599     D(p->level++);
20600     if (p->error_indicator) {
20601         D(p->level--);
20602         return NULL;
20603     }
20604     void * _res = NULL;
20605     int _mark = p->mark;
20606     { // 'elif' named_expression NEWLINE
20607         if (p->error_indicator) {
20608             D(p->level--);
20609             return NULL;
20610         }
20611         D(fprintf(stderr, "%*c> invalid_elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression NEWLINE"));
20612         Token * _keyword;
20613         expr_ty named_expression_var;
20614         Token * newline_var;
20615         if (
20616             (_keyword = _PyPegen_expect_token(p, 515))  // token='elif'
20617             &&
20618             (named_expression_var = named_expression_rule(p))  // named_expression
20619             &&
20620             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20621         )
20622         {
20623             D(fprintf(stderr, "%*c+ invalid_elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression NEWLINE"));
20624             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
20625             if (_res == NULL && PyErr_Occurred()) {
20626                 p->error_indicator = 1;
20627                 D(p->level--);
20628                 return NULL;
20629             }
20630             goto done;
20631         }
20632         p->mark = _mark;
20633         D(fprintf(stderr, "%*c%s invalid_elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20634                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression NEWLINE"));
20635     }
20636     { // 'elif' named_expression ':' NEWLINE !INDENT
20637         if (p->error_indicator) {
20638             D(p->level--);
20639             return NULL;
20640         }
20641         D(fprintf(stderr, "%*c> invalid_elif_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
20642         Token * _literal;
20643         Token * a;
20644         expr_ty named_expression_var;
20645         Token * newline_var;
20646         if (
20647             (a = _PyPegen_expect_token(p, 515))  // token='elif'
20648             &&
20649             (named_expression_var = named_expression_rule(p))  // named_expression
20650             &&
20651             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20652             &&
20653             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20654             &&
20655             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20656         )
20657         {
20658             D(fprintf(stderr, "%*c+ invalid_elif_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
20659             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'elif' statement on line %d" , a -> lineno );
20660             if (_res == NULL && PyErr_Occurred()) {
20661                 p->error_indicator = 1;
20662                 D(p->level--);
20663                 return NULL;
20664             }
20665             goto done;
20666         }
20667         p->mark = _mark;
20668         D(fprintf(stderr, "%*c%s invalid_elif_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20669                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'elif' named_expression ':' NEWLINE !INDENT"));
20670     }
20671     _res = NULL;
20672   done:
20673     D(p->level--);
20674     return _res;
20675 }
20676 
20677 // invalid_else_stmt: 'else' ':' NEWLINE !INDENT
20678 static void *
invalid_else_stmt_rule(Parser * p)20679 invalid_else_stmt_rule(Parser *p)
20680 {
20681     D(p->level++);
20682     if (p->error_indicator) {
20683         D(p->level--);
20684         return NULL;
20685     }
20686     void * _res = NULL;
20687     int _mark = p->mark;
20688     { // 'else' ':' NEWLINE !INDENT
20689         if (p->error_indicator) {
20690             D(p->level--);
20691             return NULL;
20692         }
20693         D(fprintf(stderr, "%*c> invalid_else_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
20694         Token * _literal;
20695         Token * a;
20696         Token * newline_var;
20697         if (
20698             (a = _PyPegen_expect_token(p, 516))  // token='else'
20699             &&
20700             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20701             &&
20702             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20703             &&
20704             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20705         )
20706         {
20707             D(fprintf(stderr, "%*c+ invalid_else_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
20708             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'else' statement on line %d" , a -> lineno );
20709             if (_res == NULL && PyErr_Occurred()) {
20710                 p->error_indicator = 1;
20711                 D(p->level--);
20712                 return NULL;
20713             }
20714             goto done;
20715         }
20716         p->mark = _mark;
20717         D(fprintf(stderr, "%*c%s invalid_else_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20718                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else' ':' NEWLINE !INDENT"));
20719     }
20720     _res = NULL;
20721   done:
20722     D(p->level--);
20723     return _res;
20724 }
20725 
20726 // invalid_while_stmt:
20727 //     | 'while' named_expression NEWLINE
20728 //     | 'while' named_expression ':' NEWLINE !INDENT
20729 static void *
invalid_while_stmt_rule(Parser * p)20730 invalid_while_stmt_rule(Parser *p)
20731 {
20732     D(p->level++);
20733     if (p->error_indicator) {
20734         D(p->level--);
20735         return NULL;
20736     }
20737     void * _res = NULL;
20738     int _mark = p->mark;
20739     { // 'while' named_expression NEWLINE
20740         if (p->error_indicator) {
20741             D(p->level--);
20742             return NULL;
20743         }
20744         D(fprintf(stderr, "%*c> invalid_while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression NEWLINE"));
20745         Token * _keyword;
20746         expr_ty named_expression_var;
20747         Token * newline_var;
20748         if (
20749             (_keyword = _PyPegen_expect_token(p, 512))  // token='while'
20750             &&
20751             (named_expression_var = named_expression_rule(p))  // named_expression
20752             &&
20753             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20754         )
20755         {
20756             D(fprintf(stderr, "%*c+ invalid_while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression NEWLINE"));
20757             _res = RAISE_SYNTAX_ERROR ( "expected ':'" );
20758             if (_res == NULL && PyErr_Occurred()) {
20759                 p->error_indicator = 1;
20760                 D(p->level--);
20761                 return NULL;
20762             }
20763             goto done;
20764         }
20765         p->mark = _mark;
20766         D(fprintf(stderr, "%*c%s invalid_while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20767                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression NEWLINE"));
20768     }
20769     { // 'while' named_expression ':' NEWLINE !INDENT
20770         if (p->error_indicator) {
20771             D(p->level--);
20772             return NULL;
20773         }
20774         D(fprintf(stderr, "%*c> invalid_while_stmt[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
20775         Token * _literal;
20776         Token * a;
20777         expr_ty named_expression_var;
20778         Token * newline_var;
20779         if (
20780             (a = _PyPegen_expect_token(p, 512))  // token='while'
20781             &&
20782             (named_expression_var = named_expression_rule(p))  // named_expression
20783             &&
20784             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20785             &&
20786             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20787             &&
20788             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20789         )
20790         {
20791             D(fprintf(stderr, "%*c+ invalid_while_stmt[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
20792             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'while' statement on line %d" , a -> lineno );
20793             if (_res == NULL && PyErr_Occurred()) {
20794                 p->error_indicator = 1;
20795                 D(p->level--);
20796                 return NULL;
20797             }
20798             goto done;
20799         }
20800         p->mark = _mark;
20801         D(fprintf(stderr, "%*c%s invalid_while_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20802                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'while' named_expression ':' NEWLINE !INDENT"));
20803     }
20804     _res = NULL;
20805   done:
20806     D(p->level--);
20807     return _res;
20808 }
20809 
20810 // invalid_for_stmt: ASYNC? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT
20811 static void *
invalid_for_stmt_rule(Parser * p)20812 invalid_for_stmt_rule(Parser *p)
20813 {
20814     D(p->level++);
20815     if (p->error_indicator) {
20816         D(p->level--);
20817         return NULL;
20818     }
20819     void * _res = NULL;
20820     int _mark = p->mark;
20821     { // ASYNC? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT
20822         if (p->error_indicator) {
20823             D(p->level--);
20824             return NULL;
20825         }
20826         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"));
20827         Token * _keyword;
20828         Token * _literal;
20829         void *_opt_var;
20830         UNUSED(_opt_var); // Silence compiler warnings
20831         Token * a;
20832         Token * newline_var;
20833         expr_ty star_expressions_var;
20834         expr_ty star_targets_var;
20835         if (
20836             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
20837             &&
20838             (a = _PyPegen_expect_token(p, 517))  // token='for'
20839             &&
20840             (star_targets_var = star_targets_rule(p))  // star_targets
20841             &&
20842             (_keyword = _PyPegen_expect_token(p, 518))  // token='in'
20843             &&
20844             (star_expressions_var = star_expressions_rule(p))  // star_expressions
20845             &&
20846             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20847             &&
20848             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20849             &&
20850             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20851         )
20852         {
20853             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"));
20854             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after 'for' statement on line %d" , a -> lineno );
20855             if (_res == NULL && PyErr_Occurred()) {
20856                 p->error_indicator = 1;
20857                 D(p->level--);
20858                 return NULL;
20859             }
20860             goto done;
20861         }
20862         p->mark = _mark;
20863         D(fprintf(stderr, "%*c%s invalid_for_stmt[%d-%d]: %s failed!\n", p->level, ' ',
20864                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'for' star_targets 'in' star_expressions ':' NEWLINE !INDENT"));
20865     }
20866     _res = NULL;
20867   done:
20868     D(p->level--);
20869     return _res;
20870 }
20871 
20872 // invalid_def_raw:
20873 //     | ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT
20874 static void *
invalid_def_raw_rule(Parser * p)20875 invalid_def_raw_rule(Parser *p)
20876 {
20877     D(p->level++);
20878     if (p->error_indicator) {
20879         D(p->level--);
20880         return NULL;
20881     }
20882     void * _res = NULL;
20883     int _mark = p->mark;
20884     { // ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT
20885         if (p->error_indicator) {
20886             D(p->level--);
20887             return NULL;
20888         }
20889         D(fprintf(stderr, "%*c> invalid_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
20890         Token * _literal;
20891         Token * _literal_1;
20892         Token * _literal_2;
20893         void *_opt_var;
20894         UNUSED(_opt_var); // Silence compiler warnings
20895         void *_opt_var_1;
20896         UNUSED(_opt_var_1); // Silence compiler warnings
20897         void *_opt_var_2;
20898         UNUSED(_opt_var_2); // Silence compiler warnings
20899         Token * a;
20900         expr_ty name_var;
20901         Token * newline_var;
20902         if (
20903             (_opt_var = _PyPegen_expect_token(p, ASYNC), !p->error_indicator)  // ASYNC?
20904             &&
20905             (a = _PyPegen_expect_token(p, 526))  // token='def'
20906             &&
20907             (name_var = _PyPegen_name_token(p))  // NAME
20908             &&
20909             (_literal = _PyPegen_expect_token(p, 7))  // token='('
20910             &&
20911             (_opt_var_1 = params_rule(p), !p->error_indicator)  // params?
20912             &&
20913             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
20914             &&
20915             (_opt_var_2 = _tmp_176_rule(p), !p->error_indicator)  // ['->' expression]
20916             &&
20917             (_literal_2 = _PyPegen_expect_token(p, 11))  // token=':'
20918             &&
20919             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20920             &&
20921             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20922         )
20923         {
20924             D(fprintf(stderr, "%*c+ invalid_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
20925             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after function definition on line %d" , a -> lineno );
20926             if (_res == NULL && PyErr_Occurred()) {
20927                 p->error_indicator = 1;
20928                 D(p->level--);
20929                 return NULL;
20930             }
20931             goto done;
20932         }
20933         p->mark = _mark;
20934         D(fprintf(stderr, "%*c%s invalid_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
20935                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC? 'def' NAME '(' params? ')' ['->' expression] ':' NEWLINE !INDENT"));
20936     }
20937     _res = NULL;
20938   done:
20939     D(p->level--);
20940     return _res;
20941 }
20942 
20943 // invalid_class_def_raw: 'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT
20944 static void *
invalid_class_def_raw_rule(Parser * p)20945 invalid_class_def_raw_rule(Parser *p)
20946 {
20947     D(p->level++);
20948     if (p->error_indicator) {
20949         D(p->level--);
20950         return NULL;
20951     }
20952     void * _res = NULL;
20953     int _mark = p->mark;
20954     { // 'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT
20955         if (p->error_indicator) {
20956             D(p->level--);
20957             return NULL;
20958         }
20959         D(fprintf(stderr, "%*c> invalid_class_def_raw[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT"));
20960         Token * _literal;
20961         void *_opt_var;
20962         UNUSED(_opt_var); // Silence compiler warnings
20963         Token * a;
20964         expr_ty name_var;
20965         Token * newline_var;
20966         if (
20967             (a = _PyPegen_expect_token(p, 527))  // token='class'
20968             &&
20969             (name_var = _PyPegen_name_token(p))  // NAME
20970             &&
20971             (_opt_var = _tmp_177_rule(p), !p->error_indicator)  // ['(' arguments? ')']
20972             &&
20973             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
20974             &&
20975             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
20976             &&
20977             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, INDENT)  // token=INDENT
20978         )
20979         {
20980             D(fprintf(stderr, "%*c+ invalid_class_def_raw[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT"));
20981             _res = RAISE_INDENTATION_ERROR ( "expected an indented block after class definition on line %d" , a -> lineno );
20982             if (_res == NULL && PyErr_Occurred()) {
20983                 p->error_indicator = 1;
20984                 D(p->level--);
20985                 return NULL;
20986             }
20987             goto done;
20988         }
20989         p->mark = _mark;
20990         D(fprintf(stderr, "%*c%s invalid_class_def_raw[%d-%d]: %s failed!\n", p->level, ' ',
20991                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class' NAME ['(' arguments? ')'] ':' NEWLINE !INDENT"));
20992     }
20993     _res = NULL;
20994   done:
20995     D(p->level--);
20996     return _res;
20997 }
20998 
20999 // invalid_double_starred_kvpairs:
21000 //     | ','.double_starred_kvpair+ ',' invalid_kvpair
21001 //     | expression ':' '*' bitwise_or
21002 //     | expression ':' &('}' | ',')
21003 static void *
invalid_double_starred_kvpairs_rule(Parser * p)21004 invalid_double_starred_kvpairs_rule(Parser *p)
21005 {
21006     D(p->level++);
21007     if (p->error_indicator) {
21008         D(p->level--);
21009         return NULL;
21010     }
21011     void * _res = NULL;
21012     int _mark = p->mark;
21013     { // ','.double_starred_kvpair+ ',' invalid_kvpair
21014         if (p->error_indicator) {
21015             D(p->level--);
21016             return NULL;
21017         }
21018         D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
21019         asdl_seq * _gather_178_var;
21020         Token * _literal;
21021         void *invalid_kvpair_var;
21022         if (
21023             (_gather_178_var = _gather_178_rule(p))  // ','.double_starred_kvpair+
21024             &&
21025             (_literal = _PyPegen_expect_token(p, 12))  // token=','
21026             &&
21027             (invalid_kvpair_var = invalid_kvpair_rule(p))  // invalid_kvpair
21028         )
21029         {
21030             D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
21031             _res = _PyPegen_dummy_name(p, _gather_178_var, _literal, invalid_kvpair_var);
21032             goto done;
21033         }
21034         p->mark = _mark;
21035         D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
21036                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','.double_starred_kvpair+ ',' invalid_kvpair"));
21037     }
21038     { // expression ':' '*' bitwise_or
21039         if (p->error_indicator) {
21040             D(p->level--);
21041             return NULL;
21042         }
21043         D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
21044         Token * _literal;
21045         Token * a;
21046         expr_ty bitwise_or_var;
21047         expr_ty expression_var;
21048         if (
21049             (expression_var = expression_rule(p))  // expression
21050             &&
21051             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21052             &&
21053             (a = _PyPegen_expect_token(p, 16))  // token='*'
21054             &&
21055             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
21056         )
21057         {
21058             D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
21059             _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "cannot use a starred expression in a dictionary value" );
21060             if (_res == NULL && PyErr_Occurred()) {
21061                 p->error_indicator = 1;
21062                 D(p->level--);
21063                 return NULL;
21064             }
21065             goto done;
21066         }
21067         p->mark = _mark;
21068         D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
21069                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
21070     }
21071     { // expression ':' &('}' | ',')
21072         if (p->error_indicator) {
21073             D(p->level--);
21074             return NULL;
21075         }
21076         D(fprintf(stderr, "%*c> invalid_double_starred_kvpairs[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
21077         Token * a;
21078         expr_ty expression_var;
21079         if (
21080             (expression_var = expression_rule(p))  // expression
21081             &&
21082             (a = _PyPegen_expect_token(p, 11))  // token=':'
21083             &&
21084             _PyPegen_lookahead(1, _tmp_180_rule, p)
21085         )
21086         {
21087             D(fprintf(stderr, "%*c+ invalid_double_starred_kvpairs[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' &('}' | ',')"));
21088             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression expected after dictionary key and ':'" );
21089             if (_res == NULL && PyErr_Occurred()) {
21090                 p->error_indicator = 1;
21091                 D(p->level--);
21092                 return NULL;
21093             }
21094             goto done;
21095         }
21096         p->mark = _mark;
21097         D(fprintf(stderr, "%*c%s invalid_double_starred_kvpairs[%d-%d]: %s failed!\n", p->level, ' ',
21098                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' &('}' | ',')"));
21099     }
21100     _res = NULL;
21101   done:
21102     D(p->level--);
21103     return _res;
21104 }
21105 
21106 // invalid_kvpair: expression !(':') | expression ':' '*' bitwise_or | expression ':'
21107 static void *
invalid_kvpair_rule(Parser * p)21108 invalid_kvpair_rule(Parser *p)
21109 {
21110     D(p->level++);
21111     if (p->error_indicator) {
21112         D(p->level--);
21113         return NULL;
21114     }
21115     void * _res = NULL;
21116     int _mark = p->mark;
21117     { // expression !(':')
21118         if (p->error_indicator) {
21119             D(p->level--);
21120             return NULL;
21121         }
21122         D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
21123         expr_ty a;
21124         if (
21125             (a = expression_rule(p))  // expression
21126             &&
21127             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 11)  // token=(':')
21128         )
21129         {
21130             D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !(':')"));
21131             _res = RAISE_ERROR_KNOWN_LOCATION ( p , PyExc_SyntaxError , a -> lineno , a -> end_col_offset - 1 , a -> end_lineno , - 1 , "':' expected after dictionary key" );
21132             if (_res == NULL && PyErr_Occurred()) {
21133                 p->error_indicator = 1;
21134                 D(p->level--);
21135                 return NULL;
21136             }
21137             goto done;
21138         }
21139         p->mark = _mark;
21140         D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
21141                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !(':')"));
21142     }
21143     { // expression ':' '*' bitwise_or
21144         if (p->error_indicator) {
21145             D(p->level--);
21146             return NULL;
21147         }
21148         D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
21149         Token * _literal;
21150         Token * a;
21151         expr_ty bitwise_or_var;
21152         expr_ty expression_var;
21153         if (
21154             (expression_var = expression_rule(p))  // expression
21155             &&
21156             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
21157             &&
21158             (a = _PyPegen_expect_token(p, 16))  // token='*'
21159             &&
21160             (bitwise_or_var = bitwise_or_rule(p))  // bitwise_or
21161         )
21162         {
21163             D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':' '*' bitwise_or"));
21164             _res = RAISE_SYNTAX_ERROR_STARTING_FROM ( a , "cannot use a starred expression in a dictionary value" );
21165             if (_res == NULL && PyErr_Occurred()) {
21166                 p->error_indicator = 1;
21167                 D(p->level--);
21168                 return NULL;
21169             }
21170             goto done;
21171         }
21172         p->mark = _mark;
21173         D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
21174                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':' '*' bitwise_or"));
21175     }
21176     { // expression ':'
21177         if (p->error_indicator) {
21178             D(p->level--);
21179             return NULL;
21180         }
21181         D(fprintf(stderr, "%*c> invalid_kvpair[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ':'"));
21182         Token * a;
21183         expr_ty expression_var;
21184         if (
21185             (expression_var = expression_rule(p))  // expression
21186             &&
21187             (a = _PyPegen_expect_token(p, 11))  // token=':'
21188         )
21189         {
21190             D(fprintf(stderr, "%*c+ invalid_kvpair[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ':'"));
21191             _res = RAISE_SYNTAX_ERROR_KNOWN_LOCATION ( a , "expression expected after dictionary key and ':'" );
21192             if (_res == NULL && PyErr_Occurred()) {
21193                 p->error_indicator = 1;
21194                 D(p->level--);
21195                 return NULL;
21196             }
21197             goto done;
21198         }
21199         p->mark = _mark;
21200         D(fprintf(stderr, "%*c%s invalid_kvpair[%d-%d]: %s failed!\n", p->level, ' ',
21201                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ':'"));
21202     }
21203     _res = NULL;
21204   done:
21205     D(p->level--);
21206     return _res;
21207 }
21208 
21209 // _loop0_1: NEWLINE
21210 static asdl_seq *
_loop0_1_rule(Parser * p)21211 _loop0_1_rule(Parser *p)
21212 {
21213     D(p->level++);
21214     if (p->error_indicator) {
21215         D(p->level--);
21216         return NULL;
21217     }
21218     void *_res = NULL;
21219     int _mark = p->mark;
21220     int _start_mark = p->mark;
21221     void **_children = PyMem_Malloc(sizeof(void *));
21222     if (!_children) {
21223         p->error_indicator = 1;
21224         PyErr_NoMemory();
21225         D(p->level--);
21226         return NULL;
21227     }
21228     Py_ssize_t _children_capacity = 1;
21229     Py_ssize_t _n = 0;
21230     { // NEWLINE
21231         if (p->error_indicator) {
21232             D(p->level--);
21233             return NULL;
21234         }
21235         D(fprintf(stderr, "%*c> _loop0_1[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
21236         Token * newline_var;
21237         while (
21238             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21239         )
21240         {
21241             _res = newline_var;
21242             if (_n == _children_capacity) {
21243                 _children_capacity *= 2;
21244                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21245                 if (!_new_children) {
21246                     p->error_indicator = 1;
21247                     PyErr_NoMemory();
21248                     D(p->level--);
21249                     return NULL;
21250                 }
21251                 _children = _new_children;
21252             }
21253             _children[_n++] = _res;
21254             _mark = p->mark;
21255         }
21256         p->mark = _mark;
21257         D(fprintf(stderr, "%*c%s _loop0_1[%d-%d]: %s failed!\n", p->level, ' ',
21258                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
21259     }
21260     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21261     if (!_seq) {
21262         PyMem_Free(_children);
21263         p->error_indicator = 1;
21264         PyErr_NoMemory();
21265         D(p->level--);
21266         return NULL;
21267     }
21268     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21269     PyMem_Free(_children);
21270     _PyPegen_insert_memo(p, _start_mark, _loop0_1_type, _seq);
21271     D(p->level--);
21272     return _seq;
21273 }
21274 
21275 // _loop0_2: NEWLINE
21276 static asdl_seq *
_loop0_2_rule(Parser * p)21277 _loop0_2_rule(Parser *p)
21278 {
21279     D(p->level++);
21280     if (p->error_indicator) {
21281         D(p->level--);
21282         return NULL;
21283     }
21284     void *_res = NULL;
21285     int _mark = p->mark;
21286     int _start_mark = p->mark;
21287     void **_children = PyMem_Malloc(sizeof(void *));
21288     if (!_children) {
21289         p->error_indicator = 1;
21290         PyErr_NoMemory();
21291         D(p->level--);
21292         return NULL;
21293     }
21294     Py_ssize_t _children_capacity = 1;
21295     Py_ssize_t _n = 0;
21296     { // NEWLINE
21297         if (p->error_indicator) {
21298             D(p->level--);
21299             return NULL;
21300         }
21301         D(fprintf(stderr, "%*c> _loop0_2[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
21302         Token * newline_var;
21303         while (
21304             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
21305         )
21306         {
21307             _res = newline_var;
21308             if (_n == _children_capacity) {
21309                 _children_capacity *= 2;
21310                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21311                 if (!_new_children) {
21312                     p->error_indicator = 1;
21313                     PyErr_NoMemory();
21314                     D(p->level--);
21315                     return NULL;
21316                 }
21317                 _children = _new_children;
21318             }
21319             _children[_n++] = _res;
21320             _mark = p->mark;
21321         }
21322         p->mark = _mark;
21323         D(fprintf(stderr, "%*c%s _loop0_2[%d-%d]: %s failed!\n", p->level, ' ',
21324                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
21325     }
21326     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21327     if (!_seq) {
21328         PyMem_Free(_children);
21329         p->error_indicator = 1;
21330         PyErr_NoMemory();
21331         D(p->level--);
21332         return NULL;
21333     }
21334     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21335     PyMem_Free(_children);
21336     _PyPegen_insert_memo(p, _start_mark, _loop0_2_type, _seq);
21337     D(p->level--);
21338     return _seq;
21339 }
21340 
21341 // _loop0_4: ',' expression
21342 static asdl_seq *
_loop0_4_rule(Parser * p)21343 _loop0_4_rule(Parser *p)
21344 {
21345     D(p->level++);
21346     if (p->error_indicator) {
21347         D(p->level--);
21348         return NULL;
21349     }
21350     void *_res = NULL;
21351     int _mark = p->mark;
21352     int _start_mark = p->mark;
21353     void **_children = PyMem_Malloc(sizeof(void *));
21354     if (!_children) {
21355         p->error_indicator = 1;
21356         PyErr_NoMemory();
21357         D(p->level--);
21358         return NULL;
21359     }
21360     Py_ssize_t _children_capacity = 1;
21361     Py_ssize_t _n = 0;
21362     { // ',' expression
21363         if (p->error_indicator) {
21364             D(p->level--);
21365             return NULL;
21366         }
21367         D(fprintf(stderr, "%*c> _loop0_4[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
21368         Token * _literal;
21369         expr_ty elem;
21370         while (
21371             (_literal = _PyPegen_expect_token(p, 12))  // token=','
21372             &&
21373             (elem = expression_rule(p))  // expression
21374         )
21375         {
21376             _res = elem;
21377             if (_res == NULL && PyErr_Occurred()) {
21378                 p->error_indicator = 1;
21379                 PyMem_Free(_children);
21380                 D(p->level--);
21381                 return NULL;
21382             }
21383             if (_n == _children_capacity) {
21384                 _children_capacity *= 2;
21385                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21386                 if (!_new_children) {
21387                     p->error_indicator = 1;
21388                     PyErr_NoMemory();
21389                     D(p->level--);
21390                     return NULL;
21391                 }
21392                 _children = _new_children;
21393             }
21394             _children[_n++] = _res;
21395             _mark = p->mark;
21396         }
21397         p->mark = _mark;
21398         D(fprintf(stderr, "%*c%s _loop0_4[%d-%d]: %s failed!\n", p->level, ' ',
21399                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
21400     }
21401     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21402     if (!_seq) {
21403         PyMem_Free(_children);
21404         p->error_indicator = 1;
21405         PyErr_NoMemory();
21406         D(p->level--);
21407         return NULL;
21408     }
21409     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21410     PyMem_Free(_children);
21411     _PyPegen_insert_memo(p, _start_mark, _loop0_4_type, _seq);
21412     D(p->level--);
21413     return _seq;
21414 }
21415 
21416 // _gather_3: expression _loop0_4
21417 static asdl_seq *
_gather_3_rule(Parser * p)21418 _gather_3_rule(Parser *p)
21419 {
21420     D(p->level++);
21421     if (p->error_indicator) {
21422         D(p->level--);
21423         return NULL;
21424     }
21425     asdl_seq * _res = NULL;
21426     int _mark = p->mark;
21427     { // expression _loop0_4
21428         if (p->error_indicator) {
21429             D(p->level--);
21430             return NULL;
21431         }
21432         D(fprintf(stderr, "%*c> _gather_3[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_4"));
21433         expr_ty elem;
21434         asdl_seq * seq;
21435         if (
21436             (elem = expression_rule(p))  // expression
21437             &&
21438             (seq = _loop0_4_rule(p))  // _loop0_4
21439         )
21440         {
21441             D(fprintf(stderr, "%*c+ _gather_3[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_4"));
21442             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
21443             goto done;
21444         }
21445         p->mark = _mark;
21446         D(fprintf(stderr, "%*c%s _gather_3[%d-%d]: %s failed!\n", p->level, ' ',
21447                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_4"));
21448     }
21449     _res = NULL;
21450   done:
21451     D(p->level--);
21452     return _res;
21453 }
21454 
21455 // _loop0_6: ',' expression
21456 static asdl_seq *
_loop0_6_rule(Parser * p)21457 _loop0_6_rule(Parser *p)
21458 {
21459     D(p->level++);
21460     if (p->error_indicator) {
21461         D(p->level--);
21462         return NULL;
21463     }
21464     void *_res = NULL;
21465     int _mark = p->mark;
21466     int _start_mark = p->mark;
21467     void **_children = PyMem_Malloc(sizeof(void *));
21468     if (!_children) {
21469         p->error_indicator = 1;
21470         PyErr_NoMemory();
21471         D(p->level--);
21472         return NULL;
21473     }
21474     Py_ssize_t _children_capacity = 1;
21475     Py_ssize_t _n = 0;
21476     { // ',' expression
21477         if (p->error_indicator) {
21478             D(p->level--);
21479             return NULL;
21480         }
21481         D(fprintf(stderr, "%*c> _loop0_6[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
21482         Token * _literal;
21483         expr_ty elem;
21484         while (
21485             (_literal = _PyPegen_expect_token(p, 12))  // token=','
21486             &&
21487             (elem = expression_rule(p))  // expression
21488         )
21489         {
21490             _res = elem;
21491             if (_res == NULL && PyErr_Occurred()) {
21492                 p->error_indicator = 1;
21493                 PyMem_Free(_children);
21494                 D(p->level--);
21495                 return NULL;
21496             }
21497             if (_n == _children_capacity) {
21498                 _children_capacity *= 2;
21499                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21500                 if (!_new_children) {
21501                     p->error_indicator = 1;
21502                     PyErr_NoMemory();
21503                     D(p->level--);
21504                     return NULL;
21505                 }
21506                 _children = _new_children;
21507             }
21508             _children[_n++] = _res;
21509             _mark = p->mark;
21510         }
21511         p->mark = _mark;
21512         D(fprintf(stderr, "%*c%s _loop0_6[%d-%d]: %s failed!\n", p->level, ' ',
21513                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
21514     }
21515     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21516     if (!_seq) {
21517         PyMem_Free(_children);
21518         p->error_indicator = 1;
21519         PyErr_NoMemory();
21520         D(p->level--);
21521         return NULL;
21522     }
21523     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21524     PyMem_Free(_children);
21525     _PyPegen_insert_memo(p, _start_mark, _loop0_6_type, _seq);
21526     D(p->level--);
21527     return _seq;
21528 }
21529 
21530 // _gather_5: expression _loop0_6
21531 static asdl_seq *
_gather_5_rule(Parser * p)21532 _gather_5_rule(Parser *p)
21533 {
21534     D(p->level++);
21535     if (p->error_indicator) {
21536         D(p->level--);
21537         return NULL;
21538     }
21539     asdl_seq * _res = NULL;
21540     int _mark = p->mark;
21541     { // expression _loop0_6
21542         if (p->error_indicator) {
21543             D(p->level--);
21544             return NULL;
21545         }
21546         D(fprintf(stderr, "%*c> _gather_5[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_6"));
21547         expr_ty elem;
21548         asdl_seq * seq;
21549         if (
21550             (elem = expression_rule(p))  // expression
21551             &&
21552             (seq = _loop0_6_rule(p))  // _loop0_6
21553         )
21554         {
21555             D(fprintf(stderr, "%*c+ _gather_5[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_6"));
21556             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
21557             goto done;
21558         }
21559         p->mark = _mark;
21560         D(fprintf(stderr, "%*c%s _gather_5[%d-%d]: %s failed!\n", p->level, ' ',
21561                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_6"));
21562     }
21563     _res = NULL;
21564   done:
21565     D(p->level--);
21566     return _res;
21567 }
21568 
21569 // _loop0_8: ',' expression
21570 static asdl_seq *
_loop0_8_rule(Parser * p)21571 _loop0_8_rule(Parser *p)
21572 {
21573     D(p->level++);
21574     if (p->error_indicator) {
21575         D(p->level--);
21576         return NULL;
21577     }
21578     void *_res = NULL;
21579     int _mark = p->mark;
21580     int _start_mark = p->mark;
21581     void **_children = PyMem_Malloc(sizeof(void *));
21582     if (!_children) {
21583         p->error_indicator = 1;
21584         PyErr_NoMemory();
21585         D(p->level--);
21586         return NULL;
21587     }
21588     Py_ssize_t _children_capacity = 1;
21589     Py_ssize_t _n = 0;
21590     { // ',' expression
21591         if (p->error_indicator) {
21592             D(p->level--);
21593             return NULL;
21594         }
21595         D(fprintf(stderr, "%*c> _loop0_8[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
21596         Token * _literal;
21597         expr_ty elem;
21598         while (
21599             (_literal = _PyPegen_expect_token(p, 12))  // token=','
21600             &&
21601             (elem = expression_rule(p))  // expression
21602         )
21603         {
21604             _res = elem;
21605             if (_res == NULL && PyErr_Occurred()) {
21606                 p->error_indicator = 1;
21607                 PyMem_Free(_children);
21608                 D(p->level--);
21609                 return NULL;
21610             }
21611             if (_n == _children_capacity) {
21612                 _children_capacity *= 2;
21613                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21614                 if (!_new_children) {
21615                     p->error_indicator = 1;
21616                     PyErr_NoMemory();
21617                     D(p->level--);
21618                     return NULL;
21619                 }
21620                 _children = _new_children;
21621             }
21622             _children[_n++] = _res;
21623             _mark = p->mark;
21624         }
21625         p->mark = _mark;
21626         D(fprintf(stderr, "%*c%s _loop0_8[%d-%d]: %s failed!\n", p->level, ' ',
21627                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
21628     }
21629     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21630     if (!_seq) {
21631         PyMem_Free(_children);
21632         p->error_indicator = 1;
21633         PyErr_NoMemory();
21634         D(p->level--);
21635         return NULL;
21636     }
21637     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21638     PyMem_Free(_children);
21639     _PyPegen_insert_memo(p, _start_mark, _loop0_8_type, _seq);
21640     D(p->level--);
21641     return _seq;
21642 }
21643 
21644 // _gather_7: expression _loop0_8
21645 static asdl_seq *
_gather_7_rule(Parser * p)21646 _gather_7_rule(Parser *p)
21647 {
21648     D(p->level++);
21649     if (p->error_indicator) {
21650         D(p->level--);
21651         return NULL;
21652     }
21653     asdl_seq * _res = NULL;
21654     int _mark = p->mark;
21655     { // expression _loop0_8
21656         if (p->error_indicator) {
21657             D(p->level--);
21658             return NULL;
21659         }
21660         D(fprintf(stderr, "%*c> _gather_7[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_8"));
21661         expr_ty elem;
21662         asdl_seq * seq;
21663         if (
21664             (elem = expression_rule(p))  // expression
21665             &&
21666             (seq = _loop0_8_rule(p))  // _loop0_8
21667         )
21668         {
21669             D(fprintf(stderr, "%*c+ _gather_7[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_8"));
21670             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
21671             goto done;
21672         }
21673         p->mark = _mark;
21674         D(fprintf(stderr, "%*c%s _gather_7[%d-%d]: %s failed!\n", p->level, ' ',
21675                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_8"));
21676     }
21677     _res = NULL;
21678   done:
21679     D(p->level--);
21680     return _res;
21681 }
21682 
21683 // _loop0_10: ',' expression
21684 static asdl_seq *
_loop0_10_rule(Parser * p)21685 _loop0_10_rule(Parser *p)
21686 {
21687     D(p->level++);
21688     if (p->error_indicator) {
21689         D(p->level--);
21690         return NULL;
21691     }
21692     void *_res = NULL;
21693     int _mark = p->mark;
21694     int _start_mark = p->mark;
21695     void **_children = PyMem_Malloc(sizeof(void *));
21696     if (!_children) {
21697         p->error_indicator = 1;
21698         PyErr_NoMemory();
21699         D(p->level--);
21700         return NULL;
21701     }
21702     Py_ssize_t _children_capacity = 1;
21703     Py_ssize_t _n = 0;
21704     { // ',' expression
21705         if (p->error_indicator) {
21706             D(p->level--);
21707             return NULL;
21708         }
21709         D(fprintf(stderr, "%*c> _loop0_10[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
21710         Token * _literal;
21711         expr_ty elem;
21712         while (
21713             (_literal = _PyPegen_expect_token(p, 12))  // token=','
21714             &&
21715             (elem = expression_rule(p))  // expression
21716         )
21717         {
21718             _res = elem;
21719             if (_res == NULL && PyErr_Occurred()) {
21720                 p->error_indicator = 1;
21721                 PyMem_Free(_children);
21722                 D(p->level--);
21723                 return NULL;
21724             }
21725             if (_n == _children_capacity) {
21726                 _children_capacity *= 2;
21727                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21728                 if (!_new_children) {
21729                     p->error_indicator = 1;
21730                     PyErr_NoMemory();
21731                     D(p->level--);
21732                     return NULL;
21733                 }
21734                 _children = _new_children;
21735             }
21736             _children[_n++] = _res;
21737             _mark = p->mark;
21738         }
21739         p->mark = _mark;
21740         D(fprintf(stderr, "%*c%s _loop0_10[%d-%d]: %s failed!\n", p->level, ' ',
21741                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
21742     }
21743     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21744     if (!_seq) {
21745         PyMem_Free(_children);
21746         p->error_indicator = 1;
21747         PyErr_NoMemory();
21748         D(p->level--);
21749         return NULL;
21750     }
21751     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21752     PyMem_Free(_children);
21753     _PyPegen_insert_memo(p, _start_mark, _loop0_10_type, _seq);
21754     D(p->level--);
21755     return _seq;
21756 }
21757 
21758 // _gather_9: expression _loop0_10
21759 static asdl_seq *
_gather_9_rule(Parser * p)21760 _gather_9_rule(Parser *p)
21761 {
21762     D(p->level++);
21763     if (p->error_indicator) {
21764         D(p->level--);
21765         return NULL;
21766     }
21767     asdl_seq * _res = NULL;
21768     int _mark = p->mark;
21769     { // expression _loop0_10
21770         if (p->error_indicator) {
21771             D(p->level--);
21772             return NULL;
21773         }
21774         D(fprintf(stderr, "%*c> _gather_9[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression _loop0_10"));
21775         expr_ty elem;
21776         asdl_seq * seq;
21777         if (
21778             (elem = expression_rule(p))  // expression
21779             &&
21780             (seq = _loop0_10_rule(p))  // _loop0_10
21781         )
21782         {
21783             D(fprintf(stderr, "%*c+ _gather_9[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression _loop0_10"));
21784             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
21785             goto done;
21786         }
21787         p->mark = _mark;
21788         D(fprintf(stderr, "%*c%s _gather_9[%d-%d]: %s failed!\n", p->level, ' ',
21789                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression _loop0_10"));
21790     }
21791     _res = NULL;
21792   done:
21793     D(p->level--);
21794     return _res;
21795 }
21796 
21797 // _loop1_11: statement
21798 static asdl_seq *
_loop1_11_rule(Parser * p)21799 _loop1_11_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     int _start_mark = p->mark;
21809     void **_children = PyMem_Malloc(sizeof(void *));
21810     if (!_children) {
21811         p->error_indicator = 1;
21812         PyErr_NoMemory();
21813         D(p->level--);
21814         return NULL;
21815     }
21816     Py_ssize_t _children_capacity = 1;
21817     Py_ssize_t _n = 0;
21818     { // statement
21819         if (p->error_indicator) {
21820             D(p->level--);
21821             return NULL;
21822         }
21823         D(fprintf(stderr, "%*c> _loop1_11[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "statement"));
21824         asdl_stmt_seq* statement_var;
21825         while (
21826             (statement_var = statement_rule(p))  // statement
21827         )
21828         {
21829             _res = statement_var;
21830             if (_n == _children_capacity) {
21831                 _children_capacity *= 2;
21832                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21833                 if (!_new_children) {
21834                     p->error_indicator = 1;
21835                     PyErr_NoMemory();
21836                     D(p->level--);
21837                     return NULL;
21838                 }
21839                 _children = _new_children;
21840             }
21841             _children[_n++] = _res;
21842             _mark = p->mark;
21843         }
21844         p->mark = _mark;
21845         D(fprintf(stderr, "%*c%s _loop1_11[%d-%d]: %s failed!\n", p->level, ' ',
21846                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "statement"));
21847     }
21848     if (_n == 0 || p->error_indicator) {
21849         PyMem_Free(_children);
21850         D(p->level--);
21851         return NULL;
21852     }
21853     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21854     if (!_seq) {
21855         PyMem_Free(_children);
21856         p->error_indicator = 1;
21857         PyErr_NoMemory();
21858         D(p->level--);
21859         return NULL;
21860     }
21861     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21862     PyMem_Free(_children);
21863     _PyPegen_insert_memo(p, _start_mark, _loop1_11_type, _seq);
21864     D(p->level--);
21865     return _seq;
21866 }
21867 
21868 // _loop0_13: ';' simple_stmt
21869 static asdl_seq *
_loop0_13_rule(Parser * p)21870 _loop0_13_rule(Parser *p)
21871 {
21872     D(p->level++);
21873     if (p->error_indicator) {
21874         D(p->level--);
21875         return NULL;
21876     }
21877     void *_res = NULL;
21878     int _mark = p->mark;
21879     int _start_mark = p->mark;
21880     void **_children = PyMem_Malloc(sizeof(void *));
21881     if (!_children) {
21882         p->error_indicator = 1;
21883         PyErr_NoMemory();
21884         D(p->level--);
21885         return NULL;
21886     }
21887     Py_ssize_t _children_capacity = 1;
21888     Py_ssize_t _n = 0;
21889     { // ';' simple_stmt
21890         if (p->error_indicator) {
21891             D(p->level--);
21892             return NULL;
21893         }
21894         D(fprintf(stderr, "%*c> _loop0_13[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';' simple_stmt"));
21895         Token * _literal;
21896         stmt_ty elem;
21897         while (
21898             (_literal = _PyPegen_expect_token(p, 13))  // token=';'
21899             &&
21900             (elem = simple_stmt_rule(p))  // simple_stmt
21901         )
21902         {
21903             _res = elem;
21904             if (_res == NULL && PyErr_Occurred()) {
21905                 p->error_indicator = 1;
21906                 PyMem_Free(_children);
21907                 D(p->level--);
21908                 return NULL;
21909             }
21910             if (_n == _children_capacity) {
21911                 _children_capacity *= 2;
21912                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
21913                 if (!_new_children) {
21914                     p->error_indicator = 1;
21915                     PyErr_NoMemory();
21916                     D(p->level--);
21917                     return NULL;
21918                 }
21919                 _children = _new_children;
21920             }
21921             _children[_n++] = _res;
21922             _mark = p->mark;
21923         }
21924         p->mark = _mark;
21925         D(fprintf(stderr, "%*c%s _loop0_13[%d-%d]: %s failed!\n", p->level, ' ',
21926                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';' simple_stmt"));
21927     }
21928     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
21929     if (!_seq) {
21930         PyMem_Free(_children);
21931         p->error_indicator = 1;
21932         PyErr_NoMemory();
21933         D(p->level--);
21934         return NULL;
21935     }
21936     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
21937     PyMem_Free(_children);
21938     _PyPegen_insert_memo(p, _start_mark, _loop0_13_type, _seq);
21939     D(p->level--);
21940     return _seq;
21941 }
21942 
21943 // _gather_12: simple_stmt _loop0_13
21944 static asdl_seq *
_gather_12_rule(Parser * p)21945 _gather_12_rule(Parser *p)
21946 {
21947     D(p->level++);
21948     if (p->error_indicator) {
21949         D(p->level--);
21950         return NULL;
21951     }
21952     asdl_seq * _res = NULL;
21953     int _mark = p->mark;
21954     { // simple_stmt _loop0_13
21955         if (p->error_indicator) {
21956             D(p->level--);
21957             return NULL;
21958         }
21959         D(fprintf(stderr, "%*c> _gather_12[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_13"));
21960         stmt_ty elem;
21961         asdl_seq * seq;
21962         if (
21963             (elem = simple_stmt_rule(p))  // simple_stmt
21964             &&
21965             (seq = _loop0_13_rule(p))  // _loop0_13
21966         )
21967         {
21968             D(fprintf(stderr, "%*c+ _gather_12[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "simple_stmt _loop0_13"));
21969             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
21970             goto done;
21971         }
21972         p->mark = _mark;
21973         D(fprintf(stderr, "%*c%s _gather_12[%d-%d]: %s failed!\n", p->level, ' ',
21974                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "simple_stmt _loop0_13"));
21975     }
21976     _res = NULL;
21977   done:
21978     D(p->level--);
21979     return _res;
21980 }
21981 
21982 // _tmp_14: 'import' | 'from'
21983 static void *
_tmp_14_rule(Parser * p)21984 _tmp_14_rule(Parser *p)
21985 {
21986     D(p->level++);
21987     if (p->error_indicator) {
21988         D(p->level--);
21989         return NULL;
21990     }
21991     void * _res = NULL;
21992     int _mark = p->mark;
21993     { // 'import'
21994         if (p->error_indicator) {
21995             D(p->level--);
21996             return NULL;
21997         }
21998         D(fprintf(stderr, "%*c> _tmp_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'import'"));
21999         Token * _keyword;
22000         if (
22001             (_keyword = _PyPegen_expect_token(p, 513))  // token='import'
22002         )
22003         {
22004             D(fprintf(stderr, "%*c+ _tmp_14[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'import'"));
22005             _res = _keyword;
22006             goto done;
22007         }
22008         p->mark = _mark;
22009         D(fprintf(stderr, "%*c%s _tmp_14[%d-%d]: %s failed!\n", p->level, ' ',
22010                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'import'"));
22011     }
22012     { // 'from'
22013         if (p->error_indicator) {
22014             D(p->level--);
22015             return NULL;
22016         }
22017         D(fprintf(stderr, "%*c> _tmp_14[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from'"));
22018         Token * _keyword;
22019         if (
22020             (_keyword = _PyPegen_expect_token(p, 514))  // token='from'
22021         )
22022         {
22023             D(fprintf(stderr, "%*c+ _tmp_14[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from'"));
22024             _res = _keyword;
22025             goto done;
22026         }
22027         p->mark = _mark;
22028         D(fprintf(stderr, "%*c%s _tmp_14[%d-%d]: %s failed!\n", p->level, ' ',
22029                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from'"));
22030     }
22031     _res = NULL;
22032   done:
22033     D(p->level--);
22034     return _res;
22035 }
22036 
22037 // _tmp_15: 'def' | '@' | ASYNC
22038 static void *
_tmp_15_rule(Parser * p)22039 _tmp_15_rule(Parser *p)
22040 {
22041     D(p->level++);
22042     if (p->error_indicator) {
22043         D(p->level--);
22044         return NULL;
22045     }
22046     void * _res = NULL;
22047     int _mark = p->mark;
22048     { // 'def'
22049         if (p->error_indicator) {
22050             D(p->level--);
22051             return NULL;
22052         }
22053         D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'def'"));
22054         Token * _keyword;
22055         if (
22056             (_keyword = _PyPegen_expect_token(p, 526))  // token='def'
22057         )
22058         {
22059             D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'def'"));
22060             _res = _keyword;
22061             goto done;
22062         }
22063         p->mark = _mark;
22064         D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
22065                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'def'"));
22066     }
22067     { // '@'
22068         if (p->error_indicator) {
22069             D(p->level--);
22070             return NULL;
22071         }
22072         D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
22073         Token * _literal;
22074         if (
22075             (_literal = _PyPegen_expect_token(p, 49))  // token='@'
22076         )
22077         {
22078             D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
22079             _res = _literal;
22080             goto done;
22081         }
22082         p->mark = _mark;
22083         D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
22084                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
22085     }
22086     { // ASYNC
22087         if (p->error_indicator) {
22088             D(p->level--);
22089             return NULL;
22090         }
22091         D(fprintf(stderr, "%*c> _tmp_15[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
22092         Token * async_var;
22093         if (
22094             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
22095         )
22096         {
22097             D(fprintf(stderr, "%*c+ _tmp_15[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
22098             _res = async_var;
22099             goto done;
22100         }
22101         p->mark = _mark;
22102         D(fprintf(stderr, "%*c%s _tmp_15[%d-%d]: %s failed!\n", p->level, ' ',
22103                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
22104     }
22105     _res = NULL;
22106   done:
22107     D(p->level--);
22108     return _res;
22109 }
22110 
22111 // _tmp_16: 'class' | '@'
22112 static void *
_tmp_16_rule(Parser * p)22113 _tmp_16_rule(Parser *p)
22114 {
22115     D(p->level++);
22116     if (p->error_indicator) {
22117         D(p->level--);
22118         return NULL;
22119     }
22120     void * _res = NULL;
22121     int _mark = p->mark;
22122     { // 'class'
22123         if (p->error_indicator) {
22124             D(p->level--);
22125             return NULL;
22126         }
22127         D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'class'"));
22128         Token * _keyword;
22129         if (
22130             (_keyword = _PyPegen_expect_token(p, 527))  // token='class'
22131         )
22132         {
22133             D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'class'"));
22134             _res = _keyword;
22135             goto done;
22136         }
22137         p->mark = _mark;
22138         D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
22139                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'class'"));
22140     }
22141     { // '@'
22142         if (p->error_indicator) {
22143             D(p->level--);
22144             return NULL;
22145         }
22146         D(fprintf(stderr, "%*c> _tmp_16[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@'"));
22147         Token * _literal;
22148         if (
22149             (_literal = _PyPegen_expect_token(p, 49))  // token='@'
22150         )
22151         {
22152             D(fprintf(stderr, "%*c+ _tmp_16[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@'"));
22153             _res = _literal;
22154             goto done;
22155         }
22156         p->mark = _mark;
22157         D(fprintf(stderr, "%*c%s _tmp_16[%d-%d]: %s failed!\n", p->level, ' ',
22158                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@'"));
22159     }
22160     _res = NULL;
22161   done:
22162     D(p->level--);
22163     return _res;
22164 }
22165 
22166 // _tmp_17: 'with' | ASYNC
22167 static void *
_tmp_17_rule(Parser * p)22168 _tmp_17_rule(Parser *p)
22169 {
22170     D(p->level++);
22171     if (p->error_indicator) {
22172         D(p->level--);
22173         return NULL;
22174     }
22175     void * _res = NULL;
22176     int _mark = p->mark;
22177     { // 'with'
22178         if (p->error_indicator) {
22179             D(p->level--);
22180             return NULL;
22181         }
22182         D(fprintf(stderr, "%*c> _tmp_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'with'"));
22183         Token * _keyword;
22184         if (
22185             (_keyword = _PyPegen_expect_token(p, 519))  // token='with'
22186         )
22187         {
22188             D(fprintf(stderr, "%*c+ _tmp_17[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'with'"));
22189             _res = _keyword;
22190             goto done;
22191         }
22192         p->mark = _mark;
22193         D(fprintf(stderr, "%*c%s _tmp_17[%d-%d]: %s failed!\n", p->level, ' ',
22194                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'with'"));
22195     }
22196     { // ASYNC
22197         if (p->error_indicator) {
22198             D(p->level--);
22199             return NULL;
22200         }
22201         D(fprintf(stderr, "%*c> _tmp_17[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
22202         Token * async_var;
22203         if (
22204             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
22205         )
22206         {
22207             D(fprintf(stderr, "%*c+ _tmp_17[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
22208             _res = async_var;
22209             goto done;
22210         }
22211         p->mark = _mark;
22212         D(fprintf(stderr, "%*c%s _tmp_17[%d-%d]: %s failed!\n", p->level, ' ',
22213                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
22214     }
22215     _res = NULL;
22216   done:
22217     D(p->level--);
22218     return _res;
22219 }
22220 
22221 // _tmp_18: 'for' | ASYNC
22222 static void *
_tmp_18_rule(Parser * p)22223 _tmp_18_rule(Parser *p)
22224 {
22225     D(p->level++);
22226     if (p->error_indicator) {
22227         D(p->level--);
22228         return NULL;
22229     }
22230     void * _res = NULL;
22231     int _mark = p->mark;
22232     { // 'for'
22233         if (p->error_indicator) {
22234             D(p->level--);
22235             return NULL;
22236         }
22237         D(fprintf(stderr, "%*c> _tmp_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'for'"));
22238         Token * _keyword;
22239         if (
22240             (_keyword = _PyPegen_expect_token(p, 517))  // token='for'
22241         )
22242         {
22243             D(fprintf(stderr, "%*c+ _tmp_18[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'for'"));
22244             _res = _keyword;
22245             goto done;
22246         }
22247         p->mark = _mark;
22248         D(fprintf(stderr, "%*c%s _tmp_18[%d-%d]: %s failed!\n", p->level, ' ',
22249                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'for'"));
22250     }
22251     { // ASYNC
22252         if (p->error_indicator) {
22253             D(p->level--);
22254             return NULL;
22255         }
22256         D(fprintf(stderr, "%*c> _tmp_18[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "ASYNC"));
22257         Token * async_var;
22258         if (
22259             (async_var = _PyPegen_expect_token(p, ASYNC))  // token='ASYNC'
22260         )
22261         {
22262             D(fprintf(stderr, "%*c+ _tmp_18[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "ASYNC"));
22263             _res = async_var;
22264             goto done;
22265         }
22266         p->mark = _mark;
22267         D(fprintf(stderr, "%*c%s _tmp_18[%d-%d]: %s failed!\n", p->level, ' ',
22268                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "ASYNC"));
22269     }
22270     _res = NULL;
22271   done:
22272     D(p->level--);
22273     return _res;
22274 }
22275 
22276 // _tmp_19: '=' annotated_rhs
22277 static void *
_tmp_19_rule(Parser * p)22278 _tmp_19_rule(Parser *p)
22279 {
22280     D(p->level++);
22281     if (p->error_indicator) {
22282         D(p->level--);
22283         return NULL;
22284     }
22285     void * _res = NULL;
22286     int _mark = p->mark;
22287     { // '=' annotated_rhs
22288         if (p->error_indicator) {
22289             D(p->level--);
22290             return NULL;
22291         }
22292         D(fprintf(stderr, "%*c> _tmp_19[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
22293         Token * _literal;
22294         expr_ty d;
22295         if (
22296             (_literal = _PyPegen_expect_token(p, 22))  // token='='
22297             &&
22298             (d = annotated_rhs_rule(p))  // annotated_rhs
22299         )
22300         {
22301             D(fprintf(stderr, "%*c+ _tmp_19[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
22302             _res = d;
22303             if (_res == NULL && PyErr_Occurred()) {
22304                 p->error_indicator = 1;
22305                 D(p->level--);
22306                 return NULL;
22307             }
22308             goto done;
22309         }
22310         p->mark = _mark;
22311         D(fprintf(stderr, "%*c%s _tmp_19[%d-%d]: %s failed!\n", p->level, ' ',
22312                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
22313     }
22314     _res = NULL;
22315   done:
22316     D(p->level--);
22317     return _res;
22318 }
22319 
22320 // _tmp_20: '(' single_target ')' | single_subscript_attribute_target
22321 static void *
_tmp_20_rule(Parser * p)22322 _tmp_20_rule(Parser *p)
22323 {
22324     D(p->level++);
22325     if (p->error_indicator) {
22326         D(p->level--);
22327         return NULL;
22328     }
22329     void * _res = NULL;
22330     int _mark = p->mark;
22331     { // '(' single_target ')'
22332         if (p->error_indicator) {
22333             D(p->level--);
22334             return NULL;
22335         }
22336         D(fprintf(stderr, "%*c> _tmp_20[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
22337         Token * _literal;
22338         Token * _literal_1;
22339         expr_ty b;
22340         if (
22341             (_literal = _PyPegen_expect_token(p, 7))  // token='('
22342             &&
22343             (b = single_target_rule(p))  // single_target
22344             &&
22345             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
22346         )
22347         {
22348             D(fprintf(stderr, "%*c+ _tmp_20[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' single_target ')'"));
22349             _res = b;
22350             if (_res == NULL && PyErr_Occurred()) {
22351                 p->error_indicator = 1;
22352                 D(p->level--);
22353                 return NULL;
22354             }
22355             goto done;
22356         }
22357         p->mark = _mark;
22358         D(fprintf(stderr, "%*c%s _tmp_20[%d-%d]: %s failed!\n", p->level, ' ',
22359                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' single_target ')'"));
22360     }
22361     { // single_subscript_attribute_target
22362         if (p->error_indicator) {
22363             D(p->level--);
22364             return NULL;
22365         }
22366         D(fprintf(stderr, "%*c> _tmp_20[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
22367         expr_ty single_subscript_attribute_target_var;
22368         if (
22369             (single_subscript_attribute_target_var = single_subscript_attribute_target_rule(p))  // single_subscript_attribute_target
22370         )
22371         {
22372             D(fprintf(stderr, "%*c+ _tmp_20[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "single_subscript_attribute_target"));
22373             _res = single_subscript_attribute_target_var;
22374             goto done;
22375         }
22376         p->mark = _mark;
22377         D(fprintf(stderr, "%*c%s _tmp_20[%d-%d]: %s failed!\n", p->level, ' ',
22378                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "single_subscript_attribute_target"));
22379     }
22380     _res = NULL;
22381   done:
22382     D(p->level--);
22383     return _res;
22384 }
22385 
22386 // _tmp_21: '=' annotated_rhs
22387 static void *
_tmp_21_rule(Parser * p)22388 _tmp_21_rule(Parser *p)
22389 {
22390     D(p->level++);
22391     if (p->error_indicator) {
22392         D(p->level--);
22393         return NULL;
22394     }
22395     void * _res = NULL;
22396     int _mark = p->mark;
22397     { // '=' annotated_rhs
22398         if (p->error_indicator) {
22399             D(p->level--);
22400             return NULL;
22401         }
22402         D(fprintf(stderr, "%*c> _tmp_21[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
22403         Token * _literal;
22404         expr_ty d;
22405         if (
22406             (_literal = _PyPegen_expect_token(p, 22))  // token='='
22407             &&
22408             (d = annotated_rhs_rule(p))  // annotated_rhs
22409         )
22410         {
22411             D(fprintf(stderr, "%*c+ _tmp_21[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'=' annotated_rhs"));
22412             _res = d;
22413             if (_res == NULL && PyErr_Occurred()) {
22414                 p->error_indicator = 1;
22415                 D(p->level--);
22416                 return NULL;
22417             }
22418             goto done;
22419         }
22420         p->mark = _mark;
22421         D(fprintf(stderr, "%*c%s _tmp_21[%d-%d]: %s failed!\n", p->level, ' ',
22422                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'=' annotated_rhs"));
22423     }
22424     _res = NULL;
22425   done:
22426     D(p->level--);
22427     return _res;
22428 }
22429 
22430 // _loop1_22: (star_targets '=')
22431 static asdl_seq *
_loop1_22_rule(Parser * p)22432 _loop1_22_rule(Parser *p)
22433 {
22434     D(p->level++);
22435     if (p->error_indicator) {
22436         D(p->level--);
22437         return NULL;
22438     }
22439     void *_res = NULL;
22440     int _mark = p->mark;
22441     int _start_mark = p->mark;
22442     void **_children = PyMem_Malloc(sizeof(void *));
22443     if (!_children) {
22444         p->error_indicator = 1;
22445         PyErr_NoMemory();
22446         D(p->level--);
22447         return NULL;
22448     }
22449     Py_ssize_t _children_capacity = 1;
22450     Py_ssize_t _n = 0;
22451     { // (star_targets '=')
22452         if (p->error_indicator) {
22453             D(p->level--);
22454             return NULL;
22455         }
22456         D(fprintf(stderr, "%*c> _loop1_22[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
22457         void *_tmp_181_var;
22458         while (
22459             (_tmp_181_var = _tmp_181_rule(p))  // star_targets '='
22460         )
22461         {
22462             _res = _tmp_181_var;
22463             if (_n == _children_capacity) {
22464                 _children_capacity *= 2;
22465                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22466                 if (!_new_children) {
22467                     p->error_indicator = 1;
22468                     PyErr_NoMemory();
22469                     D(p->level--);
22470                     return NULL;
22471                 }
22472                 _children = _new_children;
22473             }
22474             _children[_n++] = _res;
22475             _mark = p->mark;
22476         }
22477         p->mark = _mark;
22478         D(fprintf(stderr, "%*c%s _loop1_22[%d-%d]: %s failed!\n", p->level, ' ',
22479                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
22480     }
22481     if (_n == 0 || p->error_indicator) {
22482         PyMem_Free(_children);
22483         D(p->level--);
22484         return NULL;
22485     }
22486     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22487     if (!_seq) {
22488         PyMem_Free(_children);
22489         p->error_indicator = 1;
22490         PyErr_NoMemory();
22491         D(p->level--);
22492         return NULL;
22493     }
22494     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22495     PyMem_Free(_children);
22496     _PyPegen_insert_memo(p, _start_mark, _loop1_22_type, _seq);
22497     D(p->level--);
22498     return _seq;
22499 }
22500 
22501 // _tmp_23: yield_expr | star_expressions
22502 static void *
_tmp_23_rule(Parser * p)22503 _tmp_23_rule(Parser *p)
22504 {
22505     D(p->level++);
22506     if (p->error_indicator) {
22507         D(p->level--);
22508         return NULL;
22509     }
22510     void * _res = NULL;
22511     int _mark = p->mark;
22512     { // yield_expr
22513         if (p->error_indicator) {
22514             D(p->level--);
22515             return NULL;
22516         }
22517         D(fprintf(stderr, "%*c> _tmp_23[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
22518         expr_ty yield_expr_var;
22519         if (
22520             (yield_expr_var = yield_expr_rule(p))  // yield_expr
22521         )
22522         {
22523             D(fprintf(stderr, "%*c+ _tmp_23[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
22524             _res = yield_expr_var;
22525             goto done;
22526         }
22527         p->mark = _mark;
22528         D(fprintf(stderr, "%*c%s _tmp_23[%d-%d]: %s failed!\n", p->level, ' ',
22529                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
22530     }
22531     { // star_expressions
22532         if (p->error_indicator) {
22533             D(p->level--);
22534             return NULL;
22535         }
22536         D(fprintf(stderr, "%*c> _tmp_23[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
22537         expr_ty star_expressions_var;
22538         if (
22539             (star_expressions_var = star_expressions_rule(p))  // star_expressions
22540         )
22541         {
22542             D(fprintf(stderr, "%*c+ _tmp_23[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
22543             _res = star_expressions_var;
22544             goto done;
22545         }
22546         p->mark = _mark;
22547         D(fprintf(stderr, "%*c%s _tmp_23[%d-%d]: %s failed!\n", p->level, ' ',
22548                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
22549     }
22550     _res = NULL;
22551   done:
22552     D(p->level--);
22553     return _res;
22554 }
22555 
22556 // _tmp_24: yield_expr | star_expressions
22557 static void *
_tmp_24_rule(Parser * p)22558 _tmp_24_rule(Parser *p)
22559 {
22560     D(p->level++);
22561     if (p->error_indicator) {
22562         D(p->level--);
22563         return NULL;
22564     }
22565     void * _res = NULL;
22566     int _mark = p->mark;
22567     { // yield_expr
22568         if (p->error_indicator) {
22569             D(p->level--);
22570             return NULL;
22571         }
22572         D(fprintf(stderr, "%*c> _tmp_24[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
22573         expr_ty yield_expr_var;
22574         if (
22575             (yield_expr_var = yield_expr_rule(p))  // yield_expr
22576         )
22577         {
22578             D(fprintf(stderr, "%*c+ _tmp_24[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
22579             _res = yield_expr_var;
22580             goto done;
22581         }
22582         p->mark = _mark;
22583         D(fprintf(stderr, "%*c%s _tmp_24[%d-%d]: %s failed!\n", p->level, ' ',
22584                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
22585     }
22586     { // star_expressions
22587         if (p->error_indicator) {
22588             D(p->level--);
22589             return NULL;
22590         }
22591         D(fprintf(stderr, "%*c> _tmp_24[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
22592         expr_ty star_expressions_var;
22593         if (
22594             (star_expressions_var = star_expressions_rule(p))  // star_expressions
22595         )
22596         {
22597             D(fprintf(stderr, "%*c+ _tmp_24[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
22598             _res = star_expressions_var;
22599             goto done;
22600         }
22601         p->mark = _mark;
22602         D(fprintf(stderr, "%*c%s _tmp_24[%d-%d]: %s failed!\n", p->level, ' ',
22603                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
22604     }
22605     _res = NULL;
22606   done:
22607     D(p->level--);
22608     return _res;
22609 }
22610 
22611 // _loop0_26: ',' NAME
22612 static asdl_seq *
_loop0_26_rule(Parser * p)22613 _loop0_26_rule(Parser *p)
22614 {
22615     D(p->level++);
22616     if (p->error_indicator) {
22617         D(p->level--);
22618         return NULL;
22619     }
22620     void *_res = NULL;
22621     int _mark = p->mark;
22622     int _start_mark = p->mark;
22623     void **_children = PyMem_Malloc(sizeof(void *));
22624     if (!_children) {
22625         p->error_indicator = 1;
22626         PyErr_NoMemory();
22627         D(p->level--);
22628         return NULL;
22629     }
22630     Py_ssize_t _children_capacity = 1;
22631     Py_ssize_t _n = 0;
22632     { // ',' NAME
22633         if (p->error_indicator) {
22634             D(p->level--);
22635             return NULL;
22636         }
22637         D(fprintf(stderr, "%*c> _loop0_26[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
22638         Token * _literal;
22639         expr_ty elem;
22640         while (
22641             (_literal = _PyPegen_expect_token(p, 12))  // token=','
22642             &&
22643             (elem = _PyPegen_name_token(p))  // NAME
22644         )
22645         {
22646             _res = elem;
22647             if (_res == NULL && PyErr_Occurred()) {
22648                 p->error_indicator = 1;
22649                 PyMem_Free(_children);
22650                 D(p->level--);
22651                 return NULL;
22652             }
22653             if (_n == _children_capacity) {
22654                 _children_capacity *= 2;
22655                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22656                 if (!_new_children) {
22657                     p->error_indicator = 1;
22658                     PyErr_NoMemory();
22659                     D(p->level--);
22660                     return NULL;
22661                 }
22662                 _children = _new_children;
22663             }
22664             _children[_n++] = _res;
22665             _mark = p->mark;
22666         }
22667         p->mark = _mark;
22668         D(fprintf(stderr, "%*c%s _loop0_26[%d-%d]: %s failed!\n", p->level, ' ',
22669                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
22670     }
22671     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22672     if (!_seq) {
22673         PyMem_Free(_children);
22674         p->error_indicator = 1;
22675         PyErr_NoMemory();
22676         D(p->level--);
22677         return NULL;
22678     }
22679     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22680     PyMem_Free(_children);
22681     _PyPegen_insert_memo(p, _start_mark, _loop0_26_type, _seq);
22682     D(p->level--);
22683     return _seq;
22684 }
22685 
22686 // _gather_25: NAME _loop0_26
22687 static asdl_seq *
_gather_25_rule(Parser * p)22688 _gather_25_rule(Parser *p)
22689 {
22690     D(p->level++);
22691     if (p->error_indicator) {
22692         D(p->level--);
22693         return NULL;
22694     }
22695     asdl_seq * _res = NULL;
22696     int _mark = p->mark;
22697     { // NAME _loop0_26
22698         if (p->error_indicator) {
22699             D(p->level--);
22700             return NULL;
22701         }
22702         D(fprintf(stderr, "%*c> _gather_25[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_26"));
22703         expr_ty elem;
22704         asdl_seq * seq;
22705         if (
22706             (elem = _PyPegen_name_token(p))  // NAME
22707             &&
22708             (seq = _loop0_26_rule(p))  // _loop0_26
22709         )
22710         {
22711             D(fprintf(stderr, "%*c+ _gather_25[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_26"));
22712             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
22713             goto done;
22714         }
22715         p->mark = _mark;
22716         D(fprintf(stderr, "%*c%s _gather_25[%d-%d]: %s failed!\n", p->level, ' ',
22717                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_26"));
22718     }
22719     _res = NULL;
22720   done:
22721     D(p->level--);
22722     return _res;
22723 }
22724 
22725 // _loop0_28: ',' NAME
22726 static asdl_seq *
_loop0_28_rule(Parser * p)22727 _loop0_28_rule(Parser *p)
22728 {
22729     D(p->level++);
22730     if (p->error_indicator) {
22731         D(p->level--);
22732         return NULL;
22733     }
22734     void *_res = NULL;
22735     int _mark = p->mark;
22736     int _start_mark = p->mark;
22737     void **_children = PyMem_Malloc(sizeof(void *));
22738     if (!_children) {
22739         p->error_indicator = 1;
22740         PyErr_NoMemory();
22741         D(p->level--);
22742         return NULL;
22743     }
22744     Py_ssize_t _children_capacity = 1;
22745     Py_ssize_t _n = 0;
22746     { // ',' NAME
22747         if (p->error_indicator) {
22748             D(p->level--);
22749             return NULL;
22750         }
22751         D(fprintf(stderr, "%*c> _loop0_28[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' NAME"));
22752         Token * _literal;
22753         expr_ty elem;
22754         while (
22755             (_literal = _PyPegen_expect_token(p, 12))  // token=','
22756             &&
22757             (elem = _PyPegen_name_token(p))  // NAME
22758         )
22759         {
22760             _res = elem;
22761             if (_res == NULL && PyErr_Occurred()) {
22762                 p->error_indicator = 1;
22763                 PyMem_Free(_children);
22764                 D(p->level--);
22765                 return NULL;
22766             }
22767             if (_n == _children_capacity) {
22768                 _children_capacity *= 2;
22769                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22770                 if (!_new_children) {
22771                     p->error_indicator = 1;
22772                     PyErr_NoMemory();
22773                     D(p->level--);
22774                     return NULL;
22775                 }
22776                 _children = _new_children;
22777             }
22778             _children[_n++] = _res;
22779             _mark = p->mark;
22780         }
22781         p->mark = _mark;
22782         D(fprintf(stderr, "%*c%s _loop0_28[%d-%d]: %s failed!\n", p->level, ' ',
22783                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' NAME"));
22784     }
22785     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22786     if (!_seq) {
22787         PyMem_Free(_children);
22788         p->error_indicator = 1;
22789         PyErr_NoMemory();
22790         D(p->level--);
22791         return NULL;
22792     }
22793     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22794     PyMem_Free(_children);
22795     _PyPegen_insert_memo(p, _start_mark, _loop0_28_type, _seq);
22796     D(p->level--);
22797     return _seq;
22798 }
22799 
22800 // _gather_27: NAME _loop0_28
22801 static asdl_seq *
_gather_27_rule(Parser * p)22802 _gather_27_rule(Parser *p)
22803 {
22804     D(p->level++);
22805     if (p->error_indicator) {
22806         D(p->level--);
22807         return NULL;
22808     }
22809     asdl_seq * _res = NULL;
22810     int _mark = p->mark;
22811     { // NAME _loop0_28
22812         if (p->error_indicator) {
22813             D(p->level--);
22814             return NULL;
22815         }
22816         D(fprintf(stderr, "%*c> _gather_27[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME _loop0_28"));
22817         expr_ty elem;
22818         asdl_seq * seq;
22819         if (
22820             (elem = _PyPegen_name_token(p))  // NAME
22821             &&
22822             (seq = _loop0_28_rule(p))  // _loop0_28
22823         )
22824         {
22825             D(fprintf(stderr, "%*c+ _gather_27[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME _loop0_28"));
22826             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
22827             goto done;
22828         }
22829         p->mark = _mark;
22830         D(fprintf(stderr, "%*c%s _gather_27[%d-%d]: %s failed!\n", p->level, ' ',
22831                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME _loop0_28"));
22832     }
22833     _res = NULL;
22834   done:
22835     D(p->level--);
22836     return _res;
22837 }
22838 
22839 // _tmp_29: ',' expression
22840 static void *
_tmp_29_rule(Parser * p)22841 _tmp_29_rule(Parser *p)
22842 {
22843     D(p->level++);
22844     if (p->error_indicator) {
22845         D(p->level--);
22846         return NULL;
22847     }
22848     void * _res = NULL;
22849     int _mark = p->mark;
22850     { // ',' expression
22851         if (p->error_indicator) {
22852             D(p->level--);
22853             return NULL;
22854         }
22855         D(fprintf(stderr, "%*c> _tmp_29[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
22856         Token * _literal;
22857         expr_ty z;
22858         if (
22859             (_literal = _PyPegen_expect_token(p, 12))  // token=','
22860             &&
22861             (z = expression_rule(p))  // expression
22862         )
22863         {
22864             D(fprintf(stderr, "%*c+ _tmp_29[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression"));
22865             _res = z;
22866             if (_res == NULL && PyErr_Occurred()) {
22867                 p->error_indicator = 1;
22868                 D(p->level--);
22869                 return NULL;
22870             }
22871             goto done;
22872         }
22873         p->mark = _mark;
22874         D(fprintf(stderr, "%*c%s _tmp_29[%d-%d]: %s failed!\n", p->level, ' ',
22875                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
22876     }
22877     _res = NULL;
22878   done:
22879     D(p->level--);
22880     return _res;
22881 }
22882 
22883 // _tmp_30: ';' | NEWLINE
22884 static void *
_tmp_30_rule(Parser * p)22885 _tmp_30_rule(Parser *p)
22886 {
22887     D(p->level++);
22888     if (p->error_indicator) {
22889         D(p->level--);
22890         return NULL;
22891     }
22892     void * _res = NULL;
22893     int _mark = p->mark;
22894     { // ';'
22895         if (p->error_indicator) {
22896             D(p->level--);
22897             return NULL;
22898         }
22899         D(fprintf(stderr, "%*c> _tmp_30[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "';'"));
22900         Token * _literal;
22901         if (
22902             (_literal = _PyPegen_expect_token(p, 13))  // token=';'
22903         )
22904         {
22905             D(fprintf(stderr, "%*c+ _tmp_30[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "';'"));
22906             _res = _literal;
22907             goto done;
22908         }
22909         p->mark = _mark;
22910         D(fprintf(stderr, "%*c%s _tmp_30[%d-%d]: %s failed!\n", p->level, ' ',
22911                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "';'"));
22912     }
22913     { // NEWLINE
22914         if (p->error_indicator) {
22915             D(p->level--);
22916             return NULL;
22917         }
22918         D(fprintf(stderr, "%*c> _tmp_30[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
22919         Token * newline_var;
22920         if (
22921             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
22922         )
22923         {
22924             D(fprintf(stderr, "%*c+ _tmp_30[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE"));
22925             _res = newline_var;
22926             goto done;
22927         }
22928         p->mark = _mark;
22929         D(fprintf(stderr, "%*c%s _tmp_30[%d-%d]: %s failed!\n", p->level, ' ',
22930                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE"));
22931     }
22932     _res = NULL;
22933   done:
22934     D(p->level--);
22935     return _res;
22936 }
22937 
22938 // _loop0_31: ('.' | '...')
22939 static asdl_seq *
_loop0_31_rule(Parser * p)22940 _loop0_31_rule(Parser *p)
22941 {
22942     D(p->level++);
22943     if (p->error_indicator) {
22944         D(p->level--);
22945         return NULL;
22946     }
22947     void *_res = NULL;
22948     int _mark = p->mark;
22949     int _start_mark = p->mark;
22950     void **_children = PyMem_Malloc(sizeof(void *));
22951     if (!_children) {
22952         p->error_indicator = 1;
22953         PyErr_NoMemory();
22954         D(p->level--);
22955         return NULL;
22956     }
22957     Py_ssize_t _children_capacity = 1;
22958     Py_ssize_t _n = 0;
22959     { // ('.' | '...')
22960         if (p->error_indicator) {
22961             D(p->level--);
22962             return NULL;
22963         }
22964         D(fprintf(stderr, "%*c> _loop0_31[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
22965         void *_tmp_182_var;
22966         while (
22967             (_tmp_182_var = _tmp_182_rule(p))  // '.' | '...'
22968         )
22969         {
22970             _res = _tmp_182_var;
22971             if (_n == _children_capacity) {
22972                 _children_capacity *= 2;
22973                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
22974                 if (!_new_children) {
22975                     p->error_indicator = 1;
22976                     PyErr_NoMemory();
22977                     D(p->level--);
22978                     return NULL;
22979                 }
22980                 _children = _new_children;
22981             }
22982             _children[_n++] = _res;
22983             _mark = p->mark;
22984         }
22985         p->mark = _mark;
22986         D(fprintf(stderr, "%*c%s _loop0_31[%d-%d]: %s failed!\n", p->level, ' ',
22987                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
22988     }
22989     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
22990     if (!_seq) {
22991         PyMem_Free(_children);
22992         p->error_indicator = 1;
22993         PyErr_NoMemory();
22994         D(p->level--);
22995         return NULL;
22996     }
22997     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
22998     PyMem_Free(_children);
22999     _PyPegen_insert_memo(p, _start_mark, _loop0_31_type, _seq);
23000     D(p->level--);
23001     return _seq;
23002 }
23003 
23004 // _loop1_32: ('.' | '...')
23005 static asdl_seq *
_loop1_32_rule(Parser * p)23006 _loop1_32_rule(Parser *p)
23007 {
23008     D(p->level++);
23009     if (p->error_indicator) {
23010         D(p->level--);
23011         return NULL;
23012     }
23013     void *_res = NULL;
23014     int _mark = p->mark;
23015     int _start_mark = p->mark;
23016     void **_children = PyMem_Malloc(sizeof(void *));
23017     if (!_children) {
23018         p->error_indicator = 1;
23019         PyErr_NoMemory();
23020         D(p->level--);
23021         return NULL;
23022     }
23023     Py_ssize_t _children_capacity = 1;
23024     Py_ssize_t _n = 0;
23025     { // ('.' | '...')
23026         if (p->error_indicator) {
23027             D(p->level--);
23028             return NULL;
23029         }
23030         D(fprintf(stderr, "%*c> _loop1_32[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('.' | '...')"));
23031         void *_tmp_183_var;
23032         while (
23033             (_tmp_183_var = _tmp_183_rule(p))  // '.' | '...'
23034         )
23035         {
23036             _res = _tmp_183_var;
23037             if (_n == _children_capacity) {
23038                 _children_capacity *= 2;
23039                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23040                 if (!_new_children) {
23041                     p->error_indicator = 1;
23042                     PyErr_NoMemory();
23043                     D(p->level--);
23044                     return NULL;
23045                 }
23046                 _children = _new_children;
23047             }
23048             _children[_n++] = _res;
23049             _mark = p->mark;
23050         }
23051         p->mark = _mark;
23052         D(fprintf(stderr, "%*c%s _loop1_32[%d-%d]: %s failed!\n", p->level, ' ',
23053                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('.' | '...')"));
23054     }
23055     if (_n == 0 || p->error_indicator) {
23056         PyMem_Free(_children);
23057         D(p->level--);
23058         return NULL;
23059     }
23060     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23061     if (!_seq) {
23062         PyMem_Free(_children);
23063         p->error_indicator = 1;
23064         PyErr_NoMemory();
23065         D(p->level--);
23066         return NULL;
23067     }
23068     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23069     PyMem_Free(_children);
23070     _PyPegen_insert_memo(p, _start_mark, _loop1_32_type, _seq);
23071     D(p->level--);
23072     return _seq;
23073 }
23074 
23075 // _loop0_34: ',' import_from_as_name
23076 static asdl_seq *
_loop0_34_rule(Parser * p)23077 _loop0_34_rule(Parser *p)
23078 {
23079     D(p->level++);
23080     if (p->error_indicator) {
23081         D(p->level--);
23082         return NULL;
23083     }
23084     void *_res = NULL;
23085     int _mark = p->mark;
23086     int _start_mark = p->mark;
23087     void **_children = PyMem_Malloc(sizeof(void *));
23088     if (!_children) {
23089         p->error_indicator = 1;
23090         PyErr_NoMemory();
23091         D(p->level--);
23092         return NULL;
23093     }
23094     Py_ssize_t _children_capacity = 1;
23095     Py_ssize_t _n = 0;
23096     { // ',' import_from_as_name
23097         if (p->error_indicator) {
23098             D(p->level--);
23099             return NULL;
23100         }
23101         D(fprintf(stderr, "%*c> _loop0_34[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' import_from_as_name"));
23102         Token * _literal;
23103         alias_ty elem;
23104         while (
23105             (_literal = _PyPegen_expect_token(p, 12))  // token=','
23106             &&
23107             (elem = import_from_as_name_rule(p))  // import_from_as_name
23108         )
23109         {
23110             _res = elem;
23111             if (_res == NULL && PyErr_Occurred()) {
23112                 p->error_indicator = 1;
23113                 PyMem_Free(_children);
23114                 D(p->level--);
23115                 return NULL;
23116             }
23117             if (_n == _children_capacity) {
23118                 _children_capacity *= 2;
23119                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23120                 if (!_new_children) {
23121                     p->error_indicator = 1;
23122                     PyErr_NoMemory();
23123                     D(p->level--);
23124                     return NULL;
23125                 }
23126                 _children = _new_children;
23127             }
23128             _children[_n++] = _res;
23129             _mark = p->mark;
23130         }
23131         p->mark = _mark;
23132         D(fprintf(stderr, "%*c%s _loop0_34[%d-%d]: %s failed!\n", p->level, ' ',
23133                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' import_from_as_name"));
23134     }
23135     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23136     if (!_seq) {
23137         PyMem_Free(_children);
23138         p->error_indicator = 1;
23139         PyErr_NoMemory();
23140         D(p->level--);
23141         return NULL;
23142     }
23143     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23144     PyMem_Free(_children);
23145     _PyPegen_insert_memo(p, _start_mark, _loop0_34_type, _seq);
23146     D(p->level--);
23147     return _seq;
23148 }
23149 
23150 // _gather_33: import_from_as_name _loop0_34
23151 static asdl_seq *
_gather_33_rule(Parser * p)23152 _gather_33_rule(Parser *p)
23153 {
23154     D(p->level++);
23155     if (p->error_indicator) {
23156         D(p->level--);
23157         return NULL;
23158     }
23159     asdl_seq * _res = NULL;
23160     int _mark = p->mark;
23161     { // import_from_as_name _loop0_34
23162         if (p->error_indicator) {
23163             D(p->level--);
23164             return NULL;
23165         }
23166         D(fprintf(stderr, "%*c> _gather_33[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_34"));
23167         alias_ty elem;
23168         asdl_seq * seq;
23169         if (
23170             (elem = import_from_as_name_rule(p))  // import_from_as_name
23171             &&
23172             (seq = _loop0_34_rule(p))  // _loop0_34
23173         )
23174         {
23175             D(fprintf(stderr, "%*c+ _gather_33[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "import_from_as_name _loop0_34"));
23176             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
23177             goto done;
23178         }
23179         p->mark = _mark;
23180         D(fprintf(stderr, "%*c%s _gather_33[%d-%d]: %s failed!\n", p->level, ' ',
23181                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "import_from_as_name _loop0_34"));
23182     }
23183     _res = NULL;
23184   done:
23185     D(p->level--);
23186     return _res;
23187 }
23188 
23189 // _tmp_35: 'as' NAME
23190 static void *
_tmp_35_rule(Parser * p)23191 _tmp_35_rule(Parser *p)
23192 {
23193     D(p->level++);
23194     if (p->error_indicator) {
23195         D(p->level--);
23196         return NULL;
23197     }
23198     void * _res = NULL;
23199     int _mark = p->mark;
23200     { // 'as' NAME
23201         if (p->error_indicator) {
23202             D(p->level--);
23203             return NULL;
23204         }
23205         D(fprintf(stderr, "%*c> _tmp_35[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
23206         Token * _keyword;
23207         expr_ty z;
23208         if (
23209             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
23210             &&
23211             (z = _PyPegen_name_token(p))  // NAME
23212         )
23213         {
23214             D(fprintf(stderr, "%*c+ _tmp_35[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
23215             _res = z;
23216             if (_res == NULL && PyErr_Occurred()) {
23217                 p->error_indicator = 1;
23218                 D(p->level--);
23219                 return NULL;
23220             }
23221             goto done;
23222         }
23223         p->mark = _mark;
23224         D(fprintf(stderr, "%*c%s _tmp_35[%d-%d]: %s failed!\n", p->level, ' ',
23225                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
23226     }
23227     _res = NULL;
23228   done:
23229     D(p->level--);
23230     return _res;
23231 }
23232 
23233 // _loop0_37: ',' dotted_as_name
23234 static asdl_seq *
_loop0_37_rule(Parser * p)23235 _loop0_37_rule(Parser *p)
23236 {
23237     D(p->level++);
23238     if (p->error_indicator) {
23239         D(p->level--);
23240         return NULL;
23241     }
23242     void *_res = NULL;
23243     int _mark = p->mark;
23244     int _start_mark = p->mark;
23245     void **_children = PyMem_Malloc(sizeof(void *));
23246     if (!_children) {
23247         p->error_indicator = 1;
23248         PyErr_NoMemory();
23249         D(p->level--);
23250         return NULL;
23251     }
23252     Py_ssize_t _children_capacity = 1;
23253     Py_ssize_t _n = 0;
23254     { // ',' dotted_as_name
23255         if (p->error_indicator) {
23256             D(p->level--);
23257             return NULL;
23258         }
23259         D(fprintf(stderr, "%*c> _loop0_37[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' dotted_as_name"));
23260         Token * _literal;
23261         alias_ty elem;
23262         while (
23263             (_literal = _PyPegen_expect_token(p, 12))  // token=','
23264             &&
23265             (elem = dotted_as_name_rule(p))  // dotted_as_name
23266         )
23267         {
23268             _res = elem;
23269             if (_res == NULL && PyErr_Occurred()) {
23270                 p->error_indicator = 1;
23271                 PyMem_Free(_children);
23272                 D(p->level--);
23273                 return NULL;
23274             }
23275             if (_n == _children_capacity) {
23276                 _children_capacity *= 2;
23277                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23278                 if (!_new_children) {
23279                     p->error_indicator = 1;
23280                     PyErr_NoMemory();
23281                     D(p->level--);
23282                     return NULL;
23283                 }
23284                 _children = _new_children;
23285             }
23286             _children[_n++] = _res;
23287             _mark = p->mark;
23288         }
23289         p->mark = _mark;
23290         D(fprintf(stderr, "%*c%s _loop0_37[%d-%d]: %s failed!\n", p->level, ' ',
23291                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' dotted_as_name"));
23292     }
23293     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23294     if (!_seq) {
23295         PyMem_Free(_children);
23296         p->error_indicator = 1;
23297         PyErr_NoMemory();
23298         D(p->level--);
23299         return NULL;
23300     }
23301     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23302     PyMem_Free(_children);
23303     _PyPegen_insert_memo(p, _start_mark, _loop0_37_type, _seq);
23304     D(p->level--);
23305     return _seq;
23306 }
23307 
23308 // _gather_36: dotted_as_name _loop0_37
23309 static asdl_seq *
_gather_36_rule(Parser * p)23310 _gather_36_rule(Parser *p)
23311 {
23312     D(p->level++);
23313     if (p->error_indicator) {
23314         D(p->level--);
23315         return NULL;
23316     }
23317     asdl_seq * _res = NULL;
23318     int _mark = p->mark;
23319     { // dotted_as_name _loop0_37
23320         if (p->error_indicator) {
23321             D(p->level--);
23322             return NULL;
23323         }
23324         D(fprintf(stderr, "%*c> _gather_36[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_37"));
23325         alias_ty elem;
23326         asdl_seq * seq;
23327         if (
23328             (elem = dotted_as_name_rule(p))  // dotted_as_name
23329             &&
23330             (seq = _loop0_37_rule(p))  // _loop0_37
23331         )
23332         {
23333             D(fprintf(stderr, "%*c+ _gather_36[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dotted_as_name _loop0_37"));
23334             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
23335             goto done;
23336         }
23337         p->mark = _mark;
23338         D(fprintf(stderr, "%*c%s _gather_36[%d-%d]: %s failed!\n", p->level, ' ',
23339                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dotted_as_name _loop0_37"));
23340     }
23341     _res = NULL;
23342   done:
23343     D(p->level--);
23344     return _res;
23345 }
23346 
23347 // _tmp_38: 'as' NAME
23348 static void *
_tmp_38_rule(Parser * p)23349 _tmp_38_rule(Parser *p)
23350 {
23351     D(p->level++);
23352     if (p->error_indicator) {
23353         D(p->level--);
23354         return NULL;
23355     }
23356     void * _res = NULL;
23357     int _mark = p->mark;
23358     { // 'as' NAME
23359         if (p->error_indicator) {
23360             D(p->level--);
23361             return NULL;
23362         }
23363         D(fprintf(stderr, "%*c> _tmp_38[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
23364         Token * _keyword;
23365         expr_ty z;
23366         if (
23367             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
23368             &&
23369             (z = _PyPegen_name_token(p))  // NAME
23370         )
23371         {
23372             D(fprintf(stderr, "%*c+ _tmp_38[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
23373             _res = z;
23374             if (_res == NULL && PyErr_Occurred()) {
23375                 p->error_indicator = 1;
23376                 D(p->level--);
23377                 return NULL;
23378             }
23379             goto done;
23380         }
23381         p->mark = _mark;
23382         D(fprintf(stderr, "%*c%s _tmp_38[%d-%d]: %s failed!\n", p->level, ' ',
23383                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
23384     }
23385     _res = NULL;
23386   done:
23387     D(p->level--);
23388     return _res;
23389 }
23390 
23391 // _loop0_40: ',' with_item
23392 static asdl_seq *
_loop0_40_rule(Parser * p)23393 _loop0_40_rule(Parser *p)
23394 {
23395     D(p->level++);
23396     if (p->error_indicator) {
23397         D(p->level--);
23398         return NULL;
23399     }
23400     void *_res = NULL;
23401     int _mark = p->mark;
23402     int _start_mark = p->mark;
23403     void **_children = PyMem_Malloc(sizeof(void *));
23404     if (!_children) {
23405         p->error_indicator = 1;
23406         PyErr_NoMemory();
23407         D(p->level--);
23408         return NULL;
23409     }
23410     Py_ssize_t _children_capacity = 1;
23411     Py_ssize_t _n = 0;
23412     { // ',' with_item
23413         if (p->error_indicator) {
23414             D(p->level--);
23415             return NULL;
23416         }
23417         D(fprintf(stderr, "%*c> _loop0_40[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
23418         Token * _literal;
23419         withitem_ty elem;
23420         while (
23421             (_literal = _PyPegen_expect_token(p, 12))  // token=','
23422             &&
23423             (elem = with_item_rule(p))  // with_item
23424         )
23425         {
23426             _res = elem;
23427             if (_res == NULL && PyErr_Occurred()) {
23428                 p->error_indicator = 1;
23429                 PyMem_Free(_children);
23430                 D(p->level--);
23431                 return NULL;
23432             }
23433             if (_n == _children_capacity) {
23434                 _children_capacity *= 2;
23435                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23436                 if (!_new_children) {
23437                     p->error_indicator = 1;
23438                     PyErr_NoMemory();
23439                     D(p->level--);
23440                     return NULL;
23441                 }
23442                 _children = _new_children;
23443             }
23444             _children[_n++] = _res;
23445             _mark = p->mark;
23446         }
23447         p->mark = _mark;
23448         D(fprintf(stderr, "%*c%s _loop0_40[%d-%d]: %s failed!\n", p->level, ' ',
23449                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
23450     }
23451     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23452     if (!_seq) {
23453         PyMem_Free(_children);
23454         p->error_indicator = 1;
23455         PyErr_NoMemory();
23456         D(p->level--);
23457         return NULL;
23458     }
23459     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23460     PyMem_Free(_children);
23461     _PyPegen_insert_memo(p, _start_mark, _loop0_40_type, _seq);
23462     D(p->level--);
23463     return _seq;
23464 }
23465 
23466 // _gather_39: with_item _loop0_40
23467 static asdl_seq *
_gather_39_rule(Parser * p)23468 _gather_39_rule(Parser *p)
23469 {
23470     D(p->level++);
23471     if (p->error_indicator) {
23472         D(p->level--);
23473         return NULL;
23474     }
23475     asdl_seq * _res = NULL;
23476     int _mark = p->mark;
23477     { // with_item _loop0_40
23478         if (p->error_indicator) {
23479             D(p->level--);
23480             return NULL;
23481         }
23482         D(fprintf(stderr, "%*c> _gather_39[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_40"));
23483         withitem_ty elem;
23484         asdl_seq * seq;
23485         if (
23486             (elem = with_item_rule(p))  // with_item
23487             &&
23488             (seq = _loop0_40_rule(p))  // _loop0_40
23489         )
23490         {
23491             D(fprintf(stderr, "%*c+ _gather_39[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_40"));
23492             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
23493             goto done;
23494         }
23495         p->mark = _mark;
23496         D(fprintf(stderr, "%*c%s _gather_39[%d-%d]: %s failed!\n", p->level, ' ',
23497                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_40"));
23498     }
23499     _res = NULL;
23500   done:
23501     D(p->level--);
23502     return _res;
23503 }
23504 
23505 // _loop0_42: ',' with_item
23506 static asdl_seq *
_loop0_42_rule(Parser * p)23507 _loop0_42_rule(Parser *p)
23508 {
23509     D(p->level++);
23510     if (p->error_indicator) {
23511         D(p->level--);
23512         return NULL;
23513     }
23514     void *_res = NULL;
23515     int _mark = p->mark;
23516     int _start_mark = p->mark;
23517     void **_children = PyMem_Malloc(sizeof(void *));
23518     if (!_children) {
23519         p->error_indicator = 1;
23520         PyErr_NoMemory();
23521         D(p->level--);
23522         return NULL;
23523     }
23524     Py_ssize_t _children_capacity = 1;
23525     Py_ssize_t _n = 0;
23526     { // ',' with_item
23527         if (p->error_indicator) {
23528             D(p->level--);
23529             return NULL;
23530         }
23531         D(fprintf(stderr, "%*c> _loop0_42[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
23532         Token * _literal;
23533         withitem_ty elem;
23534         while (
23535             (_literal = _PyPegen_expect_token(p, 12))  // token=','
23536             &&
23537             (elem = with_item_rule(p))  // with_item
23538         )
23539         {
23540             _res = elem;
23541             if (_res == NULL && PyErr_Occurred()) {
23542                 p->error_indicator = 1;
23543                 PyMem_Free(_children);
23544                 D(p->level--);
23545                 return NULL;
23546             }
23547             if (_n == _children_capacity) {
23548                 _children_capacity *= 2;
23549                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23550                 if (!_new_children) {
23551                     p->error_indicator = 1;
23552                     PyErr_NoMemory();
23553                     D(p->level--);
23554                     return NULL;
23555                 }
23556                 _children = _new_children;
23557             }
23558             _children[_n++] = _res;
23559             _mark = p->mark;
23560         }
23561         p->mark = _mark;
23562         D(fprintf(stderr, "%*c%s _loop0_42[%d-%d]: %s failed!\n", p->level, ' ',
23563                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
23564     }
23565     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23566     if (!_seq) {
23567         PyMem_Free(_children);
23568         p->error_indicator = 1;
23569         PyErr_NoMemory();
23570         D(p->level--);
23571         return NULL;
23572     }
23573     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23574     PyMem_Free(_children);
23575     _PyPegen_insert_memo(p, _start_mark, _loop0_42_type, _seq);
23576     D(p->level--);
23577     return _seq;
23578 }
23579 
23580 // _gather_41: with_item _loop0_42
23581 static asdl_seq *
_gather_41_rule(Parser * p)23582 _gather_41_rule(Parser *p)
23583 {
23584     D(p->level++);
23585     if (p->error_indicator) {
23586         D(p->level--);
23587         return NULL;
23588     }
23589     asdl_seq * _res = NULL;
23590     int _mark = p->mark;
23591     { // with_item _loop0_42
23592         if (p->error_indicator) {
23593             D(p->level--);
23594             return NULL;
23595         }
23596         D(fprintf(stderr, "%*c> _gather_41[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_42"));
23597         withitem_ty elem;
23598         asdl_seq * seq;
23599         if (
23600             (elem = with_item_rule(p))  // with_item
23601             &&
23602             (seq = _loop0_42_rule(p))  // _loop0_42
23603         )
23604         {
23605             D(fprintf(stderr, "%*c+ _gather_41[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_42"));
23606             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
23607             goto done;
23608         }
23609         p->mark = _mark;
23610         D(fprintf(stderr, "%*c%s _gather_41[%d-%d]: %s failed!\n", p->level, ' ',
23611                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_42"));
23612     }
23613     _res = NULL;
23614   done:
23615     D(p->level--);
23616     return _res;
23617 }
23618 
23619 // _loop0_44: ',' with_item
23620 static asdl_seq *
_loop0_44_rule(Parser * p)23621 _loop0_44_rule(Parser *p)
23622 {
23623     D(p->level++);
23624     if (p->error_indicator) {
23625         D(p->level--);
23626         return NULL;
23627     }
23628     void *_res = NULL;
23629     int _mark = p->mark;
23630     int _start_mark = p->mark;
23631     void **_children = PyMem_Malloc(sizeof(void *));
23632     if (!_children) {
23633         p->error_indicator = 1;
23634         PyErr_NoMemory();
23635         D(p->level--);
23636         return NULL;
23637     }
23638     Py_ssize_t _children_capacity = 1;
23639     Py_ssize_t _n = 0;
23640     { // ',' with_item
23641         if (p->error_indicator) {
23642             D(p->level--);
23643             return NULL;
23644         }
23645         D(fprintf(stderr, "%*c> _loop0_44[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
23646         Token * _literal;
23647         withitem_ty elem;
23648         while (
23649             (_literal = _PyPegen_expect_token(p, 12))  // token=','
23650             &&
23651             (elem = with_item_rule(p))  // with_item
23652         )
23653         {
23654             _res = elem;
23655             if (_res == NULL && PyErr_Occurred()) {
23656                 p->error_indicator = 1;
23657                 PyMem_Free(_children);
23658                 D(p->level--);
23659                 return NULL;
23660             }
23661             if (_n == _children_capacity) {
23662                 _children_capacity *= 2;
23663                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23664                 if (!_new_children) {
23665                     p->error_indicator = 1;
23666                     PyErr_NoMemory();
23667                     D(p->level--);
23668                     return NULL;
23669                 }
23670                 _children = _new_children;
23671             }
23672             _children[_n++] = _res;
23673             _mark = p->mark;
23674         }
23675         p->mark = _mark;
23676         D(fprintf(stderr, "%*c%s _loop0_44[%d-%d]: %s failed!\n", p->level, ' ',
23677                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
23678     }
23679     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23680     if (!_seq) {
23681         PyMem_Free(_children);
23682         p->error_indicator = 1;
23683         PyErr_NoMemory();
23684         D(p->level--);
23685         return NULL;
23686     }
23687     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23688     PyMem_Free(_children);
23689     _PyPegen_insert_memo(p, _start_mark, _loop0_44_type, _seq);
23690     D(p->level--);
23691     return _seq;
23692 }
23693 
23694 // _gather_43: with_item _loop0_44
23695 static asdl_seq *
_gather_43_rule(Parser * p)23696 _gather_43_rule(Parser *p)
23697 {
23698     D(p->level++);
23699     if (p->error_indicator) {
23700         D(p->level--);
23701         return NULL;
23702     }
23703     asdl_seq * _res = NULL;
23704     int _mark = p->mark;
23705     { // with_item _loop0_44
23706         if (p->error_indicator) {
23707             D(p->level--);
23708             return NULL;
23709         }
23710         D(fprintf(stderr, "%*c> _gather_43[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_44"));
23711         withitem_ty elem;
23712         asdl_seq * seq;
23713         if (
23714             (elem = with_item_rule(p))  // with_item
23715             &&
23716             (seq = _loop0_44_rule(p))  // _loop0_44
23717         )
23718         {
23719             D(fprintf(stderr, "%*c+ _gather_43[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_44"));
23720             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
23721             goto done;
23722         }
23723         p->mark = _mark;
23724         D(fprintf(stderr, "%*c%s _gather_43[%d-%d]: %s failed!\n", p->level, ' ',
23725                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_44"));
23726     }
23727     _res = NULL;
23728   done:
23729     D(p->level--);
23730     return _res;
23731 }
23732 
23733 // _loop0_46: ',' with_item
23734 static asdl_seq *
_loop0_46_rule(Parser * p)23735 _loop0_46_rule(Parser *p)
23736 {
23737     D(p->level++);
23738     if (p->error_indicator) {
23739         D(p->level--);
23740         return NULL;
23741     }
23742     void *_res = NULL;
23743     int _mark = p->mark;
23744     int _start_mark = p->mark;
23745     void **_children = PyMem_Malloc(sizeof(void *));
23746     if (!_children) {
23747         p->error_indicator = 1;
23748         PyErr_NoMemory();
23749         D(p->level--);
23750         return NULL;
23751     }
23752     Py_ssize_t _children_capacity = 1;
23753     Py_ssize_t _n = 0;
23754     { // ',' with_item
23755         if (p->error_indicator) {
23756             D(p->level--);
23757             return NULL;
23758         }
23759         D(fprintf(stderr, "%*c> _loop0_46[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' with_item"));
23760         Token * _literal;
23761         withitem_ty elem;
23762         while (
23763             (_literal = _PyPegen_expect_token(p, 12))  // token=','
23764             &&
23765             (elem = with_item_rule(p))  // with_item
23766         )
23767         {
23768             _res = elem;
23769             if (_res == NULL && PyErr_Occurred()) {
23770                 p->error_indicator = 1;
23771                 PyMem_Free(_children);
23772                 D(p->level--);
23773                 return NULL;
23774             }
23775             if (_n == _children_capacity) {
23776                 _children_capacity *= 2;
23777                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23778                 if (!_new_children) {
23779                     p->error_indicator = 1;
23780                     PyErr_NoMemory();
23781                     D(p->level--);
23782                     return NULL;
23783                 }
23784                 _children = _new_children;
23785             }
23786             _children[_n++] = _res;
23787             _mark = p->mark;
23788         }
23789         p->mark = _mark;
23790         D(fprintf(stderr, "%*c%s _loop0_46[%d-%d]: %s failed!\n", p->level, ' ',
23791                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' with_item"));
23792     }
23793     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23794     if (!_seq) {
23795         PyMem_Free(_children);
23796         p->error_indicator = 1;
23797         PyErr_NoMemory();
23798         D(p->level--);
23799         return NULL;
23800     }
23801     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23802     PyMem_Free(_children);
23803     _PyPegen_insert_memo(p, _start_mark, _loop0_46_type, _seq);
23804     D(p->level--);
23805     return _seq;
23806 }
23807 
23808 // _gather_45: with_item _loop0_46
23809 static asdl_seq *
_gather_45_rule(Parser * p)23810 _gather_45_rule(Parser *p)
23811 {
23812     D(p->level++);
23813     if (p->error_indicator) {
23814         D(p->level--);
23815         return NULL;
23816     }
23817     asdl_seq * _res = NULL;
23818     int _mark = p->mark;
23819     { // with_item _loop0_46
23820         if (p->error_indicator) {
23821             D(p->level--);
23822             return NULL;
23823         }
23824         D(fprintf(stderr, "%*c> _gather_45[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "with_item _loop0_46"));
23825         withitem_ty elem;
23826         asdl_seq * seq;
23827         if (
23828             (elem = with_item_rule(p))  // with_item
23829             &&
23830             (seq = _loop0_46_rule(p))  // _loop0_46
23831         )
23832         {
23833             D(fprintf(stderr, "%*c+ _gather_45[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "with_item _loop0_46"));
23834             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
23835             goto done;
23836         }
23837         p->mark = _mark;
23838         D(fprintf(stderr, "%*c%s _gather_45[%d-%d]: %s failed!\n", p->level, ' ',
23839                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "with_item _loop0_46"));
23840     }
23841     _res = NULL;
23842   done:
23843     D(p->level--);
23844     return _res;
23845 }
23846 
23847 // _tmp_47: ',' | ')' | ':'
23848 static void *
_tmp_47_rule(Parser * p)23849 _tmp_47_rule(Parser *p)
23850 {
23851     D(p->level++);
23852     if (p->error_indicator) {
23853         D(p->level--);
23854         return NULL;
23855     }
23856     void * _res = NULL;
23857     int _mark = p->mark;
23858     { // ','
23859         if (p->error_indicator) {
23860             D(p->level--);
23861             return NULL;
23862         }
23863         D(fprintf(stderr, "%*c> _tmp_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
23864         Token * _literal;
23865         if (
23866             (_literal = _PyPegen_expect_token(p, 12))  // token=','
23867         )
23868         {
23869             D(fprintf(stderr, "%*c+ _tmp_47[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
23870             _res = _literal;
23871             goto done;
23872         }
23873         p->mark = _mark;
23874         D(fprintf(stderr, "%*c%s _tmp_47[%d-%d]: %s failed!\n", p->level, ' ',
23875                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
23876     }
23877     { // ')'
23878         if (p->error_indicator) {
23879             D(p->level--);
23880             return NULL;
23881         }
23882         D(fprintf(stderr, "%*c> _tmp_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
23883         Token * _literal;
23884         if (
23885             (_literal = _PyPegen_expect_token(p, 8))  // token=')'
23886         )
23887         {
23888             D(fprintf(stderr, "%*c+ _tmp_47[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
23889             _res = _literal;
23890             goto done;
23891         }
23892         p->mark = _mark;
23893         D(fprintf(stderr, "%*c%s _tmp_47[%d-%d]: %s failed!\n", p->level, ' ',
23894                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
23895     }
23896     { // ':'
23897         if (p->error_indicator) {
23898             D(p->level--);
23899             return NULL;
23900         }
23901         D(fprintf(stderr, "%*c> _tmp_47[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
23902         Token * _literal;
23903         if (
23904             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
23905         )
23906         {
23907             D(fprintf(stderr, "%*c+ _tmp_47[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
23908             _res = _literal;
23909             goto done;
23910         }
23911         p->mark = _mark;
23912         D(fprintf(stderr, "%*c%s _tmp_47[%d-%d]: %s failed!\n", p->level, ' ',
23913                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
23914     }
23915     _res = NULL;
23916   done:
23917     D(p->level--);
23918     return _res;
23919 }
23920 
23921 // _loop1_48: except_block
23922 static asdl_seq *
_loop1_48_rule(Parser * p)23923 _loop1_48_rule(Parser *p)
23924 {
23925     D(p->level++);
23926     if (p->error_indicator) {
23927         D(p->level--);
23928         return NULL;
23929     }
23930     void *_res = NULL;
23931     int _mark = p->mark;
23932     int _start_mark = p->mark;
23933     void **_children = PyMem_Malloc(sizeof(void *));
23934     if (!_children) {
23935         p->error_indicator = 1;
23936         PyErr_NoMemory();
23937         D(p->level--);
23938         return NULL;
23939     }
23940     Py_ssize_t _children_capacity = 1;
23941     Py_ssize_t _n = 0;
23942     { // except_block
23943         if (p->error_indicator) {
23944             D(p->level--);
23945             return NULL;
23946         }
23947         D(fprintf(stderr, "%*c> _loop1_48[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "except_block"));
23948         excepthandler_ty except_block_var;
23949         while (
23950             (except_block_var = except_block_rule(p))  // except_block
23951         )
23952         {
23953             _res = except_block_var;
23954             if (_n == _children_capacity) {
23955                 _children_capacity *= 2;
23956                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
23957                 if (!_new_children) {
23958                     p->error_indicator = 1;
23959                     PyErr_NoMemory();
23960                     D(p->level--);
23961                     return NULL;
23962                 }
23963                 _children = _new_children;
23964             }
23965             _children[_n++] = _res;
23966             _mark = p->mark;
23967         }
23968         p->mark = _mark;
23969         D(fprintf(stderr, "%*c%s _loop1_48[%d-%d]: %s failed!\n", p->level, ' ',
23970                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "except_block"));
23971     }
23972     if (_n == 0 || p->error_indicator) {
23973         PyMem_Free(_children);
23974         D(p->level--);
23975         return NULL;
23976     }
23977     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
23978     if (!_seq) {
23979         PyMem_Free(_children);
23980         p->error_indicator = 1;
23981         PyErr_NoMemory();
23982         D(p->level--);
23983         return NULL;
23984     }
23985     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
23986     PyMem_Free(_children);
23987     _PyPegen_insert_memo(p, _start_mark, _loop1_48_type, _seq);
23988     D(p->level--);
23989     return _seq;
23990 }
23991 
23992 // _tmp_49: 'as' NAME
23993 static void *
_tmp_49_rule(Parser * p)23994 _tmp_49_rule(Parser *p)
23995 {
23996     D(p->level++);
23997     if (p->error_indicator) {
23998         D(p->level--);
23999         return NULL;
24000     }
24001     void * _res = NULL;
24002     int _mark = p->mark;
24003     { // 'as' NAME
24004         if (p->error_indicator) {
24005             D(p->level--);
24006             return NULL;
24007         }
24008         D(fprintf(stderr, "%*c> _tmp_49[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
24009         Token * _keyword;
24010         expr_ty z;
24011         if (
24012             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
24013             &&
24014             (z = _PyPegen_name_token(p))  // NAME
24015         )
24016         {
24017             D(fprintf(stderr, "%*c+ _tmp_49[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
24018             _res = z;
24019             if (_res == NULL && PyErr_Occurred()) {
24020                 p->error_indicator = 1;
24021                 D(p->level--);
24022                 return NULL;
24023             }
24024             goto done;
24025         }
24026         p->mark = _mark;
24027         D(fprintf(stderr, "%*c%s _tmp_49[%d-%d]: %s failed!\n", p->level, ' ',
24028                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
24029     }
24030     _res = NULL;
24031   done:
24032     D(p->level--);
24033     return _res;
24034 }
24035 
24036 // _loop1_50: case_block
24037 static asdl_seq *
_loop1_50_rule(Parser * p)24038 _loop1_50_rule(Parser *p)
24039 {
24040     D(p->level++);
24041     if (p->error_indicator) {
24042         D(p->level--);
24043         return NULL;
24044     }
24045     void *_res = NULL;
24046     int _mark = p->mark;
24047     int _start_mark = p->mark;
24048     void **_children = PyMem_Malloc(sizeof(void *));
24049     if (!_children) {
24050         p->error_indicator = 1;
24051         PyErr_NoMemory();
24052         D(p->level--);
24053         return NULL;
24054     }
24055     Py_ssize_t _children_capacity = 1;
24056     Py_ssize_t _n = 0;
24057     { // case_block
24058         if (p->error_indicator) {
24059             D(p->level--);
24060             return NULL;
24061         }
24062         D(fprintf(stderr, "%*c> _loop1_50[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "case_block"));
24063         match_case_ty case_block_var;
24064         while (
24065             (case_block_var = case_block_rule(p))  // case_block
24066         )
24067         {
24068             _res = case_block_var;
24069             if (_n == _children_capacity) {
24070                 _children_capacity *= 2;
24071                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24072                 if (!_new_children) {
24073                     p->error_indicator = 1;
24074                     PyErr_NoMemory();
24075                     D(p->level--);
24076                     return NULL;
24077                 }
24078                 _children = _new_children;
24079             }
24080             _children[_n++] = _res;
24081             _mark = p->mark;
24082         }
24083         p->mark = _mark;
24084         D(fprintf(stderr, "%*c%s _loop1_50[%d-%d]: %s failed!\n", p->level, ' ',
24085                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "case_block"));
24086     }
24087     if (_n == 0 || p->error_indicator) {
24088         PyMem_Free(_children);
24089         D(p->level--);
24090         return NULL;
24091     }
24092     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24093     if (!_seq) {
24094         PyMem_Free(_children);
24095         p->error_indicator = 1;
24096         PyErr_NoMemory();
24097         D(p->level--);
24098         return NULL;
24099     }
24100     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24101     PyMem_Free(_children);
24102     _PyPegen_insert_memo(p, _start_mark, _loop1_50_type, _seq);
24103     D(p->level--);
24104     return _seq;
24105 }
24106 
24107 // _loop0_52: '|' closed_pattern
24108 static asdl_seq *
_loop0_52_rule(Parser * p)24109 _loop0_52_rule(Parser *p)
24110 {
24111     D(p->level++);
24112     if (p->error_indicator) {
24113         D(p->level--);
24114         return NULL;
24115     }
24116     void *_res = NULL;
24117     int _mark = p->mark;
24118     int _start_mark = p->mark;
24119     void **_children = PyMem_Malloc(sizeof(void *));
24120     if (!_children) {
24121         p->error_indicator = 1;
24122         PyErr_NoMemory();
24123         D(p->level--);
24124         return NULL;
24125     }
24126     Py_ssize_t _children_capacity = 1;
24127     Py_ssize_t _n = 0;
24128     { // '|' closed_pattern
24129         if (p->error_indicator) {
24130             D(p->level--);
24131             return NULL;
24132         }
24133         D(fprintf(stderr, "%*c> _loop0_52[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'|' closed_pattern"));
24134         Token * _literal;
24135         pattern_ty elem;
24136         while (
24137             (_literal = _PyPegen_expect_token(p, 18))  // token='|'
24138             &&
24139             (elem = closed_pattern_rule(p))  // closed_pattern
24140         )
24141         {
24142             _res = elem;
24143             if (_res == NULL && PyErr_Occurred()) {
24144                 p->error_indicator = 1;
24145                 PyMem_Free(_children);
24146                 D(p->level--);
24147                 return NULL;
24148             }
24149             if (_n == _children_capacity) {
24150                 _children_capacity *= 2;
24151                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24152                 if (!_new_children) {
24153                     p->error_indicator = 1;
24154                     PyErr_NoMemory();
24155                     D(p->level--);
24156                     return NULL;
24157                 }
24158                 _children = _new_children;
24159             }
24160             _children[_n++] = _res;
24161             _mark = p->mark;
24162         }
24163         p->mark = _mark;
24164         D(fprintf(stderr, "%*c%s _loop0_52[%d-%d]: %s failed!\n", p->level, ' ',
24165                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'|' closed_pattern"));
24166     }
24167     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24168     if (!_seq) {
24169         PyMem_Free(_children);
24170         p->error_indicator = 1;
24171         PyErr_NoMemory();
24172         D(p->level--);
24173         return NULL;
24174     }
24175     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24176     PyMem_Free(_children);
24177     _PyPegen_insert_memo(p, _start_mark, _loop0_52_type, _seq);
24178     D(p->level--);
24179     return _seq;
24180 }
24181 
24182 // _gather_51: closed_pattern _loop0_52
24183 static asdl_seq *
_gather_51_rule(Parser * p)24184 _gather_51_rule(Parser *p)
24185 {
24186     D(p->level++);
24187     if (p->error_indicator) {
24188         D(p->level--);
24189         return NULL;
24190     }
24191     asdl_seq * _res = NULL;
24192     int _mark = p->mark;
24193     { // closed_pattern _loop0_52
24194         if (p->error_indicator) {
24195             D(p->level--);
24196             return NULL;
24197         }
24198         D(fprintf(stderr, "%*c> _gather_51[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_52"));
24199         pattern_ty elem;
24200         asdl_seq * seq;
24201         if (
24202             (elem = closed_pattern_rule(p))  // closed_pattern
24203             &&
24204             (seq = _loop0_52_rule(p))  // _loop0_52
24205         )
24206         {
24207             D(fprintf(stderr, "%*c+ _gather_51[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "closed_pattern _loop0_52"));
24208             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24209             goto done;
24210         }
24211         p->mark = _mark;
24212         D(fprintf(stderr, "%*c%s _gather_51[%d-%d]: %s failed!\n", p->level, ' ',
24213                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "closed_pattern _loop0_52"));
24214     }
24215     _res = NULL;
24216   done:
24217     D(p->level--);
24218     return _res;
24219 }
24220 
24221 // _tmp_53: '+' | '-'
24222 static void *
_tmp_53_rule(Parser * p)24223 _tmp_53_rule(Parser *p)
24224 {
24225     D(p->level++);
24226     if (p->error_indicator) {
24227         D(p->level--);
24228         return NULL;
24229     }
24230     void * _res = NULL;
24231     int _mark = p->mark;
24232     { // '+'
24233         if (p->error_indicator) {
24234             D(p->level--);
24235             return NULL;
24236         }
24237         D(fprintf(stderr, "%*c> _tmp_53[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
24238         Token * _literal;
24239         if (
24240             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
24241         )
24242         {
24243             D(fprintf(stderr, "%*c+ _tmp_53[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
24244             _res = _literal;
24245             goto done;
24246         }
24247         p->mark = _mark;
24248         D(fprintf(stderr, "%*c%s _tmp_53[%d-%d]: %s failed!\n", p->level, ' ',
24249                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
24250     }
24251     { // '-'
24252         if (p->error_indicator) {
24253             D(p->level--);
24254             return NULL;
24255         }
24256         D(fprintf(stderr, "%*c> _tmp_53[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
24257         Token * _literal;
24258         if (
24259             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
24260         )
24261         {
24262             D(fprintf(stderr, "%*c+ _tmp_53[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
24263             _res = _literal;
24264             goto done;
24265         }
24266         p->mark = _mark;
24267         D(fprintf(stderr, "%*c%s _tmp_53[%d-%d]: %s failed!\n", p->level, ' ',
24268                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
24269     }
24270     _res = NULL;
24271   done:
24272     D(p->level--);
24273     return _res;
24274 }
24275 
24276 // _tmp_54: '+' | '-'
24277 static void *
_tmp_54_rule(Parser * p)24278 _tmp_54_rule(Parser *p)
24279 {
24280     D(p->level++);
24281     if (p->error_indicator) {
24282         D(p->level--);
24283         return NULL;
24284     }
24285     void * _res = NULL;
24286     int _mark = p->mark;
24287     { // '+'
24288         if (p->error_indicator) {
24289             D(p->level--);
24290             return NULL;
24291         }
24292         D(fprintf(stderr, "%*c> _tmp_54[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'+'"));
24293         Token * _literal;
24294         if (
24295             (_literal = _PyPegen_expect_token(p, 14))  // token='+'
24296         )
24297         {
24298             D(fprintf(stderr, "%*c+ _tmp_54[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'+'"));
24299             _res = _literal;
24300             goto done;
24301         }
24302         p->mark = _mark;
24303         D(fprintf(stderr, "%*c%s _tmp_54[%d-%d]: %s failed!\n", p->level, ' ',
24304                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'+'"));
24305     }
24306     { // '-'
24307         if (p->error_indicator) {
24308             D(p->level--);
24309             return NULL;
24310         }
24311         D(fprintf(stderr, "%*c> _tmp_54[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'-'"));
24312         Token * _literal;
24313         if (
24314             (_literal = _PyPegen_expect_token(p, 15))  // token='-'
24315         )
24316         {
24317             D(fprintf(stderr, "%*c+ _tmp_54[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'-'"));
24318             _res = _literal;
24319             goto done;
24320         }
24321         p->mark = _mark;
24322         D(fprintf(stderr, "%*c%s _tmp_54[%d-%d]: %s failed!\n", p->level, ' ',
24323                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'-'"));
24324     }
24325     _res = NULL;
24326   done:
24327     D(p->level--);
24328     return _res;
24329 }
24330 
24331 // _tmp_55: '.' | '(' | '='
24332 static void *
_tmp_55_rule(Parser * p)24333 _tmp_55_rule(Parser *p)
24334 {
24335     D(p->level++);
24336     if (p->error_indicator) {
24337         D(p->level--);
24338         return NULL;
24339     }
24340     void * _res = NULL;
24341     int _mark = p->mark;
24342     { // '.'
24343         if (p->error_indicator) {
24344             D(p->level--);
24345             return NULL;
24346         }
24347         D(fprintf(stderr, "%*c> _tmp_55[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
24348         Token * _literal;
24349         if (
24350             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
24351         )
24352         {
24353             D(fprintf(stderr, "%*c+ _tmp_55[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
24354             _res = _literal;
24355             goto done;
24356         }
24357         p->mark = _mark;
24358         D(fprintf(stderr, "%*c%s _tmp_55[%d-%d]: %s failed!\n", p->level, ' ',
24359                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
24360     }
24361     { // '('
24362         if (p->error_indicator) {
24363             D(p->level--);
24364             return NULL;
24365         }
24366         D(fprintf(stderr, "%*c> _tmp_55[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
24367         Token * _literal;
24368         if (
24369             (_literal = _PyPegen_expect_token(p, 7))  // token='('
24370         )
24371         {
24372             D(fprintf(stderr, "%*c+ _tmp_55[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
24373             _res = _literal;
24374             goto done;
24375         }
24376         p->mark = _mark;
24377         D(fprintf(stderr, "%*c%s _tmp_55[%d-%d]: %s failed!\n", p->level, ' ',
24378                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
24379     }
24380     { // '='
24381         if (p->error_indicator) {
24382             D(p->level--);
24383             return NULL;
24384         }
24385         D(fprintf(stderr, "%*c> _tmp_55[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
24386         Token * _literal;
24387         if (
24388             (_literal = _PyPegen_expect_token(p, 22))  // token='='
24389         )
24390         {
24391             D(fprintf(stderr, "%*c+ _tmp_55[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
24392             _res = _literal;
24393             goto done;
24394         }
24395         p->mark = _mark;
24396         D(fprintf(stderr, "%*c%s _tmp_55[%d-%d]: %s failed!\n", p->level, ' ',
24397                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
24398     }
24399     _res = NULL;
24400   done:
24401     D(p->level--);
24402     return _res;
24403 }
24404 
24405 // _tmp_56: '.' | '(' | '='
24406 static void *
_tmp_56_rule(Parser * p)24407 _tmp_56_rule(Parser *p)
24408 {
24409     D(p->level++);
24410     if (p->error_indicator) {
24411         D(p->level--);
24412         return NULL;
24413     }
24414     void * _res = NULL;
24415     int _mark = p->mark;
24416     { // '.'
24417         if (p->error_indicator) {
24418             D(p->level--);
24419             return NULL;
24420         }
24421         D(fprintf(stderr, "%*c> _tmp_56[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
24422         Token * _literal;
24423         if (
24424             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
24425         )
24426         {
24427             D(fprintf(stderr, "%*c+ _tmp_56[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
24428             _res = _literal;
24429             goto done;
24430         }
24431         p->mark = _mark;
24432         D(fprintf(stderr, "%*c%s _tmp_56[%d-%d]: %s failed!\n", p->level, ' ',
24433                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
24434     }
24435     { // '('
24436         if (p->error_indicator) {
24437             D(p->level--);
24438             return NULL;
24439         }
24440         D(fprintf(stderr, "%*c> _tmp_56[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
24441         Token * _literal;
24442         if (
24443             (_literal = _PyPegen_expect_token(p, 7))  // token='('
24444         )
24445         {
24446             D(fprintf(stderr, "%*c+ _tmp_56[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
24447             _res = _literal;
24448             goto done;
24449         }
24450         p->mark = _mark;
24451         D(fprintf(stderr, "%*c%s _tmp_56[%d-%d]: %s failed!\n", p->level, ' ',
24452                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
24453     }
24454     { // '='
24455         if (p->error_indicator) {
24456             D(p->level--);
24457             return NULL;
24458         }
24459         D(fprintf(stderr, "%*c> _tmp_56[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
24460         Token * _literal;
24461         if (
24462             (_literal = _PyPegen_expect_token(p, 22))  // token='='
24463         )
24464         {
24465             D(fprintf(stderr, "%*c+ _tmp_56[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
24466             _res = _literal;
24467             goto done;
24468         }
24469         p->mark = _mark;
24470         D(fprintf(stderr, "%*c%s _tmp_56[%d-%d]: %s failed!\n", p->level, ' ',
24471                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
24472     }
24473     _res = NULL;
24474   done:
24475     D(p->level--);
24476     return _res;
24477 }
24478 
24479 // _loop0_58: ',' maybe_star_pattern
24480 static asdl_seq *
_loop0_58_rule(Parser * p)24481 _loop0_58_rule(Parser *p)
24482 {
24483     D(p->level++);
24484     if (p->error_indicator) {
24485         D(p->level--);
24486         return NULL;
24487     }
24488     void *_res = NULL;
24489     int _mark = p->mark;
24490     int _start_mark = p->mark;
24491     void **_children = PyMem_Malloc(sizeof(void *));
24492     if (!_children) {
24493         p->error_indicator = 1;
24494         PyErr_NoMemory();
24495         D(p->level--);
24496         return NULL;
24497     }
24498     Py_ssize_t _children_capacity = 1;
24499     Py_ssize_t _n = 0;
24500     { // ',' maybe_star_pattern
24501         if (p->error_indicator) {
24502             D(p->level--);
24503             return NULL;
24504         }
24505         D(fprintf(stderr, "%*c> _loop0_58[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' maybe_star_pattern"));
24506         Token * _literal;
24507         pattern_ty elem;
24508         while (
24509             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24510             &&
24511             (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
24512         )
24513         {
24514             _res = elem;
24515             if (_res == NULL && PyErr_Occurred()) {
24516                 p->error_indicator = 1;
24517                 PyMem_Free(_children);
24518                 D(p->level--);
24519                 return NULL;
24520             }
24521             if (_n == _children_capacity) {
24522                 _children_capacity *= 2;
24523                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24524                 if (!_new_children) {
24525                     p->error_indicator = 1;
24526                     PyErr_NoMemory();
24527                     D(p->level--);
24528                     return NULL;
24529                 }
24530                 _children = _new_children;
24531             }
24532             _children[_n++] = _res;
24533             _mark = p->mark;
24534         }
24535         p->mark = _mark;
24536         D(fprintf(stderr, "%*c%s _loop0_58[%d-%d]: %s failed!\n", p->level, ' ',
24537                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' maybe_star_pattern"));
24538     }
24539     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24540     if (!_seq) {
24541         PyMem_Free(_children);
24542         p->error_indicator = 1;
24543         PyErr_NoMemory();
24544         D(p->level--);
24545         return NULL;
24546     }
24547     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24548     PyMem_Free(_children);
24549     _PyPegen_insert_memo(p, _start_mark, _loop0_58_type, _seq);
24550     D(p->level--);
24551     return _seq;
24552 }
24553 
24554 // _gather_57: maybe_star_pattern _loop0_58
24555 static asdl_seq *
_gather_57_rule(Parser * p)24556 _gather_57_rule(Parser *p)
24557 {
24558     D(p->level++);
24559     if (p->error_indicator) {
24560         D(p->level--);
24561         return NULL;
24562     }
24563     asdl_seq * _res = NULL;
24564     int _mark = p->mark;
24565     { // maybe_star_pattern _loop0_58
24566         if (p->error_indicator) {
24567             D(p->level--);
24568             return NULL;
24569         }
24570         D(fprintf(stderr, "%*c> _gather_57[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_58"));
24571         pattern_ty elem;
24572         asdl_seq * seq;
24573         if (
24574             (elem = maybe_star_pattern_rule(p))  // maybe_star_pattern
24575             &&
24576             (seq = _loop0_58_rule(p))  // _loop0_58
24577         )
24578         {
24579             D(fprintf(stderr, "%*c+ _gather_57[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "maybe_star_pattern _loop0_58"));
24580             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24581             goto done;
24582         }
24583         p->mark = _mark;
24584         D(fprintf(stderr, "%*c%s _gather_57[%d-%d]: %s failed!\n", p->level, ' ',
24585                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "maybe_star_pattern _loop0_58"));
24586     }
24587     _res = NULL;
24588   done:
24589     D(p->level--);
24590     return _res;
24591 }
24592 
24593 // _loop0_60: ',' key_value_pattern
24594 static asdl_seq *
_loop0_60_rule(Parser * p)24595 _loop0_60_rule(Parser *p)
24596 {
24597     D(p->level++);
24598     if (p->error_indicator) {
24599         D(p->level--);
24600         return NULL;
24601     }
24602     void *_res = NULL;
24603     int _mark = p->mark;
24604     int _start_mark = p->mark;
24605     void **_children = PyMem_Malloc(sizeof(void *));
24606     if (!_children) {
24607         p->error_indicator = 1;
24608         PyErr_NoMemory();
24609         D(p->level--);
24610         return NULL;
24611     }
24612     Py_ssize_t _children_capacity = 1;
24613     Py_ssize_t _n = 0;
24614     { // ',' key_value_pattern
24615         if (p->error_indicator) {
24616             D(p->level--);
24617             return NULL;
24618         }
24619         D(fprintf(stderr, "%*c> _loop0_60[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' key_value_pattern"));
24620         Token * _literal;
24621         KeyPatternPair* elem;
24622         while (
24623             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24624             &&
24625             (elem = key_value_pattern_rule(p))  // key_value_pattern
24626         )
24627         {
24628             _res = elem;
24629             if (_res == NULL && PyErr_Occurred()) {
24630                 p->error_indicator = 1;
24631                 PyMem_Free(_children);
24632                 D(p->level--);
24633                 return NULL;
24634             }
24635             if (_n == _children_capacity) {
24636                 _children_capacity *= 2;
24637                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24638                 if (!_new_children) {
24639                     p->error_indicator = 1;
24640                     PyErr_NoMemory();
24641                     D(p->level--);
24642                     return NULL;
24643                 }
24644                 _children = _new_children;
24645             }
24646             _children[_n++] = _res;
24647             _mark = p->mark;
24648         }
24649         p->mark = _mark;
24650         D(fprintf(stderr, "%*c%s _loop0_60[%d-%d]: %s failed!\n", p->level, ' ',
24651                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' key_value_pattern"));
24652     }
24653     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24654     if (!_seq) {
24655         PyMem_Free(_children);
24656         p->error_indicator = 1;
24657         PyErr_NoMemory();
24658         D(p->level--);
24659         return NULL;
24660     }
24661     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24662     PyMem_Free(_children);
24663     _PyPegen_insert_memo(p, _start_mark, _loop0_60_type, _seq);
24664     D(p->level--);
24665     return _seq;
24666 }
24667 
24668 // _gather_59: key_value_pattern _loop0_60
24669 static asdl_seq *
_gather_59_rule(Parser * p)24670 _gather_59_rule(Parser *p)
24671 {
24672     D(p->level++);
24673     if (p->error_indicator) {
24674         D(p->level--);
24675         return NULL;
24676     }
24677     asdl_seq * _res = NULL;
24678     int _mark = p->mark;
24679     { // key_value_pattern _loop0_60
24680         if (p->error_indicator) {
24681             D(p->level--);
24682             return NULL;
24683         }
24684         D(fprintf(stderr, "%*c> _gather_59[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_60"));
24685         KeyPatternPair* elem;
24686         asdl_seq * seq;
24687         if (
24688             (elem = key_value_pattern_rule(p))  // key_value_pattern
24689             &&
24690             (seq = _loop0_60_rule(p))  // _loop0_60
24691         )
24692         {
24693             D(fprintf(stderr, "%*c+ _gather_59[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "key_value_pattern _loop0_60"));
24694             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24695             goto done;
24696         }
24697         p->mark = _mark;
24698         D(fprintf(stderr, "%*c%s _gather_59[%d-%d]: %s failed!\n", p->level, ' ',
24699                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "key_value_pattern _loop0_60"));
24700     }
24701     _res = NULL;
24702   done:
24703     D(p->level--);
24704     return _res;
24705 }
24706 
24707 // _tmp_61: literal_expr | attr
24708 static void *
_tmp_61_rule(Parser * p)24709 _tmp_61_rule(Parser *p)
24710 {
24711     D(p->level++);
24712     if (p->error_indicator) {
24713         D(p->level--);
24714         return NULL;
24715     }
24716     void * _res = NULL;
24717     int _mark = p->mark;
24718     { // literal_expr
24719         if (p->error_indicator) {
24720             D(p->level--);
24721             return NULL;
24722         }
24723         D(fprintf(stderr, "%*c> _tmp_61[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "literal_expr"));
24724         expr_ty literal_expr_var;
24725         if (
24726             (literal_expr_var = literal_expr_rule(p))  // literal_expr
24727         )
24728         {
24729             D(fprintf(stderr, "%*c+ _tmp_61[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "literal_expr"));
24730             _res = literal_expr_var;
24731             goto done;
24732         }
24733         p->mark = _mark;
24734         D(fprintf(stderr, "%*c%s _tmp_61[%d-%d]: %s failed!\n", p->level, ' ',
24735                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "literal_expr"));
24736     }
24737     { // attr
24738         if (p->error_indicator) {
24739             D(p->level--);
24740             return NULL;
24741         }
24742         D(fprintf(stderr, "%*c> _tmp_61[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "attr"));
24743         expr_ty attr_var;
24744         if (
24745             (attr_var = attr_rule(p))  // attr
24746         )
24747         {
24748             D(fprintf(stderr, "%*c+ _tmp_61[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "attr"));
24749             _res = attr_var;
24750             goto done;
24751         }
24752         p->mark = _mark;
24753         D(fprintf(stderr, "%*c%s _tmp_61[%d-%d]: %s failed!\n", p->level, ' ',
24754                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "attr"));
24755     }
24756     _res = NULL;
24757   done:
24758     D(p->level--);
24759     return _res;
24760 }
24761 
24762 // _loop0_63: ',' pattern
24763 static asdl_seq *
_loop0_63_rule(Parser * p)24764 _loop0_63_rule(Parser *p)
24765 {
24766     D(p->level++);
24767     if (p->error_indicator) {
24768         D(p->level--);
24769         return NULL;
24770     }
24771     void *_res = NULL;
24772     int _mark = p->mark;
24773     int _start_mark = p->mark;
24774     void **_children = PyMem_Malloc(sizeof(void *));
24775     if (!_children) {
24776         p->error_indicator = 1;
24777         PyErr_NoMemory();
24778         D(p->level--);
24779         return NULL;
24780     }
24781     Py_ssize_t _children_capacity = 1;
24782     Py_ssize_t _n = 0;
24783     { // ',' pattern
24784         if (p->error_indicator) {
24785             D(p->level--);
24786             return NULL;
24787         }
24788         D(fprintf(stderr, "%*c> _loop0_63[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' pattern"));
24789         Token * _literal;
24790         pattern_ty elem;
24791         while (
24792             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24793             &&
24794             (elem = pattern_rule(p))  // pattern
24795         )
24796         {
24797             _res = elem;
24798             if (_res == NULL && PyErr_Occurred()) {
24799                 p->error_indicator = 1;
24800                 PyMem_Free(_children);
24801                 D(p->level--);
24802                 return NULL;
24803             }
24804             if (_n == _children_capacity) {
24805                 _children_capacity *= 2;
24806                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24807                 if (!_new_children) {
24808                     p->error_indicator = 1;
24809                     PyErr_NoMemory();
24810                     D(p->level--);
24811                     return NULL;
24812                 }
24813                 _children = _new_children;
24814             }
24815             _children[_n++] = _res;
24816             _mark = p->mark;
24817         }
24818         p->mark = _mark;
24819         D(fprintf(stderr, "%*c%s _loop0_63[%d-%d]: %s failed!\n", p->level, ' ',
24820                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' pattern"));
24821     }
24822     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24823     if (!_seq) {
24824         PyMem_Free(_children);
24825         p->error_indicator = 1;
24826         PyErr_NoMemory();
24827         D(p->level--);
24828         return NULL;
24829     }
24830     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24831     PyMem_Free(_children);
24832     _PyPegen_insert_memo(p, _start_mark, _loop0_63_type, _seq);
24833     D(p->level--);
24834     return _seq;
24835 }
24836 
24837 // _gather_62: pattern _loop0_63
24838 static asdl_seq *
_gather_62_rule(Parser * p)24839 _gather_62_rule(Parser *p)
24840 {
24841     D(p->level++);
24842     if (p->error_indicator) {
24843         D(p->level--);
24844         return NULL;
24845     }
24846     asdl_seq * _res = NULL;
24847     int _mark = p->mark;
24848     { // pattern _loop0_63
24849         if (p->error_indicator) {
24850             D(p->level--);
24851             return NULL;
24852         }
24853         D(fprintf(stderr, "%*c> _gather_62[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "pattern _loop0_63"));
24854         pattern_ty elem;
24855         asdl_seq * seq;
24856         if (
24857             (elem = pattern_rule(p))  // pattern
24858             &&
24859             (seq = _loop0_63_rule(p))  // _loop0_63
24860         )
24861         {
24862             D(fprintf(stderr, "%*c+ _gather_62[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "pattern _loop0_63"));
24863             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24864             goto done;
24865         }
24866         p->mark = _mark;
24867         D(fprintf(stderr, "%*c%s _gather_62[%d-%d]: %s failed!\n", p->level, ' ',
24868                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "pattern _loop0_63"));
24869     }
24870     _res = NULL;
24871   done:
24872     D(p->level--);
24873     return _res;
24874 }
24875 
24876 // _loop0_65: ',' keyword_pattern
24877 static asdl_seq *
_loop0_65_rule(Parser * p)24878 _loop0_65_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     { // ',' keyword_pattern
24898         if (p->error_indicator) {
24899             D(p->level--);
24900             return NULL;
24901         }
24902         D(fprintf(stderr, "%*c> _loop0_65[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' keyword_pattern"));
24903         Token * _literal;
24904         KeyPatternPair* elem;
24905         while (
24906             (_literal = _PyPegen_expect_token(p, 12))  // token=','
24907             &&
24908             (elem = keyword_pattern_rule(p))  // keyword_pattern
24909         )
24910         {
24911             _res = elem;
24912             if (_res == NULL && PyErr_Occurred()) {
24913                 p->error_indicator = 1;
24914                 PyMem_Free(_children);
24915                 D(p->level--);
24916                 return NULL;
24917             }
24918             if (_n == _children_capacity) {
24919                 _children_capacity *= 2;
24920                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
24921                 if (!_new_children) {
24922                     p->error_indicator = 1;
24923                     PyErr_NoMemory();
24924                     D(p->level--);
24925                     return NULL;
24926                 }
24927                 _children = _new_children;
24928             }
24929             _children[_n++] = _res;
24930             _mark = p->mark;
24931         }
24932         p->mark = _mark;
24933         D(fprintf(stderr, "%*c%s _loop0_65[%d-%d]: %s failed!\n", p->level, ' ',
24934                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' keyword_pattern"));
24935     }
24936     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
24937     if (!_seq) {
24938         PyMem_Free(_children);
24939         p->error_indicator = 1;
24940         PyErr_NoMemory();
24941         D(p->level--);
24942         return NULL;
24943     }
24944     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
24945     PyMem_Free(_children);
24946     _PyPegen_insert_memo(p, _start_mark, _loop0_65_type, _seq);
24947     D(p->level--);
24948     return _seq;
24949 }
24950 
24951 // _gather_64: keyword_pattern _loop0_65
24952 static asdl_seq *
_gather_64_rule(Parser * p)24953 _gather_64_rule(Parser *p)
24954 {
24955     D(p->level++);
24956     if (p->error_indicator) {
24957         D(p->level--);
24958         return NULL;
24959     }
24960     asdl_seq * _res = NULL;
24961     int _mark = p->mark;
24962     { // keyword_pattern _loop0_65
24963         if (p->error_indicator) {
24964             D(p->level--);
24965             return NULL;
24966         }
24967         D(fprintf(stderr, "%*c> _gather_64[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_65"));
24968         KeyPatternPair* elem;
24969         asdl_seq * seq;
24970         if (
24971             (elem = keyword_pattern_rule(p))  // keyword_pattern
24972             &&
24973             (seq = _loop0_65_rule(p))  // _loop0_65
24974         )
24975         {
24976             D(fprintf(stderr, "%*c+ _gather_64[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "keyword_pattern _loop0_65"));
24977             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
24978             goto done;
24979         }
24980         p->mark = _mark;
24981         D(fprintf(stderr, "%*c%s _gather_64[%d-%d]: %s failed!\n", p->level, ' ',
24982                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "keyword_pattern _loop0_65"));
24983     }
24984     _res = NULL;
24985   done:
24986     D(p->level--);
24987     return _res;
24988 }
24989 
24990 // _tmp_66: 'from' expression
24991 static void *
_tmp_66_rule(Parser * p)24992 _tmp_66_rule(Parser *p)
24993 {
24994     D(p->level++);
24995     if (p->error_indicator) {
24996         D(p->level--);
24997         return NULL;
24998     }
24999     void * _res = NULL;
25000     int _mark = p->mark;
25001     { // 'from' expression
25002         if (p->error_indicator) {
25003             D(p->level--);
25004             return NULL;
25005         }
25006         D(fprintf(stderr, "%*c> _tmp_66[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'from' expression"));
25007         Token * _keyword;
25008         expr_ty z;
25009         if (
25010             (_keyword = _PyPegen_expect_token(p, 514))  // token='from'
25011             &&
25012             (z = expression_rule(p))  // expression
25013         )
25014         {
25015             D(fprintf(stderr, "%*c+ _tmp_66[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'from' expression"));
25016             _res = z;
25017             if (_res == NULL && PyErr_Occurred()) {
25018                 p->error_indicator = 1;
25019                 D(p->level--);
25020                 return NULL;
25021             }
25022             goto done;
25023         }
25024         p->mark = _mark;
25025         D(fprintf(stderr, "%*c%s _tmp_66[%d-%d]: %s failed!\n", p->level, ' ',
25026                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'from' expression"));
25027     }
25028     _res = NULL;
25029   done:
25030     D(p->level--);
25031     return _res;
25032 }
25033 
25034 // _tmp_67: '->' expression
25035 static void *
_tmp_67_rule(Parser * p)25036 _tmp_67_rule(Parser *p)
25037 {
25038     D(p->level++);
25039     if (p->error_indicator) {
25040         D(p->level--);
25041         return NULL;
25042     }
25043     void * _res = NULL;
25044     int _mark = p->mark;
25045     { // '->' expression
25046         if (p->error_indicator) {
25047             D(p->level--);
25048             return NULL;
25049         }
25050         D(fprintf(stderr, "%*c> _tmp_67[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
25051         Token * _literal;
25052         expr_ty z;
25053         if (
25054             (_literal = _PyPegen_expect_token(p, 51))  // token='->'
25055             &&
25056             (z = expression_rule(p))  // expression
25057         )
25058         {
25059             D(fprintf(stderr, "%*c+ _tmp_67[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
25060             _res = z;
25061             if (_res == NULL && PyErr_Occurred()) {
25062                 p->error_indicator = 1;
25063                 D(p->level--);
25064                 return NULL;
25065             }
25066             goto done;
25067         }
25068         p->mark = _mark;
25069         D(fprintf(stderr, "%*c%s _tmp_67[%d-%d]: %s failed!\n", p->level, ' ',
25070                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
25071     }
25072     _res = NULL;
25073   done:
25074     D(p->level--);
25075     return _res;
25076 }
25077 
25078 // _tmp_68: '->' expression
25079 static void *
_tmp_68_rule(Parser * p)25080 _tmp_68_rule(Parser *p)
25081 {
25082     D(p->level++);
25083     if (p->error_indicator) {
25084         D(p->level--);
25085         return NULL;
25086     }
25087     void * _res = NULL;
25088     int _mark = p->mark;
25089     { // '->' expression
25090         if (p->error_indicator) {
25091             D(p->level--);
25092             return NULL;
25093         }
25094         D(fprintf(stderr, "%*c> _tmp_68[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
25095         Token * _literal;
25096         expr_ty z;
25097         if (
25098             (_literal = _PyPegen_expect_token(p, 51))  // token='->'
25099             &&
25100             (z = expression_rule(p))  // expression
25101         )
25102         {
25103             D(fprintf(stderr, "%*c+ _tmp_68[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
25104             _res = z;
25105             if (_res == NULL && PyErr_Occurred()) {
25106                 p->error_indicator = 1;
25107                 D(p->level--);
25108                 return NULL;
25109             }
25110             goto done;
25111         }
25112         p->mark = _mark;
25113         D(fprintf(stderr, "%*c%s _tmp_68[%d-%d]: %s failed!\n", p->level, ' ',
25114                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
25115     }
25116     _res = NULL;
25117   done:
25118     D(p->level--);
25119     return _res;
25120 }
25121 
25122 // _tmp_69: NEWLINE INDENT
25123 static void *
_tmp_69_rule(Parser * p)25124 _tmp_69_rule(Parser *p)
25125 {
25126     D(p->level++);
25127     if (p->error_indicator) {
25128         D(p->level--);
25129         return NULL;
25130     }
25131     void * _res = NULL;
25132     int _mark = p->mark;
25133     { // NEWLINE INDENT
25134         if (p->error_indicator) {
25135             D(p->level--);
25136             return NULL;
25137         }
25138         D(fprintf(stderr, "%*c> _tmp_69[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
25139         Token * indent_var;
25140         Token * newline_var;
25141         if (
25142             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
25143             &&
25144             (indent_var = _PyPegen_expect_token(p, INDENT))  // token='INDENT'
25145         )
25146         {
25147             D(fprintf(stderr, "%*c+ _tmp_69[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NEWLINE INDENT"));
25148             _res = _PyPegen_dummy_name(p, newline_var, indent_var);
25149             goto done;
25150         }
25151         p->mark = _mark;
25152         D(fprintf(stderr, "%*c%s _tmp_69[%d-%d]: %s failed!\n", p->level, ' ',
25153                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NEWLINE INDENT"));
25154     }
25155     _res = NULL;
25156   done:
25157     D(p->level--);
25158     return _res;
25159 }
25160 
25161 // _loop0_70: param_no_default
25162 static asdl_seq *
_loop0_70_rule(Parser * p)25163 _loop0_70_rule(Parser *p)
25164 {
25165     D(p->level++);
25166     if (p->error_indicator) {
25167         D(p->level--);
25168         return NULL;
25169     }
25170     void *_res = NULL;
25171     int _mark = p->mark;
25172     int _start_mark = p->mark;
25173     void **_children = PyMem_Malloc(sizeof(void *));
25174     if (!_children) {
25175         p->error_indicator = 1;
25176         PyErr_NoMemory();
25177         D(p->level--);
25178         return NULL;
25179     }
25180     Py_ssize_t _children_capacity = 1;
25181     Py_ssize_t _n = 0;
25182     { // param_no_default
25183         if (p->error_indicator) {
25184             D(p->level--);
25185             return NULL;
25186         }
25187         D(fprintf(stderr, "%*c> _loop0_70[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
25188         arg_ty param_no_default_var;
25189         while (
25190             (param_no_default_var = param_no_default_rule(p))  // param_no_default
25191         )
25192         {
25193             _res = param_no_default_var;
25194             if (_n == _children_capacity) {
25195                 _children_capacity *= 2;
25196                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25197                 if (!_new_children) {
25198                     p->error_indicator = 1;
25199                     PyErr_NoMemory();
25200                     D(p->level--);
25201                     return NULL;
25202                 }
25203                 _children = _new_children;
25204             }
25205             _children[_n++] = _res;
25206             _mark = p->mark;
25207         }
25208         p->mark = _mark;
25209         D(fprintf(stderr, "%*c%s _loop0_70[%d-%d]: %s failed!\n", p->level, ' ',
25210                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
25211     }
25212     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25213     if (!_seq) {
25214         PyMem_Free(_children);
25215         p->error_indicator = 1;
25216         PyErr_NoMemory();
25217         D(p->level--);
25218         return NULL;
25219     }
25220     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25221     PyMem_Free(_children);
25222     _PyPegen_insert_memo(p, _start_mark, _loop0_70_type, _seq);
25223     D(p->level--);
25224     return _seq;
25225 }
25226 
25227 // _loop0_71: param_with_default
25228 static asdl_seq *
_loop0_71_rule(Parser * p)25229 _loop0_71_rule(Parser *p)
25230 {
25231     D(p->level++);
25232     if (p->error_indicator) {
25233         D(p->level--);
25234         return NULL;
25235     }
25236     void *_res = NULL;
25237     int _mark = p->mark;
25238     int _start_mark = p->mark;
25239     void **_children = PyMem_Malloc(sizeof(void *));
25240     if (!_children) {
25241         p->error_indicator = 1;
25242         PyErr_NoMemory();
25243         D(p->level--);
25244         return NULL;
25245     }
25246     Py_ssize_t _children_capacity = 1;
25247     Py_ssize_t _n = 0;
25248     { // param_with_default
25249         if (p->error_indicator) {
25250             D(p->level--);
25251             return NULL;
25252         }
25253         D(fprintf(stderr, "%*c> _loop0_71[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
25254         NameDefaultPair* param_with_default_var;
25255         while (
25256             (param_with_default_var = param_with_default_rule(p))  // param_with_default
25257         )
25258         {
25259             _res = param_with_default_var;
25260             if (_n == _children_capacity) {
25261                 _children_capacity *= 2;
25262                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25263                 if (!_new_children) {
25264                     p->error_indicator = 1;
25265                     PyErr_NoMemory();
25266                     D(p->level--);
25267                     return NULL;
25268                 }
25269                 _children = _new_children;
25270             }
25271             _children[_n++] = _res;
25272             _mark = p->mark;
25273         }
25274         p->mark = _mark;
25275         D(fprintf(stderr, "%*c%s _loop0_71[%d-%d]: %s failed!\n", p->level, ' ',
25276                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
25277     }
25278     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25279     if (!_seq) {
25280         PyMem_Free(_children);
25281         p->error_indicator = 1;
25282         PyErr_NoMemory();
25283         D(p->level--);
25284         return NULL;
25285     }
25286     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25287     PyMem_Free(_children);
25288     _PyPegen_insert_memo(p, _start_mark, _loop0_71_type, _seq);
25289     D(p->level--);
25290     return _seq;
25291 }
25292 
25293 // _loop0_72: param_with_default
25294 static asdl_seq *
_loop0_72_rule(Parser * p)25295 _loop0_72_rule(Parser *p)
25296 {
25297     D(p->level++);
25298     if (p->error_indicator) {
25299         D(p->level--);
25300         return NULL;
25301     }
25302     void *_res = NULL;
25303     int _mark = p->mark;
25304     int _start_mark = p->mark;
25305     void **_children = PyMem_Malloc(sizeof(void *));
25306     if (!_children) {
25307         p->error_indicator = 1;
25308         PyErr_NoMemory();
25309         D(p->level--);
25310         return NULL;
25311     }
25312     Py_ssize_t _children_capacity = 1;
25313     Py_ssize_t _n = 0;
25314     { // param_with_default
25315         if (p->error_indicator) {
25316             D(p->level--);
25317             return NULL;
25318         }
25319         D(fprintf(stderr, "%*c> _loop0_72[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
25320         NameDefaultPair* param_with_default_var;
25321         while (
25322             (param_with_default_var = param_with_default_rule(p))  // param_with_default
25323         )
25324         {
25325             _res = param_with_default_var;
25326             if (_n == _children_capacity) {
25327                 _children_capacity *= 2;
25328                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25329                 if (!_new_children) {
25330                     p->error_indicator = 1;
25331                     PyErr_NoMemory();
25332                     D(p->level--);
25333                     return NULL;
25334                 }
25335                 _children = _new_children;
25336             }
25337             _children[_n++] = _res;
25338             _mark = p->mark;
25339         }
25340         p->mark = _mark;
25341         D(fprintf(stderr, "%*c%s _loop0_72[%d-%d]: %s failed!\n", p->level, ' ',
25342                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
25343     }
25344     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25345     if (!_seq) {
25346         PyMem_Free(_children);
25347         p->error_indicator = 1;
25348         PyErr_NoMemory();
25349         D(p->level--);
25350         return NULL;
25351     }
25352     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25353     PyMem_Free(_children);
25354     _PyPegen_insert_memo(p, _start_mark, _loop0_72_type, _seq);
25355     D(p->level--);
25356     return _seq;
25357 }
25358 
25359 // _loop1_73: param_no_default
25360 static asdl_seq *
_loop1_73_rule(Parser * p)25361 _loop1_73_rule(Parser *p)
25362 {
25363     D(p->level++);
25364     if (p->error_indicator) {
25365         D(p->level--);
25366         return NULL;
25367     }
25368     void *_res = NULL;
25369     int _mark = p->mark;
25370     int _start_mark = p->mark;
25371     void **_children = PyMem_Malloc(sizeof(void *));
25372     if (!_children) {
25373         p->error_indicator = 1;
25374         PyErr_NoMemory();
25375         D(p->level--);
25376         return NULL;
25377     }
25378     Py_ssize_t _children_capacity = 1;
25379     Py_ssize_t _n = 0;
25380     { // param_no_default
25381         if (p->error_indicator) {
25382             D(p->level--);
25383             return NULL;
25384         }
25385         D(fprintf(stderr, "%*c> _loop1_73[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
25386         arg_ty param_no_default_var;
25387         while (
25388             (param_no_default_var = param_no_default_rule(p))  // param_no_default
25389         )
25390         {
25391             _res = param_no_default_var;
25392             if (_n == _children_capacity) {
25393                 _children_capacity *= 2;
25394                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25395                 if (!_new_children) {
25396                     p->error_indicator = 1;
25397                     PyErr_NoMemory();
25398                     D(p->level--);
25399                     return NULL;
25400                 }
25401                 _children = _new_children;
25402             }
25403             _children[_n++] = _res;
25404             _mark = p->mark;
25405         }
25406         p->mark = _mark;
25407         D(fprintf(stderr, "%*c%s _loop1_73[%d-%d]: %s failed!\n", p->level, ' ',
25408                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
25409     }
25410     if (_n == 0 || p->error_indicator) {
25411         PyMem_Free(_children);
25412         D(p->level--);
25413         return NULL;
25414     }
25415     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25416     if (!_seq) {
25417         PyMem_Free(_children);
25418         p->error_indicator = 1;
25419         PyErr_NoMemory();
25420         D(p->level--);
25421         return NULL;
25422     }
25423     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25424     PyMem_Free(_children);
25425     _PyPegen_insert_memo(p, _start_mark, _loop1_73_type, _seq);
25426     D(p->level--);
25427     return _seq;
25428 }
25429 
25430 // _loop0_74: param_with_default
25431 static asdl_seq *
_loop0_74_rule(Parser * p)25432 _loop0_74_rule(Parser *p)
25433 {
25434     D(p->level++);
25435     if (p->error_indicator) {
25436         D(p->level--);
25437         return NULL;
25438     }
25439     void *_res = NULL;
25440     int _mark = p->mark;
25441     int _start_mark = p->mark;
25442     void **_children = PyMem_Malloc(sizeof(void *));
25443     if (!_children) {
25444         p->error_indicator = 1;
25445         PyErr_NoMemory();
25446         D(p->level--);
25447         return NULL;
25448     }
25449     Py_ssize_t _children_capacity = 1;
25450     Py_ssize_t _n = 0;
25451     { // param_with_default
25452         if (p->error_indicator) {
25453             D(p->level--);
25454             return NULL;
25455         }
25456         D(fprintf(stderr, "%*c> _loop0_74[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
25457         NameDefaultPair* param_with_default_var;
25458         while (
25459             (param_with_default_var = param_with_default_rule(p))  // param_with_default
25460         )
25461         {
25462             _res = param_with_default_var;
25463             if (_n == _children_capacity) {
25464                 _children_capacity *= 2;
25465                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25466                 if (!_new_children) {
25467                     p->error_indicator = 1;
25468                     PyErr_NoMemory();
25469                     D(p->level--);
25470                     return NULL;
25471                 }
25472                 _children = _new_children;
25473             }
25474             _children[_n++] = _res;
25475             _mark = p->mark;
25476         }
25477         p->mark = _mark;
25478         D(fprintf(stderr, "%*c%s _loop0_74[%d-%d]: %s failed!\n", p->level, ' ',
25479                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
25480     }
25481     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25482     if (!_seq) {
25483         PyMem_Free(_children);
25484         p->error_indicator = 1;
25485         PyErr_NoMemory();
25486         D(p->level--);
25487         return NULL;
25488     }
25489     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25490     PyMem_Free(_children);
25491     _PyPegen_insert_memo(p, _start_mark, _loop0_74_type, _seq);
25492     D(p->level--);
25493     return _seq;
25494 }
25495 
25496 // _loop1_75: param_with_default
25497 static asdl_seq *
_loop1_75_rule(Parser * p)25498 _loop1_75_rule(Parser *p)
25499 {
25500     D(p->level++);
25501     if (p->error_indicator) {
25502         D(p->level--);
25503         return NULL;
25504     }
25505     void *_res = NULL;
25506     int _mark = p->mark;
25507     int _start_mark = p->mark;
25508     void **_children = PyMem_Malloc(sizeof(void *));
25509     if (!_children) {
25510         p->error_indicator = 1;
25511         PyErr_NoMemory();
25512         D(p->level--);
25513         return NULL;
25514     }
25515     Py_ssize_t _children_capacity = 1;
25516     Py_ssize_t _n = 0;
25517     { // param_with_default
25518         if (p->error_indicator) {
25519             D(p->level--);
25520             return NULL;
25521         }
25522         D(fprintf(stderr, "%*c> _loop1_75[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
25523         NameDefaultPair* param_with_default_var;
25524         while (
25525             (param_with_default_var = param_with_default_rule(p))  // param_with_default
25526         )
25527         {
25528             _res = param_with_default_var;
25529             if (_n == _children_capacity) {
25530                 _children_capacity *= 2;
25531                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25532                 if (!_new_children) {
25533                     p->error_indicator = 1;
25534                     PyErr_NoMemory();
25535                     D(p->level--);
25536                     return NULL;
25537                 }
25538                 _children = _new_children;
25539             }
25540             _children[_n++] = _res;
25541             _mark = p->mark;
25542         }
25543         p->mark = _mark;
25544         D(fprintf(stderr, "%*c%s _loop1_75[%d-%d]: %s failed!\n", p->level, ' ',
25545                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
25546     }
25547     if (_n == 0 || p->error_indicator) {
25548         PyMem_Free(_children);
25549         D(p->level--);
25550         return NULL;
25551     }
25552     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25553     if (!_seq) {
25554         PyMem_Free(_children);
25555         p->error_indicator = 1;
25556         PyErr_NoMemory();
25557         D(p->level--);
25558         return NULL;
25559     }
25560     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25561     PyMem_Free(_children);
25562     _PyPegen_insert_memo(p, _start_mark, _loop1_75_type, _seq);
25563     D(p->level--);
25564     return _seq;
25565 }
25566 
25567 // _loop1_76: param_no_default
25568 static asdl_seq *
_loop1_76_rule(Parser * p)25569 _loop1_76_rule(Parser *p)
25570 {
25571     D(p->level++);
25572     if (p->error_indicator) {
25573         D(p->level--);
25574         return NULL;
25575     }
25576     void *_res = NULL;
25577     int _mark = p->mark;
25578     int _start_mark = p->mark;
25579     void **_children = PyMem_Malloc(sizeof(void *));
25580     if (!_children) {
25581         p->error_indicator = 1;
25582         PyErr_NoMemory();
25583         D(p->level--);
25584         return NULL;
25585     }
25586     Py_ssize_t _children_capacity = 1;
25587     Py_ssize_t _n = 0;
25588     { // param_no_default
25589         if (p->error_indicator) {
25590             D(p->level--);
25591             return NULL;
25592         }
25593         D(fprintf(stderr, "%*c> _loop1_76[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
25594         arg_ty param_no_default_var;
25595         while (
25596             (param_no_default_var = param_no_default_rule(p))  // param_no_default
25597         )
25598         {
25599             _res = param_no_default_var;
25600             if (_n == _children_capacity) {
25601                 _children_capacity *= 2;
25602                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25603                 if (!_new_children) {
25604                     p->error_indicator = 1;
25605                     PyErr_NoMemory();
25606                     D(p->level--);
25607                     return NULL;
25608                 }
25609                 _children = _new_children;
25610             }
25611             _children[_n++] = _res;
25612             _mark = p->mark;
25613         }
25614         p->mark = _mark;
25615         D(fprintf(stderr, "%*c%s _loop1_76[%d-%d]: %s failed!\n", p->level, ' ',
25616                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
25617     }
25618     if (_n == 0 || p->error_indicator) {
25619         PyMem_Free(_children);
25620         D(p->level--);
25621         return NULL;
25622     }
25623     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25624     if (!_seq) {
25625         PyMem_Free(_children);
25626         p->error_indicator = 1;
25627         PyErr_NoMemory();
25628         D(p->level--);
25629         return NULL;
25630     }
25631     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25632     PyMem_Free(_children);
25633     _PyPegen_insert_memo(p, _start_mark, _loop1_76_type, _seq);
25634     D(p->level--);
25635     return _seq;
25636 }
25637 
25638 // _loop1_77: param_no_default
25639 static asdl_seq *
_loop1_77_rule(Parser * p)25640 _loop1_77_rule(Parser *p)
25641 {
25642     D(p->level++);
25643     if (p->error_indicator) {
25644         D(p->level--);
25645         return NULL;
25646     }
25647     void *_res = NULL;
25648     int _mark = p->mark;
25649     int _start_mark = p->mark;
25650     void **_children = PyMem_Malloc(sizeof(void *));
25651     if (!_children) {
25652         p->error_indicator = 1;
25653         PyErr_NoMemory();
25654         D(p->level--);
25655         return NULL;
25656     }
25657     Py_ssize_t _children_capacity = 1;
25658     Py_ssize_t _n = 0;
25659     { // param_no_default
25660         if (p->error_indicator) {
25661             D(p->level--);
25662             return NULL;
25663         }
25664         D(fprintf(stderr, "%*c> _loop1_77[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
25665         arg_ty param_no_default_var;
25666         while (
25667             (param_no_default_var = param_no_default_rule(p))  // param_no_default
25668         )
25669         {
25670             _res = param_no_default_var;
25671             if (_n == _children_capacity) {
25672                 _children_capacity *= 2;
25673                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25674                 if (!_new_children) {
25675                     p->error_indicator = 1;
25676                     PyErr_NoMemory();
25677                     D(p->level--);
25678                     return NULL;
25679                 }
25680                 _children = _new_children;
25681             }
25682             _children[_n++] = _res;
25683             _mark = p->mark;
25684         }
25685         p->mark = _mark;
25686         D(fprintf(stderr, "%*c%s _loop1_77[%d-%d]: %s failed!\n", p->level, ' ',
25687                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
25688     }
25689     if (_n == 0 || p->error_indicator) {
25690         PyMem_Free(_children);
25691         D(p->level--);
25692         return NULL;
25693     }
25694     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25695     if (!_seq) {
25696         PyMem_Free(_children);
25697         p->error_indicator = 1;
25698         PyErr_NoMemory();
25699         D(p->level--);
25700         return NULL;
25701     }
25702     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25703     PyMem_Free(_children);
25704     _PyPegen_insert_memo(p, _start_mark, _loop1_77_type, _seq);
25705     D(p->level--);
25706     return _seq;
25707 }
25708 
25709 // _loop0_78: param_no_default
25710 static asdl_seq *
_loop0_78_rule(Parser * p)25711 _loop0_78_rule(Parser *p)
25712 {
25713     D(p->level++);
25714     if (p->error_indicator) {
25715         D(p->level--);
25716         return NULL;
25717     }
25718     void *_res = NULL;
25719     int _mark = p->mark;
25720     int _start_mark = p->mark;
25721     void **_children = PyMem_Malloc(sizeof(void *));
25722     if (!_children) {
25723         p->error_indicator = 1;
25724         PyErr_NoMemory();
25725         D(p->level--);
25726         return NULL;
25727     }
25728     Py_ssize_t _children_capacity = 1;
25729     Py_ssize_t _n = 0;
25730     { // param_no_default
25731         if (p->error_indicator) {
25732             D(p->level--);
25733             return NULL;
25734         }
25735         D(fprintf(stderr, "%*c> _loop0_78[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
25736         arg_ty param_no_default_var;
25737         while (
25738             (param_no_default_var = param_no_default_rule(p))  // param_no_default
25739         )
25740         {
25741             _res = param_no_default_var;
25742             if (_n == _children_capacity) {
25743                 _children_capacity *= 2;
25744                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25745                 if (!_new_children) {
25746                     p->error_indicator = 1;
25747                     PyErr_NoMemory();
25748                     D(p->level--);
25749                     return NULL;
25750                 }
25751                 _children = _new_children;
25752             }
25753             _children[_n++] = _res;
25754             _mark = p->mark;
25755         }
25756         p->mark = _mark;
25757         D(fprintf(stderr, "%*c%s _loop0_78[%d-%d]: %s failed!\n", p->level, ' ',
25758                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
25759     }
25760     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25761     if (!_seq) {
25762         PyMem_Free(_children);
25763         p->error_indicator = 1;
25764         PyErr_NoMemory();
25765         D(p->level--);
25766         return NULL;
25767     }
25768     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25769     PyMem_Free(_children);
25770     _PyPegen_insert_memo(p, _start_mark, _loop0_78_type, _seq);
25771     D(p->level--);
25772     return _seq;
25773 }
25774 
25775 // _loop1_79: param_with_default
25776 static asdl_seq *
_loop1_79_rule(Parser * p)25777 _loop1_79_rule(Parser *p)
25778 {
25779     D(p->level++);
25780     if (p->error_indicator) {
25781         D(p->level--);
25782         return NULL;
25783     }
25784     void *_res = NULL;
25785     int _mark = p->mark;
25786     int _start_mark = p->mark;
25787     void **_children = PyMem_Malloc(sizeof(void *));
25788     if (!_children) {
25789         p->error_indicator = 1;
25790         PyErr_NoMemory();
25791         D(p->level--);
25792         return NULL;
25793     }
25794     Py_ssize_t _children_capacity = 1;
25795     Py_ssize_t _n = 0;
25796     { // param_with_default
25797         if (p->error_indicator) {
25798             D(p->level--);
25799             return NULL;
25800         }
25801         D(fprintf(stderr, "%*c> _loop1_79[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
25802         NameDefaultPair* param_with_default_var;
25803         while (
25804             (param_with_default_var = param_with_default_rule(p))  // param_with_default
25805         )
25806         {
25807             _res = param_with_default_var;
25808             if (_n == _children_capacity) {
25809                 _children_capacity *= 2;
25810                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25811                 if (!_new_children) {
25812                     p->error_indicator = 1;
25813                     PyErr_NoMemory();
25814                     D(p->level--);
25815                     return NULL;
25816                 }
25817                 _children = _new_children;
25818             }
25819             _children[_n++] = _res;
25820             _mark = p->mark;
25821         }
25822         p->mark = _mark;
25823         D(fprintf(stderr, "%*c%s _loop1_79[%d-%d]: %s failed!\n", p->level, ' ',
25824                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
25825     }
25826     if (_n == 0 || p->error_indicator) {
25827         PyMem_Free(_children);
25828         D(p->level--);
25829         return NULL;
25830     }
25831     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25832     if (!_seq) {
25833         PyMem_Free(_children);
25834         p->error_indicator = 1;
25835         PyErr_NoMemory();
25836         D(p->level--);
25837         return NULL;
25838     }
25839     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25840     PyMem_Free(_children);
25841     _PyPegen_insert_memo(p, _start_mark, _loop1_79_type, _seq);
25842     D(p->level--);
25843     return _seq;
25844 }
25845 
25846 // _loop0_80: param_no_default
25847 static asdl_seq *
_loop0_80_rule(Parser * p)25848 _loop0_80_rule(Parser *p)
25849 {
25850     D(p->level++);
25851     if (p->error_indicator) {
25852         D(p->level--);
25853         return NULL;
25854     }
25855     void *_res = NULL;
25856     int _mark = p->mark;
25857     int _start_mark = p->mark;
25858     void **_children = PyMem_Malloc(sizeof(void *));
25859     if (!_children) {
25860         p->error_indicator = 1;
25861         PyErr_NoMemory();
25862         D(p->level--);
25863         return NULL;
25864     }
25865     Py_ssize_t _children_capacity = 1;
25866     Py_ssize_t _n = 0;
25867     { // param_no_default
25868         if (p->error_indicator) {
25869             D(p->level--);
25870             return NULL;
25871         }
25872         D(fprintf(stderr, "%*c> _loop0_80[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
25873         arg_ty param_no_default_var;
25874         while (
25875             (param_no_default_var = param_no_default_rule(p))  // param_no_default
25876         )
25877         {
25878             _res = param_no_default_var;
25879             if (_n == _children_capacity) {
25880                 _children_capacity *= 2;
25881                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25882                 if (!_new_children) {
25883                     p->error_indicator = 1;
25884                     PyErr_NoMemory();
25885                     D(p->level--);
25886                     return NULL;
25887                 }
25888                 _children = _new_children;
25889             }
25890             _children[_n++] = _res;
25891             _mark = p->mark;
25892         }
25893         p->mark = _mark;
25894         D(fprintf(stderr, "%*c%s _loop0_80[%d-%d]: %s failed!\n", p->level, ' ',
25895                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
25896     }
25897     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25898     if (!_seq) {
25899         PyMem_Free(_children);
25900         p->error_indicator = 1;
25901         PyErr_NoMemory();
25902         D(p->level--);
25903         return NULL;
25904     }
25905     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25906     PyMem_Free(_children);
25907     _PyPegen_insert_memo(p, _start_mark, _loop0_80_type, _seq);
25908     D(p->level--);
25909     return _seq;
25910 }
25911 
25912 // _loop1_81: param_with_default
25913 static asdl_seq *
_loop1_81_rule(Parser * p)25914 _loop1_81_rule(Parser *p)
25915 {
25916     D(p->level++);
25917     if (p->error_indicator) {
25918         D(p->level--);
25919         return NULL;
25920     }
25921     void *_res = NULL;
25922     int _mark = p->mark;
25923     int _start_mark = p->mark;
25924     void **_children = PyMem_Malloc(sizeof(void *));
25925     if (!_children) {
25926         p->error_indicator = 1;
25927         PyErr_NoMemory();
25928         D(p->level--);
25929         return NULL;
25930     }
25931     Py_ssize_t _children_capacity = 1;
25932     Py_ssize_t _n = 0;
25933     { // param_with_default
25934         if (p->error_indicator) {
25935             D(p->level--);
25936             return NULL;
25937         }
25938         D(fprintf(stderr, "%*c> _loop1_81[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
25939         NameDefaultPair* param_with_default_var;
25940         while (
25941             (param_with_default_var = param_with_default_rule(p))  // param_with_default
25942         )
25943         {
25944             _res = param_with_default_var;
25945             if (_n == _children_capacity) {
25946                 _children_capacity *= 2;
25947                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
25948                 if (!_new_children) {
25949                     p->error_indicator = 1;
25950                     PyErr_NoMemory();
25951                     D(p->level--);
25952                     return NULL;
25953                 }
25954                 _children = _new_children;
25955             }
25956             _children[_n++] = _res;
25957             _mark = p->mark;
25958         }
25959         p->mark = _mark;
25960         D(fprintf(stderr, "%*c%s _loop1_81[%d-%d]: %s failed!\n", p->level, ' ',
25961                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
25962     }
25963     if (_n == 0 || p->error_indicator) {
25964         PyMem_Free(_children);
25965         D(p->level--);
25966         return NULL;
25967     }
25968     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
25969     if (!_seq) {
25970         PyMem_Free(_children);
25971         p->error_indicator = 1;
25972         PyErr_NoMemory();
25973         D(p->level--);
25974         return NULL;
25975     }
25976     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
25977     PyMem_Free(_children);
25978     _PyPegen_insert_memo(p, _start_mark, _loop1_81_type, _seq);
25979     D(p->level--);
25980     return _seq;
25981 }
25982 
25983 // _loop0_82: param_maybe_default
25984 static asdl_seq *
_loop0_82_rule(Parser * p)25985 _loop0_82_rule(Parser *p)
25986 {
25987     D(p->level++);
25988     if (p->error_indicator) {
25989         D(p->level--);
25990         return NULL;
25991     }
25992     void *_res = NULL;
25993     int _mark = p->mark;
25994     int _start_mark = p->mark;
25995     void **_children = PyMem_Malloc(sizeof(void *));
25996     if (!_children) {
25997         p->error_indicator = 1;
25998         PyErr_NoMemory();
25999         D(p->level--);
26000         return NULL;
26001     }
26002     Py_ssize_t _children_capacity = 1;
26003     Py_ssize_t _n = 0;
26004     { // param_maybe_default
26005         if (p->error_indicator) {
26006             D(p->level--);
26007             return NULL;
26008         }
26009         D(fprintf(stderr, "%*c> _loop0_82[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
26010         NameDefaultPair* param_maybe_default_var;
26011         while (
26012             (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
26013         )
26014         {
26015             _res = param_maybe_default_var;
26016             if (_n == _children_capacity) {
26017                 _children_capacity *= 2;
26018                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26019                 if (!_new_children) {
26020                     p->error_indicator = 1;
26021                     PyErr_NoMemory();
26022                     D(p->level--);
26023                     return NULL;
26024                 }
26025                 _children = _new_children;
26026             }
26027             _children[_n++] = _res;
26028             _mark = p->mark;
26029         }
26030         p->mark = _mark;
26031         D(fprintf(stderr, "%*c%s _loop0_82[%d-%d]: %s failed!\n", p->level, ' ',
26032                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
26033     }
26034     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26035     if (!_seq) {
26036         PyMem_Free(_children);
26037         p->error_indicator = 1;
26038         PyErr_NoMemory();
26039         D(p->level--);
26040         return NULL;
26041     }
26042     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26043     PyMem_Free(_children);
26044     _PyPegen_insert_memo(p, _start_mark, _loop0_82_type, _seq);
26045     D(p->level--);
26046     return _seq;
26047 }
26048 
26049 // _loop1_83: param_maybe_default
26050 static asdl_seq *
_loop1_83_rule(Parser * p)26051 _loop1_83_rule(Parser *p)
26052 {
26053     D(p->level++);
26054     if (p->error_indicator) {
26055         D(p->level--);
26056         return NULL;
26057     }
26058     void *_res = NULL;
26059     int _mark = p->mark;
26060     int _start_mark = p->mark;
26061     void **_children = PyMem_Malloc(sizeof(void *));
26062     if (!_children) {
26063         p->error_indicator = 1;
26064         PyErr_NoMemory();
26065         D(p->level--);
26066         return NULL;
26067     }
26068     Py_ssize_t _children_capacity = 1;
26069     Py_ssize_t _n = 0;
26070     { // param_maybe_default
26071         if (p->error_indicator) {
26072             D(p->level--);
26073             return NULL;
26074         }
26075         D(fprintf(stderr, "%*c> _loop1_83[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_maybe_default"));
26076         NameDefaultPair* param_maybe_default_var;
26077         while (
26078             (param_maybe_default_var = param_maybe_default_rule(p))  // param_maybe_default
26079         )
26080         {
26081             _res = param_maybe_default_var;
26082             if (_n == _children_capacity) {
26083                 _children_capacity *= 2;
26084                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26085                 if (!_new_children) {
26086                     p->error_indicator = 1;
26087                     PyErr_NoMemory();
26088                     D(p->level--);
26089                     return NULL;
26090                 }
26091                 _children = _new_children;
26092             }
26093             _children[_n++] = _res;
26094             _mark = p->mark;
26095         }
26096         p->mark = _mark;
26097         D(fprintf(stderr, "%*c%s _loop1_83[%d-%d]: %s failed!\n", p->level, ' ',
26098                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_maybe_default"));
26099     }
26100     if (_n == 0 || p->error_indicator) {
26101         PyMem_Free(_children);
26102         D(p->level--);
26103         return NULL;
26104     }
26105     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26106     if (!_seq) {
26107         PyMem_Free(_children);
26108         p->error_indicator = 1;
26109         PyErr_NoMemory();
26110         D(p->level--);
26111         return NULL;
26112     }
26113     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26114     PyMem_Free(_children);
26115     _PyPegen_insert_memo(p, _start_mark, _loop1_83_type, _seq);
26116     D(p->level--);
26117     return _seq;
26118 }
26119 
26120 // _loop1_84: ('@' named_expression NEWLINE)
26121 static asdl_seq *
_loop1_84_rule(Parser * p)26122 _loop1_84_rule(Parser *p)
26123 {
26124     D(p->level++);
26125     if (p->error_indicator) {
26126         D(p->level--);
26127         return NULL;
26128     }
26129     void *_res = NULL;
26130     int _mark = p->mark;
26131     int _start_mark = p->mark;
26132     void **_children = PyMem_Malloc(sizeof(void *));
26133     if (!_children) {
26134         p->error_indicator = 1;
26135         PyErr_NoMemory();
26136         D(p->level--);
26137         return NULL;
26138     }
26139     Py_ssize_t _children_capacity = 1;
26140     Py_ssize_t _n = 0;
26141     { // ('@' named_expression NEWLINE)
26142         if (p->error_indicator) {
26143             D(p->level--);
26144             return NULL;
26145         }
26146         D(fprintf(stderr, "%*c> _loop1_84[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('@' named_expression NEWLINE)"));
26147         void *_tmp_184_var;
26148         while (
26149             (_tmp_184_var = _tmp_184_rule(p))  // '@' named_expression NEWLINE
26150         )
26151         {
26152             _res = _tmp_184_var;
26153             if (_n == _children_capacity) {
26154                 _children_capacity *= 2;
26155                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26156                 if (!_new_children) {
26157                     p->error_indicator = 1;
26158                     PyErr_NoMemory();
26159                     D(p->level--);
26160                     return NULL;
26161                 }
26162                 _children = _new_children;
26163             }
26164             _children[_n++] = _res;
26165             _mark = p->mark;
26166         }
26167         p->mark = _mark;
26168         D(fprintf(stderr, "%*c%s _loop1_84[%d-%d]: %s failed!\n", p->level, ' ',
26169                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('@' named_expression NEWLINE)"));
26170     }
26171     if (_n == 0 || p->error_indicator) {
26172         PyMem_Free(_children);
26173         D(p->level--);
26174         return NULL;
26175     }
26176     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26177     if (!_seq) {
26178         PyMem_Free(_children);
26179         p->error_indicator = 1;
26180         PyErr_NoMemory();
26181         D(p->level--);
26182         return NULL;
26183     }
26184     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26185     PyMem_Free(_children);
26186     _PyPegen_insert_memo(p, _start_mark, _loop1_84_type, _seq);
26187     D(p->level--);
26188     return _seq;
26189 }
26190 
26191 // _tmp_85: '(' arguments? ')'
26192 static void *
_tmp_85_rule(Parser * p)26193 _tmp_85_rule(Parser *p)
26194 {
26195     D(p->level++);
26196     if (p->error_indicator) {
26197         D(p->level--);
26198         return NULL;
26199     }
26200     void * _res = NULL;
26201     int _mark = p->mark;
26202     { // '(' arguments? ')'
26203         if (p->error_indicator) {
26204             D(p->level--);
26205             return NULL;
26206         }
26207         D(fprintf(stderr, "%*c> _tmp_85[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
26208         Token * _literal;
26209         Token * _literal_1;
26210         void *z;
26211         if (
26212             (_literal = _PyPegen_expect_token(p, 7))  // token='('
26213             &&
26214             (z = arguments_rule(p), !p->error_indicator)  // arguments?
26215             &&
26216             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
26217         )
26218         {
26219             D(fprintf(stderr, "%*c+ _tmp_85[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
26220             _res = z;
26221             if (_res == NULL && PyErr_Occurred()) {
26222                 p->error_indicator = 1;
26223                 D(p->level--);
26224                 return NULL;
26225             }
26226             goto done;
26227         }
26228         p->mark = _mark;
26229         D(fprintf(stderr, "%*c%s _tmp_85[%d-%d]: %s failed!\n", p->level, ' ',
26230                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'"));
26231     }
26232     _res = NULL;
26233   done:
26234     D(p->level--);
26235     return _res;
26236 }
26237 
26238 // _loop1_86: (',' star_expression)
26239 static asdl_seq *
_loop1_86_rule(Parser * p)26240 _loop1_86_rule(Parser *p)
26241 {
26242     D(p->level++);
26243     if (p->error_indicator) {
26244         D(p->level--);
26245         return NULL;
26246     }
26247     void *_res = NULL;
26248     int _mark = p->mark;
26249     int _start_mark = p->mark;
26250     void **_children = PyMem_Malloc(sizeof(void *));
26251     if (!_children) {
26252         p->error_indicator = 1;
26253         PyErr_NoMemory();
26254         D(p->level--);
26255         return NULL;
26256     }
26257     Py_ssize_t _children_capacity = 1;
26258     Py_ssize_t _n = 0;
26259     { // (',' star_expression)
26260         if (p->error_indicator) {
26261             D(p->level--);
26262             return NULL;
26263         }
26264         D(fprintf(stderr, "%*c> _loop1_86[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_expression)"));
26265         void *_tmp_185_var;
26266         while (
26267             (_tmp_185_var = _tmp_185_rule(p))  // ',' star_expression
26268         )
26269         {
26270             _res = _tmp_185_var;
26271             if (_n == _children_capacity) {
26272                 _children_capacity *= 2;
26273                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26274                 if (!_new_children) {
26275                     p->error_indicator = 1;
26276                     PyErr_NoMemory();
26277                     D(p->level--);
26278                     return NULL;
26279                 }
26280                 _children = _new_children;
26281             }
26282             _children[_n++] = _res;
26283             _mark = p->mark;
26284         }
26285         p->mark = _mark;
26286         D(fprintf(stderr, "%*c%s _loop1_86[%d-%d]: %s failed!\n", p->level, ' ',
26287                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_expression)"));
26288     }
26289     if (_n == 0 || p->error_indicator) {
26290         PyMem_Free(_children);
26291         D(p->level--);
26292         return NULL;
26293     }
26294     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26295     if (!_seq) {
26296         PyMem_Free(_children);
26297         p->error_indicator = 1;
26298         PyErr_NoMemory();
26299         D(p->level--);
26300         return NULL;
26301     }
26302     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26303     PyMem_Free(_children);
26304     _PyPegen_insert_memo(p, _start_mark, _loop1_86_type, _seq);
26305     D(p->level--);
26306     return _seq;
26307 }
26308 
26309 // _loop0_88: ',' star_named_expression
26310 static asdl_seq *
_loop0_88_rule(Parser * p)26311 _loop0_88_rule(Parser *p)
26312 {
26313     D(p->level++);
26314     if (p->error_indicator) {
26315         D(p->level--);
26316         return NULL;
26317     }
26318     void *_res = NULL;
26319     int _mark = p->mark;
26320     int _start_mark = p->mark;
26321     void **_children = PyMem_Malloc(sizeof(void *));
26322     if (!_children) {
26323         p->error_indicator = 1;
26324         PyErr_NoMemory();
26325         D(p->level--);
26326         return NULL;
26327     }
26328     Py_ssize_t _children_capacity = 1;
26329     Py_ssize_t _n = 0;
26330     { // ',' star_named_expression
26331         if (p->error_indicator) {
26332             D(p->level--);
26333             return NULL;
26334         }
26335         D(fprintf(stderr, "%*c> _loop0_88[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_named_expression"));
26336         Token * _literal;
26337         expr_ty elem;
26338         while (
26339             (_literal = _PyPegen_expect_token(p, 12))  // token=','
26340             &&
26341             (elem = star_named_expression_rule(p))  // star_named_expression
26342         )
26343         {
26344             _res = elem;
26345             if (_res == NULL && PyErr_Occurred()) {
26346                 p->error_indicator = 1;
26347                 PyMem_Free(_children);
26348                 D(p->level--);
26349                 return NULL;
26350             }
26351             if (_n == _children_capacity) {
26352                 _children_capacity *= 2;
26353                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26354                 if (!_new_children) {
26355                     p->error_indicator = 1;
26356                     PyErr_NoMemory();
26357                     D(p->level--);
26358                     return NULL;
26359                 }
26360                 _children = _new_children;
26361             }
26362             _children[_n++] = _res;
26363             _mark = p->mark;
26364         }
26365         p->mark = _mark;
26366         D(fprintf(stderr, "%*c%s _loop0_88[%d-%d]: %s failed!\n", p->level, ' ',
26367                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_named_expression"));
26368     }
26369     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26370     if (!_seq) {
26371         PyMem_Free(_children);
26372         p->error_indicator = 1;
26373         PyErr_NoMemory();
26374         D(p->level--);
26375         return NULL;
26376     }
26377     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26378     PyMem_Free(_children);
26379     _PyPegen_insert_memo(p, _start_mark, _loop0_88_type, _seq);
26380     D(p->level--);
26381     return _seq;
26382 }
26383 
26384 // _gather_87: star_named_expression _loop0_88
26385 static asdl_seq *
_gather_87_rule(Parser * p)26386 _gather_87_rule(Parser *p)
26387 {
26388     D(p->level++);
26389     if (p->error_indicator) {
26390         D(p->level--);
26391         return NULL;
26392     }
26393     asdl_seq * _res = NULL;
26394     int _mark = p->mark;
26395     { // star_named_expression _loop0_88
26396         if (p->error_indicator) {
26397             D(p->level--);
26398             return NULL;
26399         }
26400         D(fprintf(stderr, "%*c> _gather_87[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_88"));
26401         expr_ty elem;
26402         asdl_seq * seq;
26403         if (
26404             (elem = star_named_expression_rule(p))  // star_named_expression
26405             &&
26406             (seq = _loop0_88_rule(p))  // _loop0_88
26407         )
26408         {
26409             D(fprintf(stderr, "%*c+ _gather_87[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression _loop0_88"));
26410             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
26411             goto done;
26412         }
26413         p->mark = _mark;
26414         D(fprintf(stderr, "%*c%s _gather_87[%d-%d]: %s failed!\n", p->level, ' ',
26415                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression _loop0_88"));
26416     }
26417     _res = NULL;
26418   done:
26419     D(p->level--);
26420     return _res;
26421 }
26422 
26423 // _loop1_89: (',' expression)
26424 static asdl_seq *
_loop1_89_rule(Parser * p)26425 _loop1_89_rule(Parser *p)
26426 {
26427     D(p->level++);
26428     if (p->error_indicator) {
26429         D(p->level--);
26430         return NULL;
26431     }
26432     void *_res = NULL;
26433     int _mark = p->mark;
26434     int _start_mark = p->mark;
26435     void **_children = PyMem_Malloc(sizeof(void *));
26436     if (!_children) {
26437         p->error_indicator = 1;
26438         PyErr_NoMemory();
26439         D(p->level--);
26440         return NULL;
26441     }
26442     Py_ssize_t _children_capacity = 1;
26443     Py_ssize_t _n = 0;
26444     { // (',' expression)
26445         if (p->error_indicator) {
26446             D(p->level--);
26447             return NULL;
26448         }
26449         D(fprintf(stderr, "%*c> _loop1_89[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' expression)"));
26450         void *_tmp_186_var;
26451         while (
26452             (_tmp_186_var = _tmp_186_rule(p))  // ',' expression
26453         )
26454         {
26455             _res = _tmp_186_var;
26456             if (_n == _children_capacity) {
26457                 _children_capacity *= 2;
26458                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26459                 if (!_new_children) {
26460                     p->error_indicator = 1;
26461                     PyErr_NoMemory();
26462                     D(p->level--);
26463                     return NULL;
26464                 }
26465                 _children = _new_children;
26466             }
26467             _children[_n++] = _res;
26468             _mark = p->mark;
26469         }
26470         p->mark = _mark;
26471         D(fprintf(stderr, "%*c%s _loop1_89[%d-%d]: %s failed!\n", p->level, ' ',
26472                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' expression)"));
26473     }
26474     if (_n == 0 || p->error_indicator) {
26475         PyMem_Free(_children);
26476         D(p->level--);
26477         return NULL;
26478     }
26479     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26480     if (!_seq) {
26481         PyMem_Free(_children);
26482         p->error_indicator = 1;
26483         PyErr_NoMemory();
26484         D(p->level--);
26485         return NULL;
26486     }
26487     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26488     PyMem_Free(_children);
26489     _PyPegen_insert_memo(p, _start_mark, _loop1_89_type, _seq);
26490     D(p->level--);
26491     return _seq;
26492 }
26493 
26494 // _loop0_90: lambda_param_no_default
26495 static asdl_seq *
_loop0_90_rule(Parser * p)26496 _loop0_90_rule(Parser *p)
26497 {
26498     D(p->level++);
26499     if (p->error_indicator) {
26500         D(p->level--);
26501         return NULL;
26502     }
26503     void *_res = NULL;
26504     int _mark = p->mark;
26505     int _start_mark = p->mark;
26506     void **_children = PyMem_Malloc(sizeof(void *));
26507     if (!_children) {
26508         p->error_indicator = 1;
26509         PyErr_NoMemory();
26510         D(p->level--);
26511         return NULL;
26512     }
26513     Py_ssize_t _children_capacity = 1;
26514     Py_ssize_t _n = 0;
26515     { // lambda_param_no_default
26516         if (p->error_indicator) {
26517             D(p->level--);
26518             return NULL;
26519         }
26520         D(fprintf(stderr, "%*c> _loop0_90[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
26521         arg_ty lambda_param_no_default_var;
26522         while (
26523             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
26524         )
26525         {
26526             _res = lambda_param_no_default_var;
26527             if (_n == _children_capacity) {
26528                 _children_capacity *= 2;
26529                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26530                 if (!_new_children) {
26531                     p->error_indicator = 1;
26532                     PyErr_NoMemory();
26533                     D(p->level--);
26534                     return NULL;
26535                 }
26536                 _children = _new_children;
26537             }
26538             _children[_n++] = _res;
26539             _mark = p->mark;
26540         }
26541         p->mark = _mark;
26542         D(fprintf(stderr, "%*c%s _loop0_90[%d-%d]: %s failed!\n", p->level, ' ',
26543                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
26544     }
26545     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26546     if (!_seq) {
26547         PyMem_Free(_children);
26548         p->error_indicator = 1;
26549         PyErr_NoMemory();
26550         D(p->level--);
26551         return NULL;
26552     }
26553     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26554     PyMem_Free(_children);
26555     _PyPegen_insert_memo(p, _start_mark, _loop0_90_type, _seq);
26556     D(p->level--);
26557     return _seq;
26558 }
26559 
26560 // _loop0_91: lambda_param_with_default
26561 static asdl_seq *
_loop0_91_rule(Parser * p)26562 _loop0_91_rule(Parser *p)
26563 {
26564     D(p->level++);
26565     if (p->error_indicator) {
26566         D(p->level--);
26567         return NULL;
26568     }
26569     void *_res = NULL;
26570     int _mark = p->mark;
26571     int _start_mark = p->mark;
26572     void **_children = PyMem_Malloc(sizeof(void *));
26573     if (!_children) {
26574         p->error_indicator = 1;
26575         PyErr_NoMemory();
26576         D(p->level--);
26577         return NULL;
26578     }
26579     Py_ssize_t _children_capacity = 1;
26580     Py_ssize_t _n = 0;
26581     { // lambda_param_with_default
26582         if (p->error_indicator) {
26583             D(p->level--);
26584             return NULL;
26585         }
26586         D(fprintf(stderr, "%*c> _loop0_91[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
26587         NameDefaultPair* lambda_param_with_default_var;
26588         while (
26589             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
26590         )
26591         {
26592             _res = lambda_param_with_default_var;
26593             if (_n == _children_capacity) {
26594                 _children_capacity *= 2;
26595                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26596                 if (!_new_children) {
26597                     p->error_indicator = 1;
26598                     PyErr_NoMemory();
26599                     D(p->level--);
26600                     return NULL;
26601                 }
26602                 _children = _new_children;
26603             }
26604             _children[_n++] = _res;
26605             _mark = p->mark;
26606         }
26607         p->mark = _mark;
26608         D(fprintf(stderr, "%*c%s _loop0_91[%d-%d]: %s failed!\n", p->level, ' ',
26609                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
26610     }
26611     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26612     if (!_seq) {
26613         PyMem_Free(_children);
26614         p->error_indicator = 1;
26615         PyErr_NoMemory();
26616         D(p->level--);
26617         return NULL;
26618     }
26619     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26620     PyMem_Free(_children);
26621     _PyPegen_insert_memo(p, _start_mark, _loop0_91_type, _seq);
26622     D(p->level--);
26623     return _seq;
26624 }
26625 
26626 // _loop0_92: lambda_param_with_default
26627 static asdl_seq *
_loop0_92_rule(Parser * p)26628 _loop0_92_rule(Parser *p)
26629 {
26630     D(p->level++);
26631     if (p->error_indicator) {
26632         D(p->level--);
26633         return NULL;
26634     }
26635     void *_res = NULL;
26636     int _mark = p->mark;
26637     int _start_mark = p->mark;
26638     void **_children = PyMem_Malloc(sizeof(void *));
26639     if (!_children) {
26640         p->error_indicator = 1;
26641         PyErr_NoMemory();
26642         D(p->level--);
26643         return NULL;
26644     }
26645     Py_ssize_t _children_capacity = 1;
26646     Py_ssize_t _n = 0;
26647     { // lambda_param_with_default
26648         if (p->error_indicator) {
26649             D(p->level--);
26650             return NULL;
26651         }
26652         D(fprintf(stderr, "%*c> _loop0_92[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
26653         NameDefaultPair* lambda_param_with_default_var;
26654         while (
26655             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
26656         )
26657         {
26658             _res = lambda_param_with_default_var;
26659             if (_n == _children_capacity) {
26660                 _children_capacity *= 2;
26661                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26662                 if (!_new_children) {
26663                     p->error_indicator = 1;
26664                     PyErr_NoMemory();
26665                     D(p->level--);
26666                     return NULL;
26667                 }
26668                 _children = _new_children;
26669             }
26670             _children[_n++] = _res;
26671             _mark = p->mark;
26672         }
26673         p->mark = _mark;
26674         D(fprintf(stderr, "%*c%s _loop0_92[%d-%d]: %s failed!\n", p->level, ' ',
26675                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
26676     }
26677     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26678     if (!_seq) {
26679         PyMem_Free(_children);
26680         p->error_indicator = 1;
26681         PyErr_NoMemory();
26682         D(p->level--);
26683         return NULL;
26684     }
26685     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26686     PyMem_Free(_children);
26687     _PyPegen_insert_memo(p, _start_mark, _loop0_92_type, _seq);
26688     D(p->level--);
26689     return _seq;
26690 }
26691 
26692 // _loop1_93: lambda_param_no_default
26693 static asdl_seq *
_loop1_93_rule(Parser * p)26694 _loop1_93_rule(Parser *p)
26695 {
26696     D(p->level++);
26697     if (p->error_indicator) {
26698         D(p->level--);
26699         return NULL;
26700     }
26701     void *_res = NULL;
26702     int _mark = p->mark;
26703     int _start_mark = p->mark;
26704     void **_children = PyMem_Malloc(sizeof(void *));
26705     if (!_children) {
26706         p->error_indicator = 1;
26707         PyErr_NoMemory();
26708         D(p->level--);
26709         return NULL;
26710     }
26711     Py_ssize_t _children_capacity = 1;
26712     Py_ssize_t _n = 0;
26713     { // lambda_param_no_default
26714         if (p->error_indicator) {
26715             D(p->level--);
26716             return NULL;
26717         }
26718         D(fprintf(stderr, "%*c> _loop1_93[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
26719         arg_ty lambda_param_no_default_var;
26720         while (
26721             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
26722         )
26723         {
26724             _res = lambda_param_no_default_var;
26725             if (_n == _children_capacity) {
26726                 _children_capacity *= 2;
26727                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26728                 if (!_new_children) {
26729                     p->error_indicator = 1;
26730                     PyErr_NoMemory();
26731                     D(p->level--);
26732                     return NULL;
26733                 }
26734                 _children = _new_children;
26735             }
26736             _children[_n++] = _res;
26737             _mark = p->mark;
26738         }
26739         p->mark = _mark;
26740         D(fprintf(stderr, "%*c%s _loop1_93[%d-%d]: %s failed!\n", p->level, ' ',
26741                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
26742     }
26743     if (_n == 0 || p->error_indicator) {
26744         PyMem_Free(_children);
26745         D(p->level--);
26746         return NULL;
26747     }
26748     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26749     if (!_seq) {
26750         PyMem_Free(_children);
26751         p->error_indicator = 1;
26752         PyErr_NoMemory();
26753         D(p->level--);
26754         return NULL;
26755     }
26756     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26757     PyMem_Free(_children);
26758     _PyPegen_insert_memo(p, _start_mark, _loop1_93_type, _seq);
26759     D(p->level--);
26760     return _seq;
26761 }
26762 
26763 // _loop0_94: lambda_param_with_default
26764 static asdl_seq *
_loop0_94_rule(Parser * p)26765 _loop0_94_rule(Parser *p)
26766 {
26767     D(p->level++);
26768     if (p->error_indicator) {
26769         D(p->level--);
26770         return NULL;
26771     }
26772     void *_res = NULL;
26773     int _mark = p->mark;
26774     int _start_mark = p->mark;
26775     void **_children = PyMem_Malloc(sizeof(void *));
26776     if (!_children) {
26777         p->error_indicator = 1;
26778         PyErr_NoMemory();
26779         D(p->level--);
26780         return NULL;
26781     }
26782     Py_ssize_t _children_capacity = 1;
26783     Py_ssize_t _n = 0;
26784     { // lambda_param_with_default
26785         if (p->error_indicator) {
26786             D(p->level--);
26787             return NULL;
26788         }
26789         D(fprintf(stderr, "%*c> _loop0_94[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
26790         NameDefaultPair* lambda_param_with_default_var;
26791         while (
26792             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
26793         )
26794         {
26795             _res = lambda_param_with_default_var;
26796             if (_n == _children_capacity) {
26797                 _children_capacity *= 2;
26798                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26799                 if (!_new_children) {
26800                     p->error_indicator = 1;
26801                     PyErr_NoMemory();
26802                     D(p->level--);
26803                     return NULL;
26804                 }
26805                 _children = _new_children;
26806             }
26807             _children[_n++] = _res;
26808             _mark = p->mark;
26809         }
26810         p->mark = _mark;
26811         D(fprintf(stderr, "%*c%s _loop0_94[%d-%d]: %s failed!\n", p->level, ' ',
26812                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
26813     }
26814     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26815     if (!_seq) {
26816         PyMem_Free(_children);
26817         p->error_indicator = 1;
26818         PyErr_NoMemory();
26819         D(p->level--);
26820         return NULL;
26821     }
26822     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26823     PyMem_Free(_children);
26824     _PyPegen_insert_memo(p, _start_mark, _loop0_94_type, _seq);
26825     D(p->level--);
26826     return _seq;
26827 }
26828 
26829 // _loop1_95: lambda_param_with_default
26830 static asdl_seq *
_loop1_95_rule(Parser * p)26831 _loop1_95_rule(Parser *p)
26832 {
26833     D(p->level++);
26834     if (p->error_indicator) {
26835         D(p->level--);
26836         return NULL;
26837     }
26838     void *_res = NULL;
26839     int _mark = p->mark;
26840     int _start_mark = p->mark;
26841     void **_children = PyMem_Malloc(sizeof(void *));
26842     if (!_children) {
26843         p->error_indicator = 1;
26844         PyErr_NoMemory();
26845         D(p->level--);
26846         return NULL;
26847     }
26848     Py_ssize_t _children_capacity = 1;
26849     Py_ssize_t _n = 0;
26850     { // lambda_param_with_default
26851         if (p->error_indicator) {
26852             D(p->level--);
26853             return NULL;
26854         }
26855         D(fprintf(stderr, "%*c> _loop1_95[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
26856         NameDefaultPair* lambda_param_with_default_var;
26857         while (
26858             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
26859         )
26860         {
26861             _res = lambda_param_with_default_var;
26862             if (_n == _children_capacity) {
26863                 _children_capacity *= 2;
26864                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26865                 if (!_new_children) {
26866                     p->error_indicator = 1;
26867                     PyErr_NoMemory();
26868                     D(p->level--);
26869                     return NULL;
26870                 }
26871                 _children = _new_children;
26872             }
26873             _children[_n++] = _res;
26874             _mark = p->mark;
26875         }
26876         p->mark = _mark;
26877         D(fprintf(stderr, "%*c%s _loop1_95[%d-%d]: %s failed!\n", p->level, ' ',
26878                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
26879     }
26880     if (_n == 0 || p->error_indicator) {
26881         PyMem_Free(_children);
26882         D(p->level--);
26883         return NULL;
26884     }
26885     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26886     if (!_seq) {
26887         PyMem_Free(_children);
26888         p->error_indicator = 1;
26889         PyErr_NoMemory();
26890         D(p->level--);
26891         return NULL;
26892     }
26893     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26894     PyMem_Free(_children);
26895     _PyPegen_insert_memo(p, _start_mark, _loop1_95_type, _seq);
26896     D(p->level--);
26897     return _seq;
26898 }
26899 
26900 // _loop1_96: lambda_param_no_default
26901 static asdl_seq *
_loop1_96_rule(Parser * p)26902 _loop1_96_rule(Parser *p)
26903 {
26904     D(p->level++);
26905     if (p->error_indicator) {
26906         D(p->level--);
26907         return NULL;
26908     }
26909     void *_res = NULL;
26910     int _mark = p->mark;
26911     int _start_mark = p->mark;
26912     void **_children = PyMem_Malloc(sizeof(void *));
26913     if (!_children) {
26914         p->error_indicator = 1;
26915         PyErr_NoMemory();
26916         D(p->level--);
26917         return NULL;
26918     }
26919     Py_ssize_t _children_capacity = 1;
26920     Py_ssize_t _n = 0;
26921     { // lambda_param_no_default
26922         if (p->error_indicator) {
26923             D(p->level--);
26924             return NULL;
26925         }
26926         D(fprintf(stderr, "%*c> _loop1_96[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
26927         arg_ty lambda_param_no_default_var;
26928         while (
26929             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
26930         )
26931         {
26932             _res = lambda_param_no_default_var;
26933             if (_n == _children_capacity) {
26934                 _children_capacity *= 2;
26935                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
26936                 if (!_new_children) {
26937                     p->error_indicator = 1;
26938                     PyErr_NoMemory();
26939                     D(p->level--);
26940                     return NULL;
26941                 }
26942                 _children = _new_children;
26943             }
26944             _children[_n++] = _res;
26945             _mark = p->mark;
26946         }
26947         p->mark = _mark;
26948         D(fprintf(stderr, "%*c%s _loop1_96[%d-%d]: %s failed!\n", p->level, ' ',
26949                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
26950     }
26951     if (_n == 0 || p->error_indicator) {
26952         PyMem_Free(_children);
26953         D(p->level--);
26954         return NULL;
26955     }
26956     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
26957     if (!_seq) {
26958         PyMem_Free(_children);
26959         p->error_indicator = 1;
26960         PyErr_NoMemory();
26961         D(p->level--);
26962         return NULL;
26963     }
26964     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
26965     PyMem_Free(_children);
26966     _PyPegen_insert_memo(p, _start_mark, _loop1_96_type, _seq);
26967     D(p->level--);
26968     return _seq;
26969 }
26970 
26971 // _loop1_97: lambda_param_no_default
26972 static asdl_seq *
_loop1_97_rule(Parser * p)26973 _loop1_97_rule(Parser *p)
26974 {
26975     D(p->level++);
26976     if (p->error_indicator) {
26977         D(p->level--);
26978         return NULL;
26979     }
26980     void *_res = NULL;
26981     int _mark = p->mark;
26982     int _start_mark = p->mark;
26983     void **_children = PyMem_Malloc(sizeof(void *));
26984     if (!_children) {
26985         p->error_indicator = 1;
26986         PyErr_NoMemory();
26987         D(p->level--);
26988         return NULL;
26989     }
26990     Py_ssize_t _children_capacity = 1;
26991     Py_ssize_t _n = 0;
26992     { // lambda_param_no_default
26993         if (p->error_indicator) {
26994             D(p->level--);
26995             return NULL;
26996         }
26997         D(fprintf(stderr, "%*c> _loop1_97[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
26998         arg_ty lambda_param_no_default_var;
26999         while (
27000             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
27001         )
27002         {
27003             _res = lambda_param_no_default_var;
27004             if (_n == _children_capacity) {
27005                 _children_capacity *= 2;
27006                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27007                 if (!_new_children) {
27008                     p->error_indicator = 1;
27009                     PyErr_NoMemory();
27010                     D(p->level--);
27011                     return NULL;
27012                 }
27013                 _children = _new_children;
27014             }
27015             _children[_n++] = _res;
27016             _mark = p->mark;
27017         }
27018         p->mark = _mark;
27019         D(fprintf(stderr, "%*c%s _loop1_97[%d-%d]: %s failed!\n", p->level, ' ',
27020                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
27021     }
27022     if (_n == 0 || p->error_indicator) {
27023         PyMem_Free(_children);
27024         D(p->level--);
27025         return NULL;
27026     }
27027     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27028     if (!_seq) {
27029         PyMem_Free(_children);
27030         p->error_indicator = 1;
27031         PyErr_NoMemory();
27032         D(p->level--);
27033         return NULL;
27034     }
27035     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27036     PyMem_Free(_children);
27037     _PyPegen_insert_memo(p, _start_mark, _loop1_97_type, _seq);
27038     D(p->level--);
27039     return _seq;
27040 }
27041 
27042 // _loop0_98: lambda_param_no_default
27043 static asdl_seq *
_loop0_98_rule(Parser * p)27044 _loop0_98_rule(Parser *p)
27045 {
27046     D(p->level++);
27047     if (p->error_indicator) {
27048         D(p->level--);
27049         return NULL;
27050     }
27051     void *_res = NULL;
27052     int _mark = p->mark;
27053     int _start_mark = p->mark;
27054     void **_children = PyMem_Malloc(sizeof(void *));
27055     if (!_children) {
27056         p->error_indicator = 1;
27057         PyErr_NoMemory();
27058         D(p->level--);
27059         return NULL;
27060     }
27061     Py_ssize_t _children_capacity = 1;
27062     Py_ssize_t _n = 0;
27063     { // lambda_param_no_default
27064         if (p->error_indicator) {
27065             D(p->level--);
27066             return NULL;
27067         }
27068         D(fprintf(stderr, "%*c> _loop0_98[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
27069         arg_ty lambda_param_no_default_var;
27070         while (
27071             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
27072         )
27073         {
27074             _res = lambda_param_no_default_var;
27075             if (_n == _children_capacity) {
27076                 _children_capacity *= 2;
27077                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27078                 if (!_new_children) {
27079                     p->error_indicator = 1;
27080                     PyErr_NoMemory();
27081                     D(p->level--);
27082                     return NULL;
27083                 }
27084                 _children = _new_children;
27085             }
27086             _children[_n++] = _res;
27087             _mark = p->mark;
27088         }
27089         p->mark = _mark;
27090         D(fprintf(stderr, "%*c%s _loop0_98[%d-%d]: %s failed!\n", p->level, ' ',
27091                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
27092     }
27093     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27094     if (!_seq) {
27095         PyMem_Free(_children);
27096         p->error_indicator = 1;
27097         PyErr_NoMemory();
27098         D(p->level--);
27099         return NULL;
27100     }
27101     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27102     PyMem_Free(_children);
27103     _PyPegen_insert_memo(p, _start_mark, _loop0_98_type, _seq);
27104     D(p->level--);
27105     return _seq;
27106 }
27107 
27108 // _loop1_99: lambda_param_with_default
27109 static asdl_seq *
_loop1_99_rule(Parser * p)27110 _loop1_99_rule(Parser *p)
27111 {
27112     D(p->level++);
27113     if (p->error_indicator) {
27114         D(p->level--);
27115         return NULL;
27116     }
27117     void *_res = NULL;
27118     int _mark = p->mark;
27119     int _start_mark = p->mark;
27120     void **_children = PyMem_Malloc(sizeof(void *));
27121     if (!_children) {
27122         p->error_indicator = 1;
27123         PyErr_NoMemory();
27124         D(p->level--);
27125         return NULL;
27126     }
27127     Py_ssize_t _children_capacity = 1;
27128     Py_ssize_t _n = 0;
27129     { // lambda_param_with_default
27130         if (p->error_indicator) {
27131             D(p->level--);
27132             return NULL;
27133         }
27134         D(fprintf(stderr, "%*c> _loop1_99[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
27135         NameDefaultPair* lambda_param_with_default_var;
27136         while (
27137             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
27138         )
27139         {
27140             _res = lambda_param_with_default_var;
27141             if (_n == _children_capacity) {
27142                 _children_capacity *= 2;
27143                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27144                 if (!_new_children) {
27145                     p->error_indicator = 1;
27146                     PyErr_NoMemory();
27147                     D(p->level--);
27148                     return NULL;
27149                 }
27150                 _children = _new_children;
27151             }
27152             _children[_n++] = _res;
27153             _mark = p->mark;
27154         }
27155         p->mark = _mark;
27156         D(fprintf(stderr, "%*c%s _loop1_99[%d-%d]: %s failed!\n", p->level, ' ',
27157                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
27158     }
27159     if (_n == 0 || p->error_indicator) {
27160         PyMem_Free(_children);
27161         D(p->level--);
27162         return NULL;
27163     }
27164     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27165     if (!_seq) {
27166         PyMem_Free(_children);
27167         p->error_indicator = 1;
27168         PyErr_NoMemory();
27169         D(p->level--);
27170         return NULL;
27171     }
27172     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27173     PyMem_Free(_children);
27174     _PyPegen_insert_memo(p, _start_mark, _loop1_99_type, _seq);
27175     D(p->level--);
27176     return _seq;
27177 }
27178 
27179 // _loop0_100: lambda_param_no_default
27180 static asdl_seq *
_loop0_100_rule(Parser * p)27181 _loop0_100_rule(Parser *p)
27182 {
27183     D(p->level++);
27184     if (p->error_indicator) {
27185         D(p->level--);
27186         return NULL;
27187     }
27188     void *_res = NULL;
27189     int _mark = p->mark;
27190     int _start_mark = p->mark;
27191     void **_children = PyMem_Malloc(sizeof(void *));
27192     if (!_children) {
27193         p->error_indicator = 1;
27194         PyErr_NoMemory();
27195         D(p->level--);
27196         return NULL;
27197     }
27198     Py_ssize_t _children_capacity = 1;
27199     Py_ssize_t _n = 0;
27200     { // lambda_param_no_default
27201         if (p->error_indicator) {
27202             D(p->level--);
27203             return NULL;
27204         }
27205         D(fprintf(stderr, "%*c> _loop0_100[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
27206         arg_ty lambda_param_no_default_var;
27207         while (
27208             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
27209         )
27210         {
27211             _res = lambda_param_no_default_var;
27212             if (_n == _children_capacity) {
27213                 _children_capacity *= 2;
27214                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27215                 if (!_new_children) {
27216                     p->error_indicator = 1;
27217                     PyErr_NoMemory();
27218                     D(p->level--);
27219                     return NULL;
27220                 }
27221                 _children = _new_children;
27222             }
27223             _children[_n++] = _res;
27224             _mark = p->mark;
27225         }
27226         p->mark = _mark;
27227         D(fprintf(stderr, "%*c%s _loop0_100[%d-%d]: %s failed!\n", p->level, ' ',
27228                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
27229     }
27230     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27231     if (!_seq) {
27232         PyMem_Free(_children);
27233         p->error_indicator = 1;
27234         PyErr_NoMemory();
27235         D(p->level--);
27236         return NULL;
27237     }
27238     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27239     PyMem_Free(_children);
27240     _PyPegen_insert_memo(p, _start_mark, _loop0_100_type, _seq);
27241     D(p->level--);
27242     return _seq;
27243 }
27244 
27245 // _loop1_101: lambda_param_with_default
27246 static asdl_seq *
_loop1_101_rule(Parser * p)27247 _loop1_101_rule(Parser *p)
27248 {
27249     D(p->level++);
27250     if (p->error_indicator) {
27251         D(p->level--);
27252         return NULL;
27253     }
27254     void *_res = NULL;
27255     int _mark = p->mark;
27256     int _start_mark = p->mark;
27257     void **_children = PyMem_Malloc(sizeof(void *));
27258     if (!_children) {
27259         p->error_indicator = 1;
27260         PyErr_NoMemory();
27261         D(p->level--);
27262         return NULL;
27263     }
27264     Py_ssize_t _children_capacity = 1;
27265     Py_ssize_t _n = 0;
27266     { // lambda_param_with_default
27267         if (p->error_indicator) {
27268             D(p->level--);
27269             return NULL;
27270         }
27271         D(fprintf(stderr, "%*c> _loop1_101[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
27272         NameDefaultPair* lambda_param_with_default_var;
27273         while (
27274             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
27275         )
27276         {
27277             _res = lambda_param_with_default_var;
27278             if (_n == _children_capacity) {
27279                 _children_capacity *= 2;
27280                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27281                 if (!_new_children) {
27282                     p->error_indicator = 1;
27283                     PyErr_NoMemory();
27284                     D(p->level--);
27285                     return NULL;
27286                 }
27287                 _children = _new_children;
27288             }
27289             _children[_n++] = _res;
27290             _mark = p->mark;
27291         }
27292         p->mark = _mark;
27293         D(fprintf(stderr, "%*c%s _loop1_101[%d-%d]: %s failed!\n", p->level, ' ',
27294                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
27295     }
27296     if (_n == 0 || p->error_indicator) {
27297         PyMem_Free(_children);
27298         D(p->level--);
27299         return NULL;
27300     }
27301     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27302     if (!_seq) {
27303         PyMem_Free(_children);
27304         p->error_indicator = 1;
27305         PyErr_NoMemory();
27306         D(p->level--);
27307         return NULL;
27308     }
27309     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27310     PyMem_Free(_children);
27311     _PyPegen_insert_memo(p, _start_mark, _loop1_101_type, _seq);
27312     D(p->level--);
27313     return _seq;
27314 }
27315 
27316 // _loop0_102: lambda_param_maybe_default
27317 static asdl_seq *
_loop0_102_rule(Parser * p)27318 _loop0_102_rule(Parser *p)
27319 {
27320     D(p->level++);
27321     if (p->error_indicator) {
27322         D(p->level--);
27323         return NULL;
27324     }
27325     void *_res = NULL;
27326     int _mark = p->mark;
27327     int _start_mark = p->mark;
27328     void **_children = PyMem_Malloc(sizeof(void *));
27329     if (!_children) {
27330         p->error_indicator = 1;
27331         PyErr_NoMemory();
27332         D(p->level--);
27333         return NULL;
27334     }
27335     Py_ssize_t _children_capacity = 1;
27336     Py_ssize_t _n = 0;
27337     { // lambda_param_maybe_default
27338         if (p->error_indicator) {
27339             D(p->level--);
27340             return NULL;
27341         }
27342         D(fprintf(stderr, "%*c> _loop0_102[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
27343         NameDefaultPair* lambda_param_maybe_default_var;
27344         while (
27345             (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
27346         )
27347         {
27348             _res = lambda_param_maybe_default_var;
27349             if (_n == _children_capacity) {
27350                 _children_capacity *= 2;
27351                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27352                 if (!_new_children) {
27353                     p->error_indicator = 1;
27354                     PyErr_NoMemory();
27355                     D(p->level--);
27356                     return NULL;
27357                 }
27358                 _children = _new_children;
27359             }
27360             _children[_n++] = _res;
27361             _mark = p->mark;
27362         }
27363         p->mark = _mark;
27364         D(fprintf(stderr, "%*c%s _loop0_102[%d-%d]: %s failed!\n", p->level, ' ',
27365                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
27366     }
27367     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27368     if (!_seq) {
27369         PyMem_Free(_children);
27370         p->error_indicator = 1;
27371         PyErr_NoMemory();
27372         D(p->level--);
27373         return NULL;
27374     }
27375     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27376     PyMem_Free(_children);
27377     _PyPegen_insert_memo(p, _start_mark, _loop0_102_type, _seq);
27378     D(p->level--);
27379     return _seq;
27380 }
27381 
27382 // _loop1_103: lambda_param_maybe_default
27383 static asdl_seq *
_loop1_103_rule(Parser * p)27384 _loop1_103_rule(Parser *p)
27385 {
27386     D(p->level++);
27387     if (p->error_indicator) {
27388         D(p->level--);
27389         return NULL;
27390     }
27391     void *_res = NULL;
27392     int _mark = p->mark;
27393     int _start_mark = p->mark;
27394     void **_children = PyMem_Malloc(sizeof(void *));
27395     if (!_children) {
27396         p->error_indicator = 1;
27397         PyErr_NoMemory();
27398         D(p->level--);
27399         return NULL;
27400     }
27401     Py_ssize_t _children_capacity = 1;
27402     Py_ssize_t _n = 0;
27403     { // lambda_param_maybe_default
27404         if (p->error_indicator) {
27405             D(p->level--);
27406             return NULL;
27407         }
27408         D(fprintf(stderr, "%*c> _loop1_103[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_maybe_default"));
27409         NameDefaultPair* lambda_param_maybe_default_var;
27410         while (
27411             (lambda_param_maybe_default_var = lambda_param_maybe_default_rule(p))  // lambda_param_maybe_default
27412         )
27413         {
27414             _res = lambda_param_maybe_default_var;
27415             if (_n == _children_capacity) {
27416                 _children_capacity *= 2;
27417                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27418                 if (!_new_children) {
27419                     p->error_indicator = 1;
27420                     PyErr_NoMemory();
27421                     D(p->level--);
27422                     return NULL;
27423                 }
27424                 _children = _new_children;
27425             }
27426             _children[_n++] = _res;
27427             _mark = p->mark;
27428         }
27429         p->mark = _mark;
27430         D(fprintf(stderr, "%*c%s _loop1_103[%d-%d]: %s failed!\n", p->level, ' ',
27431                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_maybe_default"));
27432     }
27433     if (_n == 0 || p->error_indicator) {
27434         PyMem_Free(_children);
27435         D(p->level--);
27436         return NULL;
27437     }
27438     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27439     if (!_seq) {
27440         PyMem_Free(_children);
27441         p->error_indicator = 1;
27442         PyErr_NoMemory();
27443         D(p->level--);
27444         return NULL;
27445     }
27446     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27447     PyMem_Free(_children);
27448     _PyPegen_insert_memo(p, _start_mark, _loop1_103_type, _seq);
27449     D(p->level--);
27450     return _seq;
27451 }
27452 
27453 // _loop1_104: ('or' conjunction)
27454 static asdl_seq *
_loop1_104_rule(Parser * p)27455 _loop1_104_rule(Parser *p)
27456 {
27457     D(p->level++);
27458     if (p->error_indicator) {
27459         D(p->level--);
27460         return NULL;
27461     }
27462     void *_res = NULL;
27463     int _mark = p->mark;
27464     int _start_mark = p->mark;
27465     void **_children = PyMem_Malloc(sizeof(void *));
27466     if (!_children) {
27467         p->error_indicator = 1;
27468         PyErr_NoMemory();
27469         D(p->level--);
27470         return NULL;
27471     }
27472     Py_ssize_t _children_capacity = 1;
27473     Py_ssize_t _n = 0;
27474     { // ('or' conjunction)
27475         if (p->error_indicator) {
27476             D(p->level--);
27477             return NULL;
27478         }
27479         D(fprintf(stderr, "%*c> _loop1_104[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('or' conjunction)"));
27480         void *_tmp_187_var;
27481         while (
27482             (_tmp_187_var = _tmp_187_rule(p))  // 'or' conjunction
27483         )
27484         {
27485             _res = _tmp_187_var;
27486             if (_n == _children_capacity) {
27487                 _children_capacity *= 2;
27488                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27489                 if (!_new_children) {
27490                     p->error_indicator = 1;
27491                     PyErr_NoMemory();
27492                     D(p->level--);
27493                     return NULL;
27494                 }
27495                 _children = _new_children;
27496             }
27497             _children[_n++] = _res;
27498             _mark = p->mark;
27499         }
27500         p->mark = _mark;
27501         D(fprintf(stderr, "%*c%s _loop1_104[%d-%d]: %s failed!\n", p->level, ' ',
27502                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('or' conjunction)"));
27503     }
27504     if (_n == 0 || p->error_indicator) {
27505         PyMem_Free(_children);
27506         D(p->level--);
27507         return NULL;
27508     }
27509     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27510     if (!_seq) {
27511         PyMem_Free(_children);
27512         p->error_indicator = 1;
27513         PyErr_NoMemory();
27514         D(p->level--);
27515         return NULL;
27516     }
27517     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27518     PyMem_Free(_children);
27519     _PyPegen_insert_memo(p, _start_mark, _loop1_104_type, _seq);
27520     D(p->level--);
27521     return _seq;
27522 }
27523 
27524 // _loop1_105: ('and' inversion)
27525 static asdl_seq *
_loop1_105_rule(Parser * p)27526 _loop1_105_rule(Parser *p)
27527 {
27528     D(p->level++);
27529     if (p->error_indicator) {
27530         D(p->level--);
27531         return NULL;
27532     }
27533     void *_res = NULL;
27534     int _mark = p->mark;
27535     int _start_mark = p->mark;
27536     void **_children = PyMem_Malloc(sizeof(void *));
27537     if (!_children) {
27538         p->error_indicator = 1;
27539         PyErr_NoMemory();
27540         D(p->level--);
27541         return NULL;
27542     }
27543     Py_ssize_t _children_capacity = 1;
27544     Py_ssize_t _n = 0;
27545     { // ('and' inversion)
27546         if (p->error_indicator) {
27547             D(p->level--);
27548             return NULL;
27549         }
27550         D(fprintf(stderr, "%*c> _loop1_105[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('and' inversion)"));
27551         void *_tmp_188_var;
27552         while (
27553             (_tmp_188_var = _tmp_188_rule(p))  // 'and' inversion
27554         )
27555         {
27556             _res = _tmp_188_var;
27557             if (_n == _children_capacity) {
27558                 _children_capacity *= 2;
27559                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27560                 if (!_new_children) {
27561                     p->error_indicator = 1;
27562                     PyErr_NoMemory();
27563                     D(p->level--);
27564                     return NULL;
27565                 }
27566                 _children = _new_children;
27567             }
27568             _children[_n++] = _res;
27569             _mark = p->mark;
27570         }
27571         p->mark = _mark;
27572         D(fprintf(stderr, "%*c%s _loop1_105[%d-%d]: %s failed!\n", p->level, ' ',
27573                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('and' inversion)"));
27574     }
27575     if (_n == 0 || p->error_indicator) {
27576         PyMem_Free(_children);
27577         D(p->level--);
27578         return NULL;
27579     }
27580     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27581     if (!_seq) {
27582         PyMem_Free(_children);
27583         p->error_indicator = 1;
27584         PyErr_NoMemory();
27585         D(p->level--);
27586         return NULL;
27587     }
27588     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27589     PyMem_Free(_children);
27590     _PyPegen_insert_memo(p, _start_mark, _loop1_105_type, _seq);
27591     D(p->level--);
27592     return _seq;
27593 }
27594 
27595 // _loop1_106: compare_op_bitwise_or_pair
27596 static asdl_seq *
_loop1_106_rule(Parser * p)27597 _loop1_106_rule(Parser *p)
27598 {
27599     D(p->level++);
27600     if (p->error_indicator) {
27601         D(p->level--);
27602         return NULL;
27603     }
27604     void *_res = NULL;
27605     int _mark = p->mark;
27606     int _start_mark = p->mark;
27607     void **_children = PyMem_Malloc(sizeof(void *));
27608     if (!_children) {
27609         p->error_indicator = 1;
27610         PyErr_NoMemory();
27611         D(p->level--);
27612         return NULL;
27613     }
27614     Py_ssize_t _children_capacity = 1;
27615     Py_ssize_t _n = 0;
27616     { // compare_op_bitwise_or_pair
27617         if (p->error_indicator) {
27618             D(p->level--);
27619             return NULL;
27620         }
27621         D(fprintf(stderr, "%*c> _loop1_106[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "compare_op_bitwise_or_pair"));
27622         CmpopExprPair* compare_op_bitwise_or_pair_var;
27623         while (
27624             (compare_op_bitwise_or_pair_var = compare_op_bitwise_or_pair_rule(p))  // compare_op_bitwise_or_pair
27625         )
27626         {
27627             _res = compare_op_bitwise_or_pair_var;
27628             if (_n == _children_capacity) {
27629                 _children_capacity *= 2;
27630                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27631                 if (!_new_children) {
27632                     p->error_indicator = 1;
27633                     PyErr_NoMemory();
27634                     D(p->level--);
27635                     return NULL;
27636                 }
27637                 _children = _new_children;
27638             }
27639             _children[_n++] = _res;
27640             _mark = p->mark;
27641         }
27642         p->mark = _mark;
27643         D(fprintf(stderr, "%*c%s _loop1_106[%d-%d]: %s failed!\n", p->level, ' ',
27644                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "compare_op_bitwise_or_pair"));
27645     }
27646     if (_n == 0 || p->error_indicator) {
27647         PyMem_Free(_children);
27648         D(p->level--);
27649         return NULL;
27650     }
27651     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27652     if (!_seq) {
27653         PyMem_Free(_children);
27654         p->error_indicator = 1;
27655         PyErr_NoMemory();
27656         D(p->level--);
27657         return NULL;
27658     }
27659     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27660     PyMem_Free(_children);
27661     _PyPegen_insert_memo(p, _start_mark, _loop1_106_type, _seq);
27662     D(p->level--);
27663     return _seq;
27664 }
27665 
27666 // _tmp_107: '!='
27667 static void *
_tmp_107_rule(Parser * p)27668 _tmp_107_rule(Parser *p)
27669 {
27670     D(p->level++);
27671     if (p->error_indicator) {
27672         D(p->level--);
27673         return NULL;
27674     }
27675     void * _res = NULL;
27676     int _mark = p->mark;
27677     { // '!='
27678         if (p->error_indicator) {
27679             D(p->level--);
27680             return NULL;
27681         }
27682         D(fprintf(stderr, "%*c> _tmp_107[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'!='"));
27683         Token * tok;
27684         if (
27685             (tok = _PyPegen_expect_token(p, 28))  // token='!='
27686         )
27687         {
27688             D(fprintf(stderr, "%*c+ _tmp_107[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'!='"));
27689             _res = _PyPegen_check_barry_as_flufl ( p , tok ) ? NULL : tok;
27690             if (_res == NULL && PyErr_Occurred()) {
27691                 p->error_indicator = 1;
27692                 D(p->level--);
27693                 return NULL;
27694             }
27695             goto done;
27696         }
27697         p->mark = _mark;
27698         D(fprintf(stderr, "%*c%s _tmp_107[%d-%d]: %s failed!\n", p->level, ' ',
27699                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'!='"));
27700     }
27701     _res = NULL;
27702   done:
27703     D(p->level--);
27704     return _res;
27705 }
27706 
27707 // _loop0_109: ',' slice
27708 static asdl_seq *
_loop0_109_rule(Parser * p)27709 _loop0_109_rule(Parser *p)
27710 {
27711     D(p->level++);
27712     if (p->error_indicator) {
27713         D(p->level--);
27714         return NULL;
27715     }
27716     void *_res = NULL;
27717     int _mark = p->mark;
27718     int _start_mark = p->mark;
27719     void **_children = PyMem_Malloc(sizeof(void *));
27720     if (!_children) {
27721         p->error_indicator = 1;
27722         PyErr_NoMemory();
27723         D(p->level--);
27724         return NULL;
27725     }
27726     Py_ssize_t _children_capacity = 1;
27727     Py_ssize_t _n = 0;
27728     { // ',' slice
27729         if (p->error_indicator) {
27730             D(p->level--);
27731             return NULL;
27732         }
27733         D(fprintf(stderr, "%*c> _loop0_109[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' slice"));
27734         Token * _literal;
27735         expr_ty elem;
27736         while (
27737             (_literal = _PyPegen_expect_token(p, 12))  // token=','
27738             &&
27739             (elem = slice_rule(p))  // slice
27740         )
27741         {
27742             _res = elem;
27743             if (_res == NULL && PyErr_Occurred()) {
27744                 p->error_indicator = 1;
27745                 PyMem_Free(_children);
27746                 D(p->level--);
27747                 return NULL;
27748             }
27749             if (_n == _children_capacity) {
27750                 _children_capacity *= 2;
27751                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
27752                 if (!_new_children) {
27753                     p->error_indicator = 1;
27754                     PyErr_NoMemory();
27755                     D(p->level--);
27756                     return NULL;
27757                 }
27758                 _children = _new_children;
27759             }
27760             _children[_n++] = _res;
27761             _mark = p->mark;
27762         }
27763         p->mark = _mark;
27764         D(fprintf(stderr, "%*c%s _loop0_109[%d-%d]: %s failed!\n", p->level, ' ',
27765                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' slice"));
27766     }
27767     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
27768     if (!_seq) {
27769         PyMem_Free(_children);
27770         p->error_indicator = 1;
27771         PyErr_NoMemory();
27772         D(p->level--);
27773         return NULL;
27774     }
27775     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
27776     PyMem_Free(_children);
27777     _PyPegen_insert_memo(p, _start_mark, _loop0_109_type, _seq);
27778     D(p->level--);
27779     return _seq;
27780 }
27781 
27782 // _gather_108: slice _loop0_109
27783 static asdl_seq *
_gather_108_rule(Parser * p)27784 _gather_108_rule(Parser *p)
27785 {
27786     D(p->level++);
27787     if (p->error_indicator) {
27788         D(p->level--);
27789         return NULL;
27790     }
27791     asdl_seq * _res = NULL;
27792     int _mark = p->mark;
27793     { // slice _loop0_109
27794         if (p->error_indicator) {
27795             D(p->level--);
27796             return NULL;
27797         }
27798         D(fprintf(stderr, "%*c> _gather_108[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "slice _loop0_109"));
27799         expr_ty elem;
27800         asdl_seq * seq;
27801         if (
27802             (elem = slice_rule(p))  // slice
27803             &&
27804             (seq = _loop0_109_rule(p))  // _loop0_109
27805         )
27806         {
27807             D(fprintf(stderr, "%*c+ _gather_108[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "slice _loop0_109"));
27808             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
27809             goto done;
27810         }
27811         p->mark = _mark;
27812         D(fprintf(stderr, "%*c%s _gather_108[%d-%d]: %s failed!\n", p->level, ' ',
27813                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "slice _loop0_109"));
27814     }
27815     _res = NULL;
27816   done:
27817     D(p->level--);
27818     return _res;
27819 }
27820 
27821 // _tmp_110: ':' expression?
27822 static void *
_tmp_110_rule(Parser * p)27823 _tmp_110_rule(Parser *p)
27824 {
27825     D(p->level++);
27826     if (p->error_indicator) {
27827         D(p->level--);
27828         return NULL;
27829     }
27830     void * _res = NULL;
27831     int _mark = p->mark;
27832     { // ':' expression?
27833         if (p->error_indicator) {
27834             D(p->level--);
27835             return NULL;
27836         }
27837         D(fprintf(stderr, "%*c> _tmp_110[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':' expression?"));
27838         Token * _literal;
27839         void *d;
27840         if (
27841             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
27842             &&
27843             (d = expression_rule(p), !p->error_indicator)  // expression?
27844         )
27845         {
27846             D(fprintf(stderr, "%*c+ _tmp_110[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':' expression?"));
27847             _res = d;
27848             if (_res == NULL && PyErr_Occurred()) {
27849                 p->error_indicator = 1;
27850                 D(p->level--);
27851                 return NULL;
27852             }
27853             goto done;
27854         }
27855         p->mark = _mark;
27856         D(fprintf(stderr, "%*c%s _tmp_110[%d-%d]: %s failed!\n", p->level, ' ',
27857                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':' expression?"));
27858     }
27859     _res = NULL;
27860   done:
27861     D(p->level--);
27862     return _res;
27863 }
27864 
27865 // _tmp_111: tuple | group | genexp
27866 static void *
_tmp_111_rule(Parser * p)27867 _tmp_111_rule(Parser *p)
27868 {
27869     D(p->level++);
27870     if (p->error_indicator) {
27871         D(p->level--);
27872         return NULL;
27873     }
27874     void * _res = NULL;
27875     int _mark = p->mark;
27876     { // tuple
27877         if (p->error_indicator) {
27878             D(p->level--);
27879             return NULL;
27880         }
27881         D(fprintf(stderr, "%*c> _tmp_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
27882         expr_ty tuple_var;
27883         if (
27884             (tuple_var = tuple_rule(p))  // tuple
27885         )
27886         {
27887             D(fprintf(stderr, "%*c+ _tmp_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
27888             _res = tuple_var;
27889             goto done;
27890         }
27891         p->mark = _mark;
27892         D(fprintf(stderr, "%*c%s _tmp_111[%d-%d]: %s failed!\n", p->level, ' ',
27893                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
27894     }
27895     { // group
27896         if (p->error_indicator) {
27897             D(p->level--);
27898             return NULL;
27899         }
27900         D(fprintf(stderr, "%*c> _tmp_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "group"));
27901         expr_ty group_var;
27902         if (
27903             (group_var = group_rule(p))  // group
27904         )
27905         {
27906             D(fprintf(stderr, "%*c+ _tmp_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "group"));
27907             _res = group_var;
27908             goto done;
27909         }
27910         p->mark = _mark;
27911         D(fprintf(stderr, "%*c%s _tmp_111[%d-%d]: %s failed!\n", p->level, ' ',
27912                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "group"));
27913     }
27914     { // genexp
27915         if (p->error_indicator) {
27916             D(p->level--);
27917             return NULL;
27918         }
27919         D(fprintf(stderr, "%*c> _tmp_111[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
27920         expr_ty genexp_var;
27921         if (
27922             (genexp_var = genexp_rule(p))  // genexp
27923         )
27924         {
27925             D(fprintf(stderr, "%*c+ _tmp_111[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
27926             _res = genexp_var;
27927             goto done;
27928         }
27929         p->mark = _mark;
27930         D(fprintf(stderr, "%*c%s _tmp_111[%d-%d]: %s failed!\n", p->level, ' ',
27931                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
27932     }
27933     _res = NULL;
27934   done:
27935     D(p->level--);
27936     return _res;
27937 }
27938 
27939 // _tmp_112: list | listcomp
27940 static void *
_tmp_112_rule(Parser * p)27941 _tmp_112_rule(Parser *p)
27942 {
27943     D(p->level++);
27944     if (p->error_indicator) {
27945         D(p->level--);
27946         return NULL;
27947     }
27948     void * _res = NULL;
27949     int _mark = p->mark;
27950     { // list
27951         if (p->error_indicator) {
27952             D(p->level--);
27953             return NULL;
27954         }
27955         D(fprintf(stderr, "%*c> _tmp_112[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
27956         expr_ty list_var;
27957         if (
27958             (list_var = list_rule(p))  // list
27959         )
27960         {
27961             D(fprintf(stderr, "%*c+ _tmp_112[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
27962             _res = list_var;
27963             goto done;
27964         }
27965         p->mark = _mark;
27966         D(fprintf(stderr, "%*c%s _tmp_112[%d-%d]: %s failed!\n", p->level, ' ',
27967                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
27968     }
27969     { // listcomp
27970         if (p->error_indicator) {
27971             D(p->level--);
27972             return NULL;
27973         }
27974         D(fprintf(stderr, "%*c> _tmp_112[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "listcomp"));
27975         expr_ty listcomp_var;
27976         if (
27977             (listcomp_var = listcomp_rule(p))  // listcomp
27978         )
27979         {
27980             D(fprintf(stderr, "%*c+ _tmp_112[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "listcomp"));
27981             _res = listcomp_var;
27982             goto done;
27983         }
27984         p->mark = _mark;
27985         D(fprintf(stderr, "%*c%s _tmp_112[%d-%d]: %s failed!\n", p->level, ' ',
27986                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "listcomp"));
27987     }
27988     _res = NULL;
27989   done:
27990     D(p->level--);
27991     return _res;
27992 }
27993 
27994 // _tmp_113: dict | set | dictcomp | setcomp
27995 static void *
_tmp_113_rule(Parser * p)27996 _tmp_113_rule(Parser *p)
27997 {
27998     D(p->level++);
27999     if (p->error_indicator) {
28000         D(p->level--);
28001         return NULL;
28002     }
28003     void * _res = NULL;
28004     int _mark = p->mark;
28005     { // dict
28006         if (p->error_indicator) {
28007             D(p->level--);
28008             return NULL;
28009         }
28010         D(fprintf(stderr, "%*c> _tmp_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dict"));
28011         expr_ty dict_var;
28012         if (
28013             (dict_var = dict_rule(p))  // dict
28014         )
28015         {
28016             D(fprintf(stderr, "%*c+ _tmp_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dict"));
28017             _res = dict_var;
28018             goto done;
28019         }
28020         p->mark = _mark;
28021         D(fprintf(stderr, "%*c%s _tmp_113[%d-%d]: %s failed!\n", p->level, ' ',
28022                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dict"));
28023     }
28024     { // set
28025         if (p->error_indicator) {
28026             D(p->level--);
28027             return NULL;
28028         }
28029         D(fprintf(stderr, "%*c> _tmp_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "set"));
28030         expr_ty set_var;
28031         if (
28032             (set_var = set_rule(p))  // set
28033         )
28034         {
28035             D(fprintf(stderr, "%*c+ _tmp_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "set"));
28036             _res = set_var;
28037             goto done;
28038         }
28039         p->mark = _mark;
28040         D(fprintf(stderr, "%*c%s _tmp_113[%d-%d]: %s failed!\n", p->level, ' ',
28041                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "set"));
28042     }
28043     { // dictcomp
28044         if (p->error_indicator) {
28045             D(p->level--);
28046             return NULL;
28047         }
28048         D(fprintf(stderr, "%*c> _tmp_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "dictcomp"));
28049         expr_ty dictcomp_var;
28050         if (
28051             (dictcomp_var = dictcomp_rule(p))  // dictcomp
28052         )
28053         {
28054             D(fprintf(stderr, "%*c+ _tmp_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "dictcomp"));
28055             _res = dictcomp_var;
28056             goto done;
28057         }
28058         p->mark = _mark;
28059         D(fprintf(stderr, "%*c%s _tmp_113[%d-%d]: %s failed!\n", p->level, ' ',
28060                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "dictcomp"));
28061     }
28062     { // setcomp
28063         if (p->error_indicator) {
28064             D(p->level--);
28065             return NULL;
28066         }
28067         D(fprintf(stderr, "%*c> _tmp_113[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "setcomp"));
28068         expr_ty setcomp_var;
28069         if (
28070             (setcomp_var = setcomp_rule(p))  // setcomp
28071         )
28072         {
28073             D(fprintf(stderr, "%*c+ _tmp_113[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "setcomp"));
28074             _res = setcomp_var;
28075             goto done;
28076         }
28077         p->mark = _mark;
28078         D(fprintf(stderr, "%*c%s _tmp_113[%d-%d]: %s failed!\n", p->level, ' ',
28079                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "setcomp"));
28080     }
28081     _res = NULL;
28082   done:
28083     D(p->level--);
28084     return _res;
28085 }
28086 
28087 // _loop1_114: STRING
28088 static asdl_seq *
_loop1_114_rule(Parser * p)28089 _loop1_114_rule(Parser *p)
28090 {
28091     D(p->level++);
28092     if (p->error_indicator) {
28093         D(p->level--);
28094         return NULL;
28095     }
28096     void *_res = NULL;
28097     int _mark = p->mark;
28098     int _start_mark = p->mark;
28099     void **_children = PyMem_Malloc(sizeof(void *));
28100     if (!_children) {
28101         p->error_indicator = 1;
28102         PyErr_NoMemory();
28103         D(p->level--);
28104         return NULL;
28105     }
28106     Py_ssize_t _children_capacity = 1;
28107     Py_ssize_t _n = 0;
28108     { // STRING
28109         if (p->error_indicator) {
28110             D(p->level--);
28111             return NULL;
28112         }
28113         D(fprintf(stderr, "%*c> _loop1_114[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "STRING"));
28114         expr_ty string_var;
28115         while (
28116             (string_var = _PyPegen_string_token(p))  // STRING
28117         )
28118         {
28119             _res = string_var;
28120             if (_n == _children_capacity) {
28121                 _children_capacity *= 2;
28122                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28123                 if (!_new_children) {
28124                     p->error_indicator = 1;
28125                     PyErr_NoMemory();
28126                     D(p->level--);
28127                     return NULL;
28128                 }
28129                 _children = _new_children;
28130             }
28131             _children[_n++] = _res;
28132             _mark = p->mark;
28133         }
28134         p->mark = _mark;
28135         D(fprintf(stderr, "%*c%s _loop1_114[%d-%d]: %s failed!\n", p->level, ' ',
28136                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "STRING"));
28137     }
28138     if (_n == 0 || p->error_indicator) {
28139         PyMem_Free(_children);
28140         D(p->level--);
28141         return NULL;
28142     }
28143     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28144     if (!_seq) {
28145         PyMem_Free(_children);
28146         p->error_indicator = 1;
28147         PyErr_NoMemory();
28148         D(p->level--);
28149         return NULL;
28150     }
28151     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28152     PyMem_Free(_children);
28153     _PyPegen_insert_memo(p, _start_mark, _loop1_114_type, _seq);
28154     D(p->level--);
28155     return _seq;
28156 }
28157 
28158 // _tmp_115: star_named_expression ',' star_named_expressions?
28159 static void *
_tmp_115_rule(Parser * p)28160 _tmp_115_rule(Parser *p)
28161 {
28162     D(p->level++);
28163     if (p->error_indicator) {
28164         D(p->level--);
28165         return NULL;
28166     }
28167     void * _res = NULL;
28168     int _mark = p->mark;
28169     { // star_named_expression ',' star_named_expressions?
28170         if (p->error_indicator) {
28171             D(p->level--);
28172             return NULL;
28173         }
28174         D(fprintf(stderr, "%*c> _tmp_115[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
28175         Token * _literal;
28176         expr_ty y;
28177         void *z;
28178         if (
28179             (y = star_named_expression_rule(p))  // star_named_expression
28180             &&
28181             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28182             &&
28183             (z = star_named_expressions_rule(p), !p->error_indicator)  // star_named_expressions?
28184         )
28185         {
28186             D(fprintf(stderr, "%*c+ _tmp_115[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
28187             _res = _PyPegen_seq_insert_in_front ( p , y , z );
28188             if (_res == NULL && PyErr_Occurred()) {
28189                 p->error_indicator = 1;
28190                 D(p->level--);
28191                 return NULL;
28192             }
28193             goto done;
28194         }
28195         p->mark = _mark;
28196         D(fprintf(stderr, "%*c%s _tmp_115[%d-%d]: %s failed!\n", p->level, ' ',
28197                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expression ',' star_named_expressions?"));
28198     }
28199     _res = NULL;
28200   done:
28201     D(p->level--);
28202     return _res;
28203 }
28204 
28205 // _tmp_116: yield_expr | named_expression
28206 static void *
_tmp_116_rule(Parser * p)28207 _tmp_116_rule(Parser *p)
28208 {
28209     D(p->level++);
28210     if (p->error_indicator) {
28211         D(p->level--);
28212         return NULL;
28213     }
28214     void * _res = NULL;
28215     int _mark = p->mark;
28216     { // yield_expr
28217         if (p->error_indicator) {
28218             D(p->level--);
28219             return NULL;
28220         }
28221         D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
28222         expr_ty yield_expr_var;
28223         if (
28224             (yield_expr_var = yield_expr_rule(p))  // yield_expr
28225         )
28226         {
28227             D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
28228             _res = yield_expr_var;
28229             goto done;
28230         }
28231         p->mark = _mark;
28232         D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ',
28233                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
28234     }
28235     { // named_expression
28236         if (p->error_indicator) {
28237             D(p->level--);
28238             return NULL;
28239         }
28240         D(fprintf(stderr, "%*c> _tmp_116[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "named_expression"));
28241         expr_ty named_expression_var;
28242         if (
28243             (named_expression_var = named_expression_rule(p))  // named_expression
28244         )
28245         {
28246             D(fprintf(stderr, "%*c+ _tmp_116[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "named_expression"));
28247             _res = named_expression_var;
28248             goto done;
28249         }
28250         p->mark = _mark;
28251         D(fprintf(stderr, "%*c%s _tmp_116[%d-%d]: %s failed!\n", p->level, ' ',
28252                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "named_expression"));
28253     }
28254     _res = NULL;
28255   done:
28256     D(p->level--);
28257     return _res;
28258 }
28259 
28260 // _tmp_117: assignment_expression | expression !':='
28261 static void *
_tmp_117_rule(Parser * p)28262 _tmp_117_rule(Parser *p)
28263 {
28264     D(p->level++);
28265     if (p->error_indicator) {
28266         D(p->level--);
28267         return NULL;
28268     }
28269     void * _res = NULL;
28270     int _mark = p->mark;
28271     { // assignment_expression
28272         if (p->error_indicator) {
28273             D(p->level--);
28274             return NULL;
28275         }
28276         D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
28277         expr_ty assignment_expression_var;
28278         if (
28279             (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
28280         )
28281         {
28282             D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
28283             _res = assignment_expression_var;
28284             goto done;
28285         }
28286         p->mark = _mark;
28287         D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
28288                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
28289     }
28290     { // expression !':='
28291         if (p->error_indicator) {
28292             D(p->level--);
28293             return NULL;
28294         }
28295         D(fprintf(stderr, "%*c> _tmp_117[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
28296         expr_ty expression_var;
28297         if (
28298             (expression_var = expression_rule(p))  // expression
28299             &&
28300             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
28301         )
28302         {
28303             D(fprintf(stderr, "%*c+ _tmp_117[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
28304             _res = expression_var;
28305             goto done;
28306         }
28307         p->mark = _mark;
28308         D(fprintf(stderr, "%*c%s _tmp_117[%d-%d]: %s failed!\n", p->level, ' ',
28309                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
28310     }
28311     _res = NULL;
28312   done:
28313     D(p->level--);
28314     return _res;
28315 }
28316 
28317 // _loop0_119: ',' double_starred_kvpair
28318 static asdl_seq *
_loop0_119_rule(Parser * p)28319 _loop0_119_rule(Parser *p)
28320 {
28321     D(p->level++);
28322     if (p->error_indicator) {
28323         D(p->level--);
28324         return NULL;
28325     }
28326     void *_res = NULL;
28327     int _mark = p->mark;
28328     int _start_mark = p->mark;
28329     void **_children = PyMem_Malloc(sizeof(void *));
28330     if (!_children) {
28331         p->error_indicator = 1;
28332         PyErr_NoMemory();
28333         D(p->level--);
28334         return NULL;
28335     }
28336     Py_ssize_t _children_capacity = 1;
28337     Py_ssize_t _n = 0;
28338     { // ',' double_starred_kvpair
28339         if (p->error_indicator) {
28340             D(p->level--);
28341             return NULL;
28342         }
28343         D(fprintf(stderr, "%*c> _loop0_119[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair"));
28344         Token * _literal;
28345         KeyValuePair* elem;
28346         while (
28347             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28348             &&
28349             (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
28350         )
28351         {
28352             _res = elem;
28353             if (_res == NULL && PyErr_Occurred()) {
28354                 p->error_indicator = 1;
28355                 PyMem_Free(_children);
28356                 D(p->level--);
28357                 return NULL;
28358             }
28359             if (_n == _children_capacity) {
28360                 _children_capacity *= 2;
28361                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28362                 if (!_new_children) {
28363                     p->error_indicator = 1;
28364                     PyErr_NoMemory();
28365                     D(p->level--);
28366                     return NULL;
28367                 }
28368                 _children = _new_children;
28369             }
28370             _children[_n++] = _res;
28371             _mark = p->mark;
28372         }
28373         p->mark = _mark;
28374         D(fprintf(stderr, "%*c%s _loop0_119[%d-%d]: %s failed!\n", p->level, ' ',
28375                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair"));
28376     }
28377     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28378     if (!_seq) {
28379         PyMem_Free(_children);
28380         p->error_indicator = 1;
28381         PyErr_NoMemory();
28382         D(p->level--);
28383         return NULL;
28384     }
28385     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28386     PyMem_Free(_children);
28387     _PyPegen_insert_memo(p, _start_mark, _loop0_119_type, _seq);
28388     D(p->level--);
28389     return _seq;
28390 }
28391 
28392 // _gather_118: double_starred_kvpair _loop0_119
28393 static asdl_seq *
_gather_118_rule(Parser * p)28394 _gather_118_rule(Parser *p)
28395 {
28396     D(p->level++);
28397     if (p->error_indicator) {
28398         D(p->level--);
28399         return NULL;
28400     }
28401     asdl_seq * _res = NULL;
28402     int _mark = p->mark;
28403     { // double_starred_kvpair _loop0_119
28404         if (p->error_indicator) {
28405             D(p->level--);
28406             return NULL;
28407         }
28408         D(fprintf(stderr, "%*c> _gather_118[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_119"));
28409         KeyValuePair* elem;
28410         asdl_seq * seq;
28411         if (
28412             (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
28413             &&
28414             (seq = _loop0_119_rule(p))  // _loop0_119
28415         )
28416         {
28417             D(fprintf(stderr, "%*c+ _gather_118[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_119"));
28418             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28419             goto done;
28420         }
28421         p->mark = _mark;
28422         D(fprintf(stderr, "%*c%s _gather_118[%d-%d]: %s failed!\n", p->level, ' ',
28423                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_119"));
28424     }
28425     _res = NULL;
28426   done:
28427     D(p->level--);
28428     return _res;
28429 }
28430 
28431 // _loop1_120: for_if_clause
28432 static asdl_seq *
_loop1_120_rule(Parser * p)28433 _loop1_120_rule(Parser *p)
28434 {
28435     D(p->level++);
28436     if (p->error_indicator) {
28437         D(p->level--);
28438         return NULL;
28439     }
28440     void *_res = NULL;
28441     int _mark = p->mark;
28442     int _start_mark = p->mark;
28443     void **_children = PyMem_Malloc(sizeof(void *));
28444     if (!_children) {
28445         p->error_indicator = 1;
28446         PyErr_NoMemory();
28447         D(p->level--);
28448         return NULL;
28449     }
28450     Py_ssize_t _children_capacity = 1;
28451     Py_ssize_t _n = 0;
28452     { // for_if_clause
28453         if (p->error_indicator) {
28454             D(p->level--);
28455             return NULL;
28456         }
28457         D(fprintf(stderr, "%*c> _loop1_120[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "for_if_clause"));
28458         comprehension_ty for_if_clause_var;
28459         while (
28460             (for_if_clause_var = for_if_clause_rule(p))  // for_if_clause
28461         )
28462         {
28463             _res = for_if_clause_var;
28464             if (_n == _children_capacity) {
28465                 _children_capacity *= 2;
28466                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28467                 if (!_new_children) {
28468                     p->error_indicator = 1;
28469                     PyErr_NoMemory();
28470                     D(p->level--);
28471                     return NULL;
28472                 }
28473                 _children = _new_children;
28474             }
28475             _children[_n++] = _res;
28476             _mark = p->mark;
28477         }
28478         p->mark = _mark;
28479         D(fprintf(stderr, "%*c%s _loop1_120[%d-%d]: %s failed!\n", p->level, ' ',
28480                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "for_if_clause"));
28481     }
28482     if (_n == 0 || p->error_indicator) {
28483         PyMem_Free(_children);
28484         D(p->level--);
28485         return NULL;
28486     }
28487     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28488     if (!_seq) {
28489         PyMem_Free(_children);
28490         p->error_indicator = 1;
28491         PyErr_NoMemory();
28492         D(p->level--);
28493         return NULL;
28494     }
28495     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28496     PyMem_Free(_children);
28497     _PyPegen_insert_memo(p, _start_mark, _loop1_120_type, _seq);
28498     D(p->level--);
28499     return _seq;
28500 }
28501 
28502 // _loop0_121: ('if' disjunction)
28503 static asdl_seq *
_loop0_121_rule(Parser * p)28504 _loop0_121_rule(Parser *p)
28505 {
28506     D(p->level++);
28507     if (p->error_indicator) {
28508         D(p->level--);
28509         return NULL;
28510     }
28511     void *_res = NULL;
28512     int _mark = p->mark;
28513     int _start_mark = p->mark;
28514     void **_children = PyMem_Malloc(sizeof(void *));
28515     if (!_children) {
28516         p->error_indicator = 1;
28517         PyErr_NoMemory();
28518         D(p->level--);
28519         return NULL;
28520     }
28521     Py_ssize_t _children_capacity = 1;
28522     Py_ssize_t _n = 0;
28523     { // ('if' disjunction)
28524         if (p->error_indicator) {
28525             D(p->level--);
28526             return NULL;
28527         }
28528         D(fprintf(stderr, "%*c> _loop0_121[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
28529         void *_tmp_189_var;
28530         while (
28531             (_tmp_189_var = _tmp_189_rule(p))  // 'if' disjunction
28532         )
28533         {
28534             _res = _tmp_189_var;
28535             if (_n == _children_capacity) {
28536                 _children_capacity *= 2;
28537                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28538                 if (!_new_children) {
28539                     p->error_indicator = 1;
28540                     PyErr_NoMemory();
28541                     D(p->level--);
28542                     return NULL;
28543                 }
28544                 _children = _new_children;
28545             }
28546             _children[_n++] = _res;
28547             _mark = p->mark;
28548         }
28549         p->mark = _mark;
28550         D(fprintf(stderr, "%*c%s _loop0_121[%d-%d]: %s failed!\n", p->level, ' ',
28551                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
28552     }
28553     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28554     if (!_seq) {
28555         PyMem_Free(_children);
28556         p->error_indicator = 1;
28557         PyErr_NoMemory();
28558         D(p->level--);
28559         return NULL;
28560     }
28561     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28562     PyMem_Free(_children);
28563     _PyPegen_insert_memo(p, _start_mark, _loop0_121_type, _seq);
28564     D(p->level--);
28565     return _seq;
28566 }
28567 
28568 // _loop0_122: ('if' disjunction)
28569 static asdl_seq *
_loop0_122_rule(Parser * p)28570 _loop0_122_rule(Parser *p)
28571 {
28572     D(p->level++);
28573     if (p->error_indicator) {
28574         D(p->level--);
28575         return NULL;
28576     }
28577     void *_res = NULL;
28578     int _mark = p->mark;
28579     int _start_mark = p->mark;
28580     void **_children = PyMem_Malloc(sizeof(void *));
28581     if (!_children) {
28582         p->error_indicator = 1;
28583         PyErr_NoMemory();
28584         D(p->level--);
28585         return NULL;
28586     }
28587     Py_ssize_t _children_capacity = 1;
28588     Py_ssize_t _n = 0;
28589     { // ('if' disjunction)
28590         if (p->error_indicator) {
28591             D(p->level--);
28592             return NULL;
28593         }
28594         D(fprintf(stderr, "%*c> _loop0_122[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "('if' disjunction)"));
28595         void *_tmp_190_var;
28596         while (
28597             (_tmp_190_var = _tmp_190_rule(p))  // 'if' disjunction
28598         )
28599         {
28600             _res = _tmp_190_var;
28601             if (_n == _children_capacity) {
28602                 _children_capacity *= 2;
28603                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28604                 if (!_new_children) {
28605                     p->error_indicator = 1;
28606                     PyErr_NoMemory();
28607                     D(p->level--);
28608                     return NULL;
28609                 }
28610                 _children = _new_children;
28611             }
28612             _children[_n++] = _res;
28613             _mark = p->mark;
28614         }
28615         p->mark = _mark;
28616         D(fprintf(stderr, "%*c%s _loop0_122[%d-%d]: %s failed!\n", p->level, ' ',
28617                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "('if' disjunction)"));
28618     }
28619     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28620     if (!_seq) {
28621         PyMem_Free(_children);
28622         p->error_indicator = 1;
28623         PyErr_NoMemory();
28624         D(p->level--);
28625         return NULL;
28626     }
28627     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28628     PyMem_Free(_children);
28629     _PyPegen_insert_memo(p, _start_mark, _loop0_122_type, _seq);
28630     D(p->level--);
28631     return _seq;
28632 }
28633 
28634 // _loop0_124: ',' (starred_expression | (assignment_expression | expression !':=') !'=')
28635 static asdl_seq *
_loop0_124_rule(Parser * p)28636 _loop0_124_rule(Parser *p)
28637 {
28638     D(p->level++);
28639     if (p->error_indicator) {
28640         D(p->level--);
28641         return NULL;
28642     }
28643     void *_res = NULL;
28644     int _mark = p->mark;
28645     int _start_mark = p->mark;
28646     void **_children = PyMem_Malloc(sizeof(void *));
28647     if (!_children) {
28648         p->error_indicator = 1;
28649         PyErr_NoMemory();
28650         D(p->level--);
28651         return NULL;
28652     }
28653     Py_ssize_t _children_capacity = 1;
28654     Py_ssize_t _n = 0;
28655     { // ',' (starred_expression | (assignment_expression | expression !':=') !'=')
28656         if (p->error_indicator) {
28657             D(p->level--);
28658             return NULL;
28659         }
28660         D(fprintf(stderr, "%*c> _loop0_124[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
28661         Token * _literal;
28662         void *elem;
28663         while (
28664             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28665             &&
28666             (elem = _tmp_191_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
28667         )
28668         {
28669             _res = elem;
28670             if (_res == NULL && PyErr_Occurred()) {
28671                 p->error_indicator = 1;
28672                 PyMem_Free(_children);
28673                 D(p->level--);
28674                 return NULL;
28675             }
28676             if (_n == _children_capacity) {
28677                 _children_capacity *= 2;
28678                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28679                 if (!_new_children) {
28680                     p->error_indicator = 1;
28681                     PyErr_NoMemory();
28682                     D(p->level--);
28683                     return NULL;
28684                 }
28685                 _children = _new_children;
28686             }
28687             _children[_n++] = _res;
28688             _mark = p->mark;
28689         }
28690         p->mark = _mark;
28691         D(fprintf(stderr, "%*c%s _loop0_124[%d-%d]: %s failed!\n", p->level, ' ',
28692                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (starred_expression | (assignment_expression | expression !':=') !'=')"));
28693     }
28694     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28695     if (!_seq) {
28696         PyMem_Free(_children);
28697         p->error_indicator = 1;
28698         PyErr_NoMemory();
28699         D(p->level--);
28700         return NULL;
28701     }
28702     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28703     PyMem_Free(_children);
28704     _PyPegen_insert_memo(p, _start_mark, _loop0_124_type, _seq);
28705     D(p->level--);
28706     return _seq;
28707 }
28708 
28709 // _gather_123:
28710 //     | (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_124
28711 static asdl_seq *
_gather_123_rule(Parser * p)28712 _gather_123_rule(Parser *p)
28713 {
28714     D(p->level++);
28715     if (p->error_indicator) {
28716         D(p->level--);
28717         return NULL;
28718     }
28719     asdl_seq * _res = NULL;
28720     int _mark = p->mark;
28721     { // (starred_expression | (assignment_expression | expression !':=') !'=') _loop0_124
28722         if (p->error_indicator) {
28723             D(p->level--);
28724             return NULL;
28725         }
28726         D(fprintf(stderr, "%*c> _gather_123[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_124"));
28727         void *elem;
28728         asdl_seq * seq;
28729         if (
28730             (elem = _tmp_191_rule(p))  // starred_expression | (assignment_expression | expression !':=') !'='
28731             &&
28732             (seq = _loop0_124_rule(p))  // _loop0_124
28733         )
28734         {
28735             D(fprintf(stderr, "%*c+ _gather_123[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_124"));
28736             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28737             goto done;
28738         }
28739         p->mark = _mark;
28740         D(fprintf(stderr, "%*c%s _gather_123[%d-%d]: %s failed!\n", p->level, ' ',
28741                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(starred_expression | (assignment_expression | expression !':=') !'=') _loop0_124"));
28742     }
28743     _res = NULL;
28744   done:
28745     D(p->level--);
28746     return _res;
28747 }
28748 
28749 // _tmp_125: ',' kwargs
28750 static void *
_tmp_125_rule(Parser * p)28751 _tmp_125_rule(Parser *p)
28752 {
28753     D(p->level++);
28754     if (p->error_indicator) {
28755         D(p->level--);
28756         return NULL;
28757     }
28758     void * _res = NULL;
28759     int _mark = p->mark;
28760     { // ',' kwargs
28761         if (p->error_indicator) {
28762             D(p->level--);
28763             return NULL;
28764         }
28765         D(fprintf(stderr, "%*c> _tmp_125[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
28766         Token * _literal;
28767         asdl_seq* k;
28768         if (
28769             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28770             &&
28771             (k = kwargs_rule(p))  // kwargs
28772         )
28773         {
28774             D(fprintf(stderr, "%*c+ _tmp_125[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' kwargs"));
28775             _res = k;
28776             if (_res == NULL && PyErr_Occurred()) {
28777                 p->error_indicator = 1;
28778                 D(p->level--);
28779                 return NULL;
28780             }
28781             goto done;
28782         }
28783         p->mark = _mark;
28784         D(fprintf(stderr, "%*c%s _tmp_125[%d-%d]: %s failed!\n", p->level, ' ',
28785                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwargs"));
28786     }
28787     _res = NULL;
28788   done:
28789     D(p->level--);
28790     return _res;
28791 }
28792 
28793 // _loop0_127: ',' kwarg_or_starred
28794 static asdl_seq *
_loop0_127_rule(Parser * p)28795 _loop0_127_rule(Parser *p)
28796 {
28797     D(p->level++);
28798     if (p->error_indicator) {
28799         D(p->level--);
28800         return NULL;
28801     }
28802     void *_res = NULL;
28803     int _mark = p->mark;
28804     int _start_mark = p->mark;
28805     void **_children = PyMem_Malloc(sizeof(void *));
28806     if (!_children) {
28807         p->error_indicator = 1;
28808         PyErr_NoMemory();
28809         D(p->level--);
28810         return NULL;
28811     }
28812     Py_ssize_t _children_capacity = 1;
28813     Py_ssize_t _n = 0;
28814     { // ',' kwarg_or_starred
28815         if (p->error_indicator) {
28816             D(p->level--);
28817             return NULL;
28818         }
28819         D(fprintf(stderr, "%*c> _loop0_127[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred"));
28820         Token * _literal;
28821         KeywordOrStarred* elem;
28822         while (
28823             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28824             &&
28825             (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
28826         )
28827         {
28828             _res = elem;
28829             if (_res == NULL && PyErr_Occurred()) {
28830                 p->error_indicator = 1;
28831                 PyMem_Free(_children);
28832                 D(p->level--);
28833                 return NULL;
28834             }
28835             if (_n == _children_capacity) {
28836                 _children_capacity *= 2;
28837                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
28838                 if (!_new_children) {
28839                     p->error_indicator = 1;
28840                     PyErr_NoMemory();
28841                     D(p->level--);
28842                     return NULL;
28843                 }
28844                 _children = _new_children;
28845             }
28846             _children[_n++] = _res;
28847             _mark = p->mark;
28848         }
28849         p->mark = _mark;
28850         D(fprintf(stderr, "%*c%s _loop0_127[%d-%d]: %s failed!\n", p->level, ' ',
28851                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred"));
28852     }
28853     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
28854     if (!_seq) {
28855         PyMem_Free(_children);
28856         p->error_indicator = 1;
28857         PyErr_NoMemory();
28858         D(p->level--);
28859         return NULL;
28860     }
28861     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
28862     PyMem_Free(_children);
28863     _PyPegen_insert_memo(p, _start_mark, _loop0_127_type, _seq);
28864     D(p->level--);
28865     return _seq;
28866 }
28867 
28868 // _gather_126: kwarg_or_starred _loop0_127
28869 static asdl_seq *
_gather_126_rule(Parser * p)28870 _gather_126_rule(Parser *p)
28871 {
28872     D(p->level++);
28873     if (p->error_indicator) {
28874         D(p->level--);
28875         return NULL;
28876     }
28877     asdl_seq * _res = NULL;
28878     int _mark = p->mark;
28879     { // kwarg_or_starred _loop0_127
28880         if (p->error_indicator) {
28881             D(p->level--);
28882             return NULL;
28883         }
28884         D(fprintf(stderr, "%*c> _gather_126[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_127"));
28885         KeywordOrStarred* elem;
28886         asdl_seq * seq;
28887         if (
28888             (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
28889             &&
28890             (seq = _loop0_127_rule(p))  // _loop0_127
28891         )
28892         {
28893             D(fprintf(stderr, "%*c+ _gather_126[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_127"));
28894             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
28895             goto done;
28896         }
28897         p->mark = _mark;
28898         D(fprintf(stderr, "%*c%s _gather_126[%d-%d]: %s failed!\n", p->level, ' ',
28899                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_127"));
28900     }
28901     _res = NULL;
28902   done:
28903     D(p->level--);
28904     return _res;
28905 }
28906 
28907 // _loop0_129: ',' kwarg_or_double_starred
28908 static asdl_seq *
_loop0_129_rule(Parser * p)28909 _loop0_129_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     { // ',' kwarg_or_double_starred
28929         if (p->error_indicator) {
28930             D(p->level--);
28931             return NULL;
28932         }
28933         D(fprintf(stderr, "%*c> _loop0_129[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred"));
28934         Token * _literal;
28935         KeywordOrStarred* elem;
28936         while (
28937             (_literal = _PyPegen_expect_token(p, 12))  // token=','
28938             &&
28939             (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
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_129[%d-%d]: %s failed!\n", p->level, ' ',
28965                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
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_129_type, _seq);
28978     D(p->level--);
28979     return _seq;
28980 }
28981 
28982 // _gather_128: kwarg_or_double_starred _loop0_129
28983 static asdl_seq *
_gather_128_rule(Parser * p)28984 _gather_128_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     { // kwarg_or_double_starred _loop0_129
28994         if (p->error_indicator) {
28995             D(p->level--);
28996             return NULL;
28997         }
28998         D(fprintf(stderr, "%*c> _gather_128[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_129"));
28999         KeywordOrStarred* elem;
29000         asdl_seq * seq;
29001         if (
29002             (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
29003             &&
29004             (seq = _loop0_129_rule(p))  // _loop0_129
29005         )
29006         {
29007             D(fprintf(stderr, "%*c+ _gather_128[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_129"));
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_128[%d-%d]: %s failed!\n", p->level, ' ',
29013                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_129"));
29014     }
29015     _res = NULL;
29016   done:
29017     D(p->level--);
29018     return _res;
29019 }
29020 
29021 // _loop0_131: ',' kwarg_or_starred
29022 static asdl_seq *
_loop0_131_rule(Parser * p)29023 _loop0_131_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     { // ',' kwarg_or_starred
29043         if (p->error_indicator) {
29044             D(p->level--);
29045             return NULL;
29046         }
29047         D(fprintf(stderr, "%*c> _loop0_131[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_starred"));
29048         Token * _literal;
29049         KeywordOrStarred* elem;
29050         while (
29051             (_literal = _PyPegen_expect_token(p, 12))  // token=','
29052             &&
29053             (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
29054         )
29055         {
29056             _res = elem;
29057             if (_res == NULL && PyErr_Occurred()) {
29058                 p->error_indicator = 1;
29059                 PyMem_Free(_children);
29060                 D(p->level--);
29061                 return NULL;
29062             }
29063             if (_n == _children_capacity) {
29064                 _children_capacity *= 2;
29065                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29066                 if (!_new_children) {
29067                     p->error_indicator = 1;
29068                     PyErr_NoMemory();
29069                     D(p->level--);
29070                     return NULL;
29071                 }
29072                 _children = _new_children;
29073             }
29074             _children[_n++] = _res;
29075             _mark = p->mark;
29076         }
29077         p->mark = _mark;
29078         D(fprintf(stderr, "%*c%s _loop0_131[%d-%d]: %s failed!\n", p->level, ' ',
29079                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_starred"));
29080     }
29081     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29082     if (!_seq) {
29083         PyMem_Free(_children);
29084         p->error_indicator = 1;
29085         PyErr_NoMemory();
29086         D(p->level--);
29087         return NULL;
29088     }
29089     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29090     PyMem_Free(_children);
29091     _PyPegen_insert_memo(p, _start_mark, _loop0_131_type, _seq);
29092     D(p->level--);
29093     return _seq;
29094 }
29095 
29096 // _gather_130: kwarg_or_starred _loop0_131
29097 static asdl_seq *
_gather_130_rule(Parser * p)29098 _gather_130_rule(Parser *p)
29099 {
29100     D(p->level++);
29101     if (p->error_indicator) {
29102         D(p->level--);
29103         return NULL;
29104     }
29105     asdl_seq * _res = NULL;
29106     int _mark = p->mark;
29107     { // kwarg_or_starred _loop0_131
29108         if (p->error_indicator) {
29109             D(p->level--);
29110             return NULL;
29111         }
29112         D(fprintf(stderr, "%*c> _gather_130[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_131"));
29113         KeywordOrStarred* elem;
29114         asdl_seq * seq;
29115         if (
29116             (elem = kwarg_or_starred_rule(p))  // kwarg_or_starred
29117             &&
29118             (seq = _loop0_131_rule(p))  // _loop0_131
29119         )
29120         {
29121             D(fprintf(stderr, "%*c+ _gather_130[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_starred _loop0_131"));
29122             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29123             goto done;
29124         }
29125         p->mark = _mark;
29126         D(fprintf(stderr, "%*c%s _gather_130[%d-%d]: %s failed!\n", p->level, ' ',
29127                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_starred _loop0_131"));
29128     }
29129     _res = NULL;
29130   done:
29131     D(p->level--);
29132     return _res;
29133 }
29134 
29135 // _loop0_133: ',' kwarg_or_double_starred
29136 static asdl_seq *
_loop0_133_rule(Parser * p)29137 _loop0_133_rule(Parser *p)
29138 {
29139     D(p->level++);
29140     if (p->error_indicator) {
29141         D(p->level--);
29142         return NULL;
29143     }
29144     void *_res = NULL;
29145     int _mark = p->mark;
29146     int _start_mark = p->mark;
29147     void **_children = PyMem_Malloc(sizeof(void *));
29148     if (!_children) {
29149         p->error_indicator = 1;
29150         PyErr_NoMemory();
29151         D(p->level--);
29152         return NULL;
29153     }
29154     Py_ssize_t _children_capacity = 1;
29155     Py_ssize_t _n = 0;
29156     { // ',' kwarg_or_double_starred
29157         if (p->error_indicator) {
29158             D(p->level--);
29159             return NULL;
29160         }
29161         D(fprintf(stderr, "%*c> _loop0_133[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' kwarg_or_double_starred"));
29162         Token * _literal;
29163         KeywordOrStarred* elem;
29164         while (
29165             (_literal = _PyPegen_expect_token(p, 12))  // token=','
29166             &&
29167             (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
29168         )
29169         {
29170             _res = elem;
29171             if (_res == NULL && PyErr_Occurred()) {
29172                 p->error_indicator = 1;
29173                 PyMem_Free(_children);
29174                 D(p->level--);
29175                 return NULL;
29176             }
29177             if (_n == _children_capacity) {
29178                 _children_capacity *= 2;
29179                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29180                 if (!_new_children) {
29181                     p->error_indicator = 1;
29182                     PyErr_NoMemory();
29183                     D(p->level--);
29184                     return NULL;
29185                 }
29186                 _children = _new_children;
29187             }
29188             _children[_n++] = _res;
29189             _mark = p->mark;
29190         }
29191         p->mark = _mark;
29192         D(fprintf(stderr, "%*c%s _loop0_133[%d-%d]: %s failed!\n", p->level, ' ',
29193                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' kwarg_or_double_starred"));
29194     }
29195     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29196     if (!_seq) {
29197         PyMem_Free(_children);
29198         p->error_indicator = 1;
29199         PyErr_NoMemory();
29200         D(p->level--);
29201         return NULL;
29202     }
29203     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29204     PyMem_Free(_children);
29205     _PyPegen_insert_memo(p, _start_mark, _loop0_133_type, _seq);
29206     D(p->level--);
29207     return _seq;
29208 }
29209 
29210 // _gather_132: kwarg_or_double_starred _loop0_133
29211 static asdl_seq *
_gather_132_rule(Parser * p)29212 _gather_132_rule(Parser *p)
29213 {
29214     D(p->level++);
29215     if (p->error_indicator) {
29216         D(p->level--);
29217         return NULL;
29218     }
29219     asdl_seq * _res = NULL;
29220     int _mark = p->mark;
29221     { // kwarg_or_double_starred _loop0_133
29222         if (p->error_indicator) {
29223             D(p->level--);
29224             return NULL;
29225         }
29226         D(fprintf(stderr, "%*c> _gather_132[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_133"));
29227         KeywordOrStarred* elem;
29228         asdl_seq * seq;
29229         if (
29230             (elem = kwarg_or_double_starred_rule(p))  // kwarg_or_double_starred
29231             &&
29232             (seq = _loop0_133_rule(p))  // _loop0_133
29233         )
29234         {
29235             D(fprintf(stderr, "%*c+ _gather_132[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "kwarg_or_double_starred _loop0_133"));
29236             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29237             goto done;
29238         }
29239         p->mark = _mark;
29240         D(fprintf(stderr, "%*c%s _gather_132[%d-%d]: %s failed!\n", p->level, ' ',
29241                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "kwarg_or_double_starred _loop0_133"));
29242     }
29243     _res = NULL;
29244   done:
29245     D(p->level--);
29246     return _res;
29247 }
29248 
29249 // _loop0_134: (',' star_target)
29250 static asdl_seq *
_loop0_134_rule(Parser * p)29251 _loop0_134_rule(Parser *p)
29252 {
29253     D(p->level++);
29254     if (p->error_indicator) {
29255         D(p->level--);
29256         return NULL;
29257     }
29258     void *_res = NULL;
29259     int _mark = p->mark;
29260     int _start_mark = p->mark;
29261     void **_children = PyMem_Malloc(sizeof(void *));
29262     if (!_children) {
29263         p->error_indicator = 1;
29264         PyErr_NoMemory();
29265         D(p->level--);
29266         return NULL;
29267     }
29268     Py_ssize_t _children_capacity = 1;
29269     Py_ssize_t _n = 0;
29270     { // (',' star_target)
29271         if (p->error_indicator) {
29272             D(p->level--);
29273             return NULL;
29274         }
29275         D(fprintf(stderr, "%*c> _loop0_134[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
29276         void *_tmp_192_var;
29277         while (
29278             (_tmp_192_var = _tmp_192_rule(p))  // ',' star_target
29279         )
29280         {
29281             _res = _tmp_192_var;
29282             if (_n == _children_capacity) {
29283                 _children_capacity *= 2;
29284                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29285                 if (!_new_children) {
29286                     p->error_indicator = 1;
29287                     PyErr_NoMemory();
29288                     D(p->level--);
29289                     return NULL;
29290                 }
29291                 _children = _new_children;
29292             }
29293             _children[_n++] = _res;
29294             _mark = p->mark;
29295         }
29296         p->mark = _mark;
29297         D(fprintf(stderr, "%*c%s _loop0_134[%d-%d]: %s failed!\n", p->level, ' ',
29298                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
29299     }
29300     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29301     if (!_seq) {
29302         PyMem_Free(_children);
29303         p->error_indicator = 1;
29304         PyErr_NoMemory();
29305         D(p->level--);
29306         return NULL;
29307     }
29308     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29309     PyMem_Free(_children);
29310     _PyPegen_insert_memo(p, _start_mark, _loop0_134_type, _seq);
29311     D(p->level--);
29312     return _seq;
29313 }
29314 
29315 // _loop0_136: ',' star_target
29316 static asdl_seq *
_loop0_136_rule(Parser * p)29317 _loop0_136_rule(Parser *p)
29318 {
29319     D(p->level++);
29320     if (p->error_indicator) {
29321         D(p->level--);
29322         return NULL;
29323     }
29324     void *_res = NULL;
29325     int _mark = p->mark;
29326     int _start_mark = p->mark;
29327     void **_children = PyMem_Malloc(sizeof(void *));
29328     if (!_children) {
29329         p->error_indicator = 1;
29330         PyErr_NoMemory();
29331         D(p->level--);
29332         return NULL;
29333     }
29334     Py_ssize_t _children_capacity = 1;
29335     Py_ssize_t _n = 0;
29336     { // ',' star_target
29337         if (p->error_indicator) {
29338             D(p->level--);
29339             return NULL;
29340         }
29341         D(fprintf(stderr, "%*c> _loop0_136[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
29342         Token * _literal;
29343         expr_ty elem;
29344         while (
29345             (_literal = _PyPegen_expect_token(p, 12))  // token=','
29346             &&
29347             (elem = star_target_rule(p))  // star_target
29348         )
29349         {
29350             _res = elem;
29351             if (_res == NULL && PyErr_Occurred()) {
29352                 p->error_indicator = 1;
29353                 PyMem_Free(_children);
29354                 D(p->level--);
29355                 return NULL;
29356             }
29357             if (_n == _children_capacity) {
29358                 _children_capacity *= 2;
29359                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29360                 if (!_new_children) {
29361                     p->error_indicator = 1;
29362                     PyErr_NoMemory();
29363                     D(p->level--);
29364                     return NULL;
29365                 }
29366                 _children = _new_children;
29367             }
29368             _children[_n++] = _res;
29369             _mark = p->mark;
29370         }
29371         p->mark = _mark;
29372         D(fprintf(stderr, "%*c%s _loop0_136[%d-%d]: %s failed!\n", p->level, ' ',
29373                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
29374     }
29375     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29376     if (!_seq) {
29377         PyMem_Free(_children);
29378         p->error_indicator = 1;
29379         PyErr_NoMemory();
29380         D(p->level--);
29381         return NULL;
29382     }
29383     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29384     PyMem_Free(_children);
29385     _PyPegen_insert_memo(p, _start_mark, _loop0_136_type, _seq);
29386     D(p->level--);
29387     return _seq;
29388 }
29389 
29390 // _gather_135: star_target _loop0_136
29391 static asdl_seq *
_gather_135_rule(Parser * p)29392 _gather_135_rule(Parser *p)
29393 {
29394     D(p->level++);
29395     if (p->error_indicator) {
29396         D(p->level--);
29397         return NULL;
29398     }
29399     asdl_seq * _res = NULL;
29400     int _mark = p->mark;
29401     { // star_target _loop0_136
29402         if (p->error_indicator) {
29403             D(p->level--);
29404             return NULL;
29405         }
29406         D(fprintf(stderr, "%*c> _gather_135[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_target _loop0_136"));
29407         expr_ty elem;
29408         asdl_seq * seq;
29409         if (
29410             (elem = star_target_rule(p))  // star_target
29411             &&
29412             (seq = _loop0_136_rule(p))  // _loop0_136
29413         )
29414         {
29415             D(fprintf(stderr, "%*c+ _gather_135[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_target _loop0_136"));
29416             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29417             goto done;
29418         }
29419         p->mark = _mark;
29420         D(fprintf(stderr, "%*c%s _gather_135[%d-%d]: %s failed!\n", p->level, ' ',
29421                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_target _loop0_136"));
29422     }
29423     _res = NULL;
29424   done:
29425     D(p->level--);
29426     return _res;
29427 }
29428 
29429 // _loop1_137: (',' star_target)
29430 static asdl_seq *
_loop1_137_rule(Parser * p)29431 _loop1_137_rule(Parser *p)
29432 {
29433     D(p->level++);
29434     if (p->error_indicator) {
29435         D(p->level--);
29436         return NULL;
29437     }
29438     void *_res = NULL;
29439     int _mark = p->mark;
29440     int _start_mark = p->mark;
29441     void **_children = PyMem_Malloc(sizeof(void *));
29442     if (!_children) {
29443         p->error_indicator = 1;
29444         PyErr_NoMemory();
29445         D(p->level--);
29446         return NULL;
29447     }
29448     Py_ssize_t _children_capacity = 1;
29449     Py_ssize_t _n = 0;
29450     { // (',' star_target)
29451         if (p->error_indicator) {
29452             D(p->level--);
29453             return NULL;
29454         }
29455         D(fprintf(stderr, "%*c> _loop1_137[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(',' star_target)"));
29456         void *_tmp_193_var;
29457         while (
29458             (_tmp_193_var = _tmp_193_rule(p))  // ',' star_target
29459         )
29460         {
29461             _res = _tmp_193_var;
29462             if (_n == _children_capacity) {
29463                 _children_capacity *= 2;
29464                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29465                 if (!_new_children) {
29466                     p->error_indicator = 1;
29467                     PyErr_NoMemory();
29468                     D(p->level--);
29469                     return NULL;
29470                 }
29471                 _children = _new_children;
29472             }
29473             _children[_n++] = _res;
29474             _mark = p->mark;
29475         }
29476         p->mark = _mark;
29477         D(fprintf(stderr, "%*c%s _loop1_137[%d-%d]: %s failed!\n", p->level, ' ',
29478                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(',' star_target)"));
29479     }
29480     if (_n == 0 || p->error_indicator) {
29481         PyMem_Free(_children);
29482         D(p->level--);
29483         return NULL;
29484     }
29485     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29486     if (!_seq) {
29487         PyMem_Free(_children);
29488         p->error_indicator = 1;
29489         PyErr_NoMemory();
29490         D(p->level--);
29491         return NULL;
29492     }
29493     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29494     PyMem_Free(_children);
29495     _PyPegen_insert_memo(p, _start_mark, _loop1_137_type, _seq);
29496     D(p->level--);
29497     return _seq;
29498 }
29499 
29500 // _tmp_138: !'*' star_target
29501 static void *
_tmp_138_rule(Parser * p)29502 _tmp_138_rule(Parser *p)
29503 {
29504     D(p->level++);
29505     if (p->error_indicator) {
29506         D(p->level--);
29507         return NULL;
29508     }
29509     void * _res = NULL;
29510     int _mark = p->mark;
29511     { // !'*' star_target
29512         if (p->error_indicator) {
29513             D(p->level--);
29514             return NULL;
29515         }
29516         D(fprintf(stderr, "%*c> _tmp_138[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
29517         expr_ty star_target_var;
29518         if (
29519             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 16)  // token='*'
29520             &&
29521             (star_target_var = star_target_rule(p))  // star_target
29522         )
29523         {
29524             D(fprintf(stderr, "%*c+ _tmp_138[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "!'*' star_target"));
29525             _res = star_target_var;
29526             goto done;
29527         }
29528         p->mark = _mark;
29529         D(fprintf(stderr, "%*c%s _tmp_138[%d-%d]: %s failed!\n", p->level, ' ',
29530                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "!'*' star_target"));
29531     }
29532     _res = NULL;
29533   done:
29534     D(p->level--);
29535     return _res;
29536 }
29537 
29538 // _loop0_140: ',' del_target
29539 static asdl_seq *
_loop0_140_rule(Parser * p)29540 _loop0_140_rule(Parser *p)
29541 {
29542     D(p->level++);
29543     if (p->error_indicator) {
29544         D(p->level--);
29545         return NULL;
29546     }
29547     void *_res = NULL;
29548     int _mark = p->mark;
29549     int _start_mark = p->mark;
29550     void **_children = PyMem_Malloc(sizeof(void *));
29551     if (!_children) {
29552         p->error_indicator = 1;
29553         PyErr_NoMemory();
29554         D(p->level--);
29555         return NULL;
29556     }
29557     Py_ssize_t _children_capacity = 1;
29558     Py_ssize_t _n = 0;
29559     { // ',' del_target
29560         if (p->error_indicator) {
29561             D(p->level--);
29562             return NULL;
29563         }
29564         D(fprintf(stderr, "%*c> _loop0_140[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' del_target"));
29565         Token * _literal;
29566         expr_ty elem;
29567         while (
29568             (_literal = _PyPegen_expect_token(p, 12))  // token=','
29569             &&
29570             (elem = del_target_rule(p))  // del_target
29571         )
29572         {
29573             _res = elem;
29574             if (_res == NULL && PyErr_Occurred()) {
29575                 p->error_indicator = 1;
29576                 PyMem_Free(_children);
29577                 D(p->level--);
29578                 return NULL;
29579             }
29580             if (_n == _children_capacity) {
29581                 _children_capacity *= 2;
29582                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
29583                 if (!_new_children) {
29584                     p->error_indicator = 1;
29585                     PyErr_NoMemory();
29586                     D(p->level--);
29587                     return NULL;
29588                 }
29589                 _children = _new_children;
29590             }
29591             _children[_n++] = _res;
29592             _mark = p->mark;
29593         }
29594         p->mark = _mark;
29595         D(fprintf(stderr, "%*c%s _loop0_140[%d-%d]: %s failed!\n", p->level, ' ',
29596                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' del_target"));
29597     }
29598     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
29599     if (!_seq) {
29600         PyMem_Free(_children);
29601         p->error_indicator = 1;
29602         PyErr_NoMemory();
29603         D(p->level--);
29604         return NULL;
29605     }
29606     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
29607     PyMem_Free(_children);
29608     _PyPegen_insert_memo(p, _start_mark, _loop0_140_type, _seq);
29609     D(p->level--);
29610     return _seq;
29611 }
29612 
29613 // _gather_139: del_target _loop0_140
29614 static asdl_seq *
_gather_139_rule(Parser * p)29615 _gather_139_rule(Parser *p)
29616 {
29617     D(p->level++);
29618     if (p->error_indicator) {
29619         D(p->level--);
29620         return NULL;
29621     }
29622     asdl_seq * _res = NULL;
29623     int _mark = p->mark;
29624     { // del_target _loop0_140
29625         if (p->error_indicator) {
29626             D(p->level--);
29627             return NULL;
29628         }
29629         D(fprintf(stderr, "%*c> _gather_139[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "del_target _loop0_140"));
29630         expr_ty elem;
29631         asdl_seq * seq;
29632         if (
29633             (elem = del_target_rule(p))  // del_target
29634             &&
29635             (seq = _loop0_140_rule(p))  // _loop0_140
29636         )
29637         {
29638             D(fprintf(stderr, "%*c+ _gather_139[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "del_target _loop0_140"));
29639             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
29640             goto done;
29641         }
29642         p->mark = _mark;
29643         D(fprintf(stderr, "%*c%s _gather_139[%d-%d]: %s failed!\n", p->level, ' ',
29644                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "del_target _loop0_140"));
29645     }
29646     _res = NULL;
29647   done:
29648     D(p->level--);
29649     return _res;
29650 }
29651 
29652 // _tmp_141: args | expression for_if_clauses
29653 static void *
_tmp_141_rule(Parser * p)29654 _tmp_141_rule(Parser *p)
29655 {
29656     D(p->level++);
29657     if (p->error_indicator) {
29658         D(p->level--);
29659         return NULL;
29660     }
29661     void * _res = NULL;
29662     int _mark = p->mark;
29663     { // args
29664         if (p->error_indicator) {
29665             D(p->level--);
29666             return NULL;
29667         }
29668         D(fprintf(stderr, "%*c> _tmp_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "args"));
29669         expr_ty args_var;
29670         if (
29671             (args_var = args_rule(p))  // args
29672         )
29673         {
29674             D(fprintf(stderr, "%*c+ _tmp_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "args"));
29675             _res = args_var;
29676             goto done;
29677         }
29678         p->mark = _mark;
29679         D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ',
29680                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "args"));
29681     }
29682     { // expression for_if_clauses
29683         if (p->error_indicator) {
29684             D(p->level--);
29685             return NULL;
29686         }
29687         D(fprintf(stderr, "%*c> _tmp_141[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses"));
29688         expr_ty expression_var;
29689         asdl_comprehension_seq* for_if_clauses_var;
29690         if (
29691             (expression_var = expression_rule(p))  // expression
29692             &&
29693             (for_if_clauses_var = for_if_clauses_rule(p))  // for_if_clauses
29694         )
29695         {
29696             D(fprintf(stderr, "%*c+ _tmp_141[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression for_if_clauses"));
29697             _res = _PyPegen_dummy_name(p, expression_var, for_if_clauses_var);
29698             goto done;
29699         }
29700         p->mark = _mark;
29701         D(fprintf(stderr, "%*c%s _tmp_141[%d-%d]: %s failed!\n", p->level, ' ',
29702                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression for_if_clauses"));
29703     }
29704     _res = NULL;
29705   done:
29706     D(p->level--);
29707     return _res;
29708 }
29709 
29710 // _tmp_142: 'True' | 'False' | 'None'
29711 static void *
_tmp_142_rule(Parser * p)29712 _tmp_142_rule(Parser *p)
29713 {
29714     D(p->level++);
29715     if (p->error_indicator) {
29716         D(p->level--);
29717         return NULL;
29718     }
29719     void * _res = NULL;
29720     int _mark = p->mark;
29721     { // 'True'
29722         if (p->error_indicator) {
29723             D(p->level--);
29724             return NULL;
29725         }
29726         D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
29727         Token * _keyword;
29728         if (
29729             (_keyword = _PyPegen_expect_token(p, 524))  // token='True'
29730         )
29731         {
29732             D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
29733             _res = _keyword;
29734             goto done;
29735         }
29736         p->mark = _mark;
29737         D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ',
29738                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
29739     }
29740     { // 'False'
29741         if (p->error_indicator) {
29742             D(p->level--);
29743             return NULL;
29744         }
29745         D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
29746         Token * _keyword;
29747         if (
29748             (_keyword = _PyPegen_expect_token(p, 525))  // token='False'
29749         )
29750         {
29751             D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
29752             _res = _keyword;
29753             goto done;
29754         }
29755         p->mark = _mark;
29756         D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ',
29757                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
29758     }
29759     { // 'None'
29760         if (p->error_indicator) {
29761             D(p->level--);
29762             return NULL;
29763         }
29764         D(fprintf(stderr, "%*c> _tmp_142[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
29765         Token * _keyword;
29766         if (
29767             (_keyword = _PyPegen_expect_token(p, 523))  // token='None'
29768         )
29769         {
29770             D(fprintf(stderr, "%*c+ _tmp_142[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
29771             _res = _keyword;
29772             goto done;
29773         }
29774         p->mark = _mark;
29775         D(fprintf(stderr, "%*c%s _tmp_142[%d-%d]: %s failed!\n", p->level, ' ',
29776                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
29777     }
29778     _res = NULL;
29779   done:
29780     D(p->level--);
29781     return _res;
29782 }
29783 
29784 // _tmp_143: NAME '='
29785 static void *
_tmp_143_rule(Parser * p)29786 _tmp_143_rule(Parser *p)
29787 {
29788     D(p->level++);
29789     if (p->error_indicator) {
29790         D(p->level--);
29791         return NULL;
29792     }
29793     void * _res = NULL;
29794     int _mark = p->mark;
29795     { // NAME '='
29796         if (p->error_indicator) {
29797             D(p->level--);
29798             return NULL;
29799         }
29800         D(fprintf(stderr, "%*c> _tmp_143[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME '='"));
29801         Token * _literal;
29802         expr_ty name_var;
29803         if (
29804             (name_var = _PyPegen_name_token(p))  // NAME
29805             &&
29806             (_literal = _PyPegen_expect_token(p, 22))  // token='='
29807         )
29808         {
29809             D(fprintf(stderr, "%*c+ _tmp_143[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME '='"));
29810             _res = _PyPegen_dummy_name(p, name_var, _literal);
29811             goto done;
29812         }
29813         p->mark = _mark;
29814         D(fprintf(stderr, "%*c%s _tmp_143[%d-%d]: %s failed!\n", p->level, ' ',
29815                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME '='"));
29816     }
29817     _res = NULL;
29818   done:
29819     D(p->level--);
29820     return _res;
29821 }
29822 
29823 // _tmp_144: NAME STRING | SOFT_KEYWORD
29824 static void *
_tmp_144_rule(Parser * p)29825 _tmp_144_rule(Parser *p)
29826 {
29827     D(p->level++);
29828     if (p->error_indicator) {
29829         D(p->level--);
29830         return NULL;
29831     }
29832     void * _res = NULL;
29833     int _mark = p->mark;
29834     { // NAME STRING
29835         if (p->error_indicator) {
29836             D(p->level--);
29837             return NULL;
29838         }
29839         D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
29840         expr_ty name_var;
29841         expr_ty string_var;
29842         if (
29843             (name_var = _PyPegen_name_token(p))  // NAME
29844             &&
29845             (string_var = _PyPegen_string_token(p))  // STRING
29846         )
29847         {
29848             D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "NAME STRING"));
29849             _res = _PyPegen_dummy_name(p, name_var, string_var);
29850             goto done;
29851         }
29852         p->mark = _mark;
29853         D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ',
29854                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "NAME STRING"));
29855     }
29856     { // SOFT_KEYWORD
29857         if (p->error_indicator) {
29858             D(p->level--);
29859             return NULL;
29860         }
29861         D(fprintf(stderr, "%*c> _tmp_144[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
29862         expr_ty soft_keyword_var;
29863         if (
29864             (soft_keyword_var = _PyPegen_soft_keyword_token(p))  // SOFT_KEYWORD
29865         )
29866         {
29867             D(fprintf(stderr, "%*c+ _tmp_144[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "SOFT_KEYWORD"));
29868             _res = soft_keyword_var;
29869             goto done;
29870         }
29871         p->mark = _mark;
29872         D(fprintf(stderr, "%*c%s _tmp_144[%d-%d]: %s failed!\n", p->level, ' ',
29873                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "SOFT_KEYWORD"));
29874     }
29875     _res = NULL;
29876   done:
29877     D(p->level--);
29878     return _res;
29879 }
29880 
29881 // _tmp_145: 'else' | ':'
29882 static void *
_tmp_145_rule(Parser * p)29883 _tmp_145_rule(Parser *p)
29884 {
29885     D(p->level++);
29886     if (p->error_indicator) {
29887         D(p->level--);
29888         return NULL;
29889     }
29890     void * _res = NULL;
29891     int _mark = p->mark;
29892     { // 'else'
29893         if (p->error_indicator) {
29894             D(p->level--);
29895             return NULL;
29896         }
29897         D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'else'"));
29898         Token * _keyword;
29899         if (
29900             (_keyword = _PyPegen_expect_token(p, 516))  // token='else'
29901         )
29902         {
29903             D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'else'"));
29904             _res = _keyword;
29905             goto done;
29906         }
29907         p->mark = _mark;
29908         D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ',
29909                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'else'"));
29910     }
29911     { // ':'
29912         if (p->error_indicator) {
29913             D(p->level--);
29914             return NULL;
29915         }
29916         D(fprintf(stderr, "%*c> _tmp_145[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
29917         Token * _literal;
29918         if (
29919             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
29920         )
29921         {
29922             D(fprintf(stderr, "%*c+ _tmp_145[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
29923             _res = _literal;
29924             goto done;
29925         }
29926         p->mark = _mark;
29927         D(fprintf(stderr, "%*c%s _tmp_145[%d-%d]: %s failed!\n", p->level, ' ',
29928                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
29929     }
29930     _res = NULL;
29931   done:
29932     D(p->level--);
29933     return _res;
29934 }
29935 
29936 // _tmp_146: '=' | ':='
29937 static void *
_tmp_146_rule(Parser * p)29938 _tmp_146_rule(Parser *p)
29939 {
29940     D(p->level++);
29941     if (p->error_indicator) {
29942         D(p->level--);
29943         return NULL;
29944     }
29945     void * _res = NULL;
29946     int _mark = p->mark;
29947     { // '='
29948         if (p->error_indicator) {
29949             D(p->level--);
29950             return NULL;
29951         }
29952         D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
29953         Token * _literal;
29954         if (
29955             (_literal = _PyPegen_expect_token(p, 22))  // token='='
29956         )
29957         {
29958             D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
29959             _res = _literal;
29960             goto done;
29961         }
29962         p->mark = _mark;
29963         D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ',
29964                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
29965     }
29966     { // ':='
29967         if (p->error_indicator) {
29968             D(p->level--);
29969             return NULL;
29970         }
29971         D(fprintf(stderr, "%*c> _tmp_146[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='"));
29972         Token * _literal;
29973         if (
29974             (_literal = _PyPegen_expect_token(p, 53))  // token=':='
29975         )
29976         {
29977             D(fprintf(stderr, "%*c+ _tmp_146[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='"));
29978             _res = _literal;
29979             goto done;
29980         }
29981         p->mark = _mark;
29982         D(fprintf(stderr, "%*c%s _tmp_146[%d-%d]: %s failed!\n", p->level, ' ',
29983                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='"));
29984     }
29985     _res = NULL;
29986   done:
29987     D(p->level--);
29988     return _res;
29989 }
29990 
29991 // _tmp_147: list | tuple | genexp | 'True' | 'None' | 'False'
29992 static void *
_tmp_147_rule(Parser * p)29993 _tmp_147_rule(Parser *p)
29994 {
29995     D(p->level++);
29996     if (p->error_indicator) {
29997         D(p->level--);
29998         return NULL;
29999     }
30000     void * _res = NULL;
30001     int _mark = p->mark;
30002     { // list
30003         if (p->error_indicator) {
30004             D(p->level--);
30005             return NULL;
30006         }
30007         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "list"));
30008         expr_ty list_var;
30009         if (
30010             (list_var = list_rule(p))  // list
30011         )
30012         {
30013             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "list"));
30014             _res = list_var;
30015             goto done;
30016         }
30017         p->mark = _mark;
30018         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
30019                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "list"));
30020     }
30021     { // tuple
30022         if (p->error_indicator) {
30023             D(p->level--);
30024             return NULL;
30025         }
30026         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "tuple"));
30027         expr_ty tuple_var;
30028         if (
30029             (tuple_var = tuple_rule(p))  // tuple
30030         )
30031         {
30032             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "tuple"));
30033             _res = tuple_var;
30034             goto done;
30035         }
30036         p->mark = _mark;
30037         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
30038                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "tuple"));
30039     }
30040     { // genexp
30041         if (p->error_indicator) {
30042             D(p->level--);
30043             return NULL;
30044         }
30045         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "genexp"));
30046         expr_ty genexp_var;
30047         if (
30048             (genexp_var = genexp_rule(p))  // genexp
30049         )
30050         {
30051             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "genexp"));
30052             _res = genexp_var;
30053             goto done;
30054         }
30055         p->mark = _mark;
30056         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
30057                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "genexp"));
30058     }
30059     { // 'True'
30060         if (p->error_indicator) {
30061             D(p->level--);
30062             return NULL;
30063         }
30064         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'True'"));
30065         Token * _keyword;
30066         if (
30067             (_keyword = _PyPegen_expect_token(p, 524))  // token='True'
30068         )
30069         {
30070             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'True'"));
30071             _res = _keyword;
30072             goto done;
30073         }
30074         p->mark = _mark;
30075         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
30076                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'True'"));
30077     }
30078     { // 'None'
30079         if (p->error_indicator) {
30080             D(p->level--);
30081             return NULL;
30082         }
30083         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'None'"));
30084         Token * _keyword;
30085         if (
30086             (_keyword = _PyPegen_expect_token(p, 523))  // token='None'
30087         )
30088         {
30089             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'None'"));
30090             _res = _keyword;
30091             goto done;
30092         }
30093         p->mark = _mark;
30094         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
30095                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'None'"));
30096     }
30097     { // 'False'
30098         if (p->error_indicator) {
30099             D(p->level--);
30100             return NULL;
30101         }
30102         D(fprintf(stderr, "%*c> _tmp_147[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'False'"));
30103         Token * _keyword;
30104         if (
30105             (_keyword = _PyPegen_expect_token(p, 525))  // token='False'
30106         )
30107         {
30108             D(fprintf(stderr, "%*c+ _tmp_147[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'False'"));
30109             _res = _keyword;
30110             goto done;
30111         }
30112         p->mark = _mark;
30113         D(fprintf(stderr, "%*c%s _tmp_147[%d-%d]: %s failed!\n", p->level, ' ',
30114                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'False'"));
30115     }
30116     _res = NULL;
30117   done:
30118     D(p->level--);
30119     return _res;
30120 }
30121 
30122 // _tmp_148: '=' | ':='
30123 static void *
_tmp_148_rule(Parser * p)30124 _tmp_148_rule(Parser *p)
30125 {
30126     D(p->level++);
30127     if (p->error_indicator) {
30128         D(p->level--);
30129         return NULL;
30130     }
30131     void * _res = NULL;
30132     int _mark = p->mark;
30133     { // '='
30134         if (p->error_indicator) {
30135             D(p->level--);
30136             return NULL;
30137         }
30138         D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'='"));
30139         Token * _literal;
30140         if (
30141             (_literal = _PyPegen_expect_token(p, 22))  // token='='
30142         )
30143         {
30144             D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'='"));
30145             _res = _literal;
30146             goto done;
30147         }
30148         p->mark = _mark;
30149         D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
30150                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'='"));
30151     }
30152     { // ':='
30153         if (p->error_indicator) {
30154             D(p->level--);
30155             return NULL;
30156         }
30157         D(fprintf(stderr, "%*c> _tmp_148[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':='"));
30158         Token * _literal;
30159         if (
30160             (_literal = _PyPegen_expect_token(p, 53))  // token=':='
30161         )
30162         {
30163             D(fprintf(stderr, "%*c+ _tmp_148[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':='"));
30164             _res = _literal;
30165             goto done;
30166         }
30167         p->mark = _mark;
30168         D(fprintf(stderr, "%*c%s _tmp_148[%d-%d]: %s failed!\n", p->level, ' ',
30169                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':='"));
30170     }
30171     _res = NULL;
30172   done:
30173     D(p->level--);
30174     return _res;
30175 }
30176 
30177 // _loop0_149: star_named_expressions
30178 static asdl_seq *
_loop0_149_rule(Parser * p)30179 _loop0_149_rule(Parser *p)
30180 {
30181     D(p->level++);
30182     if (p->error_indicator) {
30183         D(p->level--);
30184         return NULL;
30185     }
30186     void *_res = NULL;
30187     int _mark = p->mark;
30188     int _start_mark = p->mark;
30189     void **_children = PyMem_Malloc(sizeof(void *));
30190     if (!_children) {
30191         p->error_indicator = 1;
30192         PyErr_NoMemory();
30193         D(p->level--);
30194         return NULL;
30195     }
30196     Py_ssize_t _children_capacity = 1;
30197     Py_ssize_t _n = 0;
30198     { // star_named_expressions
30199         if (p->error_indicator) {
30200             D(p->level--);
30201             return NULL;
30202         }
30203         D(fprintf(stderr, "%*c> _loop0_149[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_named_expressions"));
30204         asdl_expr_seq* star_named_expressions_var;
30205         while (
30206             (star_named_expressions_var = star_named_expressions_rule(p))  // star_named_expressions
30207         )
30208         {
30209             _res = star_named_expressions_var;
30210             if (_n == _children_capacity) {
30211                 _children_capacity *= 2;
30212                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30213                 if (!_new_children) {
30214                     p->error_indicator = 1;
30215                     PyErr_NoMemory();
30216                     D(p->level--);
30217                     return NULL;
30218                 }
30219                 _children = _new_children;
30220             }
30221             _children[_n++] = _res;
30222             _mark = p->mark;
30223         }
30224         p->mark = _mark;
30225         D(fprintf(stderr, "%*c%s _loop0_149[%d-%d]: %s failed!\n", p->level, ' ',
30226                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_named_expressions"));
30227     }
30228     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30229     if (!_seq) {
30230         PyMem_Free(_children);
30231         p->error_indicator = 1;
30232         PyErr_NoMemory();
30233         D(p->level--);
30234         return NULL;
30235     }
30236     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30237     PyMem_Free(_children);
30238     _PyPegen_insert_memo(p, _start_mark, _loop0_149_type, _seq);
30239     D(p->level--);
30240     return _seq;
30241 }
30242 
30243 // _loop0_150: (star_targets '=')
30244 static asdl_seq *
_loop0_150_rule(Parser * p)30245 _loop0_150_rule(Parser *p)
30246 {
30247     D(p->level++);
30248     if (p->error_indicator) {
30249         D(p->level--);
30250         return NULL;
30251     }
30252     void *_res = NULL;
30253     int _mark = p->mark;
30254     int _start_mark = p->mark;
30255     void **_children = PyMem_Malloc(sizeof(void *));
30256     if (!_children) {
30257         p->error_indicator = 1;
30258         PyErr_NoMemory();
30259         D(p->level--);
30260         return NULL;
30261     }
30262     Py_ssize_t _children_capacity = 1;
30263     Py_ssize_t _n = 0;
30264     { // (star_targets '=')
30265         if (p->error_indicator) {
30266             D(p->level--);
30267             return NULL;
30268         }
30269         D(fprintf(stderr, "%*c> _loop0_150[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
30270         void *_tmp_194_var;
30271         while (
30272             (_tmp_194_var = _tmp_194_rule(p))  // star_targets '='
30273         )
30274         {
30275             _res = _tmp_194_var;
30276             if (_n == _children_capacity) {
30277                 _children_capacity *= 2;
30278                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30279                 if (!_new_children) {
30280                     p->error_indicator = 1;
30281                     PyErr_NoMemory();
30282                     D(p->level--);
30283                     return NULL;
30284                 }
30285                 _children = _new_children;
30286             }
30287             _children[_n++] = _res;
30288             _mark = p->mark;
30289         }
30290         p->mark = _mark;
30291         D(fprintf(stderr, "%*c%s _loop0_150[%d-%d]: %s failed!\n", p->level, ' ',
30292                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
30293     }
30294     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30295     if (!_seq) {
30296         PyMem_Free(_children);
30297         p->error_indicator = 1;
30298         PyErr_NoMemory();
30299         D(p->level--);
30300         return NULL;
30301     }
30302     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30303     PyMem_Free(_children);
30304     _PyPegen_insert_memo(p, _start_mark, _loop0_150_type, _seq);
30305     D(p->level--);
30306     return _seq;
30307 }
30308 
30309 // _loop0_151: (star_targets '=')
30310 static asdl_seq *
_loop0_151_rule(Parser * p)30311 _loop0_151_rule(Parser *p)
30312 {
30313     D(p->level++);
30314     if (p->error_indicator) {
30315         D(p->level--);
30316         return NULL;
30317     }
30318     void *_res = NULL;
30319     int _mark = p->mark;
30320     int _start_mark = p->mark;
30321     void **_children = PyMem_Malloc(sizeof(void *));
30322     if (!_children) {
30323         p->error_indicator = 1;
30324         PyErr_NoMemory();
30325         D(p->level--);
30326         return NULL;
30327     }
30328     Py_ssize_t _children_capacity = 1;
30329     Py_ssize_t _n = 0;
30330     { // (star_targets '=')
30331         if (p->error_indicator) {
30332             D(p->level--);
30333             return NULL;
30334         }
30335         D(fprintf(stderr, "%*c> _loop0_151[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(star_targets '=')"));
30336         void *_tmp_195_var;
30337         while (
30338             (_tmp_195_var = _tmp_195_rule(p))  // star_targets '='
30339         )
30340         {
30341             _res = _tmp_195_var;
30342             if (_n == _children_capacity) {
30343                 _children_capacity *= 2;
30344                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30345                 if (!_new_children) {
30346                     p->error_indicator = 1;
30347                     PyErr_NoMemory();
30348                     D(p->level--);
30349                     return NULL;
30350                 }
30351                 _children = _new_children;
30352             }
30353             _children[_n++] = _res;
30354             _mark = p->mark;
30355         }
30356         p->mark = _mark;
30357         D(fprintf(stderr, "%*c%s _loop0_151[%d-%d]: %s failed!\n", p->level, ' ',
30358                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(star_targets '=')"));
30359     }
30360     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30361     if (!_seq) {
30362         PyMem_Free(_children);
30363         p->error_indicator = 1;
30364         PyErr_NoMemory();
30365         D(p->level--);
30366         return NULL;
30367     }
30368     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30369     PyMem_Free(_children);
30370     _PyPegen_insert_memo(p, _start_mark, _loop0_151_type, _seq);
30371     D(p->level--);
30372     return _seq;
30373 }
30374 
30375 // _tmp_152: yield_expr | star_expressions
30376 static void *
_tmp_152_rule(Parser * p)30377 _tmp_152_rule(Parser *p)
30378 {
30379     D(p->level++);
30380     if (p->error_indicator) {
30381         D(p->level--);
30382         return NULL;
30383     }
30384     void * _res = NULL;
30385     int _mark = p->mark;
30386     { // yield_expr
30387         if (p->error_indicator) {
30388             D(p->level--);
30389             return NULL;
30390         }
30391         D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "yield_expr"));
30392         expr_ty yield_expr_var;
30393         if (
30394             (yield_expr_var = yield_expr_rule(p))  // yield_expr
30395         )
30396         {
30397             D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "yield_expr"));
30398             _res = yield_expr_var;
30399             goto done;
30400         }
30401         p->mark = _mark;
30402         D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
30403                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "yield_expr"));
30404     }
30405     { // star_expressions
30406         if (p->error_indicator) {
30407             D(p->level--);
30408             return NULL;
30409         }
30410         D(fprintf(stderr, "%*c> _tmp_152[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_expressions"));
30411         expr_ty star_expressions_var;
30412         if (
30413             (star_expressions_var = star_expressions_rule(p))  // star_expressions
30414         )
30415         {
30416             D(fprintf(stderr, "%*c+ _tmp_152[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_expressions"));
30417             _res = star_expressions_var;
30418             goto done;
30419         }
30420         p->mark = _mark;
30421         D(fprintf(stderr, "%*c%s _tmp_152[%d-%d]: %s failed!\n", p->level, ' ',
30422                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_expressions"));
30423     }
30424     _res = NULL;
30425   done:
30426     D(p->level--);
30427     return _res;
30428 }
30429 
30430 // _tmp_153: '[' | '(' | '{'
30431 static void *
_tmp_153_rule(Parser * p)30432 _tmp_153_rule(Parser *p)
30433 {
30434     D(p->level++);
30435     if (p->error_indicator) {
30436         D(p->level--);
30437         return NULL;
30438     }
30439     void * _res = NULL;
30440     int _mark = p->mark;
30441     { // '['
30442         if (p->error_indicator) {
30443             D(p->level--);
30444             return NULL;
30445         }
30446         D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
30447         Token * _literal;
30448         if (
30449             (_literal = _PyPegen_expect_token(p, 9))  // token='['
30450         )
30451         {
30452             D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
30453             _res = _literal;
30454             goto done;
30455         }
30456         p->mark = _mark;
30457         D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
30458                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
30459     }
30460     { // '('
30461         if (p->error_indicator) {
30462             D(p->level--);
30463             return NULL;
30464         }
30465         D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'('"));
30466         Token * _literal;
30467         if (
30468             (_literal = _PyPegen_expect_token(p, 7))  // token='('
30469         )
30470         {
30471             D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'('"));
30472             _res = _literal;
30473             goto done;
30474         }
30475         p->mark = _mark;
30476         D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
30477                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'('"));
30478     }
30479     { // '{'
30480         if (p->error_indicator) {
30481             D(p->level--);
30482             return NULL;
30483         }
30484         D(fprintf(stderr, "%*c> _tmp_153[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
30485         Token * _literal;
30486         if (
30487             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
30488         )
30489         {
30490             D(fprintf(stderr, "%*c+ _tmp_153[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
30491             _res = _literal;
30492             goto done;
30493         }
30494         p->mark = _mark;
30495         D(fprintf(stderr, "%*c%s _tmp_153[%d-%d]: %s failed!\n", p->level, ' ',
30496                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
30497     }
30498     _res = NULL;
30499   done:
30500     D(p->level--);
30501     return _res;
30502 }
30503 
30504 // _tmp_154: '[' | '{'
30505 static void *
_tmp_154_rule(Parser * p)30506 _tmp_154_rule(Parser *p)
30507 {
30508     D(p->level++);
30509     if (p->error_indicator) {
30510         D(p->level--);
30511         return NULL;
30512     }
30513     void * _res = NULL;
30514     int _mark = p->mark;
30515     { // '['
30516         if (p->error_indicator) {
30517             D(p->level--);
30518             return NULL;
30519         }
30520         D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
30521         Token * _literal;
30522         if (
30523             (_literal = _PyPegen_expect_token(p, 9))  // token='['
30524         )
30525         {
30526             D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
30527             _res = _literal;
30528             goto done;
30529         }
30530         p->mark = _mark;
30531         D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
30532                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
30533     }
30534     { // '{'
30535         if (p->error_indicator) {
30536             D(p->level--);
30537             return NULL;
30538         }
30539         D(fprintf(stderr, "%*c> _tmp_154[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
30540         Token * _literal;
30541         if (
30542             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
30543         )
30544         {
30545             D(fprintf(stderr, "%*c+ _tmp_154[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
30546             _res = _literal;
30547             goto done;
30548         }
30549         p->mark = _mark;
30550         D(fprintf(stderr, "%*c%s _tmp_154[%d-%d]: %s failed!\n", p->level, ' ',
30551                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
30552     }
30553     _res = NULL;
30554   done:
30555     D(p->level--);
30556     return _res;
30557 }
30558 
30559 // _tmp_155: '[' | '{'
30560 static void *
_tmp_155_rule(Parser * p)30561 _tmp_155_rule(Parser *p)
30562 {
30563     D(p->level++);
30564     if (p->error_indicator) {
30565         D(p->level--);
30566         return NULL;
30567     }
30568     void * _res = NULL;
30569     int _mark = p->mark;
30570     { // '['
30571         if (p->error_indicator) {
30572             D(p->level--);
30573             return NULL;
30574         }
30575         D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'['"));
30576         Token * _literal;
30577         if (
30578             (_literal = _PyPegen_expect_token(p, 9))  // token='['
30579         )
30580         {
30581             D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'['"));
30582             _res = _literal;
30583             goto done;
30584         }
30585         p->mark = _mark;
30586         D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
30587                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'['"));
30588     }
30589     { // '{'
30590         if (p->error_indicator) {
30591             D(p->level--);
30592             return NULL;
30593         }
30594         D(fprintf(stderr, "%*c> _tmp_155[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'{'"));
30595         Token * _literal;
30596         if (
30597             (_literal = _PyPegen_expect_token(p, 25))  // token='{'
30598         )
30599         {
30600             D(fprintf(stderr, "%*c+ _tmp_155[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'{'"));
30601             _res = _literal;
30602             goto done;
30603         }
30604         p->mark = _mark;
30605         D(fprintf(stderr, "%*c%s _tmp_155[%d-%d]: %s failed!\n", p->level, ' ',
30606                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'{'"));
30607     }
30608     _res = NULL;
30609   done:
30610     D(p->level--);
30611     return _res;
30612 }
30613 
30614 // _loop0_156: param_no_default
30615 static asdl_seq *
_loop0_156_rule(Parser * p)30616 _loop0_156_rule(Parser *p)
30617 {
30618     D(p->level++);
30619     if (p->error_indicator) {
30620         D(p->level--);
30621         return NULL;
30622     }
30623     void *_res = NULL;
30624     int _mark = p->mark;
30625     int _start_mark = p->mark;
30626     void **_children = PyMem_Malloc(sizeof(void *));
30627     if (!_children) {
30628         p->error_indicator = 1;
30629         PyErr_NoMemory();
30630         D(p->level--);
30631         return NULL;
30632     }
30633     Py_ssize_t _children_capacity = 1;
30634     Py_ssize_t _n = 0;
30635     { // param_no_default
30636         if (p->error_indicator) {
30637             D(p->level--);
30638             return NULL;
30639         }
30640         D(fprintf(stderr, "%*c> _loop0_156[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_no_default"));
30641         arg_ty param_no_default_var;
30642         while (
30643             (param_no_default_var = param_no_default_rule(p))  // param_no_default
30644         )
30645         {
30646             _res = param_no_default_var;
30647             if (_n == _children_capacity) {
30648                 _children_capacity *= 2;
30649                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30650                 if (!_new_children) {
30651                     p->error_indicator = 1;
30652                     PyErr_NoMemory();
30653                     D(p->level--);
30654                     return NULL;
30655                 }
30656                 _children = _new_children;
30657             }
30658             _children[_n++] = _res;
30659             _mark = p->mark;
30660         }
30661         p->mark = _mark;
30662         D(fprintf(stderr, "%*c%s _loop0_156[%d-%d]: %s failed!\n", p->level, ' ',
30663                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_no_default"));
30664     }
30665     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30666     if (!_seq) {
30667         PyMem_Free(_children);
30668         p->error_indicator = 1;
30669         PyErr_NoMemory();
30670         D(p->level--);
30671         return NULL;
30672     }
30673     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30674     PyMem_Free(_children);
30675     _PyPegen_insert_memo(p, _start_mark, _loop0_156_type, _seq);
30676     D(p->level--);
30677     return _seq;
30678 }
30679 
30680 // _loop1_157: param_with_default
30681 static asdl_seq *
_loop1_157_rule(Parser * p)30682 _loop1_157_rule(Parser *p)
30683 {
30684     D(p->level++);
30685     if (p->error_indicator) {
30686         D(p->level--);
30687         return NULL;
30688     }
30689     void *_res = NULL;
30690     int _mark = p->mark;
30691     int _start_mark = p->mark;
30692     void **_children = PyMem_Malloc(sizeof(void *));
30693     if (!_children) {
30694         p->error_indicator = 1;
30695         PyErr_NoMemory();
30696         D(p->level--);
30697         return NULL;
30698     }
30699     Py_ssize_t _children_capacity = 1;
30700     Py_ssize_t _n = 0;
30701     { // param_with_default
30702         if (p->error_indicator) {
30703             D(p->level--);
30704             return NULL;
30705         }
30706         D(fprintf(stderr, "%*c> _loop1_157[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "param_with_default"));
30707         NameDefaultPair* param_with_default_var;
30708         while (
30709             (param_with_default_var = param_with_default_rule(p))  // param_with_default
30710         )
30711         {
30712             _res = param_with_default_var;
30713             if (_n == _children_capacity) {
30714                 _children_capacity *= 2;
30715                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30716                 if (!_new_children) {
30717                     p->error_indicator = 1;
30718                     PyErr_NoMemory();
30719                     D(p->level--);
30720                     return NULL;
30721                 }
30722                 _children = _new_children;
30723             }
30724             _children[_n++] = _res;
30725             _mark = p->mark;
30726         }
30727         p->mark = _mark;
30728         D(fprintf(stderr, "%*c%s _loop1_157[%d-%d]: %s failed!\n", p->level, ' ',
30729                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "param_with_default"));
30730     }
30731     if (_n == 0 || p->error_indicator) {
30732         PyMem_Free(_children);
30733         D(p->level--);
30734         return NULL;
30735     }
30736     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30737     if (!_seq) {
30738         PyMem_Free(_children);
30739         p->error_indicator = 1;
30740         PyErr_NoMemory();
30741         D(p->level--);
30742         return NULL;
30743     }
30744     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30745     PyMem_Free(_children);
30746     _PyPegen_insert_memo(p, _start_mark, _loop1_157_type, _seq);
30747     D(p->level--);
30748     return _seq;
30749 }
30750 
30751 // _loop0_158: lambda_param_no_default
30752 static asdl_seq *
_loop0_158_rule(Parser * p)30753 _loop0_158_rule(Parser *p)
30754 {
30755     D(p->level++);
30756     if (p->error_indicator) {
30757         D(p->level--);
30758         return NULL;
30759     }
30760     void *_res = NULL;
30761     int _mark = p->mark;
30762     int _start_mark = p->mark;
30763     void **_children = PyMem_Malloc(sizeof(void *));
30764     if (!_children) {
30765         p->error_indicator = 1;
30766         PyErr_NoMemory();
30767         D(p->level--);
30768         return NULL;
30769     }
30770     Py_ssize_t _children_capacity = 1;
30771     Py_ssize_t _n = 0;
30772     { // lambda_param_no_default
30773         if (p->error_indicator) {
30774             D(p->level--);
30775             return NULL;
30776         }
30777         D(fprintf(stderr, "%*c> _loop0_158[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_no_default"));
30778         arg_ty lambda_param_no_default_var;
30779         while (
30780             (lambda_param_no_default_var = lambda_param_no_default_rule(p))  // lambda_param_no_default
30781         )
30782         {
30783             _res = lambda_param_no_default_var;
30784             if (_n == _children_capacity) {
30785                 _children_capacity *= 2;
30786                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30787                 if (!_new_children) {
30788                     p->error_indicator = 1;
30789                     PyErr_NoMemory();
30790                     D(p->level--);
30791                     return NULL;
30792                 }
30793                 _children = _new_children;
30794             }
30795             _children[_n++] = _res;
30796             _mark = p->mark;
30797         }
30798         p->mark = _mark;
30799         D(fprintf(stderr, "%*c%s _loop0_158[%d-%d]: %s failed!\n", p->level, ' ',
30800                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_no_default"));
30801     }
30802     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30803     if (!_seq) {
30804         PyMem_Free(_children);
30805         p->error_indicator = 1;
30806         PyErr_NoMemory();
30807         D(p->level--);
30808         return NULL;
30809     }
30810     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30811     PyMem_Free(_children);
30812     _PyPegen_insert_memo(p, _start_mark, _loop0_158_type, _seq);
30813     D(p->level--);
30814     return _seq;
30815 }
30816 
30817 // _loop1_159: lambda_param_with_default
30818 static asdl_seq *
_loop1_159_rule(Parser * p)30819 _loop1_159_rule(Parser *p)
30820 {
30821     D(p->level++);
30822     if (p->error_indicator) {
30823         D(p->level--);
30824         return NULL;
30825     }
30826     void *_res = NULL;
30827     int _mark = p->mark;
30828     int _start_mark = p->mark;
30829     void **_children = PyMem_Malloc(sizeof(void *));
30830     if (!_children) {
30831         p->error_indicator = 1;
30832         PyErr_NoMemory();
30833         D(p->level--);
30834         return NULL;
30835     }
30836     Py_ssize_t _children_capacity = 1;
30837     Py_ssize_t _n = 0;
30838     { // lambda_param_with_default
30839         if (p->error_indicator) {
30840             D(p->level--);
30841             return NULL;
30842         }
30843         D(fprintf(stderr, "%*c> _loop1_159[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "lambda_param_with_default"));
30844         NameDefaultPair* lambda_param_with_default_var;
30845         while (
30846             (lambda_param_with_default_var = lambda_param_with_default_rule(p))  // lambda_param_with_default
30847         )
30848         {
30849             _res = lambda_param_with_default_var;
30850             if (_n == _children_capacity) {
30851                 _children_capacity *= 2;
30852                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
30853                 if (!_new_children) {
30854                     p->error_indicator = 1;
30855                     PyErr_NoMemory();
30856                     D(p->level--);
30857                     return NULL;
30858                 }
30859                 _children = _new_children;
30860             }
30861             _children[_n++] = _res;
30862             _mark = p->mark;
30863         }
30864         p->mark = _mark;
30865         D(fprintf(stderr, "%*c%s _loop1_159[%d-%d]: %s failed!\n", p->level, ' ',
30866                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "lambda_param_with_default"));
30867     }
30868     if (_n == 0 || p->error_indicator) {
30869         PyMem_Free(_children);
30870         D(p->level--);
30871         return NULL;
30872     }
30873     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
30874     if (!_seq) {
30875         PyMem_Free(_children);
30876         p->error_indicator = 1;
30877         PyErr_NoMemory();
30878         D(p->level--);
30879         return NULL;
30880     }
30881     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
30882     PyMem_Free(_children);
30883     _PyPegen_insert_memo(p, _start_mark, _loop1_159_type, _seq);
30884     D(p->level--);
30885     return _seq;
30886 }
30887 
30888 // _tmp_160: ')' | ',' (')' | '**')
30889 static void *
_tmp_160_rule(Parser * p)30890 _tmp_160_rule(Parser *p)
30891 {
30892     D(p->level++);
30893     if (p->error_indicator) {
30894         D(p->level--);
30895         return NULL;
30896     }
30897     void * _res = NULL;
30898     int _mark = p->mark;
30899     { // ')'
30900         if (p->error_indicator) {
30901             D(p->level--);
30902             return NULL;
30903         }
30904         D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
30905         Token * _literal;
30906         if (
30907             (_literal = _PyPegen_expect_token(p, 8))  // token=')'
30908         )
30909         {
30910             D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
30911             _res = _literal;
30912             goto done;
30913         }
30914         p->mark = _mark;
30915         D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ',
30916                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
30917     }
30918     { // ',' (')' | '**')
30919         if (p->error_indicator) {
30920             D(p->level--);
30921             return NULL;
30922         }
30923         D(fprintf(stderr, "%*c> _tmp_160[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
30924         Token * _literal;
30925         void *_tmp_196_var;
30926         if (
30927             (_literal = _PyPegen_expect_token(p, 12))  // token=','
30928             &&
30929             (_tmp_196_var = _tmp_196_rule(p))  // ')' | '**'
30930         )
30931         {
30932             D(fprintf(stderr, "%*c+ _tmp_160[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (')' | '**')"));
30933             _res = _PyPegen_dummy_name(p, _literal, _tmp_196_var);
30934             goto done;
30935         }
30936         p->mark = _mark;
30937         D(fprintf(stderr, "%*c%s _tmp_160[%d-%d]: %s failed!\n", p->level, ' ',
30938                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (')' | '**')"));
30939     }
30940     _res = NULL;
30941   done:
30942     D(p->level--);
30943     return _res;
30944 }
30945 
30946 // _tmp_161: ':' | ',' (':' | '**')
30947 static void *
_tmp_161_rule(Parser * p)30948 _tmp_161_rule(Parser *p)
30949 {
30950     D(p->level++);
30951     if (p->error_indicator) {
30952         D(p->level--);
30953         return NULL;
30954     }
30955     void * _res = NULL;
30956     int _mark = p->mark;
30957     { // ':'
30958         if (p->error_indicator) {
30959             D(p->level--);
30960             return NULL;
30961         }
30962         D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
30963         Token * _literal;
30964         if (
30965             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
30966         )
30967         {
30968             D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
30969             _res = _literal;
30970             goto done;
30971         }
30972         p->mark = _mark;
30973         D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ',
30974                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
30975     }
30976     { // ',' (':' | '**')
30977         if (p->error_indicator) {
30978             D(p->level--);
30979             return NULL;
30980         }
30981         D(fprintf(stderr, "%*c> _tmp_161[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
30982         Token * _literal;
30983         void *_tmp_197_var;
30984         if (
30985             (_literal = _PyPegen_expect_token(p, 12))  // token=','
30986             &&
30987             (_tmp_197_var = _tmp_197_rule(p))  // ':' | '**'
30988         )
30989         {
30990             D(fprintf(stderr, "%*c+ _tmp_161[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' (':' | '**')"));
30991             _res = _PyPegen_dummy_name(p, _literal, _tmp_197_var);
30992             goto done;
30993         }
30994         p->mark = _mark;
30995         D(fprintf(stderr, "%*c%s _tmp_161[%d-%d]: %s failed!\n", p->level, ' ',
30996                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (':' | '**')"));
30997     }
30998     _res = NULL;
30999   done:
31000     D(p->level--);
31001     return _res;
31002 }
31003 
31004 // _tmp_162: ',' | ')' | ':'
31005 static void *
_tmp_162_rule(Parser * p)31006 _tmp_162_rule(Parser *p)
31007 {
31008     D(p->level++);
31009     if (p->error_indicator) {
31010         D(p->level--);
31011         return NULL;
31012     }
31013     void * _res = NULL;
31014     int _mark = p->mark;
31015     { // ','
31016         if (p->error_indicator) {
31017             D(p->level--);
31018             return NULL;
31019         }
31020         D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
31021         Token * _literal;
31022         if (
31023             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31024         )
31025         {
31026             D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
31027             _res = _literal;
31028             goto done;
31029         }
31030         p->mark = _mark;
31031         D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ',
31032                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
31033     }
31034     { // ')'
31035         if (p->error_indicator) {
31036             D(p->level--);
31037             return NULL;
31038         }
31039         D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
31040         Token * _literal;
31041         if (
31042             (_literal = _PyPegen_expect_token(p, 8))  // token=')'
31043         )
31044         {
31045             D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
31046             _res = _literal;
31047             goto done;
31048         }
31049         p->mark = _mark;
31050         D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ',
31051                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
31052     }
31053     { // ':'
31054         if (p->error_indicator) {
31055             D(p->level--);
31056             return NULL;
31057         }
31058         D(fprintf(stderr, "%*c> _tmp_162[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
31059         Token * _literal;
31060         if (
31061             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
31062         )
31063         {
31064             D(fprintf(stderr, "%*c+ _tmp_162[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
31065             _res = _literal;
31066             goto done;
31067         }
31068         p->mark = _mark;
31069         D(fprintf(stderr, "%*c%s _tmp_162[%d-%d]: %s failed!\n", p->level, ' ',
31070                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
31071     }
31072     _res = NULL;
31073   done:
31074     D(p->level--);
31075     return _res;
31076 }
31077 
31078 // _loop0_164: ',' (expression ['as' star_target])
31079 static asdl_seq *
_loop0_164_rule(Parser * p)31080 _loop0_164_rule(Parser *p)
31081 {
31082     D(p->level++);
31083     if (p->error_indicator) {
31084         D(p->level--);
31085         return NULL;
31086     }
31087     void *_res = NULL;
31088     int _mark = p->mark;
31089     int _start_mark = p->mark;
31090     void **_children = PyMem_Malloc(sizeof(void *));
31091     if (!_children) {
31092         p->error_indicator = 1;
31093         PyErr_NoMemory();
31094         D(p->level--);
31095         return NULL;
31096     }
31097     Py_ssize_t _children_capacity = 1;
31098     Py_ssize_t _n = 0;
31099     { // ',' (expression ['as' star_target])
31100         if (p->error_indicator) {
31101             D(p->level--);
31102             return NULL;
31103         }
31104         D(fprintf(stderr, "%*c> _loop0_164[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])"));
31105         Token * _literal;
31106         void *elem;
31107         while (
31108             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31109             &&
31110             (elem = _tmp_198_rule(p))  // expression ['as' star_target]
31111         )
31112         {
31113             _res = elem;
31114             if (_res == NULL && PyErr_Occurred()) {
31115                 p->error_indicator = 1;
31116                 PyMem_Free(_children);
31117                 D(p->level--);
31118                 return NULL;
31119             }
31120             if (_n == _children_capacity) {
31121                 _children_capacity *= 2;
31122                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31123                 if (!_new_children) {
31124                     p->error_indicator = 1;
31125                     PyErr_NoMemory();
31126                     D(p->level--);
31127                     return NULL;
31128                 }
31129                 _children = _new_children;
31130             }
31131             _children[_n++] = _res;
31132             _mark = p->mark;
31133         }
31134         p->mark = _mark;
31135         D(fprintf(stderr, "%*c%s _loop0_164[%d-%d]: %s failed!\n", p->level, ' ',
31136                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])"));
31137     }
31138     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31139     if (!_seq) {
31140         PyMem_Free(_children);
31141         p->error_indicator = 1;
31142         PyErr_NoMemory();
31143         D(p->level--);
31144         return NULL;
31145     }
31146     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31147     PyMem_Free(_children);
31148     _PyPegen_insert_memo(p, _start_mark, _loop0_164_type, _seq);
31149     D(p->level--);
31150     return _seq;
31151 }
31152 
31153 // _gather_163: (expression ['as' star_target]) _loop0_164
31154 static asdl_seq *
_gather_163_rule(Parser * p)31155 _gather_163_rule(Parser *p)
31156 {
31157     D(p->level++);
31158     if (p->error_indicator) {
31159         D(p->level--);
31160         return NULL;
31161     }
31162     asdl_seq * _res = NULL;
31163     int _mark = p->mark;
31164     { // (expression ['as' star_target]) _loop0_164
31165         if (p->error_indicator) {
31166             D(p->level--);
31167             return NULL;
31168         }
31169         D(fprintf(stderr, "%*c> _gather_163[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_164"));
31170         void *elem;
31171         asdl_seq * seq;
31172         if (
31173             (elem = _tmp_198_rule(p))  // expression ['as' star_target]
31174             &&
31175             (seq = _loop0_164_rule(p))  // _loop0_164
31176         )
31177         {
31178             D(fprintf(stderr, "%*c+ _gather_163[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_164"));
31179             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31180             goto done;
31181         }
31182         p->mark = _mark;
31183         D(fprintf(stderr, "%*c%s _gather_163[%d-%d]: %s failed!\n", p->level, ' ',
31184                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_164"));
31185     }
31186     _res = NULL;
31187   done:
31188     D(p->level--);
31189     return _res;
31190 }
31191 
31192 // _loop0_166: ',' (expressions ['as' star_target])
31193 static asdl_seq *
_loop0_166_rule(Parser * p)31194 _loop0_166_rule(Parser *p)
31195 {
31196     D(p->level++);
31197     if (p->error_indicator) {
31198         D(p->level--);
31199         return NULL;
31200     }
31201     void *_res = NULL;
31202     int _mark = p->mark;
31203     int _start_mark = p->mark;
31204     void **_children = PyMem_Malloc(sizeof(void *));
31205     if (!_children) {
31206         p->error_indicator = 1;
31207         PyErr_NoMemory();
31208         D(p->level--);
31209         return NULL;
31210     }
31211     Py_ssize_t _children_capacity = 1;
31212     Py_ssize_t _n = 0;
31213     { // ',' (expressions ['as' star_target])
31214         if (p->error_indicator) {
31215             D(p->level--);
31216             return NULL;
31217         }
31218         D(fprintf(stderr, "%*c> _loop0_166[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])"));
31219         Token * _literal;
31220         void *elem;
31221         while (
31222             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31223             &&
31224             (elem = _tmp_199_rule(p))  // expressions ['as' star_target]
31225         )
31226         {
31227             _res = elem;
31228             if (_res == NULL && PyErr_Occurred()) {
31229                 p->error_indicator = 1;
31230                 PyMem_Free(_children);
31231                 D(p->level--);
31232                 return NULL;
31233             }
31234             if (_n == _children_capacity) {
31235                 _children_capacity *= 2;
31236                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31237                 if (!_new_children) {
31238                     p->error_indicator = 1;
31239                     PyErr_NoMemory();
31240                     D(p->level--);
31241                     return NULL;
31242                 }
31243                 _children = _new_children;
31244             }
31245             _children[_n++] = _res;
31246             _mark = p->mark;
31247         }
31248         p->mark = _mark;
31249         D(fprintf(stderr, "%*c%s _loop0_166[%d-%d]: %s failed!\n", p->level, ' ',
31250                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])"));
31251     }
31252     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31253     if (!_seq) {
31254         PyMem_Free(_children);
31255         p->error_indicator = 1;
31256         PyErr_NoMemory();
31257         D(p->level--);
31258         return NULL;
31259     }
31260     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31261     PyMem_Free(_children);
31262     _PyPegen_insert_memo(p, _start_mark, _loop0_166_type, _seq);
31263     D(p->level--);
31264     return _seq;
31265 }
31266 
31267 // _gather_165: (expressions ['as' star_target]) _loop0_166
31268 static asdl_seq *
_gather_165_rule(Parser * p)31269 _gather_165_rule(Parser *p)
31270 {
31271     D(p->level++);
31272     if (p->error_indicator) {
31273         D(p->level--);
31274         return NULL;
31275     }
31276     asdl_seq * _res = NULL;
31277     int _mark = p->mark;
31278     { // (expressions ['as' star_target]) _loop0_166
31279         if (p->error_indicator) {
31280             D(p->level--);
31281             return NULL;
31282         }
31283         D(fprintf(stderr, "%*c> _gather_165[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_166"));
31284         void *elem;
31285         asdl_seq * seq;
31286         if (
31287             (elem = _tmp_199_rule(p))  // expressions ['as' star_target]
31288             &&
31289             (seq = _loop0_166_rule(p))  // _loop0_166
31290         )
31291         {
31292             D(fprintf(stderr, "%*c+ _gather_165[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_166"));
31293             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31294             goto done;
31295         }
31296         p->mark = _mark;
31297         D(fprintf(stderr, "%*c%s _gather_165[%d-%d]: %s failed!\n", p->level, ' ',
31298                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_166"));
31299     }
31300     _res = NULL;
31301   done:
31302     D(p->level--);
31303     return _res;
31304 }
31305 
31306 // _loop0_168: ',' (expression ['as' star_target])
31307 static asdl_seq *
_loop0_168_rule(Parser * p)31308 _loop0_168_rule(Parser *p)
31309 {
31310     D(p->level++);
31311     if (p->error_indicator) {
31312         D(p->level--);
31313         return NULL;
31314     }
31315     void *_res = NULL;
31316     int _mark = p->mark;
31317     int _start_mark = p->mark;
31318     void **_children = PyMem_Malloc(sizeof(void *));
31319     if (!_children) {
31320         p->error_indicator = 1;
31321         PyErr_NoMemory();
31322         D(p->level--);
31323         return NULL;
31324     }
31325     Py_ssize_t _children_capacity = 1;
31326     Py_ssize_t _n = 0;
31327     { // ',' (expression ['as' star_target])
31328         if (p->error_indicator) {
31329             D(p->level--);
31330             return NULL;
31331         }
31332         D(fprintf(stderr, "%*c> _loop0_168[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expression ['as' star_target])"));
31333         Token * _literal;
31334         void *elem;
31335         while (
31336             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31337             &&
31338             (elem = _tmp_200_rule(p))  // expression ['as' star_target]
31339         )
31340         {
31341             _res = elem;
31342             if (_res == NULL && PyErr_Occurred()) {
31343                 p->error_indicator = 1;
31344                 PyMem_Free(_children);
31345                 D(p->level--);
31346                 return NULL;
31347             }
31348             if (_n == _children_capacity) {
31349                 _children_capacity *= 2;
31350                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31351                 if (!_new_children) {
31352                     p->error_indicator = 1;
31353                     PyErr_NoMemory();
31354                     D(p->level--);
31355                     return NULL;
31356                 }
31357                 _children = _new_children;
31358             }
31359             _children[_n++] = _res;
31360             _mark = p->mark;
31361         }
31362         p->mark = _mark;
31363         D(fprintf(stderr, "%*c%s _loop0_168[%d-%d]: %s failed!\n", p->level, ' ',
31364                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expression ['as' star_target])"));
31365     }
31366     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31367     if (!_seq) {
31368         PyMem_Free(_children);
31369         p->error_indicator = 1;
31370         PyErr_NoMemory();
31371         D(p->level--);
31372         return NULL;
31373     }
31374     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31375     PyMem_Free(_children);
31376     _PyPegen_insert_memo(p, _start_mark, _loop0_168_type, _seq);
31377     D(p->level--);
31378     return _seq;
31379 }
31380 
31381 // _gather_167: (expression ['as' star_target]) _loop0_168
31382 static asdl_seq *
_gather_167_rule(Parser * p)31383 _gather_167_rule(Parser *p)
31384 {
31385     D(p->level++);
31386     if (p->error_indicator) {
31387         D(p->level--);
31388         return NULL;
31389     }
31390     asdl_seq * _res = NULL;
31391     int _mark = p->mark;
31392     { // (expression ['as' star_target]) _loop0_168
31393         if (p->error_indicator) {
31394             D(p->level--);
31395             return NULL;
31396         }
31397         D(fprintf(stderr, "%*c> _gather_167[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_168"));
31398         void *elem;
31399         asdl_seq * seq;
31400         if (
31401             (elem = _tmp_200_rule(p))  // expression ['as' star_target]
31402             &&
31403             (seq = _loop0_168_rule(p))  // _loop0_168
31404         )
31405         {
31406             D(fprintf(stderr, "%*c+ _gather_167[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expression ['as' star_target]) _loop0_168"));
31407             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31408             goto done;
31409         }
31410         p->mark = _mark;
31411         D(fprintf(stderr, "%*c%s _gather_167[%d-%d]: %s failed!\n", p->level, ' ',
31412                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expression ['as' star_target]) _loop0_168"));
31413     }
31414     _res = NULL;
31415   done:
31416     D(p->level--);
31417     return _res;
31418 }
31419 
31420 // _loop0_170: ',' (expressions ['as' star_target])
31421 static asdl_seq *
_loop0_170_rule(Parser * p)31422 _loop0_170_rule(Parser *p)
31423 {
31424     D(p->level++);
31425     if (p->error_indicator) {
31426         D(p->level--);
31427         return NULL;
31428     }
31429     void *_res = NULL;
31430     int _mark = p->mark;
31431     int _start_mark = p->mark;
31432     void **_children = PyMem_Malloc(sizeof(void *));
31433     if (!_children) {
31434         p->error_indicator = 1;
31435         PyErr_NoMemory();
31436         D(p->level--);
31437         return NULL;
31438     }
31439     Py_ssize_t _children_capacity = 1;
31440     Py_ssize_t _n = 0;
31441     { // ',' (expressions ['as' star_target])
31442         if (p->error_indicator) {
31443             D(p->level--);
31444             return NULL;
31445         }
31446         D(fprintf(stderr, "%*c> _loop0_170[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' (expressions ['as' star_target])"));
31447         Token * _literal;
31448         void *elem;
31449         while (
31450             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31451             &&
31452             (elem = _tmp_201_rule(p))  // expressions ['as' star_target]
31453         )
31454         {
31455             _res = elem;
31456             if (_res == NULL && PyErr_Occurred()) {
31457                 p->error_indicator = 1;
31458                 PyMem_Free(_children);
31459                 D(p->level--);
31460                 return NULL;
31461             }
31462             if (_n == _children_capacity) {
31463                 _children_capacity *= 2;
31464                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31465                 if (!_new_children) {
31466                     p->error_indicator = 1;
31467                     PyErr_NoMemory();
31468                     D(p->level--);
31469                     return NULL;
31470                 }
31471                 _children = _new_children;
31472             }
31473             _children[_n++] = _res;
31474             _mark = p->mark;
31475         }
31476         p->mark = _mark;
31477         D(fprintf(stderr, "%*c%s _loop0_170[%d-%d]: %s failed!\n", p->level, ' ',
31478                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' (expressions ['as' star_target])"));
31479     }
31480     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31481     if (!_seq) {
31482         PyMem_Free(_children);
31483         p->error_indicator = 1;
31484         PyErr_NoMemory();
31485         D(p->level--);
31486         return NULL;
31487     }
31488     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31489     PyMem_Free(_children);
31490     _PyPegen_insert_memo(p, _start_mark, _loop0_170_type, _seq);
31491     D(p->level--);
31492     return _seq;
31493 }
31494 
31495 // _gather_169: (expressions ['as' star_target]) _loop0_170
31496 static asdl_seq *
_gather_169_rule(Parser * p)31497 _gather_169_rule(Parser *p)
31498 {
31499     D(p->level++);
31500     if (p->error_indicator) {
31501         D(p->level--);
31502         return NULL;
31503     }
31504     asdl_seq * _res = NULL;
31505     int _mark = p->mark;
31506     { // (expressions ['as' star_target]) _loop0_170
31507         if (p->error_indicator) {
31508             D(p->level--);
31509             return NULL;
31510         }
31511         D(fprintf(stderr, "%*c> _gather_169[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_170"));
31512         void *elem;
31513         asdl_seq * seq;
31514         if (
31515             (elem = _tmp_201_rule(p))  // expressions ['as' star_target]
31516             &&
31517             (seq = _loop0_170_rule(p))  // _loop0_170
31518         )
31519         {
31520             D(fprintf(stderr, "%*c+ _gather_169[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(expressions ['as' star_target]) _loop0_170"));
31521             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31522             goto done;
31523         }
31524         p->mark = _mark;
31525         D(fprintf(stderr, "%*c%s _gather_169[%d-%d]: %s failed!\n", p->level, ' ',
31526                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(expressions ['as' star_target]) _loop0_170"));
31527     }
31528     _res = NULL;
31529   done:
31530     D(p->level--);
31531     return _res;
31532 }
31533 
31534 // _tmp_171: 'except' | 'finally'
31535 static void *
_tmp_171_rule(Parser * p)31536 _tmp_171_rule(Parser *p)
31537 {
31538     D(p->level++);
31539     if (p->error_indicator) {
31540         D(p->level--);
31541         return NULL;
31542     }
31543     void * _res = NULL;
31544     int _mark = p->mark;
31545     { // 'except'
31546         if (p->error_indicator) {
31547             D(p->level--);
31548             return NULL;
31549         }
31550         D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'except'"));
31551         Token * _keyword;
31552         if (
31553             (_keyword = _PyPegen_expect_token(p, 521))  // token='except'
31554         )
31555         {
31556             D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'except'"));
31557             _res = _keyword;
31558             goto done;
31559         }
31560         p->mark = _mark;
31561         D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ',
31562                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'except'"));
31563     }
31564     { // 'finally'
31565         if (p->error_indicator) {
31566             D(p->level--);
31567             return NULL;
31568         }
31569         D(fprintf(stderr, "%*c> _tmp_171[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'finally'"));
31570         Token * _keyword;
31571         if (
31572             (_keyword = _PyPegen_expect_token(p, 522))  // token='finally'
31573         )
31574         {
31575             D(fprintf(stderr, "%*c+ _tmp_171[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'finally'"));
31576             _res = _keyword;
31577             goto done;
31578         }
31579         p->mark = _mark;
31580         D(fprintf(stderr, "%*c%s _tmp_171[%d-%d]: %s failed!\n", p->level, ' ',
31581                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'finally'"));
31582     }
31583     _res = NULL;
31584   done:
31585     D(p->level--);
31586     return _res;
31587 }
31588 
31589 // _tmp_172: 'as' NAME
31590 static void *
_tmp_172_rule(Parser * p)31591 _tmp_172_rule(Parser *p)
31592 {
31593     D(p->level++);
31594     if (p->error_indicator) {
31595         D(p->level--);
31596         return NULL;
31597     }
31598     void * _res = NULL;
31599     int _mark = p->mark;
31600     { // 'as' NAME
31601         if (p->error_indicator) {
31602             D(p->level--);
31603             return NULL;
31604         }
31605         D(fprintf(stderr, "%*c> _tmp_172[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
31606         Token * _keyword;
31607         expr_ty name_var;
31608         if (
31609             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
31610             &&
31611             (name_var = _PyPegen_name_token(p))  // NAME
31612         )
31613         {
31614             D(fprintf(stderr, "%*c+ _tmp_172[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
31615             _res = _PyPegen_dummy_name(p, _keyword, name_var);
31616             goto done;
31617         }
31618         p->mark = _mark;
31619         D(fprintf(stderr, "%*c%s _tmp_172[%d-%d]: %s failed!\n", p->level, ' ',
31620                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
31621     }
31622     _res = NULL;
31623   done:
31624     D(p->level--);
31625     return _res;
31626 }
31627 
31628 // _tmp_173: 'as' NAME
31629 static void *
_tmp_173_rule(Parser * p)31630 _tmp_173_rule(Parser *p)
31631 {
31632     D(p->level++);
31633     if (p->error_indicator) {
31634         D(p->level--);
31635         return NULL;
31636     }
31637     void * _res = NULL;
31638     int _mark = p->mark;
31639     { // 'as' NAME
31640         if (p->error_indicator) {
31641             D(p->level--);
31642             return NULL;
31643         }
31644         D(fprintf(stderr, "%*c> _tmp_173[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
31645         Token * _keyword;
31646         expr_ty name_var;
31647         if (
31648             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
31649             &&
31650             (name_var = _PyPegen_name_token(p))  // NAME
31651         )
31652         {
31653             D(fprintf(stderr, "%*c+ _tmp_173[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
31654             _res = _PyPegen_dummy_name(p, _keyword, name_var);
31655             goto done;
31656         }
31657         p->mark = _mark;
31658         D(fprintf(stderr, "%*c%s _tmp_173[%d-%d]: %s failed!\n", p->level, ' ',
31659                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
31660     }
31661     _res = NULL;
31662   done:
31663     D(p->level--);
31664     return _res;
31665 }
31666 
31667 // _tmp_174: 'as' NAME
31668 static void *
_tmp_174_rule(Parser * p)31669 _tmp_174_rule(Parser *p)
31670 {
31671     D(p->level++);
31672     if (p->error_indicator) {
31673         D(p->level--);
31674         return NULL;
31675     }
31676     void * _res = NULL;
31677     int _mark = p->mark;
31678     { // 'as' NAME
31679         if (p->error_indicator) {
31680             D(p->level--);
31681             return NULL;
31682         }
31683         D(fprintf(stderr, "%*c> _tmp_174[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
31684         Token * _keyword;
31685         expr_ty name_var;
31686         if (
31687             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
31688             &&
31689             (name_var = _PyPegen_name_token(p))  // NAME
31690         )
31691         {
31692             D(fprintf(stderr, "%*c+ _tmp_174[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' NAME"));
31693             _res = _PyPegen_dummy_name(p, _keyword, name_var);
31694             goto done;
31695         }
31696         p->mark = _mark;
31697         D(fprintf(stderr, "%*c%s _tmp_174[%d-%d]: %s failed!\n", p->level, ' ',
31698                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' NAME"));
31699     }
31700     _res = NULL;
31701   done:
31702     D(p->level--);
31703     return _res;
31704 }
31705 
31706 // _tmp_175: positional_patterns ','
31707 static void *
_tmp_175_rule(Parser * p)31708 _tmp_175_rule(Parser *p)
31709 {
31710     D(p->level++);
31711     if (p->error_indicator) {
31712         D(p->level--);
31713         return NULL;
31714     }
31715     void * _res = NULL;
31716     int _mark = p->mark;
31717     { // positional_patterns ','
31718         if (p->error_indicator) {
31719             D(p->level--);
31720             return NULL;
31721         }
31722         D(fprintf(stderr, "%*c> _tmp_175[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
31723         Token * _literal;
31724         asdl_pattern_seq* positional_patterns_var;
31725         if (
31726             (positional_patterns_var = positional_patterns_rule(p))  // positional_patterns
31727             &&
31728             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31729         )
31730         {
31731             D(fprintf(stderr, "%*c+ _tmp_175[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "positional_patterns ','"));
31732             _res = _PyPegen_dummy_name(p, positional_patterns_var, _literal);
31733             goto done;
31734         }
31735         p->mark = _mark;
31736         D(fprintf(stderr, "%*c%s _tmp_175[%d-%d]: %s failed!\n", p->level, ' ',
31737                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "positional_patterns ','"));
31738     }
31739     _res = NULL;
31740   done:
31741     D(p->level--);
31742     return _res;
31743 }
31744 
31745 // _tmp_176: '->' expression
31746 static void *
_tmp_176_rule(Parser * p)31747 _tmp_176_rule(Parser *p)
31748 {
31749     D(p->level++);
31750     if (p->error_indicator) {
31751         D(p->level--);
31752         return NULL;
31753     }
31754     void * _res = NULL;
31755     int _mark = p->mark;
31756     { // '->' expression
31757         if (p->error_indicator) {
31758             D(p->level--);
31759             return NULL;
31760         }
31761         D(fprintf(stderr, "%*c> _tmp_176[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'->' expression"));
31762         Token * _literal;
31763         expr_ty expression_var;
31764         if (
31765             (_literal = _PyPegen_expect_token(p, 51))  // token='->'
31766             &&
31767             (expression_var = expression_rule(p))  // expression
31768         )
31769         {
31770             D(fprintf(stderr, "%*c+ _tmp_176[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'->' expression"));
31771             _res = _PyPegen_dummy_name(p, _literal, expression_var);
31772             goto done;
31773         }
31774         p->mark = _mark;
31775         D(fprintf(stderr, "%*c%s _tmp_176[%d-%d]: %s failed!\n", p->level, ' ',
31776                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'->' expression"));
31777     }
31778     _res = NULL;
31779   done:
31780     D(p->level--);
31781     return _res;
31782 }
31783 
31784 // _tmp_177: '(' arguments? ')'
31785 static void *
_tmp_177_rule(Parser * p)31786 _tmp_177_rule(Parser *p)
31787 {
31788     D(p->level++);
31789     if (p->error_indicator) {
31790         D(p->level--);
31791         return NULL;
31792     }
31793     void * _res = NULL;
31794     int _mark = p->mark;
31795     { // '(' arguments? ')'
31796         if (p->error_indicator) {
31797             D(p->level--);
31798             return NULL;
31799         }
31800         D(fprintf(stderr, "%*c> _tmp_177[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
31801         Token * _literal;
31802         Token * _literal_1;
31803         void *_opt_var;
31804         UNUSED(_opt_var); // Silence compiler warnings
31805         if (
31806             (_literal = _PyPegen_expect_token(p, 7))  // token='('
31807             &&
31808             (_opt_var = arguments_rule(p), !p->error_indicator)  // arguments?
31809             &&
31810             (_literal_1 = _PyPegen_expect_token(p, 8))  // token=')'
31811         )
31812         {
31813             D(fprintf(stderr, "%*c+ _tmp_177[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'(' arguments? ')'"));
31814             _res = _PyPegen_dummy_name(p, _literal, _opt_var, _literal_1);
31815             goto done;
31816         }
31817         p->mark = _mark;
31818         D(fprintf(stderr, "%*c%s _tmp_177[%d-%d]: %s failed!\n", p->level, ' ',
31819                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'(' arguments? ')'"));
31820     }
31821     _res = NULL;
31822   done:
31823     D(p->level--);
31824     return _res;
31825 }
31826 
31827 // _loop0_179: ',' double_starred_kvpair
31828 static asdl_seq *
_loop0_179_rule(Parser * p)31829 _loop0_179_rule(Parser *p)
31830 {
31831     D(p->level++);
31832     if (p->error_indicator) {
31833         D(p->level--);
31834         return NULL;
31835     }
31836     void *_res = NULL;
31837     int _mark = p->mark;
31838     int _start_mark = p->mark;
31839     void **_children = PyMem_Malloc(sizeof(void *));
31840     if (!_children) {
31841         p->error_indicator = 1;
31842         PyErr_NoMemory();
31843         D(p->level--);
31844         return NULL;
31845     }
31846     Py_ssize_t _children_capacity = 1;
31847     Py_ssize_t _n = 0;
31848     { // ',' double_starred_kvpair
31849         if (p->error_indicator) {
31850             D(p->level--);
31851             return NULL;
31852         }
31853         D(fprintf(stderr, "%*c> _loop0_179[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' double_starred_kvpair"));
31854         Token * _literal;
31855         KeyValuePair* elem;
31856         while (
31857             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31858             &&
31859             (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
31860         )
31861         {
31862             _res = elem;
31863             if (_res == NULL && PyErr_Occurred()) {
31864                 p->error_indicator = 1;
31865                 PyMem_Free(_children);
31866                 D(p->level--);
31867                 return NULL;
31868             }
31869             if (_n == _children_capacity) {
31870                 _children_capacity *= 2;
31871                 void **_new_children = PyMem_Realloc(_children, _children_capacity*sizeof(void *));
31872                 if (!_new_children) {
31873                     p->error_indicator = 1;
31874                     PyErr_NoMemory();
31875                     D(p->level--);
31876                     return NULL;
31877                 }
31878                 _children = _new_children;
31879             }
31880             _children[_n++] = _res;
31881             _mark = p->mark;
31882         }
31883         p->mark = _mark;
31884         D(fprintf(stderr, "%*c%s _loop0_179[%d-%d]: %s failed!\n", p->level, ' ',
31885                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' double_starred_kvpair"));
31886     }
31887     asdl_seq *_seq = (asdl_seq*)_Py_asdl_generic_seq_new(_n, p->arena);
31888     if (!_seq) {
31889         PyMem_Free(_children);
31890         p->error_indicator = 1;
31891         PyErr_NoMemory();
31892         D(p->level--);
31893         return NULL;
31894     }
31895     for (int i = 0; i < _n; i++) asdl_seq_SET_UNTYPED(_seq, i, _children[i]);
31896     PyMem_Free(_children);
31897     _PyPegen_insert_memo(p, _start_mark, _loop0_179_type, _seq);
31898     D(p->level--);
31899     return _seq;
31900 }
31901 
31902 // _gather_178: double_starred_kvpair _loop0_179
31903 static asdl_seq *
_gather_178_rule(Parser * p)31904 _gather_178_rule(Parser *p)
31905 {
31906     D(p->level++);
31907     if (p->error_indicator) {
31908         D(p->level--);
31909         return NULL;
31910     }
31911     asdl_seq * _res = NULL;
31912     int _mark = p->mark;
31913     { // double_starred_kvpair _loop0_179
31914         if (p->error_indicator) {
31915             D(p->level--);
31916             return NULL;
31917         }
31918         D(fprintf(stderr, "%*c> _gather_178[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_179"));
31919         KeyValuePair* elem;
31920         asdl_seq * seq;
31921         if (
31922             (elem = double_starred_kvpair_rule(p))  // double_starred_kvpair
31923             &&
31924             (seq = _loop0_179_rule(p))  // _loop0_179
31925         )
31926         {
31927             D(fprintf(stderr, "%*c+ _gather_178[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "double_starred_kvpair _loop0_179"));
31928             _res = _PyPegen_seq_insert_in_front(p, elem, seq);
31929             goto done;
31930         }
31931         p->mark = _mark;
31932         D(fprintf(stderr, "%*c%s _gather_178[%d-%d]: %s failed!\n", p->level, ' ',
31933                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "double_starred_kvpair _loop0_179"));
31934     }
31935     _res = NULL;
31936   done:
31937     D(p->level--);
31938     return _res;
31939 }
31940 
31941 // _tmp_180: '}' | ','
31942 static void *
_tmp_180_rule(Parser * p)31943 _tmp_180_rule(Parser *p)
31944 {
31945     D(p->level++);
31946     if (p->error_indicator) {
31947         D(p->level--);
31948         return NULL;
31949     }
31950     void * _res = NULL;
31951     int _mark = p->mark;
31952     { // '}'
31953         if (p->error_indicator) {
31954             D(p->level--);
31955             return NULL;
31956         }
31957         D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'}'"));
31958         Token * _literal;
31959         if (
31960             (_literal = _PyPegen_expect_token(p, 26))  // token='}'
31961         )
31962         {
31963             D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'}'"));
31964             _res = _literal;
31965             goto done;
31966         }
31967         p->mark = _mark;
31968         D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ',
31969                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'}'"));
31970     }
31971     { // ','
31972         if (p->error_indicator) {
31973             D(p->level--);
31974             return NULL;
31975         }
31976         D(fprintf(stderr, "%*c> _tmp_180[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "','"));
31977         Token * _literal;
31978         if (
31979             (_literal = _PyPegen_expect_token(p, 12))  // token=','
31980         )
31981         {
31982             D(fprintf(stderr, "%*c+ _tmp_180[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "','"));
31983             _res = _literal;
31984             goto done;
31985         }
31986         p->mark = _mark;
31987         D(fprintf(stderr, "%*c%s _tmp_180[%d-%d]: %s failed!\n", p->level, ' ',
31988                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "','"));
31989     }
31990     _res = NULL;
31991   done:
31992     D(p->level--);
31993     return _res;
31994 }
31995 
31996 // _tmp_181: star_targets '='
31997 static void *
_tmp_181_rule(Parser * p)31998 _tmp_181_rule(Parser *p)
31999 {
32000     D(p->level++);
32001     if (p->error_indicator) {
32002         D(p->level--);
32003         return NULL;
32004     }
32005     void * _res = NULL;
32006     int _mark = p->mark;
32007     { // star_targets '='
32008         if (p->error_indicator) {
32009             D(p->level--);
32010             return NULL;
32011         }
32012         D(fprintf(stderr, "%*c> _tmp_181[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
32013         Token * _literal;
32014         expr_ty z;
32015         if (
32016             (z = star_targets_rule(p))  // star_targets
32017             &&
32018             (_literal = _PyPegen_expect_token(p, 22))  // token='='
32019         )
32020         {
32021             D(fprintf(stderr, "%*c+ _tmp_181[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
32022             _res = z;
32023             if (_res == NULL && PyErr_Occurred()) {
32024                 p->error_indicator = 1;
32025                 D(p->level--);
32026                 return NULL;
32027             }
32028             goto done;
32029         }
32030         p->mark = _mark;
32031         D(fprintf(stderr, "%*c%s _tmp_181[%d-%d]: %s failed!\n", p->level, ' ',
32032                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
32033     }
32034     _res = NULL;
32035   done:
32036     D(p->level--);
32037     return _res;
32038 }
32039 
32040 // _tmp_182: '.' | '...'
32041 static void *
_tmp_182_rule(Parser * p)32042 _tmp_182_rule(Parser *p)
32043 {
32044     D(p->level++);
32045     if (p->error_indicator) {
32046         D(p->level--);
32047         return NULL;
32048     }
32049     void * _res = NULL;
32050     int _mark = p->mark;
32051     { // '.'
32052         if (p->error_indicator) {
32053             D(p->level--);
32054             return NULL;
32055         }
32056         D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
32057         Token * _literal;
32058         if (
32059             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
32060         )
32061         {
32062             D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
32063             _res = _literal;
32064             goto done;
32065         }
32066         p->mark = _mark;
32067         D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ',
32068                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
32069     }
32070     { // '...'
32071         if (p->error_indicator) {
32072             D(p->level--);
32073             return NULL;
32074         }
32075         D(fprintf(stderr, "%*c> _tmp_182[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
32076         Token * _literal;
32077         if (
32078             (_literal = _PyPegen_expect_token(p, 52))  // token='...'
32079         )
32080         {
32081             D(fprintf(stderr, "%*c+ _tmp_182[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
32082             _res = _literal;
32083             goto done;
32084         }
32085         p->mark = _mark;
32086         D(fprintf(stderr, "%*c%s _tmp_182[%d-%d]: %s failed!\n", p->level, ' ',
32087                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
32088     }
32089     _res = NULL;
32090   done:
32091     D(p->level--);
32092     return _res;
32093 }
32094 
32095 // _tmp_183: '.' | '...'
32096 static void *
_tmp_183_rule(Parser * p)32097 _tmp_183_rule(Parser *p)
32098 {
32099     D(p->level++);
32100     if (p->error_indicator) {
32101         D(p->level--);
32102         return NULL;
32103     }
32104     void * _res = NULL;
32105     int _mark = p->mark;
32106     { // '.'
32107         if (p->error_indicator) {
32108             D(p->level--);
32109             return NULL;
32110         }
32111         D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'.'"));
32112         Token * _literal;
32113         if (
32114             (_literal = _PyPegen_expect_token(p, 23))  // token='.'
32115         )
32116         {
32117             D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'.'"));
32118             _res = _literal;
32119             goto done;
32120         }
32121         p->mark = _mark;
32122         D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ',
32123                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'.'"));
32124     }
32125     { // '...'
32126         if (p->error_indicator) {
32127             D(p->level--);
32128             return NULL;
32129         }
32130         D(fprintf(stderr, "%*c> _tmp_183[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'...'"));
32131         Token * _literal;
32132         if (
32133             (_literal = _PyPegen_expect_token(p, 52))  // token='...'
32134         )
32135         {
32136             D(fprintf(stderr, "%*c+ _tmp_183[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'...'"));
32137             _res = _literal;
32138             goto done;
32139         }
32140         p->mark = _mark;
32141         D(fprintf(stderr, "%*c%s _tmp_183[%d-%d]: %s failed!\n", p->level, ' ',
32142                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'...'"));
32143     }
32144     _res = NULL;
32145   done:
32146     D(p->level--);
32147     return _res;
32148 }
32149 
32150 // _tmp_184: '@' named_expression NEWLINE
32151 static void *
_tmp_184_rule(Parser * p)32152 _tmp_184_rule(Parser *p)
32153 {
32154     D(p->level++);
32155     if (p->error_indicator) {
32156         D(p->level--);
32157         return NULL;
32158     }
32159     void * _res = NULL;
32160     int _mark = p->mark;
32161     { // '@' named_expression NEWLINE
32162         if (p->error_indicator) {
32163             D(p->level--);
32164             return NULL;
32165         }
32166         D(fprintf(stderr, "%*c> _tmp_184[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
32167         Token * _literal;
32168         expr_ty f;
32169         Token * newline_var;
32170         if (
32171             (_literal = _PyPegen_expect_token(p, 49))  // token='@'
32172             &&
32173             (f = named_expression_rule(p))  // named_expression
32174             &&
32175             (newline_var = _PyPegen_expect_token(p, NEWLINE))  // token='NEWLINE'
32176         )
32177         {
32178             D(fprintf(stderr, "%*c+ _tmp_184[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'@' named_expression NEWLINE"));
32179             _res = f;
32180             if (_res == NULL && PyErr_Occurred()) {
32181                 p->error_indicator = 1;
32182                 D(p->level--);
32183                 return NULL;
32184             }
32185             goto done;
32186         }
32187         p->mark = _mark;
32188         D(fprintf(stderr, "%*c%s _tmp_184[%d-%d]: %s failed!\n", p->level, ' ',
32189                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'@' named_expression NEWLINE"));
32190     }
32191     _res = NULL;
32192   done:
32193     D(p->level--);
32194     return _res;
32195 }
32196 
32197 // _tmp_185: ',' star_expression
32198 static void *
_tmp_185_rule(Parser * p)32199 _tmp_185_rule(Parser *p)
32200 {
32201     D(p->level++);
32202     if (p->error_indicator) {
32203         D(p->level--);
32204         return NULL;
32205     }
32206     void * _res = NULL;
32207     int _mark = p->mark;
32208     { // ',' star_expression
32209         if (p->error_indicator) {
32210             D(p->level--);
32211             return NULL;
32212         }
32213         D(fprintf(stderr, "%*c> _tmp_185[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
32214         Token * _literal;
32215         expr_ty c;
32216         if (
32217             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32218             &&
32219             (c = star_expression_rule(p))  // star_expression
32220         )
32221         {
32222             D(fprintf(stderr, "%*c+ _tmp_185[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_expression"));
32223             _res = c;
32224             if (_res == NULL && PyErr_Occurred()) {
32225                 p->error_indicator = 1;
32226                 D(p->level--);
32227                 return NULL;
32228             }
32229             goto done;
32230         }
32231         p->mark = _mark;
32232         D(fprintf(stderr, "%*c%s _tmp_185[%d-%d]: %s failed!\n", p->level, ' ',
32233                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_expression"));
32234     }
32235     _res = NULL;
32236   done:
32237     D(p->level--);
32238     return _res;
32239 }
32240 
32241 // _tmp_186: ',' expression
32242 static void *
_tmp_186_rule(Parser * p)32243 _tmp_186_rule(Parser *p)
32244 {
32245     D(p->level++);
32246     if (p->error_indicator) {
32247         D(p->level--);
32248         return NULL;
32249     }
32250     void * _res = NULL;
32251     int _mark = p->mark;
32252     { // ',' expression
32253         if (p->error_indicator) {
32254             D(p->level--);
32255             return NULL;
32256         }
32257         D(fprintf(stderr, "%*c> _tmp_186[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' expression"));
32258         Token * _literal;
32259         expr_ty c;
32260         if (
32261             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32262             &&
32263             (c = expression_rule(p))  // expression
32264         )
32265         {
32266             D(fprintf(stderr, "%*c+ _tmp_186[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' expression"));
32267             _res = c;
32268             if (_res == NULL && PyErr_Occurred()) {
32269                 p->error_indicator = 1;
32270                 D(p->level--);
32271                 return NULL;
32272             }
32273             goto done;
32274         }
32275         p->mark = _mark;
32276         D(fprintf(stderr, "%*c%s _tmp_186[%d-%d]: %s failed!\n", p->level, ' ',
32277                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' expression"));
32278     }
32279     _res = NULL;
32280   done:
32281     D(p->level--);
32282     return _res;
32283 }
32284 
32285 // _tmp_187: 'or' conjunction
32286 static void *
_tmp_187_rule(Parser * p)32287 _tmp_187_rule(Parser *p)
32288 {
32289     D(p->level++);
32290     if (p->error_indicator) {
32291         D(p->level--);
32292         return NULL;
32293     }
32294     void * _res = NULL;
32295     int _mark = p->mark;
32296     { // 'or' conjunction
32297         if (p->error_indicator) {
32298             D(p->level--);
32299             return NULL;
32300         }
32301         D(fprintf(stderr, "%*c> _tmp_187[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
32302         Token * _keyword;
32303         expr_ty c;
32304         if (
32305             (_keyword = _PyPegen_expect_token(p, 531))  // token='or'
32306             &&
32307             (c = conjunction_rule(p))  // conjunction
32308         )
32309         {
32310             D(fprintf(stderr, "%*c+ _tmp_187[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'or' conjunction"));
32311             _res = c;
32312             if (_res == NULL && PyErr_Occurred()) {
32313                 p->error_indicator = 1;
32314                 D(p->level--);
32315                 return NULL;
32316             }
32317             goto done;
32318         }
32319         p->mark = _mark;
32320         D(fprintf(stderr, "%*c%s _tmp_187[%d-%d]: %s failed!\n", p->level, ' ',
32321                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'or' conjunction"));
32322     }
32323     _res = NULL;
32324   done:
32325     D(p->level--);
32326     return _res;
32327 }
32328 
32329 // _tmp_188: 'and' inversion
32330 static void *
_tmp_188_rule(Parser * p)32331 _tmp_188_rule(Parser *p)
32332 {
32333     D(p->level++);
32334     if (p->error_indicator) {
32335         D(p->level--);
32336         return NULL;
32337     }
32338     void * _res = NULL;
32339     int _mark = p->mark;
32340     { // 'and' inversion
32341         if (p->error_indicator) {
32342             D(p->level--);
32343             return NULL;
32344         }
32345         D(fprintf(stderr, "%*c> _tmp_188[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
32346         Token * _keyword;
32347         expr_ty c;
32348         if (
32349             (_keyword = _PyPegen_expect_token(p, 532))  // token='and'
32350             &&
32351             (c = inversion_rule(p))  // inversion
32352         )
32353         {
32354             D(fprintf(stderr, "%*c+ _tmp_188[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'and' inversion"));
32355             _res = c;
32356             if (_res == NULL && PyErr_Occurred()) {
32357                 p->error_indicator = 1;
32358                 D(p->level--);
32359                 return NULL;
32360             }
32361             goto done;
32362         }
32363         p->mark = _mark;
32364         D(fprintf(stderr, "%*c%s _tmp_188[%d-%d]: %s failed!\n", p->level, ' ',
32365                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'and' inversion"));
32366     }
32367     _res = NULL;
32368   done:
32369     D(p->level--);
32370     return _res;
32371 }
32372 
32373 // _tmp_189: 'if' disjunction
32374 static void *
_tmp_189_rule(Parser * p)32375 _tmp_189_rule(Parser *p)
32376 {
32377     D(p->level++);
32378     if (p->error_indicator) {
32379         D(p->level--);
32380         return NULL;
32381     }
32382     void * _res = NULL;
32383     int _mark = p->mark;
32384     { // 'if' disjunction
32385         if (p->error_indicator) {
32386             D(p->level--);
32387             return NULL;
32388         }
32389         D(fprintf(stderr, "%*c> _tmp_189[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
32390         Token * _keyword;
32391         expr_ty z;
32392         if (
32393             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
32394             &&
32395             (z = disjunction_rule(p))  // disjunction
32396         )
32397         {
32398             D(fprintf(stderr, "%*c+ _tmp_189[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
32399             _res = z;
32400             if (_res == NULL && PyErr_Occurred()) {
32401                 p->error_indicator = 1;
32402                 D(p->level--);
32403                 return NULL;
32404             }
32405             goto done;
32406         }
32407         p->mark = _mark;
32408         D(fprintf(stderr, "%*c%s _tmp_189[%d-%d]: %s failed!\n", p->level, ' ',
32409                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
32410     }
32411     _res = NULL;
32412   done:
32413     D(p->level--);
32414     return _res;
32415 }
32416 
32417 // _tmp_190: 'if' disjunction
32418 static void *
_tmp_190_rule(Parser * p)32419 _tmp_190_rule(Parser *p)
32420 {
32421     D(p->level++);
32422     if (p->error_indicator) {
32423         D(p->level--);
32424         return NULL;
32425     }
32426     void * _res = NULL;
32427     int _mark = p->mark;
32428     { // 'if' disjunction
32429         if (p->error_indicator) {
32430             D(p->level--);
32431             return NULL;
32432         }
32433         D(fprintf(stderr, "%*c> _tmp_190[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
32434         Token * _keyword;
32435         expr_ty z;
32436         if (
32437             (_keyword = _PyPegen_expect_token(p, 510))  // token='if'
32438             &&
32439             (z = disjunction_rule(p))  // disjunction
32440         )
32441         {
32442             D(fprintf(stderr, "%*c+ _tmp_190[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'if' disjunction"));
32443             _res = z;
32444             if (_res == NULL && PyErr_Occurred()) {
32445                 p->error_indicator = 1;
32446                 D(p->level--);
32447                 return NULL;
32448             }
32449             goto done;
32450         }
32451         p->mark = _mark;
32452         D(fprintf(stderr, "%*c%s _tmp_190[%d-%d]: %s failed!\n", p->level, ' ',
32453                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'if' disjunction"));
32454     }
32455     _res = NULL;
32456   done:
32457     D(p->level--);
32458     return _res;
32459 }
32460 
32461 // _tmp_191: starred_expression | (assignment_expression | expression !':=') !'='
32462 static void *
_tmp_191_rule(Parser * p)32463 _tmp_191_rule(Parser *p)
32464 {
32465     D(p->level++);
32466     if (p->error_indicator) {
32467         D(p->level--);
32468         return NULL;
32469     }
32470     void * _res = NULL;
32471     int _mark = p->mark;
32472     { // starred_expression
32473         if (p->error_indicator) {
32474             D(p->level--);
32475             return NULL;
32476         }
32477         D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "starred_expression"));
32478         expr_ty starred_expression_var;
32479         if (
32480             (starred_expression_var = starred_expression_rule(p))  // starred_expression
32481         )
32482         {
32483             D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "starred_expression"));
32484             _res = starred_expression_var;
32485             goto done;
32486         }
32487         p->mark = _mark;
32488         D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ',
32489                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "starred_expression"));
32490     }
32491     { // (assignment_expression | expression !':=') !'='
32492         if (p->error_indicator) {
32493             D(p->level--);
32494             return NULL;
32495         }
32496         D(fprintf(stderr, "%*c> _tmp_191[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
32497         void *_tmp_202_var;
32498         if (
32499             (_tmp_202_var = _tmp_202_rule(p))  // assignment_expression | expression !':='
32500             &&
32501             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 22)  // token='='
32502         )
32503         {
32504             D(fprintf(stderr, "%*c+ _tmp_191[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
32505             _res = _tmp_202_var;
32506             goto done;
32507         }
32508         p->mark = _mark;
32509         D(fprintf(stderr, "%*c%s _tmp_191[%d-%d]: %s failed!\n", p->level, ' ',
32510                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "(assignment_expression | expression !':=') !'='"));
32511     }
32512     _res = NULL;
32513   done:
32514     D(p->level--);
32515     return _res;
32516 }
32517 
32518 // _tmp_192: ',' star_target
32519 static void *
_tmp_192_rule(Parser * p)32520 _tmp_192_rule(Parser *p)
32521 {
32522     D(p->level++);
32523     if (p->error_indicator) {
32524         D(p->level--);
32525         return NULL;
32526     }
32527     void * _res = NULL;
32528     int _mark = p->mark;
32529     { // ',' star_target
32530         if (p->error_indicator) {
32531             D(p->level--);
32532             return NULL;
32533         }
32534         D(fprintf(stderr, "%*c> _tmp_192[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
32535         Token * _literal;
32536         expr_ty c;
32537         if (
32538             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32539             &&
32540             (c = star_target_rule(p))  // star_target
32541         )
32542         {
32543             D(fprintf(stderr, "%*c+ _tmp_192[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target"));
32544             _res = c;
32545             if (_res == NULL && PyErr_Occurred()) {
32546                 p->error_indicator = 1;
32547                 D(p->level--);
32548                 return NULL;
32549             }
32550             goto done;
32551         }
32552         p->mark = _mark;
32553         D(fprintf(stderr, "%*c%s _tmp_192[%d-%d]: %s failed!\n", p->level, ' ',
32554                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
32555     }
32556     _res = NULL;
32557   done:
32558     D(p->level--);
32559     return _res;
32560 }
32561 
32562 // _tmp_193: ',' star_target
32563 static void *
_tmp_193_rule(Parser * p)32564 _tmp_193_rule(Parser *p)
32565 {
32566     D(p->level++);
32567     if (p->error_indicator) {
32568         D(p->level--);
32569         return NULL;
32570     }
32571     void * _res = NULL;
32572     int _mark = p->mark;
32573     { // ',' star_target
32574         if (p->error_indicator) {
32575             D(p->level--);
32576             return NULL;
32577         }
32578         D(fprintf(stderr, "%*c> _tmp_193[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "',' star_target"));
32579         Token * _literal;
32580         expr_ty c;
32581         if (
32582             (_literal = _PyPegen_expect_token(p, 12))  // token=','
32583             &&
32584             (c = star_target_rule(p))  // star_target
32585         )
32586         {
32587             D(fprintf(stderr, "%*c+ _tmp_193[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "',' star_target"));
32588             _res = c;
32589             if (_res == NULL && PyErr_Occurred()) {
32590                 p->error_indicator = 1;
32591                 D(p->level--);
32592                 return NULL;
32593             }
32594             goto done;
32595         }
32596         p->mark = _mark;
32597         D(fprintf(stderr, "%*c%s _tmp_193[%d-%d]: %s failed!\n", p->level, ' ',
32598                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "',' star_target"));
32599     }
32600     _res = NULL;
32601   done:
32602     D(p->level--);
32603     return _res;
32604 }
32605 
32606 // _tmp_194: star_targets '='
32607 static void *
_tmp_194_rule(Parser * p)32608 _tmp_194_rule(Parser *p)
32609 {
32610     D(p->level++);
32611     if (p->error_indicator) {
32612         D(p->level--);
32613         return NULL;
32614     }
32615     void * _res = NULL;
32616     int _mark = p->mark;
32617     { // star_targets '='
32618         if (p->error_indicator) {
32619             D(p->level--);
32620             return NULL;
32621         }
32622         D(fprintf(stderr, "%*c> _tmp_194[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
32623         Token * _literal;
32624         expr_ty star_targets_var;
32625         if (
32626             (star_targets_var = star_targets_rule(p))  // star_targets
32627             &&
32628             (_literal = _PyPegen_expect_token(p, 22))  // token='='
32629         )
32630         {
32631             D(fprintf(stderr, "%*c+ _tmp_194[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
32632             _res = _PyPegen_dummy_name(p, star_targets_var, _literal);
32633             goto done;
32634         }
32635         p->mark = _mark;
32636         D(fprintf(stderr, "%*c%s _tmp_194[%d-%d]: %s failed!\n", p->level, ' ',
32637                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
32638     }
32639     _res = NULL;
32640   done:
32641     D(p->level--);
32642     return _res;
32643 }
32644 
32645 // _tmp_195: star_targets '='
32646 static void *
_tmp_195_rule(Parser * p)32647 _tmp_195_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_targets '='
32657         if (p->error_indicator) {
32658             D(p->level--);
32659             return NULL;
32660         }
32661         D(fprintf(stderr, "%*c> _tmp_195[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
32662         Token * _literal;
32663         expr_ty star_targets_var;
32664         if (
32665             (star_targets_var = star_targets_rule(p))  // star_targets
32666             &&
32667             (_literal = _PyPegen_expect_token(p, 22))  // token='='
32668         )
32669         {
32670             D(fprintf(stderr, "%*c+ _tmp_195[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "star_targets '='"));
32671             _res = _PyPegen_dummy_name(p, star_targets_var, _literal);
32672             goto done;
32673         }
32674         p->mark = _mark;
32675         D(fprintf(stderr, "%*c%s _tmp_195[%d-%d]: %s failed!\n", p->level, ' ',
32676                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "star_targets '='"));
32677     }
32678     _res = NULL;
32679   done:
32680     D(p->level--);
32681     return _res;
32682 }
32683 
32684 // _tmp_196: ')' | '**'
32685 static void *
_tmp_196_rule(Parser * p)32686 _tmp_196_rule(Parser *p)
32687 {
32688     D(p->level++);
32689     if (p->error_indicator) {
32690         D(p->level--);
32691         return NULL;
32692     }
32693     void * _res = NULL;
32694     int _mark = p->mark;
32695     { // ')'
32696         if (p->error_indicator) {
32697             D(p->level--);
32698             return NULL;
32699         }
32700         D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "')'"));
32701         Token * _literal;
32702         if (
32703             (_literal = _PyPegen_expect_token(p, 8))  // token=')'
32704         )
32705         {
32706             D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "')'"));
32707             _res = _literal;
32708             goto done;
32709         }
32710         p->mark = _mark;
32711         D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ',
32712                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "')'"));
32713     }
32714     { // '**'
32715         if (p->error_indicator) {
32716             D(p->level--);
32717             return NULL;
32718         }
32719         D(fprintf(stderr, "%*c> _tmp_196[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
32720         Token * _literal;
32721         if (
32722             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
32723         )
32724         {
32725             D(fprintf(stderr, "%*c+ _tmp_196[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
32726             _res = _literal;
32727             goto done;
32728         }
32729         p->mark = _mark;
32730         D(fprintf(stderr, "%*c%s _tmp_196[%d-%d]: %s failed!\n", p->level, ' ',
32731                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
32732     }
32733     _res = NULL;
32734   done:
32735     D(p->level--);
32736     return _res;
32737 }
32738 
32739 // _tmp_197: ':' | '**'
32740 static void *
_tmp_197_rule(Parser * p)32741 _tmp_197_rule(Parser *p)
32742 {
32743     D(p->level++);
32744     if (p->error_indicator) {
32745         D(p->level--);
32746         return NULL;
32747     }
32748     void * _res = NULL;
32749     int _mark = p->mark;
32750     { // ':'
32751         if (p->error_indicator) {
32752             D(p->level--);
32753             return NULL;
32754         }
32755         D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "':'"));
32756         Token * _literal;
32757         if (
32758             (_literal = _PyPegen_expect_token(p, 11))  // token=':'
32759         )
32760         {
32761             D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "':'"));
32762             _res = _literal;
32763             goto done;
32764         }
32765         p->mark = _mark;
32766         D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ',
32767                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "':'"));
32768     }
32769     { // '**'
32770         if (p->error_indicator) {
32771             D(p->level--);
32772             return NULL;
32773         }
32774         D(fprintf(stderr, "%*c> _tmp_197[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'**'"));
32775         Token * _literal;
32776         if (
32777             (_literal = _PyPegen_expect_token(p, 35))  // token='**'
32778         )
32779         {
32780             D(fprintf(stderr, "%*c+ _tmp_197[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'**'"));
32781             _res = _literal;
32782             goto done;
32783         }
32784         p->mark = _mark;
32785         D(fprintf(stderr, "%*c%s _tmp_197[%d-%d]: %s failed!\n", p->level, ' ',
32786                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'**'"));
32787     }
32788     _res = NULL;
32789   done:
32790     D(p->level--);
32791     return _res;
32792 }
32793 
32794 // _tmp_198: expression ['as' star_target]
32795 static void *
_tmp_198_rule(Parser * p)32796 _tmp_198_rule(Parser *p)
32797 {
32798     D(p->level++);
32799     if (p->error_indicator) {
32800         D(p->level--);
32801         return NULL;
32802     }
32803     void * _res = NULL;
32804     int _mark = p->mark;
32805     { // expression ['as' star_target]
32806         if (p->error_indicator) {
32807             D(p->level--);
32808             return NULL;
32809         }
32810         D(fprintf(stderr, "%*c> _tmp_198[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
32811         void *_opt_var;
32812         UNUSED(_opt_var); // Silence compiler warnings
32813         expr_ty expression_var;
32814         if (
32815             (expression_var = expression_rule(p))  // expression
32816             &&
32817             (_opt_var = _tmp_203_rule(p), !p->error_indicator)  // ['as' star_target]
32818         )
32819         {
32820             D(fprintf(stderr, "%*c+ _tmp_198[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
32821             _res = _PyPegen_dummy_name(p, expression_var, _opt_var);
32822             goto done;
32823         }
32824         p->mark = _mark;
32825         D(fprintf(stderr, "%*c%s _tmp_198[%d-%d]: %s failed!\n", p->level, ' ',
32826                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]"));
32827     }
32828     _res = NULL;
32829   done:
32830     D(p->level--);
32831     return _res;
32832 }
32833 
32834 // _tmp_199: expressions ['as' star_target]
32835 static void *
_tmp_199_rule(Parser * p)32836 _tmp_199_rule(Parser *p)
32837 {
32838     D(p->level++);
32839     if (p->error_indicator) {
32840         D(p->level--);
32841         return NULL;
32842     }
32843     void * _res = NULL;
32844     int _mark = p->mark;
32845     { // expressions ['as' star_target]
32846         if (p->error_indicator) {
32847             D(p->level--);
32848             return NULL;
32849         }
32850         D(fprintf(stderr, "%*c> _tmp_199[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
32851         void *_opt_var;
32852         UNUSED(_opt_var); // Silence compiler warnings
32853         expr_ty expressions_var;
32854         if (
32855             (expressions_var = expressions_rule(p))  // expressions
32856             &&
32857             (_opt_var = _tmp_204_rule(p), !p->error_indicator)  // ['as' star_target]
32858         )
32859         {
32860             D(fprintf(stderr, "%*c+ _tmp_199[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
32861             _res = _PyPegen_dummy_name(p, expressions_var, _opt_var);
32862             goto done;
32863         }
32864         p->mark = _mark;
32865         D(fprintf(stderr, "%*c%s _tmp_199[%d-%d]: %s failed!\n", p->level, ' ',
32866                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]"));
32867     }
32868     _res = NULL;
32869   done:
32870     D(p->level--);
32871     return _res;
32872 }
32873 
32874 // _tmp_200: expression ['as' star_target]
32875 static void *
_tmp_200_rule(Parser * p)32876 _tmp_200_rule(Parser *p)
32877 {
32878     D(p->level++);
32879     if (p->error_indicator) {
32880         D(p->level--);
32881         return NULL;
32882     }
32883     void * _res = NULL;
32884     int _mark = p->mark;
32885     { // expression ['as' star_target]
32886         if (p->error_indicator) {
32887             D(p->level--);
32888             return NULL;
32889         }
32890         D(fprintf(stderr, "%*c> _tmp_200[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
32891         void *_opt_var;
32892         UNUSED(_opt_var); // Silence compiler warnings
32893         expr_ty expression_var;
32894         if (
32895             (expression_var = expression_rule(p))  // expression
32896             &&
32897             (_opt_var = _tmp_205_rule(p), !p->error_indicator)  // ['as' star_target]
32898         )
32899         {
32900             D(fprintf(stderr, "%*c+ _tmp_200[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression ['as' star_target]"));
32901             _res = _PyPegen_dummy_name(p, expression_var, _opt_var);
32902             goto done;
32903         }
32904         p->mark = _mark;
32905         D(fprintf(stderr, "%*c%s _tmp_200[%d-%d]: %s failed!\n", p->level, ' ',
32906                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression ['as' star_target]"));
32907     }
32908     _res = NULL;
32909   done:
32910     D(p->level--);
32911     return _res;
32912 }
32913 
32914 // _tmp_201: expressions ['as' star_target]
32915 static void *
_tmp_201_rule(Parser * p)32916 _tmp_201_rule(Parser *p)
32917 {
32918     D(p->level++);
32919     if (p->error_indicator) {
32920         D(p->level--);
32921         return NULL;
32922     }
32923     void * _res = NULL;
32924     int _mark = p->mark;
32925     { // expressions ['as' star_target]
32926         if (p->error_indicator) {
32927             D(p->level--);
32928             return NULL;
32929         }
32930         D(fprintf(stderr, "%*c> _tmp_201[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
32931         void *_opt_var;
32932         UNUSED(_opt_var); // Silence compiler warnings
32933         expr_ty expressions_var;
32934         if (
32935             (expressions_var = expressions_rule(p))  // expressions
32936             &&
32937             (_opt_var = _tmp_206_rule(p), !p->error_indicator)  // ['as' star_target]
32938         )
32939         {
32940             D(fprintf(stderr, "%*c+ _tmp_201[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expressions ['as' star_target]"));
32941             _res = _PyPegen_dummy_name(p, expressions_var, _opt_var);
32942             goto done;
32943         }
32944         p->mark = _mark;
32945         D(fprintf(stderr, "%*c%s _tmp_201[%d-%d]: %s failed!\n", p->level, ' ',
32946                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expressions ['as' star_target]"));
32947     }
32948     _res = NULL;
32949   done:
32950     D(p->level--);
32951     return _res;
32952 }
32953 
32954 // _tmp_202: assignment_expression | expression !':='
32955 static void *
_tmp_202_rule(Parser * p)32956 _tmp_202_rule(Parser *p)
32957 {
32958     D(p->level++);
32959     if (p->error_indicator) {
32960         D(p->level--);
32961         return NULL;
32962     }
32963     void * _res = NULL;
32964     int _mark = p->mark;
32965     { // assignment_expression
32966         if (p->error_indicator) {
32967             D(p->level--);
32968             return NULL;
32969         }
32970         D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
32971         expr_ty assignment_expression_var;
32972         if (
32973             (assignment_expression_var = assignment_expression_rule(p))  // assignment_expression
32974         )
32975         {
32976             D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "assignment_expression"));
32977             _res = assignment_expression_var;
32978             goto done;
32979         }
32980         p->mark = _mark;
32981         D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ',
32982                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "assignment_expression"));
32983     }
32984     { // expression !':='
32985         if (p->error_indicator) {
32986             D(p->level--);
32987             return NULL;
32988         }
32989         D(fprintf(stderr, "%*c> _tmp_202[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "expression !':='"));
32990         expr_ty expression_var;
32991         if (
32992             (expression_var = expression_rule(p))  // expression
32993             &&
32994             _PyPegen_lookahead_with_int(0, _PyPegen_expect_token, p, 53)  // token=':='
32995         )
32996         {
32997             D(fprintf(stderr, "%*c+ _tmp_202[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "expression !':='"));
32998             _res = expression_var;
32999             goto done;
33000         }
33001         p->mark = _mark;
33002         D(fprintf(stderr, "%*c%s _tmp_202[%d-%d]: %s failed!\n", p->level, ' ',
33003                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "expression !':='"));
33004     }
33005     _res = NULL;
33006   done:
33007     D(p->level--);
33008     return _res;
33009 }
33010 
33011 // _tmp_203: 'as' star_target
33012 static void *
_tmp_203_rule(Parser * p)33013 _tmp_203_rule(Parser *p)
33014 {
33015     D(p->level++);
33016     if (p->error_indicator) {
33017         D(p->level--);
33018         return NULL;
33019     }
33020     void * _res = NULL;
33021     int _mark = p->mark;
33022     { // 'as' star_target
33023         if (p->error_indicator) {
33024             D(p->level--);
33025             return NULL;
33026         }
33027         D(fprintf(stderr, "%*c> _tmp_203[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
33028         Token * _keyword;
33029         expr_ty star_target_var;
33030         if (
33031             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
33032             &&
33033             (star_target_var = star_target_rule(p))  // star_target
33034         )
33035         {
33036             D(fprintf(stderr, "%*c+ _tmp_203[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
33037             _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
33038             goto done;
33039         }
33040         p->mark = _mark;
33041         D(fprintf(stderr, "%*c%s _tmp_203[%d-%d]: %s failed!\n", p->level, ' ',
33042                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
33043     }
33044     _res = NULL;
33045   done:
33046     D(p->level--);
33047     return _res;
33048 }
33049 
33050 // _tmp_204: 'as' star_target
33051 static void *
_tmp_204_rule(Parser * p)33052 _tmp_204_rule(Parser *p)
33053 {
33054     D(p->level++);
33055     if (p->error_indicator) {
33056         D(p->level--);
33057         return NULL;
33058     }
33059     void * _res = NULL;
33060     int _mark = p->mark;
33061     { // 'as' star_target
33062         if (p->error_indicator) {
33063             D(p->level--);
33064             return NULL;
33065         }
33066         D(fprintf(stderr, "%*c> _tmp_204[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
33067         Token * _keyword;
33068         expr_ty star_target_var;
33069         if (
33070             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
33071             &&
33072             (star_target_var = star_target_rule(p))  // star_target
33073         )
33074         {
33075             D(fprintf(stderr, "%*c+ _tmp_204[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
33076             _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
33077             goto done;
33078         }
33079         p->mark = _mark;
33080         D(fprintf(stderr, "%*c%s _tmp_204[%d-%d]: %s failed!\n", p->level, ' ',
33081                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
33082     }
33083     _res = NULL;
33084   done:
33085     D(p->level--);
33086     return _res;
33087 }
33088 
33089 // _tmp_205: 'as' star_target
33090 static void *
_tmp_205_rule(Parser * p)33091 _tmp_205_rule(Parser *p)
33092 {
33093     D(p->level++);
33094     if (p->error_indicator) {
33095         D(p->level--);
33096         return NULL;
33097     }
33098     void * _res = NULL;
33099     int _mark = p->mark;
33100     { // 'as' star_target
33101         if (p->error_indicator) {
33102             D(p->level--);
33103             return NULL;
33104         }
33105         D(fprintf(stderr, "%*c> _tmp_205[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
33106         Token * _keyword;
33107         expr_ty star_target_var;
33108         if (
33109             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
33110             &&
33111             (star_target_var = star_target_rule(p))  // star_target
33112         )
33113         {
33114             D(fprintf(stderr, "%*c+ _tmp_205[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
33115             _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
33116             goto done;
33117         }
33118         p->mark = _mark;
33119         D(fprintf(stderr, "%*c%s _tmp_205[%d-%d]: %s failed!\n", p->level, ' ',
33120                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
33121     }
33122     _res = NULL;
33123   done:
33124     D(p->level--);
33125     return _res;
33126 }
33127 
33128 // _tmp_206: 'as' star_target
33129 static void *
_tmp_206_rule(Parser * p)33130 _tmp_206_rule(Parser *p)
33131 {
33132     D(p->level++);
33133     if (p->error_indicator) {
33134         D(p->level--);
33135         return NULL;
33136     }
33137     void * _res = NULL;
33138     int _mark = p->mark;
33139     { // 'as' star_target
33140         if (p->error_indicator) {
33141             D(p->level--);
33142             return NULL;
33143         }
33144         D(fprintf(stderr, "%*c> _tmp_206[%d-%d]: %s\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
33145         Token * _keyword;
33146         expr_ty star_target_var;
33147         if (
33148             (_keyword = _PyPegen_expect_token(p, 520))  // token='as'
33149             &&
33150             (star_target_var = star_target_rule(p))  // star_target
33151         )
33152         {
33153             D(fprintf(stderr, "%*c+ _tmp_206[%d-%d]: %s succeeded!\n", p->level, ' ', _mark, p->mark, "'as' star_target"));
33154             _res = _PyPegen_dummy_name(p, _keyword, star_target_var);
33155             goto done;
33156         }
33157         p->mark = _mark;
33158         D(fprintf(stderr, "%*c%s _tmp_206[%d-%d]: %s failed!\n", p->level, ' ',
33159                   p->error_indicator ? "ERROR!" : "-", _mark, p->mark, "'as' star_target"));
33160     }
33161     _res = NULL;
33162   done:
33163     D(p->level--);
33164     return _res;
33165 }
33166 
33167 void *
_PyPegen_parse(Parser * p)33168 _PyPegen_parse(Parser *p)
33169 {
33170     // Initialize keywords
33171     p->keywords = reserved_keywords;
33172     p->n_keyword_lists = n_keyword_lists;
33173     p->soft_keywords = soft_keywords;
33174 
33175     // Run parser
33176     void *result = NULL;
33177     if (p->start_rule == Py_file_input) {
33178         result = file_rule(p);
33179     } else if (p->start_rule == Py_single_input) {
33180         result = interactive_rule(p);
33181     } else if (p->start_rule == Py_eval_input) {
33182         result = eval_rule(p);
33183     } else if (p->start_rule == Py_func_type_input) {
33184         result = func_type_rule(p);
33185     } else if (p->start_rule == Py_fstring_input) {
33186         result = fstring_rule(p);
33187     }
33188 
33189     return result;
33190 }
33191 
33192 // The end
33193